From 7e451f7cbbc6ab93f3811050761bdfd4117e1273 Mon Sep 17 00:00:00 2001 From: Silvan Calarco Date: Sat, 6 Jul 2024 17:22:41 +0200 Subject: [PATCH] distroquery: suppport for pagination of repository packages list --- distroquery.php | 40 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/distroquery.php b/distroquery.php index 5bd646f..3ffb743 100644 --- a/distroquery.php +++ b/distroquery.php @@ -53,7 +53,9 @@ $url_prefix = home_url() . "/rpms/"; // echo " > Repositories"; - $request = wp_remote_get('https://push.openmamba.org/openmamba/distroquery/api/v1/repository/' . $repo); + $page = $_GET['page']; + if ($page != "") $query_string="?page=" . $page; + $request = wp_remote_get('https://push.openmamba.org/openmamba/distroquery/api/v1/repository/' . $repo . $query_string); $j = json_decode($request["body"], true); if ($j["error"] != "") { @@ -63,7 +65,41 @@ $url_prefix = home_url() . "/rpms/"; echo " > " . $repo; echo "

" . _r("List of packages") . ":

"; - foreach ($j as $package) { + // Pagination + if ($j["query"]["pages"]) { + $page = $j["query"]["page"]; + $pages = $j["query"]["pages"]; + $from_page = 1; + if ($page > 10) $from_page = $page - 10; + $to_page = $from_page + 20; + if ($to_page > $pages) { + $to_page = $pages; + $from_page = $to_page - 20; + if ($from_page < 1) $from_page = 1; + } + echo _r("Page") . " " . $page . " " . _r("of") . " " . $pages . " [ "; + if ($from_page > 1) { + $back_page = $from_page - 10; + if ($back_page < 1) $back_page = 1; + echo "< "; + } + for ($i = $from_page; $i <= $to_page; $i++) { + if ($i != $j["query"]["page"]) { + echo "" . $i . " "; + } else { + echo "" . $i . " "; + } + } + if ($to_page < $pages) { + $next_page = $to_page + 10; + if ($next_page > $pages) $next_page = $pages; + if ($next_page < 1) $next_page = 1; + echo "> "; + } + echo "]

"; + } + + foreach ($j["packages"] as $package) { $package_url = $url_prefix . $repo . "/" . $package["name"]; echo "". $package["name"] . ": " . $package["summary"] . "
"; }