[aur-dev] [PATCH 2/2] Update co-maintainer list when promoting a user

Lukas Fleischer lfleischer at archlinux.org
Fri May 22 18:09:09 UTC 2015


When a user disowns a package and promotes a co-maintainer, remove that
new maintainer from the list of package co-maintainers. Since only the
package maintainer can manage co-maintainers, this must happen before
the actual disown operation.

Signed-off-by: Lukas Fleischer <lfleischer at archlinux.org>
---
 web/lib/pkgbasefuncs.inc.php | 33 ++++++++++++++++++++-------------
 1 file changed, 20 insertions(+), 13 deletions(-)

diff --git a/web/lib/pkgbasefuncs.inc.php b/web/lib/pkgbasefuncs.inc.php
index 5b8b52f..327b7f9 100644
--- a/web/lib/pkgbasefuncs.inc.php
+++ b/web/lib/pkgbasefuncs.inc.php
@@ -629,32 +629,39 @@ function pkgbase_adopt ($base_ids, $action=true, $via) {
 		}
 	}
 
-	$q = "UPDATE PackageBases ";
+	/* Adopt or disown the package. */
 	if ($action) {
+		$q = "UPDATE PackageBases ";
 		$q.= "SET MaintainerUID = $uid ";
+		$q.= "WHERE ID IN (" . implode(",", $base_ids) . ") ";
+		$dbh->exec($q);
 	} else {
-		$q.= "SET MaintainerUID = NULL ";
-	}
-	$q.= "WHERE ID IN (" . implode(",", $base_ids) . ") ";
-	$dbh->exec($q);
-
-	/* Update package co-maintainers when disowning a package. */
-	if (!$action) {
+		/* Update the co-maintainer list when disowning a package. */
 		if (has_credential(CRED_PKGBASE_DISOWN)) {
 			foreach ($base_ids as $base_id) {
-				pkgbase_set_comaintainers($base_id, "");
+				pkgbase_set_comaintainers($base_id, array());
 			}
+
+			$q = "UPDATE PackageBases ";
+			$q.= "SET MaintainerUID = NULL ";
+			$q.= "WHERE ID IN (" . implode(",", $base_ids) . ") ";
+			$dbh->exec($q);
 		} else {
 			foreach ($base_ids as $base_id) {
 				$comaintainers = pkgbase_get_comaintainers($base_id);
 
 				if (count($comaintainers) > 0) {
 					$uid = uid_from_username($comaintainers[0]);
-					$q = "UPDATE PackageBases ";
-					$q.= "SET MaintainerUID = " . $uid .  " ";
-					$q.= "WHERE ID = " . $base_id;
-					$dbh->exec($q);
+					$comaintainers = array_diff($comaintainers, array($comaintainers[0]));
+					pkgbase_set_comaintainers($base_id, $comaintainers);
+				} else {
+					$uid = "NULL";
 				}
+
+				$q = "UPDATE PackageBases ";
+				$q.= "SET MaintainerUID = " . $uid .  " ";
+				$q.= "WHERE ID = " . $base_id;
+				$dbh->exec($q);
 			}
 		}
 	}
-- 
2.4.1


More information about the aur-dev mailing list