[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