[aur-dev] [PATCH] Split package flagging and unflagging into separate functions

canyonknight canyonknight at gmail.com
Wed Dec 5 22:03:41 EST 2012


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 at gmail.com>
---
 web/html/packages.php    |  4 +--
 web/lib/pkgfuncs.inc.php | 74 ++++++++++++++++++++++++++++--------------------
 2 files changed, 45 insertions(+), 33 deletions(-)

diff --git a/web/html/packages.php b/web/html/packages.php
index 094c221..6182550 100644
--- a/web/html/packages.php
+++ b/web/html/packages.php
@@ -51,9 +51,9 @@ if (isset($_POST['IDs'])) {
 $output = "";
 if (check_token()) {
 	if (current_action("do_Flag")) {
-		$output = pkg_flag($atype, $ids, true);
+		$output = pkg_flag($atype, $ids);
 	} elseif (current_action("do_UnFlag")) {
-		$output = pkg_flag($atype, $ids, False);
+		$output = pkg_unflag($atype, $ids);
 	} elseif (current_action("do_Adopt")) {
 		$output = pkg_adopt($atype, $ids, true);
 	} elseif (current_action("do_Disown")) {
diff --git a/web/lib/pkgfuncs.inc.php b/web/lib/pkgfuncs.inc.php
index cfdd9a7..c00c33d 100644
--- a/web/lib/pkgfuncs.inc.php
+++ b/web/lib/pkgfuncs.inc.php
@@ -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
  * @param string $atype Account type, output of account_from_sid
  * @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
  */
-function pkg_flag ($atype, $ids, $action=true, $dbh=NULL) {
+function pkg_flag($atype, $ids, $dbh=NULL) {
 	global $AUR_LOCATION;
 
 	if (!$atype) {
-		if ($action) {
-			return __("You must be logged in before you can flag packages.");
-		} else {
-			return __("You must be logged in before you can unflag packages.");
-		}
+		return __("You must be logged in before you can flag packages.");
 	}
 
 	$ids = sanitize_ids($ids);
 	if (empty($ids)) {
-		if ($action) {
-			return __("You did not select any packages to flag.");
-		} else {
-			return __("You did not select any packages to unflag.");
-		}
+		return __("You did not select any packages to flag.");
 	}
 
 	if(!$dbh) {
@@ -806,25 +797,13 @@ function pkg_flag ($atype, $ids, $action=true, $dbh=NULL) {
 	}
 
 	$q = "UPDATE Packages SET";
-	if ($action) {
-		$q.= " OutOfDateTS = UNIX_TIMESTAMP()";
-	}
-	else {
-		$q.= " OutOfDateTS = NULL";
-	}
+	$q.= " OutOfDateTS = UNIX_TIMESTAMP()";
 	$q.= " WHERE ID IN (" . implode(",", $ids) . ")";
-
-	if (!$action && ($atype != "Trusted User" && $atype != "Developer")) {
-		$q.= "AND MaintainerUID = " . uid_from_sid($_COOKIE["AURSID"], $dbh);
-	}
-
-	if ($action) {
-		$q.= " AND OutOfDateTS IS NULL";
-	}
+	$q.= " AND OutOfDateTS IS NULL";
 
 	$affected_pkgs = $dbh->exec($q);
 
-	if ($action && $affected_pkgs > 0) {
+	if ($affected_pkgs > 0) {
 		# Notify of flagging by email
 		$f_name = username_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.");
-	} else {
+	return __("The selected packages have been flagged out-of-date.");
+}
+
+/**
+ * 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.");
 	}
 }
-- 
1.8.0.1



More information about the aur-dev mailing list