Piwik\API\DataTableGenericFilter::areProcessedMetricsNeededFor PHP Method

areProcessedMetricsNeededFor() public method

public areProcessedMetricsNeededFor ( $metrics )
    public function areProcessedMetricsNeededFor($metrics)
    {
        $columnQueryParameters = array('filter_column', 'filter_column_recursive', 'filter_excludelowpop', 'filter_sort_column');
        foreach ($columnQueryParameters as $queryParamName) {
            $queryParamValue = Common::getRequestVar($queryParamName, false, $type = null, $this->request);
            if (!empty($queryParamValue) && $this->containsProcessedMetric($metrics, $queryParamValue)) {
                return true;
            }
        }
        return false;
    }

Usage Example

 /**
  * @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;
 }