diff options
author | Loui Chang <louipc.ist@gmail.com> | 2008-11-09 18:05:46 -0500 |
---|---|---|
committer | Loui Chang <louipc.ist@gmail.com> | 2008-11-13 15:19:20 -0500 |
commit | 2ac75bd81278a6a51d3eef56e9088c198a887a6d (patch) | |
tree | af4dfd3831115270659a2bf09a008d346958dab1 | |
parent | cf2a82fe8578bd10187157bd884b3f109f0b5201 (diff) |
Move package notification into a function.
Also modify the way notification is done. Instead of toggling
notification, users can explicitly notify or unnotify.
Signed-off-by: Loui Chang <louipc.ist@gmail.com>
-rw-r--r-- | web/html/packages.php | 53 | ||||
-rw-r--r-- | web/lib/pkgfuncs.inc | 72 |
2 files changed, 74 insertions, 51 deletions
diff --git a/web/html/packages.php b/web/html/packages.php index 91b0e6e..a5718f3 100644 --- a/web/html/packages.php +++ b/web/html/packages.php @@ -68,6 +68,14 @@ if ($_POST['action'] == "do_Flag" || isset($_POST['do_Flag'])) { print "<p>"; print pkg_vote($atype, $ids, False); print "</p>"; +} elseif ($_POST['action'] == "do_Notify" || isset($_POST['do_Notify'])) { + print "<p>"; + print pkg_notify($atype, $ids); + print "</p>"; +} elseif ($_POST['action'] == "do_UnNotify" || isset($_POST['do_UnNotify'])) { + print "<p>"; + print pkg_notify($atype, $ids, False); + print "</p>"; } elseif (isset($_GET["ID"])) { if (!intval($_GET["ID"])) { @@ -77,50 +85,6 @@ if ($_POST['action'] == "do_Flag" || isset($_POST['do_Flag'])) { package_details($_GET["ID"], $_COOKIE["AURSID"]); } -} 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>'; - } - } } else { # just do a search # @@ -130,4 +94,3 @@ if ($_POST['action'] == "do_Flag" || isset($_POST['do_Flag'])) { html_footer(AUR_VERSION); -?> diff --git a/web/lib/pkgfuncs.inc b/web/lib/pkgfuncs.inc index 7fe3f31..4fbe666 100644 --- a/web/lib/pkgfuncs.inc +++ b/web/lib/pkgfuncs.inc @@ -118,8 +118,6 @@ function package_dependencies($pkgid=0) { return $deps; } -# reverse deps by tardo -# function package_required($pkgid=0) { $deps = array(); if ($pkgid) { @@ -395,7 +393,6 @@ function package_details($id=0, $SID="") { } - # reverse-deps by tardo - could use some beautification $deps = package_required($row["ID"]); if (count($deps) > 0) { @@ -498,7 +495,7 @@ function package_details($id=0, $SID="") { echo "<input type='submit' class='button' name='do_Notify'"; echo " value='".__("Notify")."' title='".__("New Comment Notification")."'>"; } else { - echo "<input type='submit' class='button' name='do_Notify'"; + echo "<input type='submit' class='button' name='do_UnNotify'"; echo " value='".__("UnNotify")."' title='".__("No New Comment Notification")."'>"; } @@ -639,7 +636,8 @@ function package_details($id=0, $SID="") { * do_Adopt - Adopt * do_Disown - Disown * do_Delete - Delete - * do_Notify - Toggle notification + * do_Notify - Enable notification + * do_UnNotify - Disable notification */ function pkg_search_page($SID="") { // establish a db connection @@ -915,7 +913,8 @@ function pkg_search_page($SID="") { if (account_from_sid($SID) == "Trusted User" || account_from_sid($SID) == "Developer") { print "<option value='do_Delete'>".__("Delete Packages")."</option>\n"; } - print "<option value='do_Notify'>".__("Toggle Notify")."</option>\n"; + print "<option value='do_Notify'>".__("Notify")."</option>\n"; + print "<option value='do_UnNotify'>".__("UnNotify")."</option>\n"; print "</select>"; print "<input type='submit' class='button' style='width: 80px' value='" . __("Go") . "' />"; print "</div>"; @@ -1266,3 +1265,64 @@ function pkg_vote ($atype, $ids, $action = True) { return __("Your votes have been removed from the selected packages."); } } + +function pkg_notify ($atype, $ids, $action = True) { + 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 = ""; + + $first = True; + + # 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); + + if ($first) + $first = False; + else + $output .= ", "; + + + if ($action) { + $q = "SELECT * FROM CommentNotify WHERE UserID = $uid"; + $q .= " AND PkgID = $pid"; + + # Notification already added. Don't add again. + if (!mysql_num_rows(db_query($q, $dbh))) { + $q = "INSERT INTO CommentNotify (PkgID, UserID) VALUES ($pid, $uid)"; + db_query($q, $dbh); + } + + $output .= $pkgname; + } + else { + $q = "DELETE FROM CommentNotify WHERE PkgID = $pid"; + $q .= " AND UserID = $uid"; + db_query($q, $dbh); + + $output .= $pkgname; + } + } + + if ($action) { + $output = __("You have been added to the comment notification list for %s.", $output); + } + else { + $output = __("You have been removed from the comment notification list for %s.", $output); + } + + return $output; +} + |