0, 'forum_cat' => 0, 'forum_branch' => 0, 'forum_name' => '', 'forum_type' => '2', 'forum_answer_threshold' => 0, 'forum_lock' => 0, 'forum_order' => 0, 'forum_description' => '', 'forum_rules' => '', 'forum_mods' => '', 'forum_access' => USER_LEVEL_PUBLIC, 'forum_post' => USER_LEVEL_MEMBER, 'forum_reply' => USER_LEVEL_MEMBER, 'forum_allow_poll' => 0, 'forum_poll' => USER_LEVEL_MEMBER, 'forum_vote' => USER_LEVEL_MEMBER, 'forum_image' => '', 'forum_allow_post_ratings' => 0, 'forum_post_ratings' => USER_LEVEL_MEMBER, 'forum_users' => 0, 'forum_allow_attach' => USER_LEVEL_MEMBER, 'forum_attach' => USER_LEVEL_MEMBER, 'forum_attach_download' => USER_LEVEL_MEMBER, 'forum_quick_edit' => 1, 'forum_laspostid' => 0, 'forum_postcount' => 0, 'forum_threadcount' => 0, 'forum_lastuser' => 0, 'forum_merge' => 0, 'forum_language' => LANGUAGE, 'forum_meta' => '', 'forum_alias' => '' ]; public function __construct() { global $aidlink; $locale = fusion_get_locale(); // sanitize all $_GET $_GET['forum_id'] = (isset($_GET['forum_id']) && isnum($_GET['forum_id'])) ? $_GET['forum_id'] : 0; $_GET['forum_cat'] = (isset($_GET['forum_cat']) && isnum($_GET['forum_cat'])) ? $_GET['forum_cat'] : 0; $_GET['forum_branch'] = (isset($_GET['forum_branch']) && isnum($_GET['forum_branch'])) ? $_GET['forum_branch'] : 0; $_GET['parent_id'] = (isset($_GET['parent_id']) && isnum($_GET['parent_id'])) ? $_GET['parent_id'] : 0; $_GET['action'] = (isset($_GET['action'])) && $_GET['action'] ? $_GET['action'] : ''; $_GET['status'] = (isset($_GET['status'])) && $_GET['status'] ? $_GET['status'] : ''; $this->ext = isset($_GET['parent_id']) && isnum($_GET['parent_id']) ? "&parent_id=".$_GET['parent_id'] : ''; $this->ext .= isset($_GET['branch']) && isnum($_GET['branch']) ? "&branch=".$_GET['branch'] : ''; // indexing hierarchy data $this->forum_index = self::get_forum_index(); if (!empty($this->forum_index)) { $this->level = self::make_forum_breadcrumbs(); } /** * List of actions available in this admin */ self::forum_jump(); // Save_permission if (isset($_POST['save_permission'])) { $this->data['forum_id'] = form_sanitizer($_POST['forum_id'], '', 'forum_id'); $this->data = self::get_forum($this->data['forum_id']); if (!empty($this->data)) { $this->data['forum_access'] = form_sanitizer($_POST['forum_access'], USER_LEVEL_PUBLIC, 'forum_access'); $this->data['forum_post'] = form_sanitizer($_POST['forum_post'], USER_LEVEL_MEMBER, 'forum_post'); $this->data['forum_reply'] = form_sanitizer($_POST['forum_reply'], USER_LEVEL_MEMBER, 'forum_reply'); $this->data['forum_post_ratings'] = form_sanitizer($_POST['forum_post_ratings'], USER_LEVEL_MEMBER, 'forum_post_ratings'); $this->data['forum_poll'] = form_sanitizer($_POST['forum_poll'], USER_LEVEL_MEMBER, 'forum_poll'); $this->data['forum_vote'] = form_sanitizer($_POST['forum_vote'], USER_LEVEL_MEMBER, 'forum_vote'); $this->data['forum_answer_threshold'] = form_sanitizer($_POST['forum_answer_threshold'], 0, 'forum_answer_threshold'); $this->data['forum_attach'] = form_sanitizer($_POST['forum_attach'], USER_LEVEL_MEMBER, 'forum_attach'); $this->data['forum_attach_download'] = form_sanitizer($_POST['forum_attach_download'], USER_LEVEL_PUBLIC, 'forum_attach_download'); $this->data['forum_mods'] = isset($_POST['forum_mods']) ? form_sanitizer($_POST['forum_mods'], '', 'forum_mods') : ""; dbquery_insert(DB_FORUMS, $this->data, 'update'); addnotice('success', $locale['forum_notice_10']); if (\defender::safe()) { redirect(FUSION_SELF.$aidlink.$this->ext); } } } self::set_forumDB(); /** * Ordering actions */ switch ($_GET['action']) { case 'mu': self::move_up(); break; case 'md': self::move_down(); break; case 'delete': self::validate_forum_removal(); break; case 'prune': require_once "forums_prune.php"; break; case 'edit': $this->data = self::get_forum($_GET['forum_id']); break; case 'p_edit': $this->data = self::get_forum($_GET['forum_id']); break; } } /** * Get forum index for hierarchy traversal * * @return array */ private function get_forum_index() { return dbquery_tree(DB_FORUMS, 'forum_id', 'forum_cat'); } /** * Breadcrumb and Directory Output Handler * * @return array */ private function make_forum_breadcrumbs() { global $aidlink, $locale; /* Make an infinity traverse */ function breadcrumb_arrays($index, $id) { global $aidlink; $crumb = [ 'link' => [], 'title' => [] ]; if (isset($index[get_parent($index, $id)])) { $_name = dbarray(dbquery("SELECT forum_id, forum_name FROM ".DB_FORUMS." WHERE forum_id='".intval($id)."'")); $crumb = [ 'link' => [FUSION_SELF.$aidlink."&parent_id=".$_name['forum_id']], 'title' => [$_name['forum_name']] ]; if (isset($index[get_parent($index, $id)])) { if (get_parent($index, $id) == 0) { return $crumb; } $crumb_1 = breadcrumb_arrays($index, get_parent($index, $id)); $crumb = array_merge_recursive($crumb, $crumb_1); // convert so can comply to Fusion Tab API. } } return $crumb; } // then we make a infinity recursive function to loop/break it out. $crumb = breadcrumb_arrays($this->forum_index, $_GET['parent_id']); BreadCrumbs::getInstance()->addBreadCrumb(['link' => FUSION_SELF.$aidlink, 'title' => $locale['forum_root']]); for ($i = count($crumb['title']) - 1; $i >= 0; $i--) { BreadCrumbs::getInstance()->addBreadCrumb(['link' => $crumb['link'][$i], 'title' => $crumb['title'][$i]]); } return $crumb; } /** * Quick navigation jump. */ private function forum_jump() { global $aidlink; if (isset($_POST['jp_forum'])) { $data['forum_id'] = form_sanitizer($_POST['forum_id'], '', 'forum_id'); redirect(FUSION_SELF.$aidlink."&action=p_edit&forum_id=".$data['forum_id']."&parent_id=".$_GET['parent_id']); } } /** * Get a forum full data * * @param $forum_id * * @return array|bool */ private function get_forum($forum_id) { if ($this->verify_forum($forum_id)) { return dbarray(dbquery("SELECT * FROM ".DB_FORUMS." WHERE forum_id='".intval($forum_id)."' AND ".groupaccess('forum_access')." ")); } return []; } /** * MYSQL update and save forum */ private function set_forumDB() { global $aidlink, $locale; if (isset($_POST['save_forum'])) { $this->data = [ 'forum_id' => form_sanitizer($_POST['forum_id'], 0, 'forum_id'), 'forum_name' => form_sanitizer($_POST['forum_name'], '', 'forum_name'), 'forum_description' => form_sanitizer($_POST['forum_description'], '', 'forum_description'), 'forum_cat' => form_sanitizer($_POST['forum_cat'], 0, 'forum_cat'), 'forum_type' => form_sanitizer($_POST['forum_type'], '', 'forum_type'), 'forum_language' => form_sanitizer($_POST['forum_language'], '', 'forum_language'), 'forum_alias' => form_sanitizer($_POST['forum_alias'], '', 'forum_alias'), 'forum_meta' => form_sanitizer($_POST['forum_meta'], '', 'forum_meta'), 'forum_rules' => form_sanitizer($_POST['forum_rules'], '', 'forum_rules'), 'forum_image_enable' => isset($_POST['forum_image_enable']) ? 1 : 0, 'forum_merge' => isset($_POST['forum_merge']) ? 1 : 0, 'forum_allow_attach' => isset($_POST['forum_allow_attach']) ? 1 : 0, 'forum_quick_edit' => isset($_POST['forum_quick_edit']) ? 1 : 0, 'forum_allow_poll' => isset($_POST['forum_allow_poll']) ? 1 : 0, 'forum_poll' => USER_LEVEL_MEMBER, 'forum_users' => isset($_POST['forum_users']) ? 1 : 0, 'forum_lock' => isset($_POST['forum_lock']) ? 1 : 0, 'forum_permissions' => isset($_POST['forum_permissions']) ? form_sanitizer($_POST['forum_permissions'], 0, 'forum_permissions') : 0, 'forum_order' => isset($_POST['forum_order']) ? form_sanitizer($_POST['forum_order']) : '', 'forum_branch' => get_hkey(DB_FORUMS, 'forum_id', 'forum_cat', $this->data['forum_cat']), 'forum_image' => '', 'forum_mods' => "", ]; $this->data['forum_alias'] = $this->data['forum_alias'] ? str_replace(' ', '-', $this->data['forum_alias']) : ''; // Checks for unique forum alias if ($this->data['forum_alias']) { if ($this->data['forum_id']) { $alias_check = dbcount("('alias_id')", DB_PERMALINK_ALIAS, "alias_url='".$this->data['forum_alias']."' AND alias_item_id !='".$this->data['forum_id']."'"); } else { $alias_check = dbcount("('alias_id')", DB_PERMALINK_ALIAS, "alias_url='".$this->data['forum_alias']."'"); } if ($alias_check) { \defender::stop(); addNotice('warning', $locale['forum_error_6']); } } // check forum name unique $this->data['forum_name'] = self::check_validForumName($this->data['forum_name'], $this->data['forum_id']); // Uploads or copy forum image or use back the forum image existing if (!empty($_FILES) && is_uploaded_file($_FILES['forum_image']['tmp_name'])) { $upload = form_sanitizer($_FILES['forum_image'], '', 'forum_image'); if ($upload['error'] == 0) { if (!empty($upload['thumb1_name'])) { $this->data['forum_image'] = $upload['thumb1_name']; } else { $this->data['forum_image'] = $upload['image_name']; } } } else if (isset($_POST['forum_image_url']) && $_POST['forum_image_url'] != "") { require_once INCLUDES."photo_functions_include.php"; // if forum_image_header is not empty $type_opts = ['0' => BASEDIR, '1' => '']; // the url $this->data['forum_image'] = $type_opts[intval($_POST['forum_image_header'])].form_sanitizer($_POST['forum_image_url'], '', 'forum_image_url'); $upload = copy_file($this->data['forum_image'], FORUM."images/"); if ($upload['error'] == TRUE) { \defender::stop(); addNotice('danger', $locale['forum_error_9']); } else { $this->data['forum_image'] = $upload['name']; } } else { $this->data['forum_image'] = isset($_POST['forum_image']) ? form_sanitizer($_POST['forum_image'], '', 'forum_image') : ""; } if (!$this->data['forum_id']) { $this->data += [ 'forum_access' => USER_LEVEL_PUBLIC, 'forum_post' => USER_LEVEL_MEMBER, 'forum_reply' => USER_LEVEL_MEMBER, 'forum_post_ratings' => USER_LEVEL_MEMBER, 'forum_poll' => USER_LEVEL_MEMBER, 'forum_vote' => USER_LEVEL_MEMBER, 'forum_mods' => "", ]; } // Set last order if (!$this->data['forum_order']) { $this->data['forum_order'] = dbresult(dbquery("SELECT MAX(forum_order) FROM ".DB_FORUMS." ".(multilang_table("FO") ? "WHERE forum_language='".LANGUAGE."' AND" : "WHERE")." forum_cat='".$this->data['forum_cat']."'"), 0) + 1; } if (\defender::safe()) { if ($this->verify_forum($this->data['forum_id'])) { $result = dbquery_order(DB_FORUMS, $this->data['forum_order'], 'forum_order', $this->data['forum_id'], 'forum_id', $this->data['forum_cat'], 'forum_cat', 1, 'forum_language', 'update'); if ($result) { dbquery_insert(DB_FORUMS, $this->data, 'update'); } addNotice('success', $locale['forum_notice_9']); redirect(FUSION_SELF.$aidlink.$this->ext); } else { $new_forum_id = 0; $result = dbquery_order(DB_FORUMS, $this->data['forum_order'], 'forum_order', FALSE, FALSE, $this->data['forum_cat'], 'forum_cat', 1, 'forum_language', 'save'); if ($result) { dbquery_insert(DB_FORUMS, $this->data, 'save'); $new_forum_id = dblastid(); } if ($this->data['forum_cat'] == 0) { redirect(FUSION_SELF.$aidlink."&action=p_edit&forum_id=".$new_forum_id."&parent_id=0"); } else { switch ($this->data['forum_type']) { case '1': addNotice('success', $locale['forum_notice_1']); break; case '2': addNotice('success', $locale['forum_notice_2']); break; case '3': addNotice('success', $locale['forum_notice_3']); break; case '4': addNotice('success', $locale['forum_notice_4']); break; } redirect(FUSION_SELF.$aidlink.$this->ext); } } } } } /** * Return a valid forum name without duplicate * * @param $forum_name * @param int $forum_id * * @return mixed */ private function check_validForumName($forum_name, $forum_id = 0) { $locale = fusion_get_locale(); if ($forum_name) { if ($forum_id) { $name_check = dbcount("('forum_name')", DB_FORUMS, "forum_name='".$forum_name."' AND forum_id !='".$forum_id."'"); } else { $name_check = dbcount("('forum_name')", DB_FORUMS, "forum_name='".$forum_name."'"); } if ($name_check) { \defender::stop(); addNotice('danger', $locale['forum_error_7']); } else { return $forum_name; } } return FALSE; } /** * Move forum order up a number */ private function move_up() { global $aidlink, $locale; if (isset($_GET['forum_id']) && isnum($_GET['forum_id']) && isset($_GET['parent_id']) && isnum($_GET['parent_id']) && isset($_GET['order']) && isnum($_GET['order']) ) { $data = dbarray(dbquery("SELECT forum_id FROM ".DB_FORUMS." ".(multilang_table("FO") ? "WHERE ".in_group('forum_language', LANGUAGE)." AND" : "WHERE")." forum_cat='".intval($_GET['parent_id'])."' AND forum_order='".intval($_GET['order'])."'")); dbquery("UPDATE ".DB_FORUMS." SET forum_order=forum_order+1 ".(multilang_table("FO") ? "WHERE ".in_group('forum_language', LANGUAGE)." AND" : "WHERE")." forum_id='".intval($data['forum_id'])."'"); dbquery("UPDATE ".DB_FORUMS." SET forum_order=forum_order-1 ".(multilang_table("FO") ? "WHERE ".in_group('forum_language', LANGUAGE)." AND" : "WHERE")." forum_id='".intval($_GET['forum_id'])."'"); addNotice('success', $locale['forum_notice_6']." ".sprintf($locale['forum_notice_13'], $_GET['forum_id'], $_GET['order'])); redirect(FUSION_SELF.$aidlink.$this->ext); } } /** * Move forum order down a number */ private function move_down() { global $aidlink, $locale; if (isset($_GET['forum_id']) && isnum($_GET['forum_id']) && isset($_GET['order']) && isnum($_GET['order'])) { // fetches the id of the last forum. $data = dbarray(dbquery("SELECT forum_id FROM ".DB_FORUMS." ".(multilang_table("FO") ? "WHERE ".in_group('forum_language', LANGUAGE)." AND" : "WHERE")." forum_cat='".$_GET['parent_id']."' AND forum_order='".$_GET['order']."'")); dbquery("UPDATE ".DB_FORUMS." SET forum_order=forum_order-1 ".(multilang_table("FO") ? "WHERE ".in_group('forum_language', LANGUAGE)." AND" : "WHERE")." forum_id='".$data['forum_id']."'"); dbquery("UPDATE ".DB_FORUMS." SET forum_order=forum_order+1 ".(multilang_table("FO") ? "WHERE ".in_group('forum_language', LANGUAGE)." AND" : "WHERE")." forum_id='".$_GET['forum_id']."'"); addNotice('success', $locale['forum_notice_7']." ".sprintf($locale['forum_notice_13'], $_GET['forum_id'], $_GET['order'])); redirect(FUSION_SELF.$aidlink.$this->ext); } } /** * Delete Forum. * 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; $locale = fusion_get_locale(); 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 = [ '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']."'"); } // wipe current forum and all threads else if ($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', $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'])."' ".(multilang_table("FO") ? "WHERE ".in_group('forum_language', LANGUAGE)." AND" : "WHERE")." forum_cat='".$action_data['forum_id']."'"); } else if (!$action_data['delete_forums']) { \defender::stop(); addNotice('danger', $locale['forum_notice_na']); } } else { \defender::stop(); addNotice('error', $locale['forum_notice_na']); } self::prune_forums($action_data['forum_id']); addNotice('info', $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', $locale['forum_notice_5']); redirect(FUSION_SELF.$aidlink); } } } /** * Delete all forum attachments * * @param $forum_id * @param bool $time * * @return string */ public static function prune_attachment($forum_id, $time = FALSE) { // delete attachments. $result = dbquery(" SELECT post_id, post_datestamp FROM ".DB_FORUM_POSTS." WHERE forum_id='".$forum_id."' ".($time ? "AND post_datestamp < '".$time."'" : '')." "); $delattach = 0; if (dbrows($result) > 0) { while ($data = dbarray($result)) { // delete all attachments $result2 = dbquery("SELECT attach_name FROM ".DB_FORUM_ATTACHMENTS." WHERE post_id='".$data['post_id']."'"); if (dbrows($result2) != 0) { $delattach++; $attach = dbarray($result2); @unlink(FORUM."attachments/".$attach['attach_name']); dbquery("DELETE FROM ".DB_FORUM_ATTACHMENTS." WHERE post_id='".$data['post_id']."'"); } } } } /** * Delete all forum posts * * @param $forum_id * @param bool $time * * @return string */ public static function prune_posts($forum_id, $time = FALSE) { dbquery("DELETE FROM ".DB_FORUM_POSTS." WHERE forum_id='".$forum_id."' ".($time ? "AND post_datestamp < '".$time."'" : '').""); } /** * Delete all forum threads * * @param $forum_id * @param bool $time */ public static function prune_threads($forum_id, $time = FALSE) { // delete follows on threads $result = dbquery("SELECT thread_id, thread_lastpost FROM ".DB_FORUM_THREADS." WHERE forum_id='".$forum_id."' ".($time ? "AND thread_lastpost < '".$time."'" : '')." "); if (dbrows($result)) { while ($data = dbarray($result)) { dbquery("DELETE FROM ".DB_FORUM_THREAD_NOTIFY." WHERE thread_id='".$data['thread_id']."'"); } } // delete threads dbquery("DELETE FROM ".DB_FORUM_THREADS." WHERE forum_id='$forum_id' ".($time ? "AND thread_lastpost < '".$time."'" : '')." "); } /** * Recalculate a forum post count * * @param $forum_id * * @return string */ public static function recalculate_post($forum_id) { // update last post $result = dbquery("SELECT thread_lastpost, thread_lastuser FROM ".DB_FORUM_THREADS." WHERE forum_id='".$forum_id."' ORDER BY thread_lastpost DESC LIMIT 0,1"); // get last thread_lastpost. if (dbrows($result)) { $data = dbarray($result); dbquery("UPDATE ".DB_FORUMS." SET forum_lastpost='".$data['thread_lastpost']."', forum_lastuser='".$data['thread_lastuser']."' WHERE forum_id='".$forum_id."'"); } else { dbquery("UPDATE ".DB_FORUMS." SET forum_lastpost='0', forum_lastuser='0' WHERE forum_id='".$forum_id."'"); } // update postcount on each threads - this is the remaining. $result = dbquery("SELECT COUNT(post_id) AS postcount, thread_id FROM ".DB_FORUM_POSTS." WHERE forum_id='".$forum_id."' GROUP BY thread_id"); if (dbrows($result)) { while ($data = dbarray($result)) { dbquery("UPDATE ".DB_FORUM_THREADS." SET thread_postcount='".$data['postcount']."' WHERE thread_id='".$data['thread_id']."'"); } } // calculate and update total combined postcount on all threads to forum $result = dbquery("SELECT SUM(thread_postcount) AS postcount, forum_id FROM ".DB_FORUM_THREADS." WHERE forum_id='".$forum_id."' GROUP BY forum_id"); if (dbrows($result)) { while ($data = dbarray($result)) { dbquery("UPDATE ".DB_FORUMS." SET forum_postcount='".$data['postcount']."' WHERE forum_id='".$data['forum_id']."'"); } } // calculate and update total threads to forum $result = dbquery("SELECT COUNT(thread_id) AS threadcount, forum_id FROM ".DB_FORUM_THREADS." WHERE forum_id='".$forum_id."' GROUP BY forum_id"); if (dbrows($result)) { while ($data = dbarray($result)) { dbquery("UPDATE ".DB_FORUMS." SET forum_threadcount='".$data['threadcount']."' WHERE forum_id='".$data['forum_id']."'"); } } } /** * Remove the entire forum branch, image and order updated * * @param bool $index * @param bool $time */ protected function prune_forums($index = FALSE, $time = FALSE) { // delete forums - wipeout branch, image, order updated. $index = $index ? $index : 0; // need to refetch a new index after moving, else the id will be targetted $branch_data = $this->get_forum_index(); //print_p($branch_data[$index]); //print_p("Index is $index"); $index_data = dbarray(dbquery("SELECT forum_id, forum_image, forum_order FROM ".DB_FORUMS." ".(multilang_table("FO") ? "WHERE ".in_group('forum_language', LANGUAGE)." AND" : "WHERE")." forum_id='".$index."'")); // check if there is a sub for this node. if (isset($branch_data[$index])) { $data = []; foreach ($branch_data[$index] as $forum_id) { $data = dbarray(dbquery("SELECT forum_id, forum_image, forum_order FROM ".DB_FORUMS." ".(multilang_table("FO") ? "WHERE ".in_group('forum_language', LANGUAGE)." AND" : "WHERE")." forum_id='".$forum_id."'")); if ($data['forum_image'] && file_exists(IMAGES."forum/".$data['forum_image'])) { unlink(IMAGES."forum/".$data['forum_image']); } dbquery("UPDATE ".DB_FORUMS." SET forum_order=forum_order-1 ".(multilang_table("FO") ? "WHERE ".in_group('forum_language', LANGUAGE)." AND" : "WHERE")." forum_id='".$forum_id."' AND forum_order>'".$data['forum_order']."'"); dbquery("DELETE FROM ".DB_FORUMS." ".(multilang_table("FO") ? "WHERE ".in_group('forum_language', LANGUAGE)." AND" : "WHERE")." forum_id='$forum_id' ".($time ? "AND forum_lastpost < '".$time."'" : '')." "); if (isset($branch_data[$data['forum_id']])) { self::prune_forums($branch_data, $time); } // end foreach } // finally remove itself. if ($index_data['forum_image'] && file_exists(IMAGES."forum/".$index_data['forum_image'])) { unlink(IMAGES."forum/".$data['forum_image']); //print_p("unlinked ".$index_data['forum_image'].""); } dbquery("UPDATE ".DB_FORUMS." SET forum_order=forum_order-1 ".(multilang_table("FO") ? "WHERE ".in_group('forum_language', LANGUAGE)." AND" : "WHERE")." forum_id='".$index."' AND forum_order>'".$index_data['forum_order']."'"); //print_p("deleted ".$index.""); dbquery("DELETE FROM ".DB_FORUMS." ".(multilang_table("FO") ? "WHERE ".in_group('forum_language', LANGUAGE)." AND" : "WHERE")." forum_id='".$index."' ".($time ? "AND forum_lastpost < '".$time."'" : '')." "); } else { if ($index_data['forum_image'] && file_exists(IMAGES."forum/".$index_data['forum_image'])) { unlink(IMAGES."forum/".$index_data['forum_image']); //print_p("unlinked ".$index_data['forum_image'].""); } dbquery("UPDATE ".DB_FORUMS." SET forum_order=forum_order-1 ".(multilang_table("FO") ? "WHERE ".in_group('forum_language', LANGUAGE)." AND" : "WHERE")." forum_id='".$index."' AND forum_order>'".$index_data['forum_order']."'"); //print_p("deleted ".$index.""); dbquery("DELETE FROM ".DB_FORUMS." ".(multilang_table("FO") ? "WHERE ".in_group('forum_language', LANGUAGE)." AND" : "WHERE")." forum_id='".$index."' ".($time ? "AND forum_lastpost < '".$time."'" : '')." "); } } /** * HTML template for forum move */ private function display_forum_move_form() { ob_start(); $locale = fusion_get_locale(); echo openmodal('move', $locale['forum_060'], ['static' => 1, 'class' => 'modal-md']); echo openform('moveform', 'post', FUSION_REQUEST); echo "