Trusted Users now have the ability to overwrite packages without changing ownership. This allows for adding small fixes to PKGBUILDs without disowning the package. Implements FS#32807. Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de> --- web/html/pkgsubmit.php | 10 ++++++++-- web/lib/aur.inc.php | 5 +++++ web/lib/pkgbasefuncs.inc.php | 7 ++++--- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/web/html/pkgsubmit.php b/web/html/pkgsubmit.php index f07580b..969eb35 100644 --- a/web/html/pkgsubmit.php +++ b/web/html/pkgsubmit.php @@ -346,9 +346,15 @@ if ($uid): * base, the database ID needs to be preserved * so that any votes are retained. */ - $was_orphan = (pkgbase_maintainer_uid($base_id) === NULL); + $maintainer_uid = pkgbase_maintainer_uid($base_id); + $was_orphan = ($maintainer_uid === NULL); - pkgbase_update($base_id, $pkgbase_info['pkgbase'], $uid); + if ($was_orphan) { + /* Adopt orphan packages. */ + $maintainer_uid = $uid; + } + + pkgbase_update($base_id, $pkgbase_info['pkgbase'], $maintainer_uid, $uid); if ($category_id > 1) { pkgbase_update_category($base_id, $category_id); diff --git a/web/lib/aur.inc.php b/web/lib/aur.inc.php index ff46455..9fc3378 100644 --- a/web/lib/aur.inc.php +++ b/web/lib/aur.inc.php @@ -293,6 +293,11 @@ function html_footer($ver="") { * @return int 0 if the user can't submit, 1 if the user can submit */ function can_submit_pkgbase($name="", $sid="") { + $atype = account_from_sid($_COOKIE["AURSID"]); + if ($atype == "Trusted User" || $atype == "Developer") { + return 1; + } + if (!$name || !$sid) {return 0;} $dbh = DB::connect(); $q = "SELECT MaintainerUID "; diff --git a/web/lib/pkgbasefuncs.inc.php b/web/lib/pkgbasefuncs.inc.php index 9f80ef2..9dbdff6 100644 --- a/web/lib/pkgbasefuncs.inc.php +++ b/web/lib/pkgbasefuncs.inc.php @@ -934,17 +934,18 @@ function pkgbase_create($name, $category_id, $uid) { * * @param string $name Name of the updated package base * @param int $base_id The package base ID of the affected package - * @param int $uid User ID of the package uploader + * @param int $maintainer_uid User ID of the package mainainer + * @param int $packager_uid User ID of the package uploader * * @return void */ -function pkgbase_update($base_id, $name, $uid) { +function pkgbase_update($base_id, $name, $maintainer_uid, $packager_uid) { $dbh = DB::connect(); $q = sprintf("UPDATE PackageBases SET " . "Name = %s, ModifiedTS = UNIX_TIMESTAMP(), " . "MaintainerUID = %d, PackagerUID = %d, OutOfDateTS = NULL " . "WHERE ID = %d", - $dbh->quote($name), $uid, $uid, $base_id); + $dbh->quote($name), $maintainer_uid, $packager_uid, $base_id); $dbh->exec($q); } -- 1.9.3