Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Engine.php
Go to the documentation of this file.
1 <?php
7 
14 class Engine implements EngineInterface
15 {
20  const ATTRIBUTE_PREFIX = 'attr_';
21 
28  const SCOPE_FIELD_NAME = 'scope';
29 
36 
40  private $indexScopeResolver;
41 
48  public function __construct(
49  \Magento\Catalog\Model\Product\Visibility $catalogProductVisibility,
50  \Magento\Framework\Indexer\ScopeResolver\IndexScopeResolver $indexScopeResolver
51  ) {
52  $this->catalogProductVisibility = $catalogProductVisibility;
53  $this->indexScopeResolver = $indexScopeResolver;
54  }
55 
61  public function getAllowedVisibility()
62  {
63  return $this->catalogProductVisibility->getVisibleInSiteIds();
64  }
65 
71  public function allowAdvancedIndex()
72  {
73  return true;
74  }
75 
81  private $termFilterableAttributeAttributeCache = [];
82 
89  private function isTermFilterableAttribute($attribute)
90  {
91  $attributeId = $attribute->getAttributeId();
92  if (!isset($this->termFilterableAttributeAttributeCache[$attributeId])) {
93  $this->termFilterableAttributeAttributeCache[$attributeId] =
94  in_array($attribute->getFrontendInput(), ['select', 'multiselect'], true)
95  && ($attribute->getIsVisibleInAdvancedSearch()
96  || $attribute->getIsFilterable()
97  || $attribute->getIsFilterableInSearch());
98  }
99 
100  return $this->termFilterableAttributeAttributeCache[$attributeId];
101  }
102 
107  {
108  $result = false;
109  if ($attribute->getIsSearchable()
110  && in_array($attribute->getFrontendInput(), ['text', 'textarea'])
111  ) {
112  $result = $value;
113  } elseif ($this->isTermFilterableAttribute($attribute)) {
114  $result = '';
115  }
116 
117  return $result;
118  }
119 
128  public function prepareEntityIndex($index, $separator = ' ')
129  {
130  $indexData = [];
131  foreach ($index as $attributeId => $value) {
132  $indexData[$attributeId] = is_array($value) ? implode($separator, $value) : $value;
133  }
134  return $indexData;
135  }
136 
140  public function isAvailable()
141  {
142  return true;
143  }
144 }
elseif(isset( $params[ 'redirect_parent']))
Definition: iframe.phtml:17
$value
Definition: gender.phtml:16
prepareEntityIndex($index, $separator=' ')
Definition: Engine.php:128
$index
Definition: list.phtml:44
__construct(\Magento\Catalog\Model\Product\Visibility $catalogProductVisibility, \Magento\Framework\Indexer\ScopeResolver\IndexScopeResolver $indexScopeResolver)
Definition: Engine.php:48