diff options
author | Erich Eckner <git@eckner.net> | 2019-02-18 14:44:42 +0100 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2019-02-18 14:44:42 +0100 |
commit | 4376c50ded25fff8ab6c59c045522091b3eb038b (patch) | |
tree | 256027697af65501d4b605b3edba9c0f8cee9b07 | |
parent | e5c0107d8c0dca4bdbbfa6fa26c2ef4d8997be6a (diff) | |
download | archweb32-4376c50ded25fff8ab6c59c045522091b3eb038b.tar.xz |
lib/style.php,packages/index.php: move querying part of package listing to a separate function in a separate file
-rw-r--r-- | lib/style.php | 42 | ||||
-rw-r--r-- | packages/index.php | 81 |
2 files changed, 67 insertions, 56 deletions
diff --git a/lib/style.php b/lib/style.php index 2fe2992..051a0a5 100644 --- a/lib/style.php +++ b/lib/style.php @@ -81,7 +81,47 @@ function print_footer() { * * **********************************************************************/ -function query_package_listing() { +function query_package_listing($filter_and_order, $float_columns, $count_only) { + if ($count_only) + $columns = "COUNT(DISTINCT `binary_packages`.`id`)"; + else + $columns = + "DISTINCT " . + "`binary_packages`.`pkgname`," . + "`package_sources`.`pkgbase`," . + "CONCAT(`r_a`.`name`,\"/\",`repositories`.`name`) AS `repo`," . + "`architectures`.`name` AS `arch`," . + mysql_query_package_version("binary_packages") . + " AS `version`," . + "IF(`binary_packages`.`has_issues`,1,0) AS `has_issues`," . + "`build_assignments`.`return_date` AS `build_date`," . + "`binary_packages_in_repositories`.`last_moved` AS `move_date`," . + "IF(`binary_packages_in_repositories`.`is_to_be_deleted`,1,0) AS `is_to_be_deleted`"; + + $result = mysql_run_query( + "SELECT " . + $columns . + " FROM `binary_packages`" . + mysql_join_binary_packages_architectures() . + mysql_join_binary_packages_binary_packages_in_repositories() . + mysql_join_binary_packages_in_repositories_repositories() . + " AND `repositories`.`is_on_master_mirror`" . + mysql_join_repositories_architectures("","r_a") . + mysql_join_binary_packages_build_assignments() . + mysql_join_build_assignments_package_sources() . + $filter_and_order + ); + if ($count_only) + return implode($result -> fetch_assoc()); + else { + $return = array(); + while ($row = $result -> fetch_assoc()) { + foreach ($float_columns as $float_column) + $row[$float_column] = floatval($row[$float_column]); + $return[] = $row; + } + return $return; + } } function print_package_listing($list, $sorts, $print_order_links) { diff --git a/packages/index.php b/packages/index.php index d38cffa..d20d2e7 100644 --- a/packages/index.php +++ b/packages/index.php @@ -120,40 +120,14 @@ require_once BASE . "/lib/format.php"; $fuzzy_filter = ""; } - $query = " FROM `binary_packages`" . - mysql_join_binary_packages_architectures() . - mysql_join_binary_packages_binary_packages_in_repositories() . - mysql_join_binary_packages_in_repositories_repositories() . - " AND `repositories`.`is_on_master_mirror`" . - mysql_join_repositories_architectures("","r_a") . - mysql_join_binary_packages_build_assignments() . - mysql_join_build_assignments_package_sources() . + $exact_matches = query_package_listing( $extra_joins . $filter . $exact_filter . - " ORDER BY "; - - $query .= "`binary_packages`.`pkgname`,`repositories`.`stability`,`repositories`.`name`,`architectures`.`name`"; - - $result = mysql_run_query( - "SELECT DISTINCT " . - "`binary_packages`.`pkgname`," . - "`package_sources`.`pkgbase`," . - "CONCAT(`r_a`.`name`,\"/\",`repositories`.`name`) AS `repo`," . - "`architectures`.`name` AS `arch`," . - mysql_query_package_version("binary_packages") . - " AS `version`," . - "IF(`binary_packages`.`has_issues`,1,0) AS `has_issues`," . - "`build_assignments`.`return_date` AS `build_date`," . - "`binary_packages_in_repositories`.`last_moved` AS `move_date`," . - "IF(`binary_packages_in_repositories`.`is_to_be_deleted`,1,0) AS `is_to_be_deleted`" . - $query + " ORDER BY " . + "`binary_packages`.`pkgname`,`repositories`.`stability`,`repositories`.`name`,`architectures`.`name`", + $float_columns, + false ); - $exact_matches = array(); - while ($row = $result -> fetch_assoc()) { - foreach ($float_columns as $float_column) - $row[$float_column] = floatval($row[$float_column]); - $exact_matches[] = $row; - } $sorts = array( "arch" => array( @@ -198,6 +172,23 @@ require_once BASE . "/lib/format.php"; ) ); + $q_f = $extra_joins . $filter . $fuzzy_filter . " ORDER BY "; + + if (isset($_GET["sort"])) { + if (isset($sorts[$_GET["sort"]]["mysql"])) + $q_f .= $sorts[$_GET["sort"]]["mysql"] . ","; + elseif (isset($sorts[substr($_GET["sort"],1)]["mysql"])) + $q_f .= $sorts[substr($_GET["sort"],1)]["mysql"] . " DESC,"; + } + + $q_f .= "`binary_packages`.`pkgname`,`repositories`.`stability`,`repositories`.`name`,`architectures`.`name`"; + + $num_results = query_package_listing( + $q_f, + array(), + true + ); + $query = " FROM `binary_packages`" . mysql_join_binary_packages_architectures() . mysql_join_binary_packages_binary_packages_in_repositories() . @@ -219,10 +210,6 @@ require_once BASE . "/lib/format.php"; $query .= "`binary_packages`.`pkgname`,`repositories`.`stability`,`repositories`.`name`,`architectures`.`name`"; - $result = mysql_run_query( - "SELECT COUNT(DISTINCT `binary_packages`.`id`)" . $query - ); - $num_results = implode($result -> fetch_assoc()); $pages = max(ceil($num_results / 100), 1); if (isset($_GET["page"])) @@ -230,27 +217,11 @@ require_once BASE . "/lib/format.php"; else $page = 1; - $result = mysql_run_query( - "SELECT DISTINCT " . - "`binary_packages`.`pkgname`," . - "`package_sources`.`pkgbase`," . - "CONCAT(`r_a`.`name`,\"/\",`repositories`.`name`) AS `repo`," . - "`architectures`.`name` AS `arch`," . - mysql_query_package_version("binary_packages") . - " AS `version`," . - "IF(`binary_packages`.`has_issues`,1,0) AS `has_issues`," . - "`build_assignments`.`return_date` AS `build_date`," . - "`binary_packages_in_repositories`.`last_moved` AS `move_date`," . - "IF(`binary_packages_in_repositories`.`is_to_be_deleted`,1,0) AS `is_to_be_deleted`" . - $query . - " LIMIT " . (($page-1)*100) . ", 100" + $fuzzy_matches = query_package_listing( + $q_f . " LIMIT " . (($page-1)*100) . ", 100", + $float_columns, + false ); - $fuzzy_matches = array(); - while ($row = $result -> fetch_assoc()) { - foreach ($float_columns as $float_column) - $row[$float_column] = floatval($row[$float_column]); - $fuzzy_matches[] = $row; - } function header_and_footer() { |