Exemplo n.º 1
0
 /**
  * Paginates an ElementCriteriaModel instance.
  *
  * @param ElementCriteriaModel $criteria
  *
  * @return array
  */
 public static function paginateCriteria(ElementCriteriaModel $criteria)
 {
     $currentPage = craft()->request->getPageNum();
     $limit = $criteria->limit;
     $total = $criteria->total() - $criteria->offset;
     $totalPages = ceil($total / $limit);
     if ($currentPage > $totalPages) {
         $currentPage = $totalPages;
     }
     $offset = $limit * ($currentPage - 1);
     // Is there already an offset set?
     if ($criteria->offset) {
         $offset += $criteria->offset;
     }
     $last = $offset + $limit;
     if ($last > $total) {
         $last = $total;
     }
     $paginateVariable = new PaginateVariable();
     $paginateVariable->first = $offset + 1;
     $paginateVariable->last = $last;
     $paginateVariable->total = $total;
     $paginateVariable->currentPage = $currentPage;
     $paginateVariable->totalPages = $totalPages;
     // Get the entities
     $criteria->offset = $offset;
     $entities = $criteria->find();
     return array($paginateVariable, $entities);
 }
Exemplo n.º 2
0
 /**
  * Paginates an ElementCriteriaModel instance.
  */
 public static function paginateCriteria(ElementCriteriaModel $criteria)
 {
     $currentPage = craft()->request->getPageNum();
     $limit = $criteria->limit;
     $total = $criteria->total();
     $totalPages = ceil($total / $limit);
     if ($currentPage > $totalPages) {
         $currentPage = $totalPages;
     }
     $offset = $limit * ($currentPage - 1);
     $path = craft()->request->getPath();
     $pageUrlPrefix = ($path ? $path . '/' : '') . craft()->config->get('pageTrigger');
     $last = $offset + $limit;
     if ($last > $total) {
         $last = $total;
     }
     $info = array('first' => $offset + 1, 'last' => $last, 'total' => $total, 'currentPage' => $currentPage, 'totalPages' => $totalPages, 'prevUrl' => $currentPage > 1 ? UrlHelper::getUrl($pageUrlPrefix . ($currentPage - 1)) : null, 'nextUrl' => $currentPage < $totalPages ? UrlHelper::getUrl($pageUrlPrefix . ($currentPage + 1)) : null);
     // Get the entities
     $criteria->offset = $offset;
     $entities = $criteria->find();
     return array($info, $entities);
 }
Exemplo n.º 3
0
 /**
  * Paginates an ElementCriteriaModel instance.
  *
  * @param ElementCriteriaModel $criteria
  *
  * @return array
  */
 public static function paginateCriteria(ElementCriteriaModel $criteria)
 {
     $currentPage = craft()->request->getPageNum();
     $limit = $criteria->limit;
     $total = $criteria->total() - $criteria->offset;
     // If they specified limit as null or 0 (for whatever reason), just assume it's all going to be on one page.
     if (!$limit) {
         $limit = $total;
     }
     $totalPages = ceil($total / $limit);
     $paginateVariable = new PaginateVariable();
     if ($totalPages == 0) {
         return array($paginateVariable, array());
     }
     if ($currentPage > $totalPages) {
         $currentPage = $totalPages;
     }
     $offset = $limit * ($currentPage - 1);
     // Is there already an offset set?
     if ($criteria->offset) {
         $offset += $criteria->offset;
     }
     $last = $offset + $limit;
     if ($last > $total) {
         $last = $total;
     }
     $paginateVariable->first = $offset + 1;
     $paginateVariable->last = $last;
     $paginateVariable->total = $total;
     $paginateVariable->currentPage = $currentPage;
     $paginateVariable->totalPages = $totalPages;
     // Copy the criteria, set the offset, and get the elements
     $criteria = $criteria->copy();
     $criteria->offset = $offset;
     $elements = $criteria->find();
     return array($paginateVariable, $elements);
 }