脚本宝典收集整理的这篇文章主要介绍了从PHP和设置权限在phpBB3中创建论坛,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图做的是将父论坛(公共)的权限复制到我创建的论坛.然而,论坛仍然没有出现在公众面前.
// $forum_name = name of the new forum // $parent_id = the forum which this is a child of function create_forum($forum_name,$parent_id) { global $PHPbb_root_path,$PHPEx,$user,$auth,$cache,$db,$config,$template,$table_PRefix; $response = array(); $data = array( 'forum_name' => $forum_name,); // Forum info $sql = 'SELECT forum_id From ' . FORUMS_TABLE . ' WHERE ' . $db->sql_build_array('SELECT',$data); $result = $db->sql_query($sql); $forum_id = (int) $db->sql_fetchfield('forum_id'); $db->sql_freeresult($result); if ($forum_id) { $response['error'] = TRUE; $response['error_msg'] = 'FORUM_EXISTS'; $response['forum_id'] = $forum_id; } else { $forum_data = array( 'parent_id' => $parent_id,'left_id' => 0,'right_id' => 0,'forum_parents' => '','forum_name' => $data['forum_name'],'forum_desc' => '','forum_desc_bITfield' => '','forum_desc_options' => 7,'forum_desc_uid' => '','forum_link' => '','forum_password' => '','forum_style' => 0,'forum_image' => '','forum_rules' => '','forum_rules_link' => '','forum_rules_bitfield' => '','forum_rules_options' => 7,'forum_rules_uid' => '','forum_topics_PEr_page' => 0,'forum_type' => 1,'forum_status' => 0,'forum_posts' => 0,'forum_topics' => 0,'forum_topics_real' => 0,'forum_last_post_id' => 0,'forum_last_poster_id' => 0,'forum_last_post_subject' => '','forum_last_post_time' => 0,'forum_last_poster_name' => '','forum_last_poster_colour' => '','forum_flags' => 32,'display_on_index' => FALSE,'enable_indexing' => TRUE,'enable_icons' => FALSE,'enable_prune' => FALSE,'prune_next' => 0,'prune_days' => 7,'prune_viewed' => 7,'prune_freq' => 1,); $sql = 'SELECT MAX(right_id) AS right_id From ' . FORUMS_TABLE; $result = $db->sql_query($sql); $row = $db->sql_fetchrow($result); $db->sql_freeresult($result); $forum_data['left_id'] = $row['right_id'] + 1; $forum_data['right_id'] = $row['right_id'] + 2; // And as last,a insert query $sql = 'INSERT INTO ' . FORUMS_TABLE . ' ' . $db->sql_build_array('INSERT',$forum_data); $db->sql_query($sql); $forum_data['forum_id'] = $db->sql_nextid(); // successful result $response['error'] = FALSE; $response['error_msg'] = ''; $response['forum_id'] = $forum_data['forum_id']; /* PERMISSIONS ----------------------------------------------- */ // copy permissions from parent forum $forum_perm_from = $parent_id; /////////////////////////// // COPY USER PERMISSIONS // /////////////////////////// // Copy permisisons from/to the acl users table (only forum_id gets changed) $sql = 'SELECT user_id,auth_option_id,auth_role_id,auth_setting FROM ' . ACL_USERS_TABLE . ' WHERE forum_id = ' . $forum_perm_from; $result = $db->sql_query($sql); $users_sql_ary = array(); while ($row = $db->sql_fetchrow($result)) { $users_sql_ary[] = array( 'user_id' => (int) $row['user_id'],'forum_id' => $forum_data['forum_id'],'auth_option_id' => (int) $row['auth_option_id'],'auth_role_id' => (int) $row['auth_role_id'],'auth_setting' => (int) $row['auth_setting'] ); } $db->sql_freeresult($result); //////////////////////////// // COPY GROUP PERMISSIONS // //////////////////////////// // Copy permisisons from/to the acl groups table (only forum_id gets changed) $sql = 'SELECT group_id,auth_setting FROM ' . ACL_GROUPS_TABLE . ' WHERE forum_id = ' . $forum_perm_from; $result = $db->sql_query($sql); $groups_sql_ary = array(); while ($row = $db->sql_fetchrow($result)) { $groups_sql_ary[] = array( 'group_id' => (int) $row['group_id'],'auth_setting' => (int) $row['auth_setting'] ); } $db->sql_freeresult($result); ////////////////////////////////// // INSERT NEW FORUM PERMISSIONS // ////////////////////////////////// $db->sql_multi_insert(ACL_USERS_TABLE,$users_sql_ary); $db->sql_multi_insert(ACL_GROUPS_TABLE,$groups_sql_ary); $auth->acl_clear_prefetch(); return $response; } }
function create_forum($forum_name,); /** /*Changed the code from here /*Pulled straight from acl_forums.PHP from line 973 to line 1002 /*Removed lines 980 -> 989 /*Changed $forum_data_sql['parent_id']; line 975 to $parent_id /*Changed $forum_data_sql on lines 1001,1002 to $forum_data **/ $sql = 'SELECT left_id,right_id,forum_type FROM ' . FORUMS_TABLE . ' WHERE forum_id = ' . $parent_id; $result = $db->sql_query($sql); $row = $db->sql_fetchrow($result); $db->sql_freeresult($result); $sql = 'UPDATE ' . FORUMS_TABLE . ' SET left_id = left_id + 2,right_id = right_id + 2 WHERE left_id > ' . $row['right_id']; $db->sql_query($sql); $sql = 'UPDATE ' . FORUMS_TABLE . ' SET right_id = right_id + 2 WHERE ' . $row['left_id'] . ' BETWEEN left_id AND right_id'; $db->sql_query($sql); $forum_data['left_id'] = $row['right_id']; $forum_data['right_id'] = $row['right_id'] + 1; // And as last,$groups_sql_ary); $auth->acl_clear_prefetch(); print_r($response); return $response; } }
以上是脚本宝典为你收集整理的从PHP和设置权限在phpBB3中创建论坛全部内容,希望文章能够帮你解决从PHP和设置权限在phpBB3中创建论坛所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。