Пример #1
0
 /**
  * Get the search constraints
  *
  * @param QueryInterface $query
  * @param DemandInterface $demand
  * @return array
  * @throws \UnexpectedValueException
  */
 protected function getSearchConstraints(QueryInterface $query, DemandInterface $demand)
 {
     $constraints = [];
     if ($demand->getSearch() === null) {
         return $constraints;
     }
     /* @var $searchObject \GeorgRinger\News\Domain\Model\Dto\Search */
     $searchObject = $demand->getSearch();
     $searchSubject = $searchObject->getSubject();
     if (!empty($searchSubject)) {
         $searchFields = GeneralUtility::trimExplode(',', $searchObject->getFields(), true);
         $searchConstraints = [];
         if (count($searchFields) === 0) {
             throw new \UnexpectedValueException('No search fields defined', 1318497755);
         }
         foreach ($searchFields as $field) {
             if (!empty($searchSubject)) {
                 $searchConstraints[] = $query->like($field, '%' . $searchSubject . '%');
             }
         }
         if (count($searchConstraints)) {
             $constraints[] = $query->logicalOr($searchConstraints);
         }
     }
     $minimumDate = strtotime($searchObject->getMinimumDate());
     if ($minimumDate) {
         $field = $searchObject->getDateField();
         if (empty($field)) {
             throw new \UnexpectedValueException('No date field is defined', 1396348732);
         }
         $constraints[] = $query->greaterThanOrEqual($field, $minimumDate);
     }
     $maximumDate = strtotime($searchObject->getMaximumDate());
     if ($maximumDate) {
         $field = $searchObject->getDateField();
         if (empty($field)) {
             throw new \UnexpectedValueException('No date field is defined', 1396348733);
         }
         $constraints[] = $query->lessThanOrEqual($field, $maximumDate);
     }
     return $constraints;
 }