MCPcopy Create free account
hub / github.com/Rello/analytics / applyFilterOptions

Method applyFilterOptions

lib/Db/StorageMapper.php:309–335  ·  view source on GitHub ↗
(IQueryBuilder $sql, $options)

Source from the content-addressed store, hash-verified

307 }
308
309 private function applyFilterOptions(IQueryBuilder $sql, $options): void
310 {
311 if (!isset($options['filter']) || !is_array($options['filter'])) {
312 return;
313 }
314
315 foreach ($this->groupFiltersByDimension($options['filter']) as $dimension => $filters) {
316 $column = $this->getAllowedFilterColumn($dimension);
317 if ($column === null) {
318 continue;
319 }
320
321 $expressions = [];
322 foreach ($filters as $filter) {
323 $expression = $this->buildFilterExpression($sql, $column, $filter['option'], $filter['value']);
324 if ($expression !== null) {
325 $expressions[] = $expression;
326 }
327 }
328
329 if (count($expressions) === 1) {
330 $sql->andWhere($expressions[0]);
331 } elseif (count($expressions) > 1) {
332 $sql->andWhere($sql->expr()->orX(...$expressions));
333 }
334 }
335 }
336
337 private function groupFiltersByDimension(array $filters): array
338 {

Callers 3

readMethod · 0.95
deleteWithFilterMethod · 0.95

Calls 3

buildFilterExpressionMethod · 0.95

Tested by

no test coverage detected