/**
  * Returns paginated content
  *
  * If the $queryBuilder for entities does include a grouping function, the automatic counting will fail (since
  * sub selects are not fully supported in DQL). You can pass an additional query builder just for the counting query
  * in $countQueryBuilder then (no need to set the select("COUNT(..)"), as this will be done automatically).
  *
  * @param QueryBuilder      $queryBuilder      The query builder to retrieve the entities
  * @param Pagination        $pagination        The pagination object
  * @param QueryBuilder|null $countQueryBuilder The additional query builder, just for the count query
  * @param int|null          $forceCount        if given, forces the count to be this exact value
  *
  * @return PaginatedList
  */
 protected function getPaginatedResults(QueryBuilder $queryBuilder, Pagination $pagination, QueryBuilder $countQueryBuilder = null, $forceCount = null)
 {
     $pagination->setNumberOfItems($this->getTotalNumberOfItems($queryBuilder, $countQueryBuilder, $forceCount));
     $offset = ($pagination->getCurrentPage() - $pagination->getMinPage()) * $pagination->getItemsPerPage();
     if (0 < $pagination->getNumberOfItems()) {
         $queryBuilder->setFirstResult($offset)->setMaxResults($pagination->getItemsPerPage());
         $list = iterator_to_array(new Paginator($queryBuilder->getQuery()));
     } else {
         $list = array();
     }
     return new PaginatedList($list, $pagination);
 }
 /**
  * Test for valid number of items, set in constructor
  */
 public function testMinPageConstructor()
 {
     $pagination = new Pagination(1, 25, 1);
     $pagination->setMinPage(2);
     $this->assertSame(2, $pagination->getMinPage());
 }