Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
SortingProcessor.php
Go to the documentation of this file.
1 <?php
7 
13 
15 {
19  private $fieldMapping;
20 
24  private $defaultOrders;
25 
30  public function __construct(
31  array $fieldMapping = [],
32  array $defaultOrders = []
33  ) {
34  $this->fieldMapping = $fieldMapping;
35  $this->defaultOrders = $defaultOrders;
36  }
37 
46  {
47  if ($searchCriteria->getSortOrders()) {
48  $this->applyOrders($searchCriteria->getSortOrders(), $collection);
49  } elseif ($this->defaultOrders) {
50  $this->applyDefaultOrders($collection);
51  }
52  }
53 
60  private function getFieldMapping($field)
61  {
62  return $this->fieldMapping[$field] ?? $field;
63  }
64 
72  private function applyOrders(array $sortOrders, AbstractDb $collection)
73  {
75  foreach ($sortOrders as $sortOrder) {
76  $field = $this->getFieldMapping($sortOrder->getField());
77  if (null !== $field) {
78  $order = $sortOrder->getDirection() == SortOrder::SORT_ASC
79  ? Collection::SORT_ORDER_ASC
80  : Collection::SORT_ORDER_DESC;
81  $collection->addOrder($field, $order);
82  }
83  }
84  }
85 
92  private function applyDefaultOrders(AbstractDb $collection)
93  {
94  foreach ($this->defaultOrders as $field => $direction) {
95  $field = $this->getFieldMapping($field);
96  if (null !== $field) {
97  $order = $direction == SortOrder::SORT_ASC
98  ? Collection::SORT_ORDER_ASC
99  : Collection::SORT_ORDER_DESC;
100  $collection->addOrder($field, $order);
101  }
102  }
103  }
104 }
elseif(isset( $params[ 'redirect_parent']))
Definition: iframe.phtml:17
$order
Definition: order.php:55
$searchCriteria
__construct(array $fieldMapping=[], array $defaultOrders=[])
process(SearchCriteriaInterface $searchCriteria, AbstractDb $collection)