private function applyFilters()
{
$postProcessor = $this->makeDataTablePostProcessor();
// must be created after requestConfig is final
$self = $this;
$postProcessor->setCallbackBeforeGenericFilters(function (DataTable\DataTableInterface $dataTable) use($self, $postProcessor) {
$self->setDataTable($dataTable);
// First, filters that delete rows
foreach ($self->config->getPriorityFilters() as $filter) {
$dataTable->filter($filter[0], $filter[1]);
}
$self->beforeGenericFiltersAreAppliedToLoadedDataTable();
if (!in_array($self->requestConfig->filter_sort_column, $self->config->columns_to_display)) {
$hasNbUniqVisitors = in_array('nb_uniq_visitors', $self->config->columns_to_display);
$columns = $dataTable->getColumns();
$self->requestConfig->setDefaultSort($self->config->columns_to_display, $hasNbUniqVisitors, $columns);
}
$postProcessor->setRequest($self->buildApiRequestArray());
});
$postProcessor->setCallbackAfterGenericFilters(function (DataTable\DataTableInterface $dataTable) use($self) {
$self->setDataTable($dataTable);
$self->afterGenericFiltersAreAppliedToLoadedDataTable();
// queue other filters so they can be applied later if queued filters are disabled
foreach ($self->config->getPresentationFilters() as $filter) {
$dataTable->queueFilter($filter[0], $filter[1]);
}
});
$this->dataTable = $postProcessor->process($this->dataTable);
}