/**
  * @param type                                          $contentHandlerId
  * @param type                                          $state
  * @param \NyroDev\NyroCmsBundle\Repository\Orm\Content $specificContent
  * @param array                                         $where
  * @param array                                         $order
  *
  * @return \Doctrine\ORM\QueryBuilder
  */
 public function getQbForHandler($contentHandlerId, $state = ContentSpec::STATE_ACTIVE, Content $specificContent = null, array $where = array(), array $order = array())
 {
     $qb = $this->createQueryBuilder('cs')->andWhere('cs.contentHandler = :chid')->setParameter('chid', $contentHandlerId);
     if ($specificContent && $specificContent->getId()) {
         $qb->andWhere('(:cid MEMBER OF cs.contents OR SIZE(cs.contents) = 0)')->setParameter('cid', $specificContent->getId());
     }
     $qb->andWhere('(cs.validStart IS NULL OR cs.validStart <= :now)')->andWhere('(cs.validEnd IS NULL OR cs.validEnd >= :now)')->setParameter('now', new \DateTime());
     if ($state) {
         $qb->andWhere('cs.state = :state')->setParameter('state', $state);
     }
     if (count($where)) {
         foreach ($where as $k => $v) {
             $operator = '=';
             if ($k[0] == '!') {
                 $operator = '<>';
                 $k = substr($k, 1);
             }
             $qb->andWhere('cs.' . $k . ' ' . $operator . ' :' . $k . '_wh')->setParameter($k . '_wh', $v);
         }
     }
     if (count($order)) {
         foreach ($order as $k => $v) {
             $qb->addOrderBy('cs.' . $k, $v);
         }
     }
     return $qb;
 }
示例#2
0
 public function canAdminContent(Content $content)
 {
     if ($this->isSuperAdmin()) {
         return true;
     }
     $contentIds = $this->getAdministrableContentIds();
     return isset($contentIds[$content->getId()]) ? $contentIds[$content->getId()] : false;
 }
 protected function getQueryMenuOption($menuOption, \NyroDev\NyroCmsBundle\Model\Content $root = null)
 {
     $qb = $this->createQueryBuilder('c')->andWhere('c.menuOption LIKE :menuOption')->setParameter('menuOption', $menuOption);
     if ($root) {
         $qb->andWhere('c.root = :root')->setParameter('root', $root->getId());
     }
     $q = $qb->getQuery();
     $q->setHint(\Doctrine\ORM\Query::HINT_CUSTOM_OUTPUT_WALKER, 'Gedmo\\Translatable\\Query\\TreeWalker\\TranslationWalker');
     return $q;
 }