Ejemplo n.º 1
0
 /**
  * Find by traversing information
  *
  * @param Index      $index
  * @param bool|true  $future
  * @param bool|false $past
  * @param int        $limit
  * @param string     $sort
  *
  * @return array|\TYPO3\CMS\Extbase\Persistence\QueryResultInterface
  */
 public function findByTraversing(Index $index, $future = true, $past = false, $limit = 100, $sort = QueryInterface::ORDER_ASCENDING)
 {
     if (!$future && !$past) {
         return [];
     }
     $query = $this->createQuery();
     $now = DateTimeUtility::getNow()->getTimestamp();
     $constraints = [];
     $constraints[] = $query->logicalNot($query->equals('uid', $index->getUid()));
     $constraints[] = $query->equals('foreignTable', $index->getForeignTable());
     $constraints[] = $query->equals('foreignUid', $index->getForeignUid());
     if (!$future) {
         $constraints[] = $query->lessThanOrEqual('startDate', $now);
     }
     if (!$past) {
         $constraints[] = $query->greaterThanOrEqual('startDate', $now);
     }
     $query->setLimit($limit);
     $sort = $sort === QueryInterface::ORDER_ASCENDING ? QueryInterface::ORDER_ASCENDING : QueryInterface::ORDER_DESCENDING;
     $query->setOrderings($this->getSorting($sort));
     return $this->matchAndExecute($query, $constraints);
 }