/** * {@inheritdoc} */ public function generateCondition(ConditionInterface $condition, QueryBuilder $query, ShopContextInterface $context) { $date = new \DateTime(); /** @var ReleaseDateCondition $condition */ $intervalSpec = 'P' . $condition->getDays() . 'D'; $interval = new \DateInterval($intervalSpec); $dateNow = new \DateTime(); switch ($condition->getDirection()) { case ReleaseDateCondition::DIRECTION_FUTURE: $date->add($interval); $query->andWhere('variant.releasedate <= :releaseDateFrom'); $query->andWhere('variant.releasedate > :dateNow'); $query->setParameter(':releaseDateFrom', $date->format('Y-m-d')); $query->setParameter(':dateNow', $dateNow->format('Y-m-d')); break; case ReleaseDateCondition::DIRECTION_PAST: $date->sub($interval); $query->andWhere('variant.releasedate >= :releaseDateTo'); $query->andWhere('variant.releasedate <= :dateNow'); $query->setParameter(':releaseDateTo', $date->format('Y-m-d')); $query->setParameter(':dateNow', $dateNow->format('Y-m-d')); break; } }