/** * {@inheritdoc} */ public function handle(CriteriaPartInterface $criteriaPart, Criteria $criteria, Search $search, ShopContextInterface $context) { /**@var ReleaseDateCondition $criteriaPart */ $date = new \DateTime(); $intervalSpec = 'P' . $criteriaPart->getDays() . 'D'; $interval = new \DateInterval($intervalSpec); $dateNow = new \DateTime(); switch ($criteriaPart->getDirection()) { case ReleaseDateCondition::DIRECTION_FUTURE: $date->add($interval); $range = ['lte' => $date->format('Y-m-d'), 'gt' => $dateNow->format('Y-m-d')]; break; case ReleaseDateCondition::DIRECTION_PAST: $date->sub($interval); $range = ['gte' => $date->format('Y-m-d'), 'lte' => $dateNow->format('Y-m-d')]; break; default: return; } $filter = new RangeFilter('formattedReleaseDate', $range); if ($criteria->hasBaseCondition($criteriaPart->getName())) { $search->addFilter($filter); } else { $search->addPostFilter($filter); } }
/** * {@inheritdoc} */ public function handle(CriteriaPartInterface $criteriaPart, Criteria $criteria, Search $search, ShopContextInterface $context) { /** @var PriceSorting $criteriaPart */ $field = $this->fieldMapping->getPriceField($context); $sort = new FieldSort($field, strtolower($criteriaPart->getDirection())); $search->addSort($sort); }
/** * {@inheritdoc} */ public function handle(CriteriaPartInterface $criteriaPart, Criteria $criteria, Search $search, ShopContextInterface $context) { /** @var ProductNameSorting $criteriaPart */ $search->addSort(new FieldSort('name.raw', strtolower($criteriaPart->getDirection()))); }
/** * {@inheritdoc} */ public function handle(CriteriaPartInterface $criteriaPart, Criteria $criteria, Search $search, ShopContextInterface $context) { /** @var SearchRankingSorting $criteriaPart */ $search->addSort(new FieldSort('_score', strtolower($criteriaPart->getDirection()))); }
/** * {@inheritdoc} */ public function handle(CriteriaPartInterface $criteriaPart, Criteria $criteria, Search $search, ShopContextInterface $context) { /** @var PopularitySorting $criteriaPart */ $search->addSort(new FieldSort('sales', strtolower($criteriaPart->getDirection()))); }
/** * {@inheritdoc} */ public function handle(CriteriaPartInterface $criteriaPart, Criteria $criteria, Search $search, ShopContextInterface $context) { /** @var ProductAttributeSorting $criteriaPart */ $field = 'attributes.core.' . $criteriaPart->getField(); $search->addSort(new FieldSort($field, strtolower($criteriaPart->getDirection()))); }
/** * {@inheritdoc} */ public function handle(CriteriaPartInterface $criteriaPart, Criteria $criteria, Search $search, ShopContextInterface $context) { /** @var ReleaseDateSorting $criteriaPart */ $search->addSort(new FieldSort('formattedReleaseDate', strtolower($criteriaPart->getDirection()))); }