/** * @param DataTableInterface $dataTable * @return DataTableInterface */ public function applyGenericFilters($dataTable) { // if the flag disable_generic_filters is defined we skip the generic filters if (0 == Common::getRequestVar('disable_generic_filters', '0', 'string', $this->request)) { $this->applyProcessedMetricsGenericFilters($dataTable); $genericFilter = new DataTableGenericFilter($this->request, $this->report); $self = $this; $report = $this->report; $dataTable->filter(function (DataTable $table) use($genericFilter, $report, $self) { $processedMetrics = Report::getProcessedMetricsForTable($table, $report); if ($genericFilter->areProcessedMetricsNeededFor($processedMetrics)) { $self->computeProcessedMetrics($table); } }); $label = self::getLabelFromRequest($this->request); if (!empty($label)) { $genericFilter->disableFilters(array('Limit', 'Truncate')); } $genericFilter->filter($dataTable); } return $dataTable; }