从PHP和设置权限在phpBB3中创建论坛

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了从PHP和设置权限在phpBB3中创建论坛脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试在现有论坛上创建一个新论坛.我可以非常轻松地创建新论坛,并从管理控制台查看它.问题是我需要它出现在前端以及用户.这是通过权限完成的.

我试图做的是将父论坛(公共)的权限复制到我创建的论坛.然而,论坛仍然没有出现在公众面前.

这是我的代码(请注意先前已经加载了PHPBB包含文件):

// $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;
    }
}

phpbbphpbb3phpbb3.0.10php

脚本宝典总结

以上是脚本宝典为你收集整理的从PHP和设置权限在phpBB3中创建论坛全部内容,希望文章能够帮你解决从PHP和设置权限在phpBB3中创建论坛所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。