Exemplo n.º 1
0
 /**
  * {@inheritdoc}
  */
 public function create(Listing $listing)
 {
     $page = $listing->page();
     $pages = $listing->pagesCount();
     $links = ['prev' => null, 'next' => null, 'current' => $listing->page(), 'pages' => []];
     if (!$pages) {
         return $links;
     }
     if ($page > 1) {
         $links['prev'] = $listing->getPageUrl($page - 1);
     }
     if ($page < $pages) {
         $links['next'] = $listing->getPageUrl($page + 1);
     }
     // first and last always
     $links['pages'][1] = $listing->getPageUrl(1);
     $from = max($page - $this->back - 1, 2);
     $to = min($page + $this->forward + 1, $pages - 1);
     for ($i = $from; $i <= $to; $i++) {
         if ($i != 2 && $i != $pages - 1 && ($i == $page - $this->back - 1 || $i == $page + $this->forward + 1)) {
             // placeholders
             $links['pages'][$i] = null;
         } else {
             $links['pages'][$i] = $listing->getPageUrl($i);
         }
     }
     $links['pages'][$pages] = $listing->getPageUrl($pages);
     return $links;
 }