From 8358aa00de2ec9efd4c51b8bef11bd700a56c19c Mon Sep 17 00:00:00 2001 From: Roman Kelesidis Date: Tue, 1 Apr 2025 22:06:36 +0700 Subject: [PATCH] fix: Pagination issue in `Report on action` page (#1872) --- library/includes/functions.php | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/library/includes/functions.php b/library/includes/functions.php index 5ef3e8a43..800c17fef 100644 --- a/library/includes/functions.php +++ b/library/includes/functions.php @@ -1231,11 +1231,16 @@ function generate_pagination($base_url, $num_items, $per_page, $start_item, $add $total_pages = ceil($num_items / $per_page); $on_page = floor($start_item / $per_page) + 1; + $query_separator = '&'; + if (!str_contains($base_url, '?')) { + $query_separator = '?'; + } + $page_string = ''; if ($total_pages > ((2 * ($begin_end + $from_middle)) + 2)) { $init_page_max = ($total_pages > $begin_end) ? $begin_end : $total_pages; for ($i = 1; $i < $init_page_max + 1; $i++) { - $page_string .= ($i == $on_page) ? '' . $i . '' : '' . $i . ''; + $page_string .= ($i == $on_page) ? '' . $i . '' : '' . $i . ''; if ($i < $init_page_max) { $page_string .= ", "; } @@ -1249,7 +1254,7 @@ function generate_pagination($base_url, $num_items, $per_page, $start_item, $add $init_page_max = ($on_page < $total_pages - ($begin_end + $from_middle)) ? $on_page : $total_pages - ($begin_end + $from_middle); for ($i = $init_page_min - $from_middle; $i < $init_page_max + ($from_middle + 1); $i++) { - $page_string .= ($i == $on_page) ? '' . $i . '' : '' . $i . ''; + $page_string .= ($i == $on_page) ? '' . $i . '' : '' . $i . ''; if ($i < $init_page_max + $from_middle) { $page_string .= ', '; } @@ -1259,7 +1264,7 @@ function generate_pagination($base_url, $num_items, $per_page, $start_item, $add $page_string .= ' ... '; } for ($i = $total_pages - ($begin_end - 1); $i < $total_pages + 1; $i++) { - $page_string .= ($i == $on_page) ? '' . $i . '' : '' . $i . ''; + $page_string .= ($i == $on_page) ? '' . $i . '' : '' . $i . ''; if ($i < $total_pages) { $page_string .= ", "; } @@ -1267,7 +1272,7 @@ function generate_pagination($base_url, $num_items, $per_page, $start_item, $add } } else { for ($i = 1; $i < $total_pages + 1; $i++) { - $page_string .= ($i == $on_page) ? '' . $i . '' : '' . $i . ''; + $page_string .= ($i == $on_page) ? '' . $i . '' : '' . $i . ''; if ($i < $total_pages) { $page_string .= ', '; } @@ -1276,20 +1281,20 @@ function generate_pagination($base_url, $num_items, $per_page, $start_item, $add if ($add_prevnext_text) { if ($on_page > 1) { - $page_string = ' ' . $lang['PREVIOUS_PAGE'] . '  ' . $page_string; - $meta_prev_link = FULL_URL . $base_url . "&start=" . (($on_page - 2) * $per_page); + $page_string = ' ' . $lang['PREVIOUS_PAGE'] . '  ' . $page_string; + $meta_prev_link = FULL_URL . $base_url . "{$query_separator}start=" . (($on_page - 2) * $per_page); } if ($on_page < $total_pages) { - $page_string .= '  ' . $lang['NEXT_PAGE'] . ''; - $meta_next_link = FULL_URL . $base_url . "&start=" . ($on_page * $per_page); + $page_string .= '  ' . $lang['NEXT_PAGE'] . ''; + $meta_next_link = FULL_URL . $base_url . "{$query_separator}start=" . ($on_page * $per_page); } } $pagination = false; if ($page_string && $total_pages > 1) { $pagination = '' . $lang['GOTO_PAGE'] . ' :  ' . $page_string; - $pagination = str_replace('&start=0', '', $pagination); + $pagination = str_replace("{$query_separator}start=0", '', $pagination); } $template->assign_vars([