summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLukas Fleischer <lfleischer@archlinux.org>2015-08-31 18:29:06 +0200
committerLukas Fleischer <lfleischer@archlinux.org>2015-09-11 22:14:26 +0200
commit396e50bdc88feae9d0048d1c3dab776388d96dc7 (patch)
tree27ba246621007f32e13cf1ad4bdcea756d93ef6d
parent6b7e26a2d19c53438a9594ee3068f1afcdb1ee0d (diff)
downloadaur-396e50bdc88feae9d0048d1c3dab776388d96dc7.tar.gz
aur-396e50bdc88feae9d0048d1c3dab776388d96dc7.tar.xz
Require comments when flagging packages out-of-date
Implements FS#42827. Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
-rw-r--r--schema/aur-schema.sql1
-rwxr-xr-xscripts/notify.py5
-rw-r--r--upgrading/4.1.0.txt7
-rw-r--r--web/html/pkgbase.php7
-rw-r--r--web/html/pkgflag.php5
-rw-r--r--web/lib/pkgbasefuncs.inc.php14
6 files changed, 27 insertions, 12 deletions
diff --git a/schema/aur-schema.sql b/schema/aur-schema.sql
index 9556b20a..ff137dc6 100644
--- a/schema/aur-schema.sql
+++ b/schema/aur-schema.sql
@@ -82,6 +82,7 @@ CREATE TABLE PackageBases (
NumVotes INTEGER UNSIGNED NOT NULL DEFAULT 0,
Popularity DECIMAL(10,6) UNSIGNED NOT NULL DEFAULT 0,
OutOfDateTS BIGINT UNSIGNED NULL DEFAULT NULL,
+ FlaggerComment VARCHAR(255) NOT NULL,
SubmittedTS BIGINT UNSIGNED NOT NULL,
ModifiedTS BIGINT UNSIGNED NOT NULL,
FlaggerUID BIGINT UNSIGNED NULL DEFAULT NULL, -- who flagged the package out-of-date?
diff --git a/scripts/notify.py b/scripts/notify.py
index 8be3a701..55b29110 100755
--- a/scripts/notify.py
+++ b/scripts/notify.py
@@ -139,14 +139,15 @@ def flag(cur, uid, pkgbase_id):
user = username_from_id(cur, uid)
pkgbase = pkgbase_from_id(cur, pkgbase_id)
to = [get_maintainer_email(cur, pkgbase_id)]
+ text = sys.stdin.read()
user_uri = aur_location + '/account/' + user + '/'
pkgbase_uri = aur_location + '/pkgbase/' + pkgbase + '/'
subject = 'AUR Out-of-date Notification for %s' % (pkgbase)
- body = 'Your package %s [1] has been flagged out-of-date by %s [2]. ' % \
+ body = 'Your package %s [1] has been flagged out-of-date by %s [2]:' % \
(pkgbase, user)
- body += '\n\n'
+ body += '\n\n' + text + '\n\n'
body += '[1] ' + pkgbase_uri + '\n'
body += '[2] ' + user_uri
diff --git a/upgrading/4.1.0.txt b/upgrading/4.1.0.txt
index c0bf5732..e9545ffb 100644
--- a/upgrading/4.1.0.txt
+++ b/upgrading/4.1.0.txt
@@ -8,10 +8,11 @@ ALTER TABLE PackageComments
ADD FOREIGN KEY (EditedUsersID) REFERENCES Users(ID) ON DELETE SET NULL;
----
-2. Add a field to store the ID of the last user who flagged a package
-out-of-date:
+2. Add fields to store the ID and comment of the last user who flagged a
+package out-of-date:
----
ALTER TABLE PackageBases
- ADD COLUMN FlaggerUID BIGINT UNSIGNED NULL DEFAULT NULL;
+ ADD COLUMN FlaggerUID BIGINT UNSIGNED NULL DEFAULT NULL,
+ ADD COLUMN FlaggerComment VARCHAR(255) NOT NULL;
----
diff --git a/web/html/pkgbase.php b/web/html/pkgbase.php
index bc32e43c..a241c749 100644
--- a/web/html/pkgbase.php
+++ b/web/html/pkgbase.php
@@ -49,7 +49,12 @@ $output = "";
$fragment = "";
if (check_token()) {
if (current_action("do_Flag")) {
- list($ret, $output) = pkgbase_flag($ids);
+ if (strlen($_POST['comments']) >= 3) {
+ list($ret, $output) = pkgbase_flag($ids, $_POST['comments']);
+ } else {
+ $output = __("The selected packages have not been flagged, please enter a comment.");
+ $ret = false;
+ }
} elseif (current_action("do_UnFlag")) {
list($ret, $output) = pkgbase_unflag($ids);
} elseif (current_action("do_Adopt")) {
diff --git a/web/html/pkgflag.php b/web/html/pkgflag.php
index 9d86909d..bfe89e03 100644
--- a/web/html/pkgflag.php
+++ b/web/html/pkgflag.php
@@ -25,12 +25,17 @@ if (has_credential(CRED_PKGBASE_FLAG)): ?>
<p>
<?= __('Please do %snot%s use this form to report bugs. Use the package comments instead.',
'<strong>', '</strong>'); ?>
+ <?= __('Enter details on why the package is out-of-date below, preferably including links to the release announcement or the new release tarball.'); ?>
</p>
<form action="<?= get_uri('/pkgbase/'); ?>" method="post">
<fieldset>
<input type="hidden" name="IDs[<?= $base_id ?>]" value="1" />
<input type="hidden" name="ID" value="<?= $base_id ?>" />
<input type="hidden" name="token" value="<?= htmlspecialchars($_COOKIE['AURSID']) ?>" />
+ <p>
+ <label for="id_comments"><?= __("Comments") ?>:</label>
+ <textarea name="comments" id="id_comments" rows="5" cols="50"></textarea>
+ </p>
<p><input type="submit" class="button" name="do_Flag" value="<?= __("Flag") ?>" /></p>
</fieldset>
</form>
diff --git a/web/lib/pkgbasefuncs.inc.php b/web/lib/pkgbasefuncs.inc.php
index 24d3393f..799f1da9 100644
--- a/web/lib/pkgbasefuncs.inc.php
+++ b/web/lib/pkgbasefuncs.inc.php
@@ -316,10 +316,11 @@ function pkgbase_maintainer_uids($base_ids) {
* Flag package(s) as out-of-date
*
* @param array $base_ids Array of package base IDs to flag/unflag
+ * @param string $comment The comment to add
*
* @return array Tuple of success/failure indicator and error message
*/
-function pkgbase_flag($base_ids) {
+function pkgbase_flag($base_ids, $comment) {
if (!has_credential(CRED_PKGBASE_FLAG)) {
return array(false, __("You must be logged in before you can flag packages."));
}
@@ -332,14 +333,15 @@ function pkgbase_flag($base_ids) {
$uid = uid_from_sid($_COOKIE['AURSID']);
$dbh = DB::connect();
- $q = "UPDATE PackageBases SET";
- $q.= " OutOfDateTS = UNIX_TIMESTAMP(), FlaggerUID = " . $uid;
- $q.= " WHERE ID IN (" . implode(",", $base_ids) . ")";
- $q.= " AND OutOfDateTS IS NULL";
+ $q = "UPDATE PackageBases SET ";
+ $q.= "OutOfDateTS = UNIX_TIMESTAMP(), FlaggerUID = " . $uid . ", ";
+ $q.= "FlaggerComment = " . $dbh->quote($comment) . " ";
+ $q.= "WHERE ID IN (" . implode(",", $base_ids) . ") ";
+ $q.= "AND OutOfDateTS IS NULL";
$dbh->exec($q);
foreach ($base_ids as $base_id) {
- notify(array('flag', $uid, $base_id));
+ notify(array('flag', $uid, $base_id), $comment);
}
return array(true, __("The selected packages have been flagged out-of-date."));