Split package flagging and unflagging into separate functions

Currently, package flagging and unflagging takes place within the
pkg_flag() function. A bool is set to true or false depending on the
action.

Create new pkg_unflag() function with sole purpose of unflagging
and keep pkg_flag() in place. This split will be useful in the
overhaul of the notification system.

Signed-off-by: canyonknight <canyonknight@gmail.com>
Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
This commit is contained in:
canyonknight@gmail.com 2012-12-06 03:03:41 +00:00 committed by Lukas Fleischer
parent c7d20163a4
commit 20407bb8c6
2 changed files with 45 additions and 33 deletions

View file

@ -51,9 +51,9 @@ if (isset($_POST['IDs'])) {
$output = ""; $output = "";
if (check_token()) { if (check_token()) {
if (current_action("do_Flag")) { if (current_action("do_Flag")) {
$output = pkg_flag($atype, $ids, true); $output = pkg_flag($atype, $ids);
} elseif (current_action("do_UnFlag")) { } elseif (current_action("do_UnFlag")) {
$output = pkg_flag($atype, $ids, False); $output = pkg_unflag($atype, $ids);
} elseif (current_action("do_Adopt")) { } elseif (current_action("do_Adopt")) {
$output = pkg_adopt($atype, $ids, true); $output = pkg_adopt($atype, $ids, true);
} elseif (current_action("do_Disown")) { } elseif (current_action("do_Disown")) {

View file

@ -772,33 +772,24 @@ function sanitize_ids($ids) {
} }
/** /**
* Flag and un-flag packages out-of-date * Flag package(s) as out-of-date
* *
* @global string $AUR_LOCATION The AUR's URL used for notification e-mails * @global string $AUR_LOCATION The AUR's URL used for notification e-mails
* @param string $atype Account type, output of account_from_sid * @param string $atype Account type, output of account_from_sid
* @param array $ids Array of package IDs to flag/unflag * @param array $ids Array of package IDs to flag/unflag
* @param bool $action true flags out-of-date, false un-flags. Flags by default
* *
* @return string Translated success or error messages * @return string Translated success or error messages
*/ */
function pkg_flag ($atype, $ids, $action=true, $dbh=NULL) { function pkg_flag($atype, $ids, $dbh=NULL) {
global $AUR_LOCATION; global $AUR_LOCATION;
if (!$atype) { if (!$atype) {
if ($action) { return __("You must be logged in before you can flag packages.");
return __("You must be logged in before you can flag packages.");
} else {
return __("You must be logged in before you can unflag packages.");
}
} }
$ids = sanitize_ids($ids); $ids = sanitize_ids($ids);
if (empty($ids)) { if (empty($ids)) {
if ($action) { return __("You did not select any packages to flag.");
return __("You did not select any packages to flag.");
} else {
return __("You did not select any packages to unflag.");
}
} }
if(!$dbh) { if(!$dbh) {
@ -806,25 +797,13 @@ function pkg_flag ($atype, $ids, $action=true, $dbh=NULL) {
} }
$q = "UPDATE Packages SET"; $q = "UPDATE Packages SET";
if ($action) { $q.= " OutOfDateTS = UNIX_TIMESTAMP()";
$q.= " OutOfDateTS = UNIX_TIMESTAMP()";
}
else {
$q.= " OutOfDateTS = NULL";
}
$q.= " WHERE ID IN (" . implode(",", $ids) . ")"; $q.= " WHERE ID IN (" . implode(",", $ids) . ")";
$q.= " AND OutOfDateTS IS NULL";
if (!$action && ($atype != "Trusted User" && $atype != "Developer")) {
$q.= "AND MaintainerUID = " . uid_from_sid($_COOKIE["AURSID"], $dbh);
}
if ($action) {
$q.= " AND OutOfDateTS IS NULL";
}
$affected_pkgs = $dbh->exec($q); $affected_pkgs = $dbh->exec($q);
if ($action && $affected_pkgs > 0) { if ($affected_pkgs > 0) {
# Notify of flagging by email # Notify of flagging by email
$f_name = username_from_sid($_COOKIE['AURSID'], $dbh); $f_name = username_from_sid($_COOKIE['AURSID'], $dbh);
$f_email = email_from_sid($_COOKIE['AURSID'], $dbh); $f_email = email_from_sid($_COOKIE['AURSID'], $dbh);
@ -846,9 +825,42 @@ function pkg_flag ($atype, $ids, $action=true, $dbh=NULL) {
} }
} }
if ($action) { return __("The selected packages have been flagged out-of-date.");
return __("The selected packages have been flagged out-of-date."); }
} else {
/**
* Unflag package(s) as out-of-date
*
* @param string $atype Account type, output of account_from_sid
* @param array $ids Array of package IDs to flag/unflag
*
* @return string Translated success or error messages
*/
function pkg_unflag($atype, $ids, $dbh=NULL) {
if (!$atype) {
return __("You must be logged in before you can unflag packages.");
}
$ids = sanitize_ids($ids);
if (empty($ids)) {
return __("You did not select any packages to unflag.");
}
if(!$dbh) {
$dbh = db_connect();
}
$q = "UPDATE Packages SET ";
$q.= "OutOfDateTS = NULL ";
$q.= "WHERE ID IN (" . implode(",", $ids) . ") ";
if ($atype != "Trusted User" && $atype != "Developer") {
$q.= "AND MaintainerUID = " . uid_from_sid($_COOKIE["AURSID"], $dbh);
}
$result = $dbh->exec($q);
if ($result) {
return __("The selected packages have been unflagged."); return __("The selected packages have been unflagged.");
} }
} }