Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
FiltersExtractor.php
Go to the documentation of this file.
1 <?php
7 
11 
20 {
27  public function extractFiltersFromQuery(QueryInterface $query)
28  {
29  $filters = [];
30 
31  switch ($query->getType()) {
34  foreach ($query->getMust() as $subQuery) {
35  $filters = array_merge($filters, $this->extractFiltersFromQuery($subQuery));
36  }
37  foreach ($query->getShould() as $subQuery) {
38  $filters = array_merge($filters, $this->extractFiltersFromQuery($subQuery));
39  }
40  foreach ($query->getMustNot() as $subQuery) {
41  $filters = array_merge($filters, $this->extractFiltersFromQuery($subQuery));
42  }
43  break;
44 
47  $filter = $query->getReference();
48  if (FilterInterface::TYPE_BOOL === $filter->getType()) {
49  $filters = array_merge($filters, $this->getFiltersFromBoolFilter($filter));
50  } else {
51  $filters[] = $filter;
52  }
53  break;
54 
55  default:
56  break;
57  }
58 
59  return $filters;
60  }
61 
66  private function getFiltersFromBoolFilter(BoolExpression $boolExpression)
67  {
68  $filters = [];
69 
71  foreach ($boolExpression->getMust() as $filter) {
72  if ($filter->getType() === FilterInterface::TYPE_BOOL) {
73  $filters = array_merge($filters, $this->getFiltersFromBoolFilter($filter));
74  } else {
75  $filters[] = $filter;
76  }
77  }
78  foreach ($boolExpression->getShould() as $filter) {
79  if ($filter->getType() === FilterInterface::TYPE_BOOL) {
80  $filters = array_merge($filters, $this->getFiltersFromBoolFilter($filter));
81  } else {
82  $filters[] = $filter;
83  }
84  }
85  foreach ($boolExpression->getMustNot() as $filter) {
86  if ($filter->getType() === FilterInterface::TYPE_BOOL) {
87  $filters = array_merge($filters, $this->getFiltersFromBoolFilter($filter));
88  } else {
89  $filters[] = $filter;
90  }
91  }
92  return $filters;
93  }
94 }
$filters
Definition: uploader.phtml:11