コード例 #1
0
 private function proxyQuery($query)
 {
     $proxyQuery = new ProxyQuery($query);
     $proxyQuery->setSortBy(array(), array('fieldName' => 'createdAt'));
     $proxyQuery->setSortOrder('DESC');
     return $proxyQuery;
 }
コード例 #2
0
ファイル: PostManager.php プロジェクト: josephzhao/cvcbrowser
 /**
  * {@inheritdoc}
  */
 public function getPager(array $criteria, $page, $maxPerPage = 10, array $sort = array())
 {
     if (!isset($criteria['mode'])) {
         $criteria['mode'] = 'public';
     }
     $parameters = array();
     $query = $this->getRepository()->createQueryBuilder('p')->select('p,t');
     if ($criteria['mode'] == 'admin') {
         $query->leftJoin('p.tags', 't')->leftJoin('p.author', 'a');
     } else {
         $query->leftJoin('p.tags', 't', Join::WITH, 't.enabled = true')->leftJoin('p.author', 'a', Join::WITH, 'a.enabled = true');
     }
     if ($criteria['mode'] == 'public') {
         // enabled
         $criteria['enabled'] = isset($criteria['enabled']) ? $criteria['enabled'] : true;
         $query->andWhere('p.enabled = :enabled');
         $parameters['enabled'] = $criteria['enabled'];
     }
     if (isset($criteria['date'])) {
         $query->andWhere($criteria['date']['query']);
         $parameters = array_merge($parameters, $criteria['date']['params']);
     }
     if (isset($criteria['tag'])) {
         $query->andWhere('t.slug LIKE :tag');
         $parameters['tag'] = (string) $criteria['tag'];
     }
     if (isset($criteria['author'])) {
         if (!is_array($criteria['author']) && stristr($criteria['author'], 'NULL')) {
             $query->andWhere('p.author IS ' . $criteria['author']);
         } else {
             $query->andWhere(sprintf('p.author IN (%s)', implode((array) $criteria['author'], ',')));
         }
     }
     if (isset($criteria['collection']) && $criteria['collection'] instanceof CollectionInterface) {
         $query->andWhere('p.collection = :collectionid');
         $parameters['collectionid'] = $criteria['collection']->getId();
     }
     $query->setParameters($parameters);
     $pager = new Pager();
     $pager->setMaxPerPage($maxPerPage);
     $proxyQuery = new ProxyQuery($query);
     $proxyQuery->setSortBy(array(), array('fieldName' => 'publicationDateStart'));
     $proxyQuery->setSortOrder('DESC');
     $pager->setQuery($proxyQuery);
     $pager->setPage($page);
     $pager->init();
     return $pager;
 }