Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
VariablesDataProvider.php
Go to the documentation of this file.
1 <?php
7 
13 
18 {
22  private $variableDataProvider;
23 
37  public function __construct(
38  $name,
45  \Magento\Variable\Model\Variable\Data $variableDataProvider,
46  array $meta = [],
47  array $data = []
48  ) {
49  parent::__construct(
50  $name,
53  $reporting,
55  $request,
57  $meta,
58  $data
59  );
60  $this->variableDataProvider = $variableDataProvider;
61  }
62 
71  private function sortBy($items, $field, $direction)
72  {
73  usort($items, function ($item1, $item2) use ($field, $direction) {
74  return $this->variablesCompare($item1, $item2, $field, $direction);
75  });
76  return $items;
77  }
78 
89  private function variablesCompare($variable1, $variable2, $partIndex, $direction)
90  {
91  $values = [$variable1[$partIndex], $variable2[$partIndex]];
92  sort($values, SORT_STRING);
93  return $variable1[$partIndex] === $values[$direction == SortOrder::SORT_ASC ? 0 : 1] ? -1 : 1;
94  }
95 
102  public function getData()
103  {
105  $sortOrders = $searchCriteria->getSortOrders();
106 
107  $items = array_merge(
108  $this->variableDataProvider->getDefaultVariables(),
109  $this->variableDataProvider->getCustomVariables()
110  );
111 
113  foreach ($sortOrders as $sortOrder) {
114  if ($sortOrder->getField() && $sortOrder->getDirection()) {
115  $items = $this->sortBy($items, $sortOrder->getField(), $sortOrder->getDirection());
116  }
117  }
118 
119  foreach ($searchCriteria->getFilterGroups() as $filterGroup) {
120  foreach ($filterGroup->getFilters() as $filter) {
121  $value = str_replace('%', '', $filter->getValue());
122  $filterField = $filter->getField();
123  $items = array_values(array_filter($items, function ($item) use ($value, $filterField) {
124  return strpos(strtolower($item[$filterField]), strtolower($value)) !== false;
125  }));
126  }
127  }
128 
129  return [
130  'items' => $items
131  ];
132  }
133 }
__construct( $name, $primaryFieldName, $requestFieldName, ReportingInterface $reporting, SearchCriteriaBuilder $searchCriteriaBuilder, RequestInterface $request, FilterBuilder $filterBuilder, \Magento\Variable\Model\Variable\Data $variableDataProvider, array $meta=[], array $data=[])
$values
Definition: options.phtml:88
$value
Definition: gender.phtml:16
$items