Split package search query into parts

No functional change here; we should be rebuilding the same query at the
end of the process.

Signed-off-by: Dan McGee <dan@archlinux.org>
Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
This commit is contained in:
Dan McGee 2011-03-02 08:03:22 -06:00 committed by Lukas Fleischer
parent 80401c6afc
commit 2cfcddf24e

View file

@ -434,32 +434,32 @@ function pkg_search_page($SID="") {
// build the package search query // build the package search query
// //
$q = "SELECT SQL_CALC_FOUND_ROWS "; $q_select = "SELECT SQL_CALC_FOUND_ROWS ";
if ($SID) { if ($SID) {
$q .= "CommentNotify.UserID AS Notify, $q_select .= "CommentNotify.UserID AS Notify,
PackageVotes.UsersID AS Voted, "; PackageVotes.UsersID AS Voted, ";
} }
$q .= "Users.Username AS Maintainer, $q_select .= "Users.Username AS Maintainer,
PackageCategories.Category, PackageCategories.Category,
Packages.Name, Packages.Version, Packages.Description, Packages.NumVotes, Packages.Name, Packages.Version, Packages.Description, Packages.NumVotes,
Packages.ID, Packages.OutOfDateTS Packages.ID, Packages.OutOfDateTS ";
FROM Packages $q_from = "FROM Packages
LEFT JOIN Users ON (Packages.MaintainerUID = Users.ID) "; LEFT JOIN Users ON (Packages.MaintainerUID = Users.ID) ";
if ($SID) { if ($SID) {
$q .= "LEFT JOIN PackageVotes $q_from .= "LEFT JOIN PackageVotes
ON (Packages.ID = PackageVotes.PackageID AND PackageVotes.UsersID = $myuid) ON (Packages.ID = PackageVotes.PackageID AND PackageVotes.UsersID = $myuid)
LEFT JOIN CommentNotify LEFT JOIN CommentNotify
ON (Packages.ID = CommentNotify.PkgID AND CommentNotify.UserID = $myuid) "; ON (Packages.ID = CommentNotify.PkgID AND CommentNotify.UserID = $myuid) ";
} }
$q .= "LEFT JOIN PackageCategories $q_from .= "LEFT JOIN PackageCategories
ON (Packages.CategoryID = PackageCategories.ID) ON (Packages.CategoryID = PackageCategories.ID) ";
WHERE Packages.DummyPkg = 0 ";
$q_where = "WHERE Packages.DummyPkg = 0 ";
// TODO: possibly do string matching on category // TODO: possibly do string matching on category
// to make request variable values more sensible // to make request variable values more sensible
if (isset($_GET["C"]) && intval($_GET["C"])) { if (isset($_GET["C"]) && intval($_GET["C"])) {
$q.= "AND Packages.CategoryID = ".intval($_GET["C"])." "; $q_where .= "AND Packages.CategoryID = ".intval($_GET["C"])." ";
} }
if (isset($_GET['K'])) { if (isset($_GET['K'])) {
@ -467,33 +467,33 @@ function pkg_search_page($SID="") {
# Search by maintainer # Search by maintainer
if (isset($_GET["SeB"]) && $_GET["SeB"] == "m") { if (isset($_GET["SeB"]) && $_GET["SeB"] == "m") {
$q.= "AND Users.Username = '".$_GET['K']."' "; $q_where .= "AND Users.Username = '".$_GET['K']."' ";
} }
# Search by submitter # Search by submitter
elseif (isset($_GET["SeB"]) && $_GET["SeB"] == "s") { elseif (isset($_GET["SeB"]) && $_GET["SeB"] == "s") {
$q.= "AND SubmitterUID = ".uid_from_username($_GET['K'])." "; $q_where .= "AND SubmitterUID = ".uid_from_username($_GET['K'])." ";
# Search by name # Search by name
} }
elseif (isset($_GET["SeB"]) && $_GET["SeB"] == "n") { elseif (isset($_GET["SeB"]) && $_GET["SeB"] == "n") {
$q.= "AND (Name LIKE '%".$_GET['K']."%') "; $q_where .= "AND (Name LIKE '%".$_GET['K']."%') ";
} }
# Search by name and description (Default) # Search by name and description (Default)
else { else {
$q.= "AND (Name LIKE '%".$_GET['K']."%' OR "; $q_where .= "AND (Name LIKE '%".$_GET['K']."%' OR ";
$q.= "Description LIKE '%".$_GET['K']."%') "; $q_where .= "Description LIKE '%".$_GET['K']."%') ";
} }
} }
if (isset($_GET["do_Orphans"]) && $_GET["do_Orphans"] == 'Orphans') { if (isset($_GET["do_Orphans"]) && $_GET["do_Orphans"] == 'Orphans') {
$q.= "AND MaintainerUID IS NULL "; $q_where .= "AND MaintainerUID IS NULL ";
} }
if (isset($_GET['outdated'])) { if (isset($_GET['outdated'])) {
if ($_GET['outdated'] == 'on') { if ($_GET['outdated'] == 'on') {
$q .= "AND OutOfDateTS IS NOT NULL "; $q_where .= "AND OutOfDateTS IS NOT NULL ";
} }
elseif ($_GET['outdated'] == 'off') { elseif ($_GET['outdated'] == 'off') {
$q .= "AND OutOfDateTS IS NULL "; $q_where .= "AND OutOfDateTS IS NULL ";
} }
} }
@ -528,9 +528,9 @@ function pkg_search_page($SID="") {
break; break;
} }
$q.= $q_sort; $q_limit = "LIMIT ".$_GET["O"].", ".$_GET["PP"];
$q.= "LIMIT ".$_GET["O"].", ".$_GET["PP"]; $q = $q_select . $q_from . $q_where . $q_sort . $q_limit;
$result = db_query($q, $dbh); $result = db_query($q, $dbh);
$total = mysql_result(db_query('SELECT FOUND_ROWS() AS Total', $dbh), 0); $total = mysql_result(db_query('SELECT FOUND_ROWS() AS Total', $dbh), 0);