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

Loui louipc.ist at gmail.com
Fri Oct 31 08:54:05 EDT 2008


On Sun, Oct 05, 2008 at 03:26:53AM +0800, Callan Barrett wrote:
> 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(-)
 
Alright. I found it necessary to make a lot of changes to this one.
The notify/unnotify wasn't being reported correctly, and the function
was actually printing the content rather than returning a string.

That's corrected in the attached patch. Please check it out!

Cheers.

-------------- next part --------------
>From 58b28f4b147ab396dad38e79c621c3662276cf54 Mon Sep 17 00:00:00 2001
From: Loui Chang <louipc.ist at gmail.com>
Date: Fri, 31 Oct 2008 01:28:14 -0400
Subject: [PATCH] Move package notification into a function.

Signed-off-by: Loui Chang <louipc.ist at gmail.com>
---
 web/html/packages.php |   46 +++-------------------------------------------
 web/lib/pkgfuncs.inc  |   44 ++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 47 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 7fe3f31..9267ec0 100644
--- a/web/lib/pkgfuncs.inc
+++ b/web/lib/pkgfuncs.inc
@@ -1266,3 +1266,47 @@ 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.");
+		return;
+	}
+
+	if (empty($ids)) {
+		return __("Couldn't add to notification list.");
+	}
+
+	$dbh = db_connect();
+	$uid = uid_from_sid($_COOKIE["AURSID"]);
+
+	$output = "";
+
+	# There currently shouldn't be multiple requests here, but the
+	# format in which it's sent requires this.
+	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))) {
+			$q = "INSERT INTO CommentNotify (PkgID, UserID) VALUES ($pid, $uid)";
+			db_query($q, $dbh);
+
+			$output .= __("You have been added to the comment notification list for %s.", $pkgname);
+		}
+		else {
+			$q = "DELETE FROM CommentNotify WHERE PkgID = $pid";
+			$q .= " AND UserID = $uid";
+			db_query($q, $dbh);
+
+			$output .= __("You have been removed from the comment notification list for %s.", $pkgname);
+		}
+		$output .= "<br />";
+	}
+
+	return $output;
+}
+
-- 
1.6.0.3



More information about the aur-dev mailing list