mirror of
https://gitlab.archlinux.org/archlinux/aurweb.git
synced 2025-02-03 10:43:03 +01:00
Automatically close requests
Close requests automatically when a package is deleted or orphaned. Implements FS#43799. Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
This commit is contained in:
parent
5dca715c46
commit
a53241a2f1
2 changed files with 51 additions and 1 deletions
|
@ -509,6 +509,22 @@ function pkgbase_delete ($base_ids, $merge_base_id, $via, $grant=false) {
|
||||||
pkgreq_close(intval($via), 'accepted', '');
|
pkgreq_close(intval($via), 'accepted', '');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Scan through pending deletion requests and close them. */
|
||||||
|
if (!$action) {
|
||||||
|
$username = username_from_sid($_COOKIE['AURSID']);
|
||||||
|
foreach ($base_ids as $base_id) {
|
||||||
|
$pkgreq_ids = array_merge(
|
||||||
|
pkgreq_by_pkgbase($base_id, 'deletion'),
|
||||||
|
pkgreq_by_pkgbase($base_id, 'merge'),
|
||||||
|
pkgreq_by_pkgbase($base_id, 'orphan'));
|
||||||
|
foreach ($pkgreq_ids as $pkgreq_id) {
|
||||||
|
pkgreq_close(intval($pkgreq_id), 'accepted',
|
||||||
|
'The user ' . $username .
|
||||||
|
' deleted the package.', true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($merge_base_id) {
|
if ($merge_base_id) {
|
||||||
/* Merge comments */
|
/* Merge comments */
|
||||||
$q = "UPDATE PackageComments ";
|
$q = "UPDATE PackageComments ";
|
||||||
|
@ -555,6 +571,8 @@ function pkgbase_delete ($base_ids, $merge_base_id, $via, $grant=false) {
|
||||||
* @return array Tuple of success/failure indicator and error message
|
* @return array Tuple of success/failure indicator and error message
|
||||||
*/
|
*/
|
||||||
function pkgbase_adopt ($base_ids, $action=true, $via) {
|
function pkgbase_adopt ($base_ids, $action=true, $via) {
|
||||||
|
$dbh = DB::connect();
|
||||||
|
|
||||||
$uid = uid_from_sid($_COOKIE["AURSID"]);
|
$uid = uid_from_sid($_COOKIE["AURSID"]);
|
||||||
if (!$uid) {
|
if (!$uid) {
|
||||||
if ($action) {
|
if ($action) {
|
||||||
|
@ -583,7 +601,18 @@ function pkgbase_adopt ($base_ids, $action=true, $via) {
|
||||||
pkgreq_close(intval($via), 'accepted', '');
|
pkgreq_close(intval($via), 'accepted', '');
|
||||||
}
|
}
|
||||||
|
|
||||||
$dbh = DB::connect();
|
/* Scan through pending orphan requests and close them. */
|
||||||
|
if (!$action) {
|
||||||
|
$username = username_from_sid($_COOKIE['AURSID']);
|
||||||
|
foreach ($base_ids as $base_id) {
|
||||||
|
$pkgreq_ids = pkgreq_by_pkgbase($base_id, 'orphan');
|
||||||
|
foreach ($pkgreq_ids as $pkgreq_id) {
|
||||||
|
pkgreq_close(intval($pkgreq_id), 'accepted',
|
||||||
|
'The user ' . $username .
|
||||||
|
' disowned the package.', true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$q = "UPDATE PackageBases ";
|
$q = "UPDATE PackageBases ";
|
||||||
if ($action) {
|
if ($action) {
|
||||||
|
|
|
@ -41,6 +41,27 @@ function pkgreq_list($offset, $limit) {
|
||||||
return $dbh->query($q)->fetchAll();
|
return $dbh->query($q)->fetchAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a list of all open package requests belonging to a certain package base
|
||||||
|
*
|
||||||
|
* @param int $baseid The package base ID to retrieve requests for
|
||||||
|
* @param int $type The type of requests to obtain
|
||||||
|
*
|
||||||
|
* @return array List of package request IDs
|
||||||
|
*/
|
||||||
|
function pkgreq_by_pkgbase($baseid, $type) {
|
||||||
|
$dbh = DB::connect();
|
||||||
|
|
||||||
|
$q = "SELECT PackageRequests.ID ";
|
||||||
|
$q.= "FROM PackageRequests INNER JOIN RequestTypes ON ";
|
||||||
|
$q.= "RequestTypes.ID = PackageRequests.ReqTypeID ";
|
||||||
|
$q.= "WHERE PackageRequests.Status = 0 ";
|
||||||
|
$q.= "AND PackageRequests.PackageBaseID = " . intval($baseid) . " ";
|
||||||
|
$q.= "AND RequestTypes.Name = " . $dbh->quote($type);
|
||||||
|
|
||||||
|
return $dbh->query($q)->fetchAll(PDO::FETCH_COLUMN, 0);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Obtain the package base that belongs to a package request.
|
* Obtain the package base that belongs to a package request.
|
||||||
*
|
*
|
||||||
|
|
Loading…
Add table
Reference in a new issue