diff options
Diffstat (limited to 'web/html/pkgbase.php')
-rw-r--r-- | web/html/pkgbase.php | 82 |
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"])) { |