index : archweb32 | |
Archlinux32 website | gitolite user |
summaryrefslogtreecommitdiff |
-rw-r--r-- | lib/style.php | 46 | ||||
-rw-r--r-- | packages/index.php | 19 |
diff --git a/lib/style.php b/lib/style.php index 99d9840..cc7b47d 100644 --- a/lib/style.php +++ b/lib/style.php @@ -124,31 +124,27 @@ $pkglist_sorts = array( ) ); -function package_listing_query_order_by() { +function query_package_listing($filter, $limit, $float_columns, $count_only, $extract_order_by_from_get) { global $pkglist_sorts; - if (!array_key_exists('sort', $_GET)) - return; - $criterium = $_GET['sort']; - if ( - array_key_exists($criterium, $pkglist_sorts) && - array_key_exists('mysql', $pkglist_sorts[$criterium]) - ) - return $pkglist_sorts[$criterium]['mysql'] . ','; - - if (substr($criterium, 0, 1) != '-') - return; - $criterium = substr($criterium, 1); - - if ( - array_key_exists($criterium, $pkglist_sorts) && - array_key_exists('mysql', $pkglist_sorts[$criterium]) - ) - return $pkglist_sorts[$criterium]['mysql'] . ' DESC,'; - return; -} + $sort = ''; + if ($extract_order_by_from_get && array_key_exists('sort', $_GET)) { + $criterium = $_GET['sort']; + if ( + array_key_exists($criterium, $pkglist_sorts) && + array_key_exists('mysql', $pkglist_sorts[$criterium]) + ) + $sort = $pkglist_sorts[$criterium]['mysql'] . ','; + elseif (substr($criterium, 0, 1) == '-') { + $criterium = substr($criterium, 1); + if ( + array_key_exists($criterium, $pkglist_sorts) && + array_key_exists('mysql', $pkglist_sorts[$criterium]) + ) + $sort = $pkglist_sorts[$criterium]['mysql'] . ' DESC,'; + } + } -function query_package_listing($filter_and_order, $float_columns, $count_only) { if ($count_only) $columns = "COUNT(DISTINCT `binary_packages`.`id`)"; else @@ -176,7 +172,11 @@ function query_package_listing($filter_and_order, $float_columns, $count_only) { mysql_join_repositories_architectures("","r_a") . mysql_join_binary_packages_build_assignments() . mysql_join_build_assignments_package_sources() . - $filter_and_order + $filter . + " ORDER BY " . + $sort . + "`binary_packages`.`pkgname`,`repositories`.`stability`,`repositories`.`name`,`architectures`.`name`" . + $limit ); if ($count_only) return implode($result -> fetch_assoc()); diff --git a/packages/index.php b/packages/index.php index 35f0d26..b36142f 100644 --- a/packages/index.php +++ b/packages/index.php @@ -122,19 +122,19 @@ require_once BASE . "/lib/format.php"; $exact_matches = query_package_listing( $extra_joins . - $filter . $exact_filter . - " ORDER BY " . - "`binary_packages`.`pkgname`,`repositories`.`stability`,`repositories`.`name`,`architectures`.`name`", + $filter . $exact_filter, + '', $float_columns, + false, false ); $num_results = query_package_listing( - $extra_joins . $filter . $fuzzy_filter . - " ORDER BY " . package_listing_query_order_by() . - "`binary_packages`.`pkgname`,`repositories`.`stability`,`repositories`.`name`,`architectures`.`name`", + $extra_joins . $filter . $fuzzy_filter, + '', array(), + true, true ); @@ -145,12 +145,11 @@ require_once BASE . "/lib/format.php"; $page = 1; $fuzzy_matches = query_package_listing( - $extra_joins . $filter . $fuzzy_filter . - " ORDER BY " . package_listing_query_order_by() . - "`binary_packages`.`pkgname`,`repositories`.`stability`,`repositories`.`name`,`architectures`.`name`" . + $extra_joins . $filter . $fuzzy_filter, " LIMIT " . (($page-1)*100) . ", 100", $float_columns, - false + false, + true ); function header_and_footer() { |