]> git.mxchange.org Git - friendica.git/commitdiff
Update paginate_data()
authorHypolite Petovan <ben.lort@gmail.com>
Thu, 2 Mar 2017 04:26:49 +0000 (23:26 -0500)
committerHypolite Petovan <ben.lort@gmail.com>
Thu, 2 Mar 2017 04:26:49 +0000 (23:26 -0500)
- Formatting: Normalize quotes, spaces, braces
- Add "disabled" CSS class to links previously ommitted
- Add "previous" and "next" CSS classes to minimal pager links
- Add main pager CSS class depending on type

include/text.php

index 11248902ba0c7a6840a18485b20adc85e2af8df2..580bd95fc75c81343dd3e8466cc09bba9574fd35 100644 (file)
@@ -268,90 +268,89 @@ function hex2bin($s) {
 }}
 
 
-if(! function_exists('paginate_data')) {
 /**
- * Automatica pagination data.
+ * @brief Paginator function. Pushes relevant links in a pager array structure.
+ *
+ * Links are generated depending on the current page and the total number of items.
+ * Inactive links (like "first" and "prev" on page 1) are given the "disabled" class.
+ * Current page link is given the "active" CSS class
  *
  * @param App $a App instance
- * @param int $count [optional] item count (used with alt pager)
+ * @param int $count [optional] item count (used with minimal pager)
  * @return Array data for pagination template
  */
-function paginate_data(App $a, $count=null) {
-       $stripped = preg_replace('/([&?]page=[0-9]*)/','',$a->query_string);
+function paginate_data(App $a, $count = null) {
+       $stripped = preg_replace('/([&?]page=[0-9]*)/', '', $a->query_string);
 
-       $stripped = str_replace('q=','',$stripped);
-       $stripped = trim($stripped,'/');
+       $stripped = str_replace('q=', '', $stripped);
+       $stripped = trim($stripped, '/');
        $pagenum = $a->pager['page'];
 
-       if (($a->page_offset != "") AND !preg_match('/[?&].offset=/', $stripped))
-               $stripped .= "&offset=".urlencode($a->page_offset);
+       if (($a->page_offset != '') AND !preg_match('/[?&].offset=/', $stripped)) {
+               $stripped .= '&offset=' . urlencode($a->page_offset);
+       }
 
        $url = $stripped;
 
        $data = array();
-       function _l(&$d, $name, $url, $text, $class="") {
-               if (!strpos($url, "?")) {
-                       if ($pos = strpos($url, "&"))
-                               $url = substr($url, 0, $pos)."?".substr($url, $pos + 1);
+       function _l(&$d, $name, $url, $text, $class = '') {
+               if (strpos($url, '?') === false && ($pos = strpos($url, '&')) !== false) {
+                       $url = substr($url, 0, $pos) . '?' . substr($url, $pos + 1);
                }
 
-               $d[$name] = array('url'=>$url, 'text'=>$text, 'class'=>$class);
+               $d[$name] = array('url' => $url, 'text' => $text, 'class' => $class);
        }
 
-       if (!is_null($count)){
-               // alt pager
-               if($a->pager['page']>1)
-                       _l($data,  "prev", $url.'&page='.($a->pager['page'] - 1), t('newer'));
-               if($count>0)
-                       _l($data,  "next", $url.'&page='.($a->pager['page'] + 1), t('older'));
+       if (!is_null($count)) {
+               // minimal pager (newer / older)
+               $data['class'] = 'pager';
+               _l($data, 'prev', $url . '&page=' . ($a->pager['page'] - 1), t('newer'), 'previous' . ($a->pager['page'] == 1 ? ' disabled' : ''));
+               _l($data, 'next', $url . '&page=' . ($a->pager['page'] + 1), t('older'), 'next' . ($count <= 0 ? ' disabled' : ''));
        } else {
-               // full pager
-               if($a->pager['total'] > $a->pager['itemspage']) {
-                       if($a->pager['page'] != 1)
-                               _l($data,  "prev", $url.'&page='.($a->pager['page'] - 1), t('prev'));
-
-                       _l($data, "first", $url."&page=1",  t('first'));
-
+               // full pager (first / prev / 1 / 2 / ... / 14 / 15 / next / last)
+               $data['class'] = 'pagination';
+               if ($a->pager['total'] > $a->pager['itemspage']) {
+                       _l($data, 'first', $url . '&page=1',  t('first'), $a->pager['page'] == 1 ? 'disabled' : '');
+                       _l($data, 'prev', $url . '&page=' . ($a->pager['page'] - 1), t('prev'), $a->pager['page'] == 1 ? 'disabled' : '');
 
                        $numpages = $a->pager['total'] / $a->pager['itemspage'];
 
                        $numstart = 1;
                        $numstop = $numpages;
 
-                       if($numpages > 14) {
+                       if ($numpages > 14) {
                                $numstart = (($pagenum > 7) ? ($pagenum - 7) : 1);
                                $numstop = (($pagenum > ($numpages - 7)) ? $numpages : ($numstart + 14));
                        }
 
                        $pages = array();
 
-                       for($i = $numstart; $i <= $numstop; $i++){
-                               if($i == $a->pager['page'])
-                                       _l($pages, $i, "#",  $i, "current");
-                               else
-                                       _l($pages, $i, $url."&page=$i", $i, "n");
+                       for ($i = $numstart; $i <= $numstop; $i++) {
+                               if ($i == $a->pager['page']) {
+                                       _l($pages, $i, '#',  $i, 'current active');
+                               } else {
+                                       _l($pages, $i, $url . '&page='. $i, $i, 'n');
+                               }
                        }
 
-                       if(($a->pager['total'] % $a->pager['itemspage']) != 0) {
-                               if($i == $a->pager['page'])
-                                       _l($pages, $i, "#",  $i, "current");
-                               else
-                                       _l($pages, $i, $url."&page=$i", $i, "n");
+                       if (($a->pager['total'] % $a->pager['itemspage']) != 0) {
+                               if ($i == $a->pager['page']) {
+                                       _l($pages, $i, '#',  $i, 'current active');
+                               } else {
+                                       _l($pages, $i, $url . '&page=' . $i, $i, 'n');
+                               }
                        }
 
                        $data['pages'] = $pages;
 
                        $lastpage = (($numpages > intval($numpages)) ? intval($numpages)+1 : $numpages);
-                       _l($data, "last", $url."&page=$lastpage", t('last'));
-
-                       if(($a->pager['total'] - ($a->pager['itemspage'] * $a->pager['page'])) > 0)
-                               _l($data, "next", $url."&page=".($a->pager['page'] + 1), t('next'));
-
+                       _l($data, 'next', $url . '&page=' . ($a->pager['page'] + 1), t('next'), $a->pager['page'] == $lastpage ? 'disabled' : '');
+                       _l($data, 'last', $url . '&page=' . $lastpage, t('last'), $a->pager['page'] == $lastpage ? 'disabled' : '');
                }
        }
-       return $data;
 
-}}
+       return $data;
+}
 
 if(! function_exists('paginate')) {
 /**