On Thu, Aug 11, 2011 at 7:50 AM, Lukas Fleischer <[email protected]> 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 <[email protected]> > --- > Queries should be SQL standard compliant now. Hopefully. Looks good now at a glance.
Signed-off-by: Dan McGee <[email protected]> > > 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 > >
