/**
  * @param array $criteria
  * @param integer $page
  *
  * @return \Sonata\AdminBundle\Datagrid\ODM\Pager
  */
 public function getPager(array $criteria, $page)
 {
     $parameters = array();
     $qb = $this->dm->getRepository($this->class)->createQueryBuilder()->sort('createdAt', 'desc');
     $criteria['status'] = isset($criteria['status']) ? $criteria['status'] : CommentInterface::STATUS_VALID;
     $qb->field('status')->equals($criteria['status']);
     if (isset($criteria['postId'])) {
         $qb->field('post')->equals($criteria['postId']);
     }
     $pager = new Pager(500);
     // no limit
     $pager->setQuery(new ProxyQuery($qb));
     $pager->setPage($page);
     $pager->init();
     return $pager;
 }
 /**
  * {@inheritdoc}
  */
 public function getPager(array $criteria, $page, $limit = 10, array $sort = array())
 {
     $parameters = array();
     $query = $this->getRepository()->createQueryBuilder('p')->select('p, t')->leftJoin('p.tags', 't')->orderby('p.publicationDateStart', 'DESC');
     // 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 and t.enabled = :tag_enabled');
         $parameters['tag'] = $criteria['tag'];
         $parameters['tag_enabled'] = true;
     }
     $query->setParameters($parameters);
     $pager = new Pager();
     $pager->setQuery(new ProxyQuery($query));
     $pager->setPage($page);
     $pager->init();
     return $pager;
 }
 /**
  * @param \Sonata\AdminBundle\Admin\AdminInterface $admin
  * @param array                                    $values
  *
  * @return \Sonata\AdminBundle\Datagrid\DatagridInterface
  */
 public function getBaseDatagrid(AdminInterface $admin, array $values = array())
 {
     $pager = new Pager();
     $pager->setCountColumn($admin->getModelManager()->getIdentifierFieldNames($admin->getClass()));
     $defaultOptions = array();
     if ($this->csrfTokenEnabled) {
         $defaultOptions['csrf_protection'] = false;
     }
     $formBuilder = $this->formFactory->createNamedBuilder('filter', 'form', array(), $defaultOptions);
     return new Datagrid($admin->createQuery(), $admin->getList(), $pager, $formBuilder, $values);
 }