Ejemplo n.º 1
0
 /**
  * @test
  */
 public function whereDelegatesToConcreteQueryBuilder()
 {
     $this->concreteQueryBuilder->where('uid=1', 'type=9')->shouldBeCalled()->willReturn($this->subject);
     $this->subject->where('uid=1', 'type=9');
 }
Ejemplo n.º 2
0
 /**
  * Sets the Doctrine where clause for fetching pages
  *
  * @param QueryBuilder $queryBuilder
  * @param int $id
  * @param string $searchFilter
  * @return QueryBuilder
  */
 protected function setWhereClause(QueryBuilder $queryBuilder, $id, $searchFilter = '') : QueryBuilder
 {
     $expressionBuilder = $queryBuilder->expr();
     $queryBuilder->where(QueryHelper::stripLogicalOperatorPrefix($GLOBALS['BE_USER']->getPagePermsClause(1)));
     if (is_numeric($id) && $id >= 0) {
         $queryBuilder->andWhere($expressionBuilder->eq('pid', $queryBuilder->createNamedParameter($id, \PDO::PARAM_INT)));
     }
     $excludedDoktypes = $GLOBALS['BE_USER']->getTSConfigVal('options.pageTree.excludeDoktypes');
     if (!empty($excludedDoktypes)) {
         $queryBuilder->andWhere($expressionBuilder->notIn('doktype', $queryBuilder->createNamedParameter(GeneralUtility::intExplode(',', $excludedDoktypes, true), Connection::PARAM_INT_ARRAY)));
     }
     if ($searchFilter !== '') {
         $searchParts = $expressionBuilder->orX();
         if (is_numeric($searchFilter) && $searchFilter > 0) {
             $searchParts->add($expressionBuilder->eq('uid', $queryBuilder->createNamedParameter($searchFilter, \PDO::PARAM_INT)));
         }
         $searchFilter = '%' . $queryBuilder->escapeLikeWildcards($searchFilter) . '%';
         $useNavTitle = $GLOBALS['BE_USER']->getTSConfigVal('options.pageTree.showNavTitle');
         $useAlias = $GLOBALS['BE_USER']->getTSConfigVal('options.pageTree.searchInAlias');
         $aliasExpression = '';
         if ($useAlias) {
             $aliasExpression = $expressionBuilder->like('alias', $queryBuilder->createNamedParameter($searchFilter, \PDO::PARAM_STR));
         }
         if ($useNavTitle) {
             $searchWhereAlias = $expressionBuilder->orX($expressionBuilder->like('nav_title', $queryBuilder->createNamedParameter($searchFilter, \PDO::PARAM_STR)), $expressionBuilder->andX($expressionBuilder->eq('nav_title', $queryBuilder->createNamedParameter('', \PDO::PARAM_STR)), $expressionBuilder->like('title', $queryBuilder->createNamedParameter($searchFilter, \PDO::PARAM_STR))));
             if (strlen($aliasExpression)) {
                 $searchWhereAlias->add($aliasExpression);
             }
             $searchParts->add($searchWhereAlias);
         } else {
             $searchParts->add($expressionBuilder->like('title', $queryBuilder->createNamedParameter($searchFilter, \PDO::PARAM_STR)));
             if (strlen($aliasExpression)) {
                 $searchParts->add($aliasExpression);
             }
         }
         $queryBuilder->andWhere($searchParts);
     }
     return $queryBuilder;
 }