From 57db4814a47d2a40d4b74e3ae0df261bbfeb45b8 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Sun, 30 Aug 2015 16:32:34 +0200 Subject: Allow users to unflag packages they flagged themselves Sometimes, a user accidentally flags a package out-of-date. Allow users to unflag packages that they flagged themselves, thereby providing a way to undo these actions. Implements FS#46145. Signed-off-by: Lukas Fleischer --- web/lib/pkgbasefuncs.inc.php | 3 ++- web/lib/pkgfuncs.inc.php | 2 +- web/template/pkg_details.php | 3 ++- web/template/pkgbase_actions.php | 2 +- web/template/pkgbase_details.php | 3 ++- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/web/lib/pkgbasefuncs.inc.php b/web/lib/pkgbasefuncs.inc.php index df1ae186..24d3393f 100644 --- a/web/lib/pkgbasefuncs.inc.php +++ b/web/lib/pkgbasefuncs.inc.php @@ -150,6 +150,7 @@ function pkgbase_get_details($base_id) { $q.= "PackageBases.OutOfDateTS, PackageBases.SubmittedTS, "; $q.= "PackageBases.ModifiedTS, PackageBases.SubmitterUID, "; $q.= "PackageBases.MaintainerUID, PackageBases.PackagerUID, "; + $q.= "PackageBases.FlaggerUID, "; $q.= "(SELECT COUNT(*) FROM PackageRequests "; $q.= " WHERE PackageRequests.PackageBaseID = PackageBases.ID "; $q.= " AND PackageRequests.Status = 0) AS RequestCount "; @@ -370,7 +371,7 @@ function pkgbase_unflag($base_ids) { $maintainers = array_merge(pkgbase_maintainer_uids($base_ids), pkgbase_get_comaintainer_uids($base_ids)); if (!has_credential(CRED_PKGBASE_UNFLAG, $maintainers)) { - $q.= "AND MaintainerUID = " . $uid; + $q.= "AND (MaintainerUID = " . $uid . " OR FlaggerUID = " . $uid. ")"; } $result = $dbh->exec($q); diff --git a/web/lib/pkgfuncs.inc.php b/web/lib/pkgfuncs.inc.php index f4034718..d760429e 100644 --- a/web/lib/pkgfuncs.inc.php +++ b/web/lib/pkgfuncs.inc.php @@ -435,7 +435,7 @@ function pkg_get_details($id=0) { $q.= "PackageBases.Popularity, PackageBases.OutOfDateTS, "; $q.= "PackageBases.SubmittedTS, PackageBases.ModifiedTS, "; $q.= "PackageBases.SubmitterUID, PackageBases.MaintainerUID, "; - $q.= "PackageBases.PackagerUID, "; + $q.= "PackageBases.PackagerUID, PackageBases.FlaggerUID, "; $q.= "(SELECT COUNT(*) FROM PackageRequests "; $q.= " WHERE PackageRequests.PackageBaseID = Packages.PackageBaseID "; $q.= " AND PackageRequests.Status = 0) AS RequestCount "; diff --git a/web/template/pkg_details.php b/web/template/pkg_details.php index f4eed514..5ba3607a 100644 --- a/web/template/pkg_details.php +++ b/web/template/pkg_details.php @@ -21,8 +21,9 @@ $packager = username_from_id($row["PackagerUID"]); if ($row["MaintainerUID"] !== NULL) { $maintainers = array_merge(array($row["MaintainerUID"]), pkgbase_get_comaintainer_uids(array($base_id))); } else { - $maintainers = NULL; + $maintainers = array(); } +$unflaggers = array_merge($maintainers, array($row["FlaggerUID"])); $votes = $row['NumVotes']; $popularity = $row['Popularity']; diff --git a/web/template/pkgbase_actions.php b/web/template/pkgbase_actions.php index c7428ee6..dea348e3 100644 --- a/web/template/pkgbase_actions.php +++ b/web/template/pkgbase_actions.php @@ -11,7 +11,7 @@
  • - +
  • diff --git a/web/template/pkgbase_details.php b/web/template/pkgbase_details.php index d4304e3e..1012c4e6 100644 --- a/web/template/pkgbase_details.php +++ b/web/template/pkgbase_details.php @@ -20,8 +20,9 @@ $packager = username_from_id($row["PackagerUID"]); if ($row["MaintainerUID"] !== NULL) { $maintainers = array_merge(array($row["MaintainerUID"]), pkgbase_get_comaintainer_uids(array($base_id))); } else { - $maintainers = NULL; + $maintainers = array(); } +$unflaggers = array_merge($maintainers, array($row["FlaggerUID"])); $votes = $row['NumVotes']; $popularity = $row['Popularity']; -- cgit v1.2.3-24-g4f1b