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

Callan Barrett wizzomafizzo at gmail.com
Sat Oct 4 15:26:53 EDT 2008


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

diff --git a/web/html/packages.php b/web/html/packages.php
index 91b0e6e..f06aaa1 100644
--- a/web/html/packages.php
+++ b/web/html/packages.php
@@ -78,49 +78,9 @@ if ($_POST['action'] == "do_Flag" || isset($_POST['do_Flag'])) {
 	}
 
 } elseif ($_POST['action'] == "do_Notify" || isset($_POST['do_Notify'])) {
-	# I realize that the implementation here seems a bit convoluted, but we want to
-	# ensure that everything happens as it should, even if someone called this page
-	# without having clicked a button somewhere (naughty naughty). This also leaves
-	# room to someday expand and allow to add oneself to multiple lists at once. -SL
-	if (!$atype) {
-		print __("You must be logged in before you can get notifications on comments.");
-		print "<br />\n";
-	} else {
-		if (!empty($ids)) {
-			$dbh = db_connect();
-			$uid = uid_from_sid($_COOKIE["AURSID"]);
-			# There currently shouldn't be multiple requests here, but the format in which
-			# it's sent requires this
-			while (list($pid, $v) = each($ids)) {
-				$q = "SELECT Name FROM Packages WHERE ID = " . $pid;
-				$pkgname = mysql_result(db_query($q, $dbh), 0);
-
-				$q = "SELECT * FROM CommentNotify WHERE UserID = ".$uid;
-				$q.= " AND PkgID = ".$pid;
-
-				if (!mysql_num_rows(db_query($q, $dbh))) {
-					$q = "INSERT INTO CommentNotify (PkgID, UserID) VALUES (".$pid.', '.$uid.')';
-					db_query($q, $dbh);
-					print '<p>';
-					print __("You have been added to the comment notification list for %s.",
-						array("<b>" . $pkgname . "</b>"));
-					print '<br /></p>';
-				} else {
-					$q = "DELETE FROM CommentNotify WHERE PkgID = ".$pid;
-					$q.= " AND UserID = ".$uid;
-					db_query($q, $dbh);
-					print '<p>';
-					print __("You have been removed from the comment notification list for %s.",
-						array("<b>" . $pkgname . "</b>"));
-					print '<br /></p>';
-				}
-			}
-		} else {
-			print '<p>';
-			print __("Couldn't add to notification list.");
-			print '<br /></p>';
-		}
-	}			
+	print "<p>";
+	print pkg_notify($atype, $ids);
+	print "</p>";
 } else {
 	# just do a search
 	#
diff --git a/web/lib/pkgfuncs.inc b/web/lib/pkgfuncs.inc
index 6d8b1a7..5c179fa 100644
--- a/web/lib/pkgfuncs.inc
+++ b/web/lib/pkgfuncs.inc
@@ -1266,3 +1266,56 @@ function pkg_vote ($atype, $ids, $action = True) {
 		return __("Your votes have been removed from the selected packages.");
 	}
 }
+
+function pkg_notify ($atype, $ids) {
+	if (!$atype) {
+		return __("You must be logged in before you can get notifications on comments.");
+	}
+	
+	if (empty($ids)) {
+		return __("Couldn't add to notification list.");
+	}
+	
+	$dbh = db_connect();
+	$uid = uid_from_sid($_COOKIE["AURSID"]);
+	
+	# There currently shouldn't be multiple requests here, but the format in which
+	# it's sent requires this
+	$list = array();
+	
+	foreach ($ids as $pid => $v) {
+		$q = "SELECT Name FROM Packages WHERE ID = " . $pid;
+		$pkgname = mysql_result(db_query($q, $dbh), 0);
+
+		$q = "SELECT * FROM CommentNotify WHERE UserID = ".$uid;
+		$q.= " AND PkgID = ".$pid;
+
+		if (!mysql_num_rows(db_query($q, $dbh))) {
+			$action = True;
+			
+			$q = "INSERT INTO CommentNotify (PkgID, UserID) VALUES (".$pid.', '.$uid.')';
+			db_query($q, $dbh);
+
+			$list[] = $pkgname;
+		} else {
+			$action = False;
+			
+			$q = "DELETE FROM CommentNotify WHERE PkgID = ".$pid;
+			$q.= " AND UserID = ".$uid;
+			db_query($q, $dbh);
+			
+			$list[] = $pkgname;
+		}
+	}
+	
+	$msg = "<b>" . array_shift($list) . "</b>";
+	foreach ($list as $i) {
+		$msg .= ", <b>" . $i . "</b>";
+	}
+	
+	if ($action) {
+		print __("You have been added to the comment notification list for %s.", $msg);
+	} else {
+		print __("You have been removed from the comment notification list for %s.", $msg);
+	}
+}
-- 
1.6.0.2




More information about the aur-dev mailing list