diff --git a/core/includes/pager.inc b/core/includes/pager.inc index 62e8278..557826f 100644 --- a/core/includes/pager.inc +++ b/core/includes/pager.inc @@ -29,9 +29,12 @@ function pager_find_page($element = 0) { $page = \Drupal::request()->query->get('page', ''); $page_array = explode(',', $page); if (!isset($page_array[$element])) { - $page_array[$element] = 0; + $page_found = 0; } - return (int) $page_array[$element]; + else { + $page_found = max(0, (int) $page_array[$element]); + } + return $page_found; } /** @@ -132,8 +135,9 @@ function pager_default_initialize($total, $limit, $element = 0) { // We calculate the total of pages as ceil(items / limit). $pager_total_items[$element] = $total; $pager_total[$element] = ceil($pager_total_items[$element] / $limit); - $pager_page_array[$element] = max(0, min($page, ((int) $pager_total[$element]) - 1)); + $pager_page_array[$element] = min($page, ((int) $pager_total[$element]) - 1); $pager_limits[$element] = $limit; + return $pager_page_array[$element]; } diff --git a/core/lib/Drupal/Core/Entity/Query/QueryBase.php b/core/lib/Drupal/Core/Entity/Query/QueryBase.php index ed3d12b..4d19a4c 100644 --- a/core/lib/Drupal/Core/Entity/Query/QueryBase.php +++ b/core/lib/Drupal/Core/Entity/Query/QueryBase.php @@ -291,9 +291,9 @@ public function pager($limit = 10, $element = NULL) { */ protected function initializePager() { if ($this->pager && !empty($this->pager['limit']) && !$this->count) { - $page = pager_find_page($this->pager['element']); $count_query = clone $this; $this->pager['total'] = $count_query->count()->execute(); + $page = min(pager_find_page($this->pager['element'], ((int) ceil($this->pager['total'] / $this->pager['limit'])) - 1)); $this->pager['start'] = $page * $this->pager['limit']; pager_default_initialize($this->pager['total'], $this->pager['limit'], $this->pager['element']); $this->range($this->pager['start'], $this->pager['limit']);