[aur-dev] [PATCH v2] Add "mergepkgid" argument to pkg_delete()
Dan McGee
dpmcgee at gmail.com
Thu Aug 11 09:12:43 EDT 2011
On Thu, Aug 11, 2011 at 7:50 AM, Lukas Fleischer
<archlinux at cryptocrack.de> wrote:
> This allows for merging comments and votes of deleted packages into
> another one which is useful if a package needs to be renamed.
>
> Signed-off-by: Lukas Fleischer <archlinux at cryptocrack.de>
> ---
> Queries should be SQL standard compliant now. Hopefully.
Looks good now at a glance.
Signed-off-by: Dan McGee <dan at archlinux.org>
>
> web/lib/pkgfuncs.inc.php | 31 ++++++++++++++++++++++++++++++-
> 1 files changed, 30 insertions(+), 1 deletions(-)
>
> diff --git a/web/lib/pkgfuncs.inc.php b/web/lib/pkgfuncs.inc.php
> index bb5a592..eb2900b 100644
> --- a/web/lib/pkgfuncs.inc.php
> +++ b/web/lib/pkgfuncs.inc.php
> @@ -659,10 +659,11 @@ function pkg_flag ($atype, $ids, $action = True) {
> *
> * @param string $atype Account type, output of account_from_sid
> * @param array $ids Array of package IDs to delete
> + * @param int $mergepkgid Package to merge the deleted ones into
> *
> * @return string Translated error or success message
> */
> -function pkg_delete ($atype, $ids) {
> +function pkg_delete ($atype, $ids, $mergepkgid) {
> if (!$atype) {
> return __("You must be logged in before you can delete packages.");
> }
> @@ -678,6 +679,34 @@ function pkg_delete ($atype, $ids) {
> }
>
> $dbh = db_connect();
> +
> + if ($mergepkgid) {
> + /* Merge comments */
> + $q = "UPDATE PackageComments ";
> + $q.= "SET PackageID = " . intval($mergepkgid) . " ";
> + $q.= "WHERE PackageID IN (" . implode(",", $ids) . ")";
> + db_query($q, $dbh);
> +
> + /* Merge votes */
> + foreach ($ids as $pkgid) {
> + $q = "UPDATE PackageVotes ";
> + $q.= "SET PackageID = " . intval($mergepkgid) . " ";
> + $q.= "WHERE PackageID = " . $pkgid . " ";
> + $q.= "AND UsersID NOT IN (";
> + $q.= "SELECT * FROM (SELECT UsersID ";
> + $q.= "FROM PackageVotes ";
> + $q.= "WHERE PackageID = " . intval($mergepkgid);
> + $q.= ") temp)";
> + db_query($q, $dbh);
> + }
> +
> + $q = "UPDATE Packages ";
> + $q.= "SET NumVotes = (SELECT COUNT(*) FROM PackageVotes ";
> + $q.= "WHERE PackageID = " . intval($mergepkgid) . ") ";
> + $q.= "WHERE ID = " . intval($mergepkgid);
> + db_query($q, $dbh);
> + }
> +
> $q = "DELETE FROM Packages WHERE ID IN (" . implode(",", $ids) . ")";
> $result = db_query($q, $dbh);
>
> --
> 1.7.6
>
>
More information about the aur-dev
mailing list