d3forum_sync_post_votes($mydirname, $post_id, false); } d3forum_sync_topic_votes($mydirname, $topic_id, false); d3forum_sync_topic($mydirname, $topic_id, false); } $_SESSION[$mydirname . '_synctopics_start'] = $synctopics_start + $synctopics_num; $_SESSION[$mydirname . '_synctopics_num'] = $synctopics_num; redirect_header(XOOPS_URL . "/modules/{$mydirname}/admin/index.php?page=advanced_admin", 3, sprintf(_MD_A_D3FORUM_FMT_SYNCTOPICSDONE, $topic_counter)); exit; } if (!empty($_POST['do_syncforums'])) { set_time_limit(0); // sync all forums $result = $db->query("SELECT forum_id FROM " . $db->prefix($mydirname . "_forums")); while (list($forum_id) = $db->fetchRow($result)) { d3forum_sync_forum($mydirname, $forum_id, false); } redirect_header(XOOPS_URL . "/modules/{$mydirname}/admin/index.php?page=advanced_admin", 3, _MD_A_D3FORUM_MSG_SYNCTABLESDONE); exit; } if (!empty($_POST['do_synccategories'])) { set_time_limit(0); // rebuild category's tree d3forum_sync_cattree($mydirname); // sync all categories $result = $db->query("SELECT cat_id FROM " . $db->prefix($mydirname . "_categories") . " ORDER BY cat_order_in_tree DESC"); while (list($cat_id) = $db->fetchRow($result)) { d3forum_sync_category($mydirname, $cat_id); } redirect_header(XOOPS_URL . "/modules/{$mydirname}/admin/index.php?page=advanced_admin", 3, _MD_A_D3FORUM_MSG_SYNCTABLESDONE); exit;
function d3forum_update_topic_from_post($mydirname, $topic_id, $forum_id, $forum_permissions, $isadmin) { global $myts; $db =& Database::getInstance(); $sql4set = ''; $topic_id = intval($topic_id); $new_forum_id = intval(@$_POST['forum_id']); // prefetch for forum list($new_forum_external_link_format) = $db->fetchRow($db->query("SELECT forum_external_link_format FROM " . $db->prefix($mydirname . "_forums") . " WHERE forum_id={$new_forum_id}")); // check the user is destined forum's admin or mod if (!$isadmin && !$forum_permissions[$new_forum_id]['is_moderator']) { die(_MD_D3FORUM_ERR_CUTPASTENOTADMINOFDESTINATION); } $topic_title4sql = addslashes($myts->stripSlashesGPC(@$_POST['topic_title'])); $topic_sticky = intval(@$_POST['topic_sticky']); $topic_locked = intval(@$_POST['topic_locked']); $topic_invisible = intval(@$_POST['topic_invisible']); $topic_solved = intval(@$_POST['topic_solved']); $external_link_id = $myts->stripSlashesGPC(@$_POST['topic_external_link_id']); // do update if (!$db->query("UPDATE " . $db->prefix($mydirname . "_topics") . " SET {$sql4set} topic_title='{$topic_title4sql}', forum_id='{$new_forum_id}', topic_sticky='{$topic_sticky}', topic_locked='{$topic_locked}', topic_invisible='{$topic_invisible}', topic_solved='{$topic_solved}', topic_external_link_id='" . addslashes($external_link_id) . "' WHERE topic_id={$topic_id}")) { die("DB ERROR IN UPDATE topic" . __LINE__); } // clear topic_external_link_id if the new forum has no external_link_fmt if ($new_forum_external_link_format == '') { if (!$db->query("UPDATE " . $db->prefix($mydirname . "_topics") . " SET topic_external_link_id='' WHERE topic_id={$topic_id}")) { die("DB ERROR in UPDATE topic" . __LINE__); } } // call back to the target of comment if (!empty($external_link_format) && !empty($external_link_id)) { $d3com =& d3forum_main_get_comment_object($mydirname, $external_link_format); if (is_object(@$d3com)) { $d3com->onUpdate('update', $external_link_id, $forum_id, $topic_id); } } d3forum_sync_forum($mydirname, $forum_id); d3forum_sync_forum($mydirname, $new_forum_id); }
function d3forum_export_topic_to_d3forum($mydirname, $export_mid, $export_forum_id, $forum_id, $topic_id, $is_move = false) { $db =& Database::getInstance(); $module_handler =& xoops_gethandler('module'); $to_module =& $module_handler->get($export_mid); $export_mydirname = $to_module->getVar('dirname'); // topics table $table_name = 'topics'; $from_table = $db->prefix($mydirname . '_' . $table_name); $to_table = $db->prefix($export_mydirname . '_' . $table_name); $columns = array_diff($GLOBALS['d3forum_tables'][$table_name], array('topic_id', 'forum_id')); $columns4sql = implode(',', $columns); $sql = "INSERT INTO `{$to_table}` ({$columns4sql},`forum_id`) SELECT {$columns4sql},{$export_forum_id} FROM `{$from_table}` WHERE topic_id={$topic_id}"; $ers = $db->query($sql); $export_topic_id = $db->getInsertId(); if ($is_move) { $db->query("DELETE FROM `{$from_table}` WHERE topic_id={$topic_id}"); } // users2topics table $table_name = 'users2topics'; $from_table = $db->prefix($mydirname . '_' . $table_name); $to_table = $db->prefix($export_mydirname . '_' . $table_name); $columns = array_diff($GLOBALS['d3forum_tables'][$table_name], array('topic_id')); $columns4sql = implode(',', $columns); $sql = "INSERT INTO `{$to_table}` ({$columns4sql},`topic_id`) SELECT {$columns4sql},{$export_topic_id} FROM `{$from_table}` WHERE topic_id={$topic_id}"; $ers = $db->query($sql); if ($is_move) { $db->query("DELETE FROM `{$from_table}` WHERE topic_id={$topic_id}"); } // posts table $table_name = 'posts'; $from_table = $db->prefix($mydirname . '_' . $table_name); $to_table = $db->prefix($export_mydirname . '_' . $table_name); $columns = array_diff($GLOBALS['d3forum_tables'][$table_name], array('post_id', 'topic_id')); $columns4sql = implode(',', $columns); $prs = $db->query("SELECT post_id FROM `{$from_table}` WHERE topic_id={$topic_id} ORDER BY post_id"); $post_conversions = array(); while (list($post_id) = $db->fetchRow($prs)) { $sql = "INSERT INTO `{$to_table}` ({$columns4sql},`topic_id`) SELECT {$columns4sql},{$export_topic_id} FROM `{$from_table}` WHERE post_id={$post_id}"; $ers = $db->query($sql); $post_conversions[$post_id] = $db->getInsertId(); if ($is_move) { $db->query("DELETE FROM `{$from_table}` WHERE post_id={$post_id}"); } } // update pid of posts table foreach ($post_conversions as $post_id => $export_post_id) { $sql = "UPDATE `{$to_table}` SET pid={$export_post_id} WHERE pid={$post_id} AND topic_id={$export_topic_id}"; $ers = $db->query($sql); } // post_votes table $table_name = 'post_votes'; $from_table = $db->prefix($mydirname . '_' . $table_name); $to_table = $db->prefix($export_mydirname . '_' . $table_name); $columns = array_diff($GLOBALS['d3forum_tables'][$table_name], array('post_id')); $columns4sql = implode(',', $columns); foreach ($post_conversions as $post_id => $export_post_id) { $sql = "INSERT INTO `{$to_table}` ({$columns4sql},`post_id`) SELECT {$columns4sql},{$export_post_id} FROM `{$from_table}` WHERE post_id={$post_id}"; $ers = $db->query($sql); if ($is_move) { $db->query("DELETE FROM `{$from_table}` WHERE post_id={$post_id}"); } } // sync topic, forum, category d3forum_sync_topic($export_mydirname, $export_topic_id); if ($is_move) { d3forum_sync_forum($mydirname, $forum_id); } }