]> git.mxchange.org Git - friendica.git/blobdiff - src/Content/BoundariesPager.php
Merge pull request #13161 from annando/bluesky-activities
[friendica.git] / src / Content / BoundariesPager.php
index da296bd8cc95bda3a7e9c22c2aa3752717d1fca0..6ab64fdef8997c89ce255de258a100565c57e65c 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2020, Friendica
+ * @copyright Copyright (C) 2010-2023, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
 
 namespace Friendica\Content;
 
+use Friendica\Core\L10n;
 use Friendica\Core\Renderer;
-use Friendica\DI;
 use Friendica\Util\Network;
 use Friendica\Util\Strings;
 
 /**
- * This pager should be used by lists using the since_id/max_id parameters
+ * This pager should be used by lists using the min_id†/max_id† parameters
  *
- * In this context, "id" refers to the value of the column that the list is ordered by.
- * This pager automatically identifies if the sorting is done increasingly or decreasingly if the first item id
- * and last item id are different. Otherwise it defaults to decreasingly like reverse chronological lists.
+ * This pager automatically identifies if the sorting is done increasingly or decreasingly if the first item id†
+ * and last item id† are different. Otherwise it defaults to decreasingly like reverse chronological lists.
+ *
+ * † In this context, "id" refers to the value of the column that the item list is ordered by.
  */
 class BoundariesPager extends Pager
 {
@@ -42,25 +43,26 @@ class BoundariesPager extends Pager
        /**
         * Instantiates a new Pager with the base parameters.
         *
+        * @param L10n    $l10n
         * @param string  $queryString   The query string of the current page
-        * @param string  $first_item_id The i
-        * @param string  $last_item_id
-        * @param integer $itemsPerPage An optional number of items per page to override the default value
+        * @param string  $first_item_id The id† of the first item in the displayed item list
+        * @param string  $last_item_id  The id† of the last item in the displayed item list
+        * @param integer $itemsPerPage  An optional number of items per page to override the default value
         */
-       public function __construct($queryString, $first_item_id = null, $last_item_id = null, $itemsPerPage = 50)
+       public function __construct(L10n $l10n, string $queryString, string $first_item_id = null, string $last_item_id = null, int $itemsPerPage = 50)
        {
-               parent::__construct($queryString, $itemsPerPage);
+               parent::__construct($l10n, $queryString, $itemsPerPage);
 
                $this->first_item_id = $first_item_id;
                $this->last_item_id = $last_item_id;
 
                $parsed = parse_url($this->getBaseQueryString());
-               if ($parsed) {
+               if (!empty($parsed['query'])) {
                        parse_str($parsed['query'], $queryParameters);
 
-                       $this->first_page = !($queryParameters['since_id'] ?? null) && !($queryParameters['max_id'] ?? null);
+                       $this->first_page = !($queryParameters['min_id'] ?? null) && !($queryParameters['max_id'] ?? null);
 
-                       unset($queryParameters['since_id']);
+                       unset($queryParameters['min_id']);
                        unset($queryParameters['max_id']);
 
                        $parsed['query'] = http_build_query($queryParameters);
@@ -71,12 +73,12 @@ class BoundariesPager extends Pager
                }
        }
 
-       public function getStart()
+       public function getStart(): int
        {
                throw new \BadMethodCallException();
        }
 
-       public function getPage()
+       public function getPage(): int
        {
                throw new \BadMethodCallException();
        }
@@ -92,7 +94,7 @@ class BoundariesPager extends Pager
         * $params = ['order' => ['sort_field' => true], 'limit' => $itemsPerPage];
         * $items = DBA::toArray(DBA::select($table, $fields, $condition, $params));
         *
-        * $pager = new BoundariesPager($a->query_string, $items[0]['sort_field'], $items[coutn($items) - 1]['sort_field'], $itemsPerPage);
+        * $pager = new BoundariesPager($a->query_string, $items[0]['sort_field'], $items[count($items) - 1]['sort_field'], $itemsPerPage);
         *
         * $html = $pager->renderMinimal(count($items));
         *
@@ -100,7 +102,7 @@ class BoundariesPager extends Pager
         * @return string HTML string of the pager
         * @throws \Exception
         */
-       public function renderMinimal(int $itemCount)
+       public function renderMinimal(int $itemCount): string
        {
                $displayedItemCount = max(0, intval($itemCount));
 
@@ -109,17 +111,17 @@ class BoundariesPager extends Pager
                        'prev'  => [
                                'url'   => Strings::ensureQueryParameter($this->baseQueryString .
                                        ($this->first_item_id >= $this->last_item_id ?
-                                               '&since_id=' . $this->first_item_id : '&max_id=' . $this->first_item_id)
+                                               '&min_id=' . $this->first_item_id : '&max_id=' . $this->first_item_id)
                                ),
-                               'text'  => DI::l10n()->t('newer'),
+                               'text'  => $this->l10n->t('newer'),
                                'class' => 'previous' . ($this->first_page ? ' disabled' : '')
                        ],
                        'next'  => [
                                'url'   => Strings::ensureQueryParameter($this->baseQueryString .
                                        ($this->first_item_id >= $this->last_item_id ?
-                                       '&max_id=' . $this->last_item_id : '&since_id=' . $this->last_item_id)
+                                       '&max_id=' . $this->last_item_id : '&min_id=' . $this->last_item_id)
                                ),
-                               'text'  => DI::l10n()->t('older'),
+                               'text'  => $this->l10n->t('older'),
                                'class' =>  'next' . ($displayedItemCount < $this->getItemsPerPage() ? ' disabled' : '')
                        ]
                ];
@@ -128,7 +130,10 @@ class BoundariesPager extends Pager
                return Renderer::replaceMacros($tpl, ['pager' => $data]);
        }
 
-       public function renderFull($itemCount)
+       /**
+        * Unsupported method, must be type-compatible
+        */
+       public function renderFull(int $itemCount): string
        {
                throw new \BadMethodCallException();
        }