echo '</table></form>'; } break; case 'mergeforum': loadModuleAdminMenu(2, ""); if (!empty($_POST['dest_forum'])) { $forum_dest =& $forum_handler->get($_POST['dest_forum']); if (is_object($forum_dest)) { $cid = $forum_dest->getVar("cat_id"); $sql = "\tUPDATE " . $xoopsDB->prefix('bb_posts') . "\tSET forum_id=" . intval($_POST['dest_forum']) . "\tWHERE forum_id={$forum_id}"; $result_post = $xoopsDB->queryF($sql); $sql = "\tUPDATE " . $xoopsDB->prefix('bb_topics') . "\tSET forum_id=" . intval($_POST['dest_forum']) . "\tWHERE forum_id={$forum_id}"; $result_topic = $xoopsDB->queryF($sql); $forum_obj =& $forum_handler->get($forum_id); $forum_handler->updateAll("parent_forum", intval($_POST['dest_forum']), new Criteria("parent_forum", $forum_id)); if ($cid != $forum_obj->getVar("cat_id") && ($subforums = newbb_getSubForum($forum_id))) { $forums = array_map("intval", array_values($subforums)); $forum_handler->updateAll("cat_id", $cid, new Criteria("forum_id", "(" . implode(", ", $forums) . ")", "IN")); } $forum_handler->delete($forum_obj); mod_clearCacheFile("forum", "newbb"); $forum_handler->synchronization($forum_dest); unset($forum_dest); mod_clearCacheFile("forum", "newbb"); redirect_header('./admin_forum_manager.php?op=manage', 2, _AM_NEWBB_MSG_FORUM_MERGED); } else { redirect_header('./admin_forum_manager.php?op=manage', 2, _AM_NEWBB_MSG_ERR_FORUM_MOVED); } exit; } else { $box = '<select name="dest_forum">';
function getSubforumStats($subforums = null) { $stats = array(); require_once XOOPS_ROOT_PATH . "/modules/newbb/include/functions.forum.php"; $_subforums = newbb_getSubForum(); if (empty($subforums)) { $sub_forums = $_subforums; } else { foreach ($subforums as $id) { $sub_forums[$id] =& $_subforums[$id]; } } $forums_id = array(); foreach (array_keys($sub_forums) as $id) { if (empty($sub_forums[$id])) { continue; } $forums_id = array_merge($forums_id, $sub_forums[$id]); } if (!$forums_id) { return $stats; } $sql = " SELECT forum_posts AS posts, forum_topics AS topics, forum_id AS id" . " FROM " . $this->table . " WHERE forum_id IN (" . implode(", ", $forums_id) . ")"; if (!($result = $this->db->query($sql))) { return $stats; } $forum_stats = array(); while ($row = $this->db->fetchArray($result)) { $forum_stats[$row["id"]] = array("topics" => $row["topics"], "posts" => $row["posts"]); } foreach (array_keys($sub_forums) as $id) { if (empty($sub_forums[$id])) { continue; } $stats[$id] = array("topics" => 0, "posts" => 0); foreach ($sub_forums[$id] as $fid) { $stats[$id]["topics"] += $forum_stats[$fid]["topics"]; $stats[$id]["posts"] += $forum_stats[$fid]["posts"]; } } return $stats; }