[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