PHPFusion\Forums\Admin\ForumAdminView::validate_forum_removal PHP Метод

validate_forum_removal() приватный Метод

If Forum has Sub Forum, deletion will give you a move form. If Forum has no Sub Forum, it will prune itself and delete itself.
    private function validate_forum_removal()
    {
        global $aidlink;
        if (isset($_GET['forum_id']) && isnum($_GET['forum_id']) && isset($_GET['forum_cat']) && isnum($_GET['forum_cat'])) {
            $forum_count = dbcount("('forum_id')", DB_FORUMS, "forum_cat='" . $_GET['forum_id'] . "'");
            if ($forum_count >= 1) {
                // Delete forum
                /**
                 * $action_data
                 * 'forum_id' - current forum id
                 * 'forum_branch' - the branch id
                 * 'threads_to_forum' - target destination where all threads should move to
                 * 'delete_threads' - if delete threads are checked
                 * 'subforum_to_forum' - target destination where all subforums should move to
                 * 'delete_forum' - if delete all subforums are checked
                 */
                if (isset($_POST['forum_remove'])) {
                    $action_data = array('forum_id' => isset($_POST['forum_id']) ? form_sanitizer($_POST['forum_id'], 0, 'forum_id') : 0, 'forum_branch' => isset($_POST['forum_branch']) ? form_sanitizer($_POST['forum_branch'], 0, 'forum_branch') : 0, 'threads_to_forum' => isset($_POST['move_threads']) ? form_sanitizer($_POST['move_threads'], 0, 'move_threads') : '', 'delete_threads' => isset($_POST['delete_threads']) ? 1 : 0, 'subforums_to_forum' => isset($_POST['move_forums']) ? form_sanitizer($_POST['move_forums'], 0, 'move_forums') : '', 'delete_forums' => isset($_POST['delete_forums']) ? 1 : 0);
                    if (self::verify_forum($action_data['forum_id'])) {
                        // Threads and Posts action
                        if (!$action_data['delete_threads'] && $action_data['threads_to_forum']) {
                            //dbquery("UPDATE ".DB_FORUM_THREADS." SET forum_id='".$action_data['threads_to_forum']."' WHERE forum_id='".$action_data['forum_id']."'");
                            dbquery("UPDATE " . DB_FORUM_POSTS . " SET forum_id='" . $action_data['threads_to_forum'] . "' WHERE forum_id='" . $action_data['forum_id'] . "'");
                        } elseif ($action_data['delete_threads']) {
                            // remove all threads and all posts in this forum.
                            self::prune_attachment($action_data['forum_id']);
                            // wipe
                            self::prune_posts($action_data['forum_id']);
                            // wipe
                            self::prune_threads($action_data['forum_id']);
                            // wipe
                            self::recalculate_post($action_data['forum_id']);
                            // wipe
                        } else {
                            \defender::stop();
                            addNotice('danger', self::$locale['forum_notice_na']);
                        }
                        // Subforum action
                        if (!$action_data['delete_forums'] && $action_data['subforums_to_forum']) {
                            dbquery("UPDATE " . DB_FORUMS . " SET forum_cat='" . $action_data['subforums_to_forum'] . "', forum_branch='" . get_hkey(DB_FORUMS, 'forum_id', 'forum_cat', $action_data['subforums_to_forum']) . "'\n\t\t\t\t" . (multilang_table("FO") ? "WHERE forum_language='" . LANGUAGE . "' AND" : "WHERE") . " forum_cat='" . $action_data['forum_id'] . "'");
                        } elseif (!$action_data['delete_forums']) {
                            \defender::stop();
                            addNotice('danger', self::$locale['forum_notice_na']);
                        }
                    } else {
                        \defender::stop();
                        addNotice('error', self::$locale['forum_notice_na']);
                    }
                    self::prune_forums($action_data['forum_id']);
                    addNotice('info', self::$locale['forum_notice_5']);
                    redirect(FUSION_SELF . $aidlink);
                }
                self::display_forum_move_form();
            } else {
                self::prune_attachment($_GET['forum_id']);
                self::prune_posts($_GET['forum_id']);
                self::prune_threads($_GET['forum_id']);
                self::recalculate_post($_GET['forum_id']);
                dbquery("DELETE FROM " . DB_FORUMS . " WHERE forum_id='" . intval($_GET['forum_id']) . "'");
                addNotice('info', self::$locale['forum_notice_5']);
                redirect(FUSION_SELF . $aidlink);
            }
        }
    }