[aur-dev] [PATCH] Convert package flagging to a function

Callan Barrett wizzomafizzo at gmail.com
Sat Oct 4 13:46:31 EDT 2008


Signed-off-by: Callan Barrett <wizzomafizzo at gmail.com>
---
 web/html/packages.php |  101 +++----------------------------------------------
 web/lib/pkgfuncs.inc  |   74 +++++++++++++++++++++++++++++++++++-
 2 files changed, 79 insertions(+), 96 deletions(-)

diff --git a/web/html/packages.php b/web/html/packages.php
index 4cfe9c4..317583f 100644
--- a/web/html/packages.php
+++ b/web/html/packages.php
@@ -37,106 +37,17 @@ if (isset($_COOKIE["AURSID"])) {
 # grab the list of Package IDs to be operated on
 #
 isset($_POST["IDs"]) ? $ids = $_POST["IDs"] : $ids = array();
-#isset($_REQUEST["All_IDs"]) ?
-#		$all_ids = explode(":", $_REQUEST["All_IDs"]) :
-#		$all_ids = array();
-
 
 # determine what button the visitor clicked
 #
 if ($_POST['action'] == "do_Flag" || isset($_POST['do_Flag'])) {
-	if (!$atype) {
-		print __("You must be logged in before you can flag packages.");
-		print "<br />\n";
-
-	} else {
-
-		if (!empty($ids)) {
-			$dbh = db_connect();
-
-			# Flag the packages in $ids array
-			#
-			$first = 1;
-			while (list($pid, $v) = each($ids)) {
-				if ($first) {
-					$first = 0;
-					$flag = $pid;
-				} else {
-					$flag .= ", ".$pid;
-				}
-			}
-			$q = "UPDATE Packages SET OutOfDate = 1 ";
-			$q.= "WHERE ID IN (" . $flag . ")";
-			db_query($q, $dbh);
-
-			print "<p>\n";
-			print __("The selected packages have been flagged out-of-date.");
-			print "</p>\n";
-			
-			# notification by tardo.
-			$f_name = username_from_sid($_COOKIE['AURSID']);
-			$f_email = email_from_sid($_COOKIE['AURSID']);
-			$f_uid = uid_from_sid($_COOKIE['AURSID']);
-			$q = "SELECT Packages.Name, Users.Email, Packages.ID ";
-			$q.= "FROM Packages, Users ";
-			$q.= "WHERE Packages.ID IN (" . $flag .") ";
-			$q.= "AND Users.ID = Packages.MaintainerUID ";
-			$q.= "AND Users.ID != " . $f_uid;
-			$result = db_query($q, $dbh);
-			if (mysql_num_rows($result)) {
-				while ($row = mysql_fetch_assoc($result)) {
-					# construct email
-					$body = "Your package " . $row['Name'] . " has been flagged out of date by " . $f_name . ". You may view your package at:\nhttp://aur.archlinux.org/packages.php?do_Details=1&ID=" . $row['ID'];
-					$body = wordwrap($body, 70);
-					$headers = "To: ".$row['Email']."\nReply-to: nobody at archlinux.org\nFrom:aur-notify at archlinux.org\nX-Mailer: PHP\nX-MimeOLE: Produced By AUR\n";
-					@mail(' ', "AUR Out-of-date Notification for ".$row['Name'], $body, $headers);
-				}
-			}
-			
-		} else {
-			print "<p>\n";
-			print __("You did not select any packages to flag.");
-			print "</p>\n";
-		}
-	}
-
+	print "<p>";
+	print pkg_flag($atype, $ids, True);
+	print "</p>";
 } elseif ($_POST['action'] == "do_UnFlag" || isset($_POST['do_UnFlag'])) {
-	if (!$atype) {
-		print __("You must be logged in before you can unflag packages.");
-		print "<br />\n";
-
-	} else {
-
-		if (!empty($ids)) {
-			$dbh = db_connect();
-
-			# Un-Flag the packages in $ids array
-			#
-			$first = 1;
-			while (list($pid, $v) = each($ids)) {
-				if ($first) {
-					$first = 0;
-					$unflag = $pid;
-				} else {
-					$unflag .= ", ".$pid;
-				}
-			}
-			$q = "UPDATE Packages SET OutOfDate = 0 ";
-			$q.= "WHERE ID IN (" . $unflag . ")";
-			db_query($q, $dbh);
-
-			print "<p>\n";
-			print __("The selected packages have been unflagged.");
-			print "</p>\n";
-		} else {
-			print "<p>\n";
-			print __("You did not select any packages to unflag.");
-			print "</p>\n";
-		}
-
-				
-	}
-
+	print "<p>";
+	print pkg_flag($atype, $ids, False);
+	print "</p>";
 } elseif ($_POST['action'] == "do_Disown" || isset($_POST['do_Disown'])) {
 	if (!$atype) {
 		print __("You must be logged in before you can disown packages.");
diff --git a/web/lib/pkgfuncs.inc b/web/lib/pkgfuncs.inc
index 5ba56da..0f3defc 100644
--- a/web/lib/pkgfuncs.inc
+++ b/web/lib/pkgfuncs.inc
@@ -985,4 +985,76 @@ function pkg_search_page($SID="") {
     return;
 }
 
-?>
+function pkg_flag ($atype, $ids, $action = True) {
+	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.");
+		}
+	}
+	
+	if (empty($ids)) {
+		if ($action) {
+			return __("You did not select any packages to flag.");
+		} else {
+			return __("You did not select any packages to unflag.");
+		}
+	}
+
+	foreach ($ids as $pid => $v) {
+		if (!is_numeric($pid)) { 
+			if ($action) {
+				return __("You did not select any packages to flag.");
+			} else {
+				return __("You did not select any packages to unflag.");
+			}
+		}
+	}
+
+	$dbh = db_connect();
+
+	$first = 1;
+	foreach ($ids as $pid => $v) {
+		if ($first) {
+			$first = 0;
+			$flag = $pid;
+		} else {
+			$flag .= ", " . $pid;
+		}
+	}
+	
+	$ood = $action ? 1 : 0;
+	$q = "UPDATE Packages SET OutOfDate = " . $ood;
+	$q.= " WHERE ID IN (" . $flag . ")";
+	
+	db_query($q, $dbh);
+
+	if ($action) {
+		# Notify of flagging by email
+		$f_name = username_from_sid($_COOKIE['AURSID']);
+		$f_email = email_from_sid($_COOKIE['AURSID']);
+		$f_uid = uid_from_sid($_COOKIE['AURSID']);
+		$q = "SELECT Packages.Name, Users.Email, Packages.ID ";
+		$q.= "FROM Packages, Users ";
+		$q.= "WHERE Packages.ID IN (" . $flag .") ";
+		$q.= "AND Users.ID = Packages.MaintainerUID ";
+		$q.= "AND Users.ID != " . $f_uid;
+		$result = db_query($q, $dbh);
+		if (mysql_num_rows($result)) {
+			while ($row = mysql_fetch_assoc($result)) {
+				# construct email
+				$body = "Your package " . $row['Name'] . " has been flagged out of date by " . $f_name . ". You may view your package at:\nhttp://aur.archlinux.org/packages.php?ID=" . $row['ID'];
+				$body = wordwrap($body, 70);
+				$headers = "To: ".$row['Email']."\nReply-to: nobody at archlinux.org\nFrom:aur-notify at archlinux.org\nX-Mailer: PHP\nX-MimeOLE: Produced By AUR\n";
+				@mail(' ', "AUR Out-of-date Notification for ".$row['Name'], $body, $headers);
+			}
+		}
+	}
+
+	if ($action) {
+		return __("The selected packages have been flagged out-of-date.");
+	} else {
+		return __("The selected packages have been unflagged.");
+	}
+}
-- 
1.6.0.2




More information about the aur-dev mailing list