Move package comment form into a new template.

Feature the form on the package details page.

Signed-off-by: Loui Chang <louipc.ist@gmail.com>
This commit is contained in:
Loui Chang 2009-01-25 13:17:54 -05:00
parent f729eca80d
commit 354c86b6c6
4 changed files with 78 additions and 80 deletions

View file

@ -53,73 +53,6 @@ if ($_REQUEST["del_Comment"]) {
exit(); exit();
} }
# Add a comment to this package
#
if ($_REQUEST["add_Comment"]) {
if ($_REQUEST["comment"]) {
# Insert the comment
#
$dbh = db_connect();
$q = "INSERT INTO PackageComments ";
$q.= "(PackageID, UsersID, Comments, CommentTS) VALUES (";
$q.= intval($_REQUEST["ID"]).", ".uid_from_sid($_COOKIE["AURSID"]) . ", ";
$q.= "'".mysql_real_escape_string($_REQUEST["comment"])."', ";
$q.= "UNIX_TIMESTAMP())";
db_query($q, $dbh);
print __("Comment has been added.");
# Send email notifications
#
$q = "SELECT CommentNotify.*, Users.Email ";
$q.= "FROM CommentNotify, Users ";
$q.= "WHERE Users.ID = CommentNotify.UserID ";
$q.= "AND CommentNotify.UserID != ".uid_from_sid($_COOKIE["AURSID"])." ";
$q.= "AND CommentNotify.PkgID = ".intval($_REQUEST["ID"]);
$result = db_query($q, $dbh);
$bcc = array();
if (mysql_num_rows($result)) {
while ($row = mysql_fetch_assoc($result)) {
array_push($bcc, $row['Email']);
}
$q = "SELECT Packages.Name ";
$q.= "FROM Packages ";
$q.= "WHERE Packages.ID = ".intval($_REQUEST["ID"]);
$result = db_query($q, $dbh);
$row = mysql_fetch_assoc($result);
#TODO: native language emails for users, based on their prefs
# Simply making these strings translatable won't work, users would be
# getting emails in the language that the user who posted the comment was in
$body =
"from http://aur.archlinux.org/packages.php?ID="
. $_REQUEST["ID"] . "\n"
. username_from_sid($_COOKIE["AURSID"]) . " wrote:\n\n"
. $_POST['comment']
. "\n\n---\nIf you no longer wish to receive notifications about this package, please go the the above package page and click the UnNotify button.";
$body = wordwrap($body, 70);
$bcc = implode(', ', $bcc);
$headers = "Bcc: $bcc\nReply-to: nobody@archlinux.org\nFrom: aur-notify@archlinux.org\nX-Mailer: AUR\n";
@mail(' ', "AUR Comment for ".$row['Name'], $body, $headers);
}
} else {
# Prompt visitor for comment
#
print "<div align='center'>\n";
print "<form action='pkgedit.php' method='post'>\n";
print "<input type='hidden' name='add_Comment' value='1'>\n";
print "<input type='hidden' name='ID' value=\"".$_REQUEST["ID"]."\">\n";
print __("Enter your comment below.")."<br />&nbsp;<br />\n";
print "<textarea name='comment' rows='10' cols='50'></textarea>\n";
print "<br />&nbsp;<br />\n";
print "<input type='submit' value=\"".__("Submit")."\">\n";
print "<input type='reset' value=\"".__("Reset")."\">\n";
print "</form>\n";
print "</div>\n";
}
html_footer(AUR_VERSION);
exit();
}
# Change package category # Change package category
# #
if ($_REQUEST["change_Category"]) { if ($_REQUEST["change_Category"]) {

View file

@ -180,7 +180,7 @@ function package_comments($pkgid=0) {
$q.= " AND DelUsersID = 0"; # only display non-deleted comments $q.= " AND DelUsersID = 0"; # only display non-deleted comments
$q.= " ORDER BY CommentTS DESC"; $q.= " ORDER BY CommentTS DESC";
$result = db_query($q, $dbh); $result = db_query($q, $dbh);
if (!$result) {return array();} if (!$result) {print 'poop';return array();}
while ($row = mysql_fetch_assoc($result)) { while ($row = mysql_fetch_assoc($result)) {
$comments[] = $row; $comments[] = $row;
} }
@ -272,17 +272,19 @@ function package_details($id=0, $SID="") {
global $pkgsearch_vars; global $pkgsearch_vars;
$atype = account_from_sid($SID); $atype = account_from_sid($SID);
$uid = uid_from_sid($SID); $uid = uid_from_sid($SID);
$q = "SELECT Packages.*,Location,Category "; $q = "SELECT Packages.*,Location,Category ";
$q.= "FROM Packages,PackageLocations,PackageCategories "; $q.= "FROM Packages,PackageLocations,PackageCategories ";
$q.= "WHERE Packages.LocationID = PackageLocations.ID "; $q.= "WHERE Packages.LocationID = PackageLocations.ID ";
$q.= "AND Packages.CategoryID = PackageCategories.ID "; $q.= "AND Packages.CategoryID = PackageCategories.ID ";
$q.= "AND Packages.ID = ".intval($_REQUEST["ID"]); $q.= "AND Packages.ID = " . intval($_REQUEST['ID']);
$dbh = db_connect(); $dbh = db_connect();
$results = db_query($q, $dbh); $results = db_query($q, $dbh);
if (!$results) { if (!$results) {
print __("Error retrieving package details.") . "<br />\n"; print __("Error retrieving package details.") . "<br />\n";
}
} else { else {
$row = mysql_fetch_assoc($results); $row = mysql_fetch_assoc($results);
if (empty($row)) { if (empty($row)) {
print __("Package details could not be found.") . "<br />\n"; print __("Package details could not be found.") . "<br />\n";
@ -294,10 +296,11 @@ function package_details($id=0, $SID="") {
# Actions Bar # Actions Bar
if ($SID) { if ($SID) {
include('actions_form.php'); include('actions_form.php');
include('pkg_comment_form.php');
} }
# Print Comments # Print Comments
$comments = package_comments($row["ID"]); $comments = package_comments($_REQUEST['ID']);
if (!empty($comments)) { if (!empty($comments)) {
include('pkg_comments.php'); include('pkg_comments.php');
} }

View file

@ -50,11 +50,5 @@ if ($row["MaintainerUID"] == 0) {
} }
?> ?>
</form>
<br />
<form action='pkgedit.php' method='post'>
<input type='hidden' name='ID' value="<?php echo $row['ID'] ?>" />
<input type='submit' class='button' name='add_Comment' value="<?php echo __('Add Comment') ?>" />
</form> </form>
</div> </div>

View file

@ -0,0 +1,68 @@
<?php
# Add a comment to this package
if (isset($_REQUEST['comment'])) {
# Insert the comment
$dbh = db_connect();
$q = 'INSERT INTO PackageComments ';
$q.= '(PackageID, UsersID, Comments, CommentTS) VALUES (';
$q.= intval($_REQUEST['ID']) . ', ' . uid_from_sid($_COOKIE['AURSID']) . ', ';
$q.= "'" . mysql_real_escape_string($_REQUEST['comment']) . "', ";
$q.= 'UNIX_TIMESTAMP())';
db_query($q, $dbh);
# Send email notifications
$q = 'SELECT CommentNotify.*, Users.Email ';
$q.= 'FROM CommentNotify, Users ';
$q.= 'WHERE Users.ID = CommentNotify.UserID ';
$q.= 'AND CommentNotify.UserID != ' . uid_from_sid($_COOKIE['AURSID']) . ' ';
$q.= 'AND CommentNotify.PkgID = ' . intval($_REQUEST['ID']);
$result = db_query($q, $dbh);
$bcc = array();
if (mysql_num_rows($result)) {
while ($row = mysql_fetch_assoc($result)) {
array_push($bcc, $row['Email']);
}
$q = 'SELECT Packages.Name ';
$q.= 'FROM Packages ';
$q.= 'WHERE Packages.ID = ' . intval($_REQUEST['ID']);
$result = db_query($q, $dbh);
$row = mysql_fetch_assoc($result);
# TODO: native language emails for users, based on their prefs
# Simply making these strings translatable won't work, users would be
# getting emails in the language that the user who posted the comment was in
$body =
'from http://aur.archlinux.org/packages.php?ID='
. $_REQUEST['ID'] . "\n"
. username_from_sid($_COOKIE['AURSID']) . " wrote:\n\n"
. $_POST['comment']
. "\n\n---\nIf you no longer wish to receive notifications about this package, please go the the above package page and click the UnNotify button.";
$body = wordwrap($body, 70);
$bcc = implode(', ', $bcc);
$headers = "Bcc: $bcc\nReply-to: nobody@archlinux.org\nFrom: aur-notify@archlinux.org\nX-Mailer: AUR\n";
@mail(' ', "AUR Comment for " . $row['Name'], $body, $headers);
}
}
# Prompt visitor for comment
?>
<div class="pgbox">
<form action='<?php echo $_SERVER['PHP_SELF'] . '?ID=' . $_REQUEST['ID'] ?>' method='post'>
<div style="padding: 1%">
<?php
if (isset($_REQUEST['comment'])) {
echo '<b>' . __('Comment has been added.') . '</b>';
}
?>
<input type='hidden' name='ID' value="<?php echo $_REQUEST['ID'] ?>">
<?php echo __('Enter your comment below.') ?><br />
<textarea name='comment' rows='10' style="width: 100%"></textarea><br />
<input type='submit' value="<?php echo __("Submit") ?>">
<input type='reset' value="<?php echo __("Reset") ?>">
</div>
</form>
</div>