/**
  * Update the main event constraints
  *
  * @param Demand $demand
  * @param bool $respectEnableFields
  * @param \TYPO3\CMS\Extbase\Persistence\QueryInterface $query
  * @param array $constraints
  * @return void
  */
 protected function updateEventConstraints(Demand $demand, $respectEnableFields, \TYPO3\CMS\Extbase\Persistence\QueryInterface $query, array &$constraints)
 {
     // reset datetime constraint
     unset($constraints['datetime']);
     $eventRestriction = $demand->getEventRestriction();
     if ($eventRestriction === Demand::EVENT_RESTRICTION_NO_EVENTS) {
         $constraints[] = $query->equals('isEvent', 0);
     } elseif ($eventRestriction === Demand::EVENT_RESTRICTION_ONLY_EVENTS) {
         $dateField = $demand->getDateField();
         $begin = mktime(0, 0, 0, $demand->getMonth(), 1, $demand->getYear());
         $end = mktime(23, 59, 59, $demand->getMonth() + 1, 0, $demand->getYear());
         $eventsWithNoEndDate = array($query->logicalAnd($query->greaterThanOrEqual($demand->getDateField(), $begin), $query->lessThanOrEqual($demand->getDateField(), $end)));
         $eventsWithEndDate = array($query->logicalAnd($query->greaterThanOrEqual('datetime', $begin), $query->lessThanOrEqual('datetime', $end), $query->lessThanOrEqual('eventEnd', $end)), $query->logicalAnd($query->lessThanOrEqual($dateField, $begin), $query->greaterThanOrEqual('eventEnd', $end)), $query->logicalAnd($query->lessThanOrEqual($dateField, $begin), $query->greaterThanOrEqual('eventEnd', $begin)), $query->logicalAnd($query->lessThanOrEqual($dateField, $end), $query->greaterThanOrEqual('eventEnd', $end)));
         $dateConstraints1 = array($query->logicalAnd($eventsWithNoEndDate), $query->logicalOr($eventsWithEndDate));
         $constraints['datetime'] = $query->logicalOr($dateConstraints1);
         $organizers = $demand->getOrganizers();
         if (!empty($organizers)) {
             $constraints[] = $query->in('organizer', $organizers);
         }
         $locations = $demand->getLocations();
         if (!empty($locations)) {
             $constraints[] = $query->in('location', $locations);
         }
     }
 }
Ejemplo n.º 2
0
 /**
  * @param callable $closure
  */
 public function logicalOr(\Closure $closure)
 {
     /** @var QueryProxy $newProxy */
     $newProxy = $this->newProxy();
     $closure($newProxy);
     $this->constraints[] = $this->query->logicalOr($newProxy->getContraints());
 }
Ejemplo n.º 3
0
 /**
  * Returns a constraint array created by a given filter array
  *
  * @param \TYPO3\CMS\Extbase\Persistence\QueryInterface $query
  * @param array $filter
  * @param array $constraints	
  * @return \TYPO3\CMS\Extbase\Persistence\Generic\Qom\ConstraintInterface|null
  */
 protected function createFilterConstraints(\TYPO3\CMS\Extbase\Persistence\QueryInterface $query, $filter = NULL, $constraints = NULL)
 {
     if (is_null($constraints)) {
         $constraints = [];
     }
     if (isset($filter['uid_foreign']) && is_numeric($filter['uid_foreign']) && $filter['uid_foreign'] > 0 && isset($filter['tablenames']) && $filter['tablenames'] != "") {
         $constraints[] = $query->equals('uidForeign', $filter['uid_foreign']);
         $constraints[] = $query->equals('tablenames', $filter['tablenames']);
     } else {
         $constraints[] = $query->equals('uidForeign', 0);
         $constraints[] = $query->equals('tablenames', "dfgdfgjrezu67q348673463");
     }
     if (isset($filter['feUser']) && is_numeric($filter['feUser']) && $filter['feUser'] > 0) {
         $constraints[] = $query->equals('feUser', $filter['feUser']);
     }
     if (!(isset($filter['isModerator']) && is_bool($filter['isModerator']) && $filter['isModerator'] == true)) {
         if (isset($filter['confirmed']) && is_bool($filter['confirmed']) && $filter['confirmed'] == true) {
             $constraints[] = $query->greaterThan('confirmed', 0);
         } else {
             $constraints[] = $query->logicalOr($query->equals('confirmed', 0), $query->equals('confirmed', ''), $query->equals('confirmed', NULL));
         }
     }
     if (count($constraints) < 1) {
         $constraints = NULL;
     }
     return $constraints;
 }
Ejemplo n.º 4
0
 /**
  * Returns the constraint to determine if a news event is active or not (archived)
  *
  * @param \TYPO3\CMS\Extbase\Persistence\QueryInterface $query
  * @return \TYPO3\CMS\Extbase\Persistence\Generic\Qom\ConstraintInterface $constraint
  */
 protected function createIsActiveConstraint(\TYPO3\CMS\Extbase\Persistence\QueryInterface $query)
 {
     /** @var $constraint \TYPO3\CMS\Extbase\Persistence\Generic\Qom\ConstraintInterface */
     $constraint = null;
     $timestamp = time();
     // + date('Z');
     $constraint = $query->logicalOr($query->greaterThan('tx_roqnewsevent_startdate + tx_roqnewsevent_starttime', $timestamp), $query->logicalAnd($query->lessThan('tx_roqnewsevent_startdate + tx_roqnewsevent_starttime', $timestamp), $query->greaterThan('tx_roqnewsevent_enddate + tx_roqnewsevent_endtime', $timestamp)), $query->logicalAnd($query->lessThan('tx_roqnewsevent_startdate + tx_roqnewsevent_starttime', $timestamp), $query->greaterThan('tx_roqnewsevent_startdate + tx_roqnewsevent_endtime', $timestamp), $query->equals('tx_roqnewsevent_enddate', 0)), $query->logicalAnd($query->greaterThan('tx_roqnewsevent_startdate + 86399', $timestamp), $query->equals('tx_roqnewsevent_starttime', 0), $query->equals('tx_roqnewsevent_enddate', 0), $query->equals('tx_roqnewsevent_endtime', 0)));
     return $constraint;
 }
Ejemplo n.º 5
0
 /**
  * Update the main event constraints
  *
  * @param Demand $demand
  * @param bool $respectEnableFields
  * @param \TYPO3\CMS\Extbase\Persistence\QueryInterface $query
  * @param array $constraints
  * @return void
  */
 protected function updateEventConstraints(Demand $demand, $respectEnableFields, \TYPO3\CMS\Extbase\Persistence\QueryInterface $query, array &$constraints)
 {
     $eventRestriction = $demand->getEventRestriction();
     if ($eventRestriction === Demand::EVENT_RESTRICTION_NO_EVENTS) {
         $constraints[] = $query->equals('isEvent', 0);
     } elseif ($eventRestriction === Demand::EVENT_RESTRICTION_ONLY_EVENTS) {
         $constraints[] = $query->equals('isEvent', 1);
         $monthFromDemand = $demand->getMonth();
         $yearFromDemand = $demand->getYear();
         if (!empty($monthFromDemand) && !empty($yearFromDemand)) {
             // reset datetime constraint
             unset($constraints['datetime']);
             $dateField = $demand->getDateField();
             $begin = mktime(0, 0, 0, $demand->getMonth(), 1, $demand->getYear());
             $end = mktime(23, 59, 59, $demand->getMonth() + 1, 0, $demand->getYear());
             $eventsWithNoEndDate = array($query->logicalAnd($query->greaterThanOrEqual($demand->getDateField(), $begin), $query->lessThanOrEqual($demand->getDateField(), $end)));
             $eventsWithEndDate = array($query->logicalAnd($query->greaterThanOrEqual('datetime', $begin), $query->lessThanOrEqual('datetime', $end), $query->lessThanOrEqual('eventEnd', $end)), $query->logicalAnd($query->lessThanOrEqual($dateField, $begin), $query->greaterThanOrEqual('eventEnd', $end)), $query->logicalAnd($query->lessThanOrEqual($dateField, $begin), $query->greaterThanOrEqual('eventEnd', $begin)), $query->logicalAnd($query->lessThanOrEqual($dateField, $end), $query->greaterThanOrEqual('eventEnd', $end)));
             $dateConstraints1 = array($query->logicalAnd($eventsWithNoEndDate), $query->logicalOr($eventsWithEndDate));
             $constraints['datetime'] = $query->logicalOr($dateConstraints1);
         }
         $archiveRestriction = $demand->getArchiveRestriction();
         if (!empty($archiveRestriction)) {
             $timestamp = time();
             $beginningOfDay = strtotime("midnight", $timestamp);
             $endOfDay = strtotime("tomorrow", $beginningOfDay) - 1;
             $activeConstraint = $query->logicalOr($query->greaterThan('datetime', $timestamp), $query->logicalAnd($query->equals('full_day', 0), $query->lessThan('datetime', $timestamp), $query->greaterThan('event_end', $timestamp)), $query->logicalAnd($query->equals('full_day', 1), $query->lessThan('datetime', $beginningOfDay), $query->greaterThan('event_end', $beginningOfDay), $query->lessThan('event_end', $endOfDay)), $query->logicalAnd($query->equals('full_day', 1), $query->lessThan('datetime', $timestamp), $query->greaterThan('event_end', $endOfDay)), $query->logicalAnd($query->equals('full_day', 1), $query->greaterThanOrEqual('datetime', $beginningOfDay), $query->equals('event_end', 0)));
             // reset existing archived constraint
             unset($constraints['archived']);
             if ($demand->getArchiveRestriction() == 'archived') {
                 $constraints['archived'] = $query->logicalNot($activeConstraint);
             } elseif ($demand->getArchiveRestriction() == 'active') {
                 $constraints['archived'] = $activeConstraint;
             }
         }
         $organizers = $demand->getOrganizers();
         if (!empty($organizers)) {
             $constraints[] = $query->in('organizer', $organizers);
         }
         $locations = $demand->getLocations();
         if (!empty($locations)) {
             $constraints[] = $query->in('location', $locations);
         }
     }
 }
Ejemplo n.º 6
0
 /**
  * Builds the query
  * @return void
  */
 protected function buildQuery()
 {
     if ($this->categoryConstraintsLength > 0 && $this->categoryIsAll === FALSE && $this->searchConstraintsLength > 0) {
         $this->query->matching($this->query->logicalAnd($this->query->logicalOr($this->categoryConstraints), $this->query->logicalAnd($this->searchConstraints)));
     } elseif ($this->categoryConstraintsLength > 0 && $this->categoryIsAll === FALSE) {
         $this->query->matching($this->query->logicalOr($this->categoryConstraints));
     } elseif ($this->searchConstraintsLength > 0) {
         $this->query->matching($this->query->logicalAnd($this->searchConstraints));
     }
 }
 /**
  * @param \GeorgRinger\Newsadvancedsearch\Domain\Model\Dto\Demand $demand
  * @param bool $respectEnableFields
  * @param \TYPO3\CMS\Extbase\Persistence\QueryInterface $query
  * @param array $constraints
  */
 protected function updateConstraints(\GeorgRinger\Newsadvancedsearch\Domain\Model\Dto\Demand $demand, $respectEnableFields, \TYPO3\CMS\Extbase\Persistence\QueryInterface $query, array &$constraints)
 {
     $subject = $demand->getSubject();
     if (!empty($subject)) {
         $constraints[] = $query->like('title', '%' . $subject . '%');
     }
     $locations = $demand->getLocations();
     if (!empty($locations)) {
         $locationConstraints = array();
         foreach ($locations as $typeId) {
             $locationConstraints[] = $query->contains('locations', $typeId);
         }
         $constraints[] = $query->logicalOr($locationConstraints);
     }
     $types = $demand->getTypes();
     if (!empty($types)) {
         $typesConstraints = array();
         foreach ($types as $typeId) {
             $typesConstraints[] = $query->contains('eventtypes', $typeId);
         }
         $constraints[] = $query->logicalOr($typesConstraints);
     }
 }
Ejemplo n.º 8
0
 /**
  * Add category constraint
  *
  * @param array $categories
  * @param boolean $isAnd If TRUE categories get a logicalAnd. Otherwise a logicalOr.
  * @param boolean $isNot If TRUE categories get a logicalNot operator. Otherwise not.
  * @return void
  */
 public function addCategoryConstraint(array $categories, $isAnd = TRUE, $isNot = FALSE)
 {
     if ($isAnd === TRUE && $isNot === FALSE) {
         $this->queryConstraints[] = $this->query->logicalAnd($this->buildCategoryConstraint($categories));
     }
     if ($isAnd === TRUE && $isNot === TRUE) {
         $this->queryConstraints[] = $this->query->logicalNot($this->query->logicalAnd($this->buildCategoryConstraint($categories)));
     }
     if ($isAnd === FALSE && $isNot === FALSE) {
         $this->queryConstraints[] = $this->query->logicalOr($this->buildCategoryConstraint($categories));
     }
     if ($isAnd === FALSE && $isNot === TRUE) {
         $this->queryConstraints[] = $this->query->logicalNot($this->query->logicalOr($this->buildCategoryConstraint($categories)));
     }
 }
 /**
  * @param \TYPO3\CMS\Extbase\Persistence\QueryInterface $query
  * @param \DWenzel\T3events\Domain\Model\Dto\DemandInterface $demand
  * @return array
  */
 public function createConstraintsFromDemand(QueryInterface $query, DemandInterface $demand)
 {
     /** @var ReservationDemand $demand */
     $constraints = [];
     if ($demand->getLessonDeadline()) {
         $constraints[] = $query->logicalAnd($query->lessThan('lesson.deadline', $demand->getLessonDeadline()));
     }
     if ($demand->getStatus()) {
         $statusArr = GeneralUtility::intExplode(',', $demand->getStatus());
         $statusConstraints = [];
         foreach ($statusArr as $status) {
             $statusConstraints[] = $query->equals('status', $status);
         }
         $constraints[] = $query->logicalOr($statusConstraints);
     }
     if ($demand->getMinAge()) {
         $constraints[] = $query->logicalAnd($query->lessThan('tstamp', time() - $demand->getMinAge()));
     }
     if ($demand->getLessonDate()) {
         if ($demand->getPeriod() === 'futureOnly') {
             $constraints[] = $query->greaterThanOrEqual('lesson.date', $demand->getLessonDate());
         } elseif ($demand->getPeriod() === 'pastOnly') {
             $constraints[] = $query->lessThanOrEqual('lesson.date', $demand->getLessonDate());
         }
     }
     if ((bool) ($genreConstraints = $this->createGenreConstraints($query, $demand))) {
         $this->combineConstraints($query, $constraints, $genreConstraints, $demand->getCategoryConjunction());
     }
     if ((bool) ($searchConstraints = $this->createSearchConstraints($query, $demand))) {
         $this->combineConstraints($query, $constraints, $searchConstraints, 'OR');
     }
     if ((bool) ($eventTypeConstraints = $this->createEventTypeConstraints($query, $demand))) {
         $this->combineConstraints($query, $constraints, $eventTypeConstraints, $demand->getCategoryConjunction());
     }
     if ((bool) ($periodConstraints = $this->createPeriodConstraints($query, $demand))) {
         $this->combineConstraints($query, $constraints, $periodConstraints);
     }
     if ((bool) ($audienceConstraints = $this->createAudienceConstraints($query, $demand))) {
         $this->combineConstraints($query, $constraints, $audienceConstraints);
     }
     return $constraints;
 }
Ejemplo n.º 10
0
 /**
  * This function builds the matchings.
  * It enables matchings like:
  * - single character: 'B'
  * - multiple characters: 'BDEFG'
  * - range of characters: 'B-G'
  *
  * @param string $characters
  * @return QueryInterface
  */
 protected function getMatchings($characters = NULL)
 {
     $matching = array();
     if ($characters === NULL) {
         $characters = $this->currentCharacter;
     }
     $characterLength = strlen($characters);
     if ($characterLength === 1) {
         // single character B
         $matching = $this->query->like($this->field, $characters . '%');
     } else {
         if ($characterLength === 3 && $characters[1] === '-') {
             // range B-G
             // Build the characters like multiple characters B-G => BCDEFG
             // Fix orderings
             $firstCharacter = ord($characters[0]);
             $lastCharacter = ord($characters[2]);
             if ($firstCharacter - $lastCharacter > 0) {
                 $tmp = $firstCharacter;
                 $firstCharacter = $lastCharacter;
                 $lastCharacter = $tmp;
             }
             // Build the new String
             $characters = '';
             for ($char = $firstCharacter; $char <= $lastCharacter; ++$char) {
                 $characters .= chr($char);
             }
         }
         // multiple characters BDEFG
         $characters = str_split($characters);
         foreach ($characters as $char) {
             $matching[] = $this->query->like($this->field, $char . '%');
         }
         $matching = $this->query->logicalOr($matching);
     }
     return $this->query->matching($matching);
 }
Ejemplo n.º 11
0
 /**
  * Sets the category constraint to the given constraints array
  *
  * @param \TYPO3\CMS\Extbase\Persistence\QueryInterface $query Query
  * @param \DERHANSEN\SfEventMgt\Domain\Model\Dto\EventDemand $eventDemand EventDemand
  * @param array $constraints Constraints
  *
  * @return void
  */
 protected function setCategoryConstraint($query, $eventDemand, &$constraints)
 {
     if ($eventDemand->getCategory() != '') {
         $categoryConstraints = array();
         $categories = GeneralUtility::intExplode(',', $eventDemand->getCategory(), TRUE);
         foreach ($categories as $category) {
             $categoryConstraints[] = $query->contains('category', $category);
         }
         if (count($categoryConstraints) > 0) {
             $constraints[] = $query->logicalOr($categoryConstraints);
         }
     }
 }
Ejemplo n.º 12
0
 /**
  * Sets the search constraint to the given constraints array
  *
  * @param \TYPO3\CMS\Extbase\Persistence\QueryInterface $query Query
  * @param \DERHANSEN\SfEventMgt\Domain\Model\Dto\EventDemand $eventDemand EventDemand
  * @param array $constraints Constraints
  *
  * @return void
  */
 protected function setSearchConstraint($query, $eventDemand, &$constraints)
 {
     if ($eventDemand->getSearchDemand() && $eventDemand->getSearchDemand()->getSearch() !== null && $eventDemand->getSearchDemand()->getSearch() !== '') {
         $searchFields = GeneralUtility::trimExplode(',', $eventDemand->getSearchDemand()->getFields(), true);
         $searchConstraints = [];
         if (count($searchFields) === 0) {
             throw new \UnexpectedValueException('No search fields defined', 1318497755);
         }
         $searchSubject = $eventDemand->getSearchDemand()->getSearch();
         foreach ($searchFields as $field) {
             if (!empty($searchSubject)) {
                 $searchConstraints[] = $query->like($field, '%' . $searchSubject . '%', false);
             }
         }
         if (count($searchConstraints)) {
             $constraints[] = $query->logicalOr($searchConstraints);
         }
     }
 }
Ejemplo n.º 13
0
 /**
  * Add time frame related queries
  *
  * @param array          $constraints
  * @param QueryInterface $query
  * @param int            $startTime
  * @param int            $endTime
  */
 protected function addTimeFrameConstraints(&$constraints, QueryInterface $query, $startTime, $endTime)
 {
     $orConstraint = array();
     // before - in
     $beforeIn = array($query->lessThan('start_date', $startTime), $query->greaterThanOrEqual('end_date', $startTime), $query->lessThan('end_date', $endTime));
     $orConstraint[] = $query->logicalAnd($beforeIn);
     // in - in
     $inIn = array($query->greaterThanOrEqual('start_date', $startTime), $query->lessThan('end_date', $endTime));
     $orConstraint[] = $query->logicalAnd($inIn);
     // in - after
     $inAfter = array($query->greaterThanOrEqual('start_date', $startTime), $query->lessThan('start_date', $endTime), $query->greaterThanOrEqual('end_date', $endTime));
     $orConstraint[] = $query->logicalAnd($inAfter);
     // before - after
     $beforeAfter = array($query->lessThan('start_date', $startTime), $query->greaterThan('end_date', $endTime));
     $orConstraint[] = $query->logicalAnd($beforeAfter);
     // finish
     $constraints[] = $query->logicalOr($orConstraint);
 }
Ejemplo n.º 14
0
 /**
  * Create constraints for pending comments
  *
  * @return object
  */
 protected function getPendingConstraints(QueryInterface $query)
 {
     $constraints = $query->logicalOr($query->equals('spam', 1), $query->equals('approved', 0));
     return $constraints;
 }
Ejemplo n.º 15
0
 /**
  * Add time frame related queries
  *
  * @param array          $constraints
  * @param QueryInterface $query
  * @param int            $startTime
  * @param int|null       $endTime
  *
  * @see IndexUtility::isIndexInRange
  */
 protected function addTimeFrameConstraints(&$constraints, QueryInterface $query, $startTime, $endTime = null)
 {
     // Simulate end time
     if ($endTime === null) {
         $endTime = $startTime + DateTimeUtility::SECONDS_DECADE;
     }
     $orConstraint = [];
     // before - in
     $beforeIn = [$query->lessThan('start_date', $startTime), $query->greaterThanOrEqual('end_date', $startTime), $query->lessThan('end_date', $endTime)];
     $orConstraint[] = $query->logicalAnd($beforeIn);
     // in - in
     $inIn = [$query->greaterThanOrEqual('start_date', $startTime), $query->lessThan('end_date', $endTime)];
     $orConstraint[] = $query->logicalAnd($inIn);
     // in - after
     $inAfter = [$query->greaterThanOrEqual('start_date', $startTime), $query->lessThan('start_date', $endTime), $query->greaterThanOrEqual('end_date', $endTime)];
     $orConstraint[] = $query->logicalAnd($inAfter);
     // before - after
     $beforeAfter = [$query->lessThan('start_date', $startTime), $query->greaterThan('end_date', $endTime)];
     $orConstraint[] = $query->logicalAnd($beforeAfter);
     // finish
     $constraints[] = $query->logicalOr($orConstraint);
 }
Ejemplo n.º 16
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;
 }
Ejemplo n.º 17
0
 /**
  * Get the search constraints
  *
  * @param \TYPO3\CMS\Extbase\Persistence\QueryInterface $query
  * @param Tx_News_Domain_Model_DemandInterface $demand
  * @return array
  * @throws UnexpectedValueException
  */
 protected function getSearchConstraints(\TYPO3\CMS\Extbase\Persistence\QueryInterface $query, Tx_News_Domain_Model_DemandInterface $demand)
 {
     $constraints = array();
     if ($demand->getSearch() === NULL) {
         return $constraints;
     }
     /* @var $searchObject Tx_News_Domain_Model_Dto_Search */
     $searchObject = $demand->getSearch();
     $searchSubject = $searchObject->getSubject();
     if (!empty($searchSubject)) {
         $searchFields = \TYPO3\CMS\Core\Utility\GeneralUtility::trimExplode(',', $searchObject->getFields(), TRUE);
         $searchConstraints = array();
         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;
 }