opensearch paging
[phinde.git] / src / phinde / Html / Pager.php
1 <?php
2 namespace phinde;
3
4 class Html_Pager
5 {
6     protected $pager;
7
8     /**
9      * Create a new pager
10      *
11      * @param integer $itemCount   Number of items in total
12      * @param integer $perPage     Number of items on one page
13      * @param integer $currentPage Current page, beginning with 1
14      * @param string  $filename    URL the page number shall be appended
15      */
16     public function __construct($itemCount, $perPage, $currentPage, $filename)
17     {
18         $append = true;
19         if (strpos($filename, '%d') !== false) {
20             $append = false;
21         }
22         //fix non-static factory method error
23         error_reporting(error_reporting() & ~E_STRICT);
24         $this->pager = \Pager::factory(
25             array(
26                 'mode'        => 'Sliding',
27                 'perPage'     => $perPage,
28                 'delta'       => 2,
29                 'totalItems'  => $itemCount,
30                 'currentPage' => $currentPage,
31                 'urlVar'      => 'page',
32                 'append'      => $append,
33                 'path'        => '',
34                 'fileName'    => $filename,
35                 'separator'   => '###',
36                 'spacesBeforeSeparator' => 0,
37                 'spacesAfterSeparator' => 0,
38                 'curPageSpanPre' => '',
39                 'curPageSpanPost' => '',
40                 'firstPagePre' => '',
41                 'firstPageText' => 'first',
42                 'firstPagePost' => '',
43                 'lastPagePre' => '',
44                 'lastPageText' => 'last',
45                 'lastPagePost' => '',
46                 'prevImg' => '« prev',
47                 'nextImg' => 'next »',
48             )
49         );
50     }
51
52
53     public function getLinks()
54     {
55         $arLinks = $this->pager->getLinks();
56         $arLinks['pages'] = explode('###', $arLinks['pages']);
57         return $arLinks;
58     }
59
60     public function getFullUrls()
61     {
62         $arLinks = $this->pager->getLinks();
63         $arUrls = array();
64         foreach ($arLinks['linkTagsRaw'] as $key => $link) {
65             if (isset($link['url'])) {
66                 $arUrls[$key] = str_replace(
67                     '&amp;', '&',
68                     Helper::fullUrl('/'  . $link['url'])
69                 );
70             }
71         }
72         return $arUrls;
73     }
74
75     public function numPages()
76     {
77         return $this->pager->numPages();
78     }
79 }
80
81 ?>