Example #1
0
 /**
  * Returns an array of "local" pages given a page number and range.
  *
  * @param  Paginator $paginator
  * @param  integer   $pageRange (Optional) Page range
  * @return array
  */
 public function getPages(Paginator $paginator, $pageRange = null)
 {
     if ($pageRange === null) {
         $pageRange = $paginator->getPageRange();
     }
     $pageNumber = $paginator->getCurrentPageNumber();
     $pageCount = count($paginator);
     if ($pageRange > $pageCount) {
         $pageRange = $pageCount;
     }
     $delta = ceil($pageRange / 2);
     if ($pageNumber - $delta > $pageCount - $pageRange) {
         $lowerBound = $pageCount - $pageRange + 1;
         $upperBound = $pageCount;
     } else {
         if ($pageNumber - $delta < 0) {
             $delta = $pageNumber;
         }
         $offset = $pageNumber - $delta;
         $lowerBound = $offset + 1;
         $upperBound = $offset + $pageRange;
     }
     return $paginator->getPagesInRange($lowerBound, $upperBound);
 }
Example #2
0
 /**
  * @param Cond $cond
  *
  * @throws \Model\Exception\ErrorException
  * @return array|mixed|string
  */
 public function fetchAll(Cond $cond = null)
 {
     $entity = $cond->getEntityName();
     $entity = $entity ? $entity : $this->getRawName();
     $prepareCallbackFunction = 'prepareCollection';
     $pager = null;
     try {
         $select = $this->prepareSelect($cond, $entity);
         if ($cond->checkCond(Cond::SHOW_QUERY) || $cond->checkCond(Cond::SHOW_QUERY_EXTENDED)) {
             echo '<!--' . $select . "-->\n";
         }
         if ($cond->getCond('return_query')) {
             return (string) $select;
         } else {
             $items = $select->query()->fetchAll();
         }
         if ($cond->checkCond(Cond::PAGE)) {
             $pager = new Paginator(new ArraySet($items));
             $pager->setCurrentPageNumber($cond->getCond('page'));
             $pager->setItemCountPerPage($cond->getCond('items_per_page'));
             $pager->setTotalItemCount($this->fetchCount($cond));
         }
     } catch (\Exception $e) {
         $items = array();
     }
     if ($cond->checkCond(Cond::WITHOUT_PREPARE)) {
         return $items;
     } else {
         return call_user_func(array($this, $prepareCallbackFunction), $items, $cond, $pager);
     }
 }