/**
  * @param array          $entities
  * @param PaginationData $paginationData
  * @param array          $additionalData
  *
  * @return Closure
  */
 public function getPagination(array $entities, PaginationData $paginationData, array $additionalData = null)
 {
     if (is_null($entities)) {
         $entities = array();
     }
     if (is_null($additionalData)) {
         $additionalData = array();
     }
     $pagination = new Pagination($entities, $paginationData->getTotalItemsCount());
     $pagination->setCurrentPage($paginationData->getPageIndex());
     $pagination->setPageRange($paginationData->getPageRange());
     $pagination->setPageSize($paginationData->getPageSize());
     $twig_env = $this->twig;
     $twig_template = $this->template;
     $pagination->renderer = function ($data) use($twig_env, $twig_template, $additionalData) {
         //return var_export($data, true);
         // common errors to check: is $twig_template file present?
         //return $twig_template;
         try {
             return $twig_env->render($twig_template, array_merge($data, $additionalData));
         } catch (\Exception $e) {
             return $e->getMessage();
         }
     };
     return $pagination;
 }
 public function testPaginationRange()
 {
     $range = 10;
     // page navigatin window
     $this->GenerateDummyData(100);
     $p = new Pagination($this->dummy, count($this->dummy));
     $p->setPageRange($range);
     $p->setItemNumberPerPage(10);
     $p->setCurrentPageNumber(5);
     // page index value ('values' for this page are being displayed)
     $r = $p->getPaginationData();
     $this->assertTrue(max($r['pagesInRange']) - min($r['pagesInRange']) + 1 == $range);
 }
 /**
  * Returns a pagination object
  * 
  * @param array $entities
  * @param integer $entity_count
  * @param integer $current_page_index
  * @param integer $page_range
  * @param integer $page_size
  * @param array $additional_data
  * @return Pagination
  */
 public function getPagination($entities, $entity_count, $current_page_index, $page_range, $page_size, $additional_data = null)
 {
     if ($entities != null && !is_array($entities)) {
         throw new \Exception('Pagination.getPagination: $entities is not an array');
     }
     if ($entities == null) {
         $entities = array();
     }
     if ($additional_data != null && !is_array($additional_data)) {
         throw new \Exception('Pagination.getPagination: $additional_data is not an array');
     }
     if ($additional_data == null) {
         $additional_data = array();
     }
     $pagination = new Paginator($entities, $entity_count);
     $pagination->setPageRange($page_range);
     $pagination->setItemNumberPerPage($page_size);
     $pagination->setCurrentPageNumber($current_page_index);
     $twig_env = $this->twig;
     $twig_template = $this->template;
     $pagination->renderer = function ($data) use($twig_env, $twig_template, $additional_data) {
         //return var_export($data, true);
         // common errors to check: is $twig_template file present?
         //return $twig_template;
         try {
             return $twig_env->render($twig_template, array_merge($data, $additional_data));
         } catch (\Exception $e) {
             return $e->getMessage();
         }
     };
     return $pagination;
 }