[PATCH] Make delete and merge links create an auto-accepted request

Johannes Löthberg johannes at kyriasis.com
Sun Dec 23 21:14:30 UTC 2018


This lets us have a better paper-trail over what happens in the AUR.

Signed-off-by: Johannes Löthberg <johannes at kyriasis.com>
---
 web/html/pkgbase.php        | 23 +++++++++++++----------
 web/lib/pkgreqfuncs.inc.php | 14 +++++++-------
 2 files changed, 20 insertions(+), 17 deletions(-)

diff --git a/web/html/pkgbase.php b/web/html/pkgbase.php
index 46ad77e..8efa51e 100644
--- a/web/html/pkgbase.php
+++ b/web/html/pkgbase.php
@@ -70,12 +70,10 @@ if (check_token()) {
 		list($ret, $output) = pkgbase_vote($ids, false);
 	} elseif (current_action("do_Delete")) {
 		if (isset($_POST['confirm'])) {
-			if (!isset($_POST['merge_Into']) || empty($_POST['merge_Into'])) {
-				list($ret, $output) = pkgbase_delete($ids, NULL, $via);
-				unset($_GET['ID']);
-				unset($base_id);
-			}
-			else {
+			$type = "deletion";
+			$merge_base_id = NULL;
+			if (isset($_POST['merge_Into']) && !empty($_POST['merge_Into'])) {
+				$type = "merge";
 				$merge_base_id = pkgbase_from_name($_POST['merge_Into']);
 				if (!$merge_base_id) {
 					$output = __("Cannot find package to merge votes and comments into.");
@@ -83,12 +81,17 @@ if (check_token()) {
 				} elseif (in_array($merge_base_id, $ids)) {
 					$output = __("Cannot merge a package base with itself.");
 					$ret = false;
-				} else {
+				}
+			}
+			if ($type == "deletion" || ($type == "merge" && $merge_base_id)) {
+				list($ret, $output, $request_id) = pkgreq_file($ids, $type, $_POST['merge_Into'],
+					"Trusted User-requested auto-accepted ".$type.".");
+				if ($ret) {
 					list($ret, $output) = pkgbase_delete($ids, $merge_base_id, $via);
-					unset($_GET['ID']);
-					unset($base_id);
 				}
 			}
+			unset($_GET['ID']);
+			unset($base_id);
 		}
 		else {
 			$output = __("The selected packages have not been deleted, check the confirmation checkbox.");
@@ -112,7 +115,7 @@ if (check_token()) {
 	} elseif (current_action("do_SetKeywords")) {
 		list($ret, $output) = pkgbase_set_keywords($base_id, preg_split("/[\s,;]+/", $_POST['keywords'], -1, PREG_SPLIT_NO_EMPTY));
 	} elseif (current_action("do_FileRequest")) {
-		list($ret, $output) = pkgreq_file($ids, $_POST['type'], $_POST['merge_into'], $_POST['comments']);
+		list($ret, $output, $_reqid) = pkgreq_file($ids, $_POST['type'], $_POST['merge_into'], $_POST['comments']);
 	} elseif (current_action("do_CloseRequest")) {
 		list($ret, $output) = pkgreq_close($_POST['reqid'], $_POST['reason'], $_POST['comments']);
 	} elseif (current_action("do_EditComaintainers")) {
diff --git a/web/lib/pkgreqfuncs.inc.php b/web/lib/pkgreqfuncs.inc.php
index 774ebe7..a15f101 100644
--- a/web/lib/pkgreqfuncs.inc.php
+++ b/web/lib/pkgreqfuncs.inc.php
@@ -124,19 +124,19 @@ function pkgreq_get_creator_email($id) {
  */
 function pkgreq_file($ids, $type, $merge_into, $comments) {
 	if (!has_credential(CRED_PKGREQ_FILE)) {
-		return array(false, __("You must be logged in to file package requests."));
+		return array(false, __("You must be logged in to file package requests."), NULL);
 	}
 
 	if (!empty($merge_into) && !preg_match("/^[a-z0-9][a-z0-9\.+_-]*$/D", $merge_into)) {
-		return array(false, __("Invalid name: only lowercase letters are allowed."));
+		return array(false, __("Invalid name: only lowercase letters are allowed."), NULL);
 	}
 
 	if (!empty($merge_into) && !pkgbase_from_name($merge_into)) {
-		return array(false, __("Cannot find package to merge votes and comments into."));
+		return array(false, __("Cannot find package to merge votes and comments into."), NULL);
 	}
 
 	if (empty($comments)) {
-		return array(false, __("The comment field must not be empty."));
+		return array(false, __("The comment field must not be empty."), NULL);
 	}
 
 	$dbh = DB::connect();
@@ -147,7 +147,7 @@ function pkgreq_file($ids, $type, $merge_into, $comments) {
 	$pkgbase_name = pkgbase_name_from_id($base_id);
 
 	if ($merge_into == $pkgbase_name) {
-		return array(false, __("Cannot merge a package base with itself."));
+		return array(false, __("Cannot merge a package base with itself."), NULL);
 	}
 
 	$q = "SELECT ID FROM RequestTypes WHERE Name = " . $dbh->quote($type);
@@ -155,7 +155,7 @@ function pkgreq_file($ids, $type, $merge_into, $comments) {
 	if ($row = $result->fetch(PDO::FETCH_ASSOC)) {
 		$type_id = $row['ID'];
 	} else {
-		return array(false, __("Invalid request type."));
+		return array(false, __("Invalid request type."), NULL);
 	}
 
 	$q = "INSERT INTO PackageRequests ";
@@ -208,7 +208,7 @@ function pkgreq_file($ids, $type, $merge_into, $comments) {
 		pkgbase_delete(array($base_id), NULL, NULL, true);
 	}
 
-	return array(true, __("Added request successfully."));
+	return array(true, __("Added request successfully."), $request_id);
 }
 
 /**
-- 
2.20.1


More information about the aur-dev mailing list