From 85bb823dc9f4a4fadec77f7ce51ab202c3c7bf81 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Tue, 10 Jul 2018 14:07:52 +0200 Subject: packages/index.php: more filter criteria --- packages/index.php | 123 ++++++++++++++++++++++++++++++++++------------------- 1 file changed, 80 insertions(+), 43 deletions(-) diff --git a/packages/index.php b/packages/index.php index fb88b22..a4945ff 100644 --- a/packages/index.php +++ b/packages/index.php @@ -5,11 +5,11 @@ require_once BASE . "/lib/mysql.php"; require_once BASE . "/lib/style.php"; - foreach (array("bugs","sort","del") as $expected_param) + foreach (array("bugs","sort","del","uses_upstream","uses_modification") as $expected_param) if (! isset($_GET[$expected_param])) $_GET[$expected_param] = ""; - $search_criteria = array( + $multi_select_search_criteria = array( "arch" => array( "name" => "arch", "title" => "CPU architecture", @@ -28,16 +28,16 @@ require_once BASE . "/lib/style.php"; ) ); - foreach ( $search_criteria as $criterium => $content ) { + foreach ( $multi_select_search_criteria as $criterium => $content ) { $result = mysql_run_query( "SELECT `name` FROM `" . $content["table"] . "`" . $content["extra_condition"] . " ORDER BY `name`" ); while ($row = $result -> fetch_assoc()) - $search_criteria[$criterium]["values"][] = $row["name"]; + $multi_select_search_criteria[$criterium]["values"][] = $row["name"]; } $filter = " WHERE 1"; - foreach ($search_criteria as $criterium) + foreach ($multi_select_search_criteria as $criterium) if (isset($_GET[$criterium["name"]])) { $filter .= " AND `" . $criterium["table"] . "`.`name` IN ("; foreach ($criterium["values"] as $value) @@ -46,15 +46,53 @@ require_once BASE . "/lib/style.php"; $filter .= "\"\")"; } - if ($_GET["bugs"] == "Bugs") - $filter .= " AND `binary_packages`.`has_issues`"; - if ($_GET["bugs"] == "No Bugs") - $filter .= " AND NOT `binary_packages`.`has_issues`"; + $single_select_search_criteria = array( + "bugs" => array( + "name" => "bugs", + "label" => "Bugs", + "title" => "bug-tracker status", + "options" => array( + "All" => "1", + "Bugs" => "`binary_packages`.`has_issues`", + "No Bugs" => "NOT `binary_packages`.`has_issues`" + ) + ), + "del" => array( + "name" => "del", + "label" => "To Be Deleted", + "title" => "to-be-deleted status", + "options" => array( + "All" => "1", + "To Be Deleted" => "`binary_packages_in_repositories`.`is_to_be_deleted`", + "Not To Be Deleted" => "NOT `binary_packages_in_repositories`.`is_to_be_deleted`" + ) + ), + "uses_upstream" => array( + "name" => "uses_upstream", + "label" => "Upstream", + "title" => "wether upstream source exists", + "options" => array( + "All" => "1", + "Uses Upstream" => "`package_sources`.`uses_upstream`", + "Does Not Use Upstream" => "NOT `package_sources`.`uses_upstream`" + ) + ), + "uses_modification" => array( + "name" => "uses_modification", + "label" => "Modification", + "title" => "wether modification exists", + "options" => array( + "All" => "1", + "Uses Modification" => "`package_sources`.`uses_modification`", + "Does Not Use Modification" => "NOT `package_sources`.`uses_modification`" + ) + ) + ); - if ($_GET["del"] == "To Be Deleted") - $filter .= " AND `binary_packages_in_repositories`.`is_to_be_deleted`"; - if ($_GET["del"] == "Not To Be Deleted") - $filter .= " AND NOT `binary_packages_in_repositories`.`is_to_be_deleted`"; + foreach ($single_select_search_criteria as $criterium) + if (isset($_GET[$criterium["name"]]) && + isset($criterium["options"][$_GET[$criterium["name"]]])) + $filter .= " AND " . $criterium["options"][$_GET[$criterium["name"]]]; if (isset($_GET["q"])) { $exact_filter = " AND `binary_packages`.`pkgname` = from_base64(\"".base64_encode($_GET["q"])."\")"; @@ -70,6 +108,7 @@ require_once BASE . "/lib/style.php"; " JOIN `repositories` ON `binary_packages_in_repositories`.`repository`=`repositories`.`id`" . " AND `repositories`.`is_on_master_mirror`" . " JOIN `build_assignments` ON `build_assignments`.`id`=`binary_packages`.`build_assignment`" . + " JOIN `package_sources` ON `package_sources`.`id`=`build_assignments`.`package_source`" . $filter . $exact_filter . " ORDER BY "; @@ -143,6 +182,7 @@ require_once BASE . "/lib/style.php"; " JOIN `repositories` ON `binary_packages_in_repositories`.`repository`=`repositories`.`id`" . " AND `repositories`.`is_on_master_mirror`" . " JOIN `build_assignments` ON `build_assignments`.`id`=`binary_packages`.`build_assignment`" . + " JOIN `package_sources` ON `package_sources`.`id`=`build_assignments`.`package_source`" . $filter . $fuzzy_filter . " ORDER BY "; @@ -311,7 +351,7 @@ require_once BASE . "/lib/style.php";
Enter search criteria \n"; print "