Update co-maintainer list when promoting a user

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@archlinux.org>
This commit is contained in:
Lukas Fleischer 2015-05-22 19:38:38 +02:00
parent c6e09def2b
commit dd3eb28a8c

View file

@ -629,32 +629,39 @@ function pkgbase_adopt ($base_ids, $action=true, $via) {
} }
} }
$q = "UPDATE PackageBases "; /* Adopt or disown the package. */
if ($action) { if ($action) {
$q = "UPDATE PackageBases ";
$q.= "SET MaintainerUID = $uid "; $q.= "SET MaintainerUID = $uid ";
$q.= "WHERE ID IN (" . implode(",", $base_ids) . ") ";
$dbh->exec($q);
} else { } else {
$q.= "SET MaintainerUID = NULL "; /* Update the co-maintainer list when disowning a package. */
}
$q.= "WHERE ID IN (" . implode(",", $base_ids) . ") ";
$dbh->exec($q);
/* Update package co-maintainers when disowning a package. */
if (!$action) {
if (has_credential(CRED_PKGBASE_DISOWN)) { if (has_credential(CRED_PKGBASE_DISOWN)) {
foreach ($base_ids as $base_id) { 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 { } else {
foreach ($base_ids as $base_id) { foreach ($base_ids as $base_id) {
$comaintainers = pkgbase_get_comaintainers($base_id); $comaintainers = pkgbase_get_comaintainers($base_id);
if (count($comaintainers) > 0) { if (count($comaintainers) > 0) {
$uid = uid_from_username($comaintainers[0]); $uid = uid_from_username($comaintainers[0]);
$q = "UPDATE PackageBases "; $comaintainers = array_diff($comaintainers, array($comaintainers[0]));
$q.= "SET MaintainerUID = " . $uid . " "; pkgbase_set_comaintainers($base_id, $comaintainers);
$q.= "WHERE ID = " . $base_id; } else {
$dbh->exec($q); $uid = "NULL";
} }
$q = "UPDATE PackageBases ";
$q.= "SET MaintainerUID = " . $uid . " ";
$q.= "WHERE ID = " . $base_id;
$dbh->exec($q);
} }
} }
} }