Allow for selecting a reason when closing a request

When closing a package request, Trusted Users can now pick a reason
("Accepted" or "Rejected"). This allows for marking a request as
accepted, even if the corresponding package base has already been
deleted.

Also, the notification email now always explicitly states whether a
request has been accepted or closed in the message body.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
This commit is contained in:
Lukas Fleischer 2014-07-04 10:40:29 +02:00
parent 61d70c1fa5
commit 8a465182ba
7 changed files with 80 additions and 22 deletions

View file

@ -40,6 +40,22 @@ function pkgreq_list($offset, $limit) {
return $dbh->query($q)->fetchAll();
}
/**
* Obtain the package base that belongs to a package request.
*
* @param int $id Package request ID to retrieve the package base for
*
* @return int The name of the corresponding package base
*/
function pkgreq_get_pkgbase_name($id) {
$dbh = DB::connect();
$q = "SELECT PackageBaseName FROM PackageRequests ";
$q.= "WHERE ID = " . intval($id);
$result = $dbh->query($q);
return $result->fetch(PDO::FETCH_COLUMN, 0);
}
/**
* File a deletion/orphan request against a package base
*
@ -139,14 +155,18 @@ function pkgreq_file($ids, $type, $merge_into, $comments) {
* @global string $AUR_LOCATION The AUR's URL used for notification e-mails
* @global string $AUR_REQUEST_ML The request notification mailing list
* @param int $id The package request to close
* @param bool $accepted True if the request has been accepted, false otherwise
* @param string $reason Whether the request was accepted or rejected
*
* @return array Tuple of success/failure indicator and error message
*/
function pkgreq_close($id, $accepted) {
function pkgreq_close($id, $reason) {
global $AUR_LOCATION;
global $AUR_REQUEST_ML;
if ($reason != 'accepted' && $reason != 'rejected') {
return array(false, __("Invalid reason."));
}
$dbh = DB::connect();
$id = intval($id);
@ -181,8 +201,7 @@ function pkgreq_close($id, $accepted) {
* user who posted the comment was in.
*/
$username = username_from_sid($_COOKIE['AURSID']);
$body = "Request #" . intval($id) . " has been " .
($accepted ? "accepted" : "closed") . " by " .
$body = "Request #" . intval($id) . " has been " . $reason . " by " .
$username . " [1].\n\n" .
"[1] " . $AUR_LOCATION . get_user_uri($username) . "\n";
$body = wordwrap($body, 70);