summaryrefslogtreecommitdiffstats
path: root/web/html/pkgbase.php
diff options
context:
space:
mode:
authorLukas Fleischer <archlinux@cryptocrack.de>2014-04-05 13:25:47 +0200
committerLukas Fleischer <archlinux@cryptocrack.de>2014-04-05 13:54:06 +0200
commitf4613442114b36d32e903b5b0608b73e32bdbc3f (patch)
treecf8fe2f3365d41ad94b1583443034846310735a7 /web/html/pkgbase.php
parentc1c77836a8b1e01f6a6f69d3cdd35321d5bf203e (diff)
downloadaur-f4613442114b36d32e903b5b0608b73e32bdbc3f.tar.gz
aur-f4613442114b36d32e903b5b0608b73e32bdbc3f.tar.xz
Move package actions to package bases
Package actions now operate on package bases instead of packages. Move all actions to the correct locations. This also fixes some issues with comment notifications. Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
Diffstat (limited to 'web/html/pkgbase.php')
-rw-r--r--web/html/pkgbase.php82
1 files changed, 81 insertions, 1 deletions
diff --git a/web/html/pkgbase.php b/web/html/pkgbase.php
index e0c9af69..42705edd 100644
--- a/web/html/pkgbase.php
+++ b/web/html/pkgbase.php
@@ -22,7 +22,7 @@ if (!isset($base_id) || !isset($pkgbase_name)) {
unset($base_id, $pkgbase_name);
}
- if ($base_id == 0 || $base_id == NULL || $pkgbase_name == NULL) {
+ if (isset($base_id) && ($base_id == 0 || $base_id == NULL || $pkgbase_name == NULL)) {
header("HTTP/1.0 404 Not Found");
include "./404.php";
return;
@@ -39,10 +39,90 @@ if (isset($_COOKIE["AURSID"])) {
$atype = "";
}
+/* Grab the list of package base IDs to be operated on. */
+$ids = array();
+if (isset($_POST['IDs'])) {
+ foreach ($_POST['IDs'] as $id => $i) {
+ $id = intval($id);
+ if ($id > 0) {
+ $ids[] = $id;
+ }
+ }
+}
+
+/* Perform package base actions. */
+$ret = false;
+$output = "";
+if (check_token()) {
+ if (current_action("do_Flag")) {
+ list($ret, $output) = pkg_flag($atype, $ids);
+ } elseif (current_action("do_UnFlag")) {
+ list($ret, $output) = pkg_unflag($atype, $ids);
+ } elseif (current_action("do_Adopt")) {
+ list($ret, $output) = pkg_adopt($atype, $ids, true);
+ } elseif (current_action("do_Disown")) {
+ list($ret, $output) = pkg_adopt($atype, $ids, false);
+ } elseif (current_action("do_Vote")) {
+ list($ret, $output) = pkg_vote($atype, $ids, true);
+ } elseif (current_action("do_UnVote")) {
+ list($ret, $output) = pkg_vote($atype, $ids, false);
+ } elseif (current_action("do_Delete")) {
+ if (isset($_POST['confirm_Delete'])) {
+ if (!isset($_POST['merge_Into']) || empty($_POST['merge_Into'])) {
+ list($ret, $output) = pkg_delete($atype, $ids, NULL);
+ unset($_GET['ID']);
+ }
+ else {
+ $merge_base_id = pkgbase_from_name($_POST['merge_Into']);
+ if ($merge_base_id) {
+ list($ret, $output) = pkg_delete($atype, $ids, $merge_base_id);
+ unset($_GET['ID']);
+ }
+ else {
+ $output = __("Cannot find package to merge votes and comments into.");
+ }
+ }
+ }
+ else {
+ $output = __("The selected packages have not been deleted, check the confirmation checkbox.");
+ }
+ } elseif (current_action("do_Notify")) {
+ list($ret, $output) = pkg_notify($atype, $ids);
+ } elseif (current_action("do_UnNotify")) {
+ list($ret, $output) = pkg_notify($atype, $ids, false);
+ } elseif (current_action("do_DeleteComment")) {
+ list($ret, $output) = pkg_delete_comment($atype);
+ } elseif (current_action("do_ChangeCategory")) {
+ list($ret, $output) = pkg_change_category($base_id, $atype);
+ }
+
+ if (isset($_REQUEST['comment'])) {
+ $uid = uid_from_sid($_COOKIE["AURSID"]);
+ add_package_comment($base_id, $uid, $_REQUEST['comment']);
+ $ret = true;
+ }
+
+ if ($ret) {
+ if (isset($base_id)) {
+ /* Redirect back to package base page on success. */
+ header('Location: ' . get_pkgbase_uri($pkgbase_name));
+ exit();
+ } else {
+ /* Redirect back to package search page. */
+ header('Location: ' . get_pkg_route());
+ exit();
+ }
+ }
+}
+
$details = get_pkgbase_details($base_id);
html_header($title, $details);
?>
+<?php if ($output): ?>
+<p class="pkgoutput"><?= $output ?></p>
+<?php endif; ?>
+
<?php
include('pkg_search_form.php');
if (isset($_COOKIE["AURSID"])) {