기존 포럼에 새 포럼을 만들려고합니다. 새 포럼을 아주 쉽게 만들고 관리 콘솔에서 볼 수 있습니다. 문제는 사용자를 위해 프런트 엔드에 표시해야하는 것입니다. 이것은 허가를 통해 이루어집니다.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_option_id, auth_role_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'],
'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);
//////////////////////////////////
// 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;
}
}
내가 내 포럼에 통합과 함께 다시 얻을 것이다 : 여기
합니다 (phpBB를 포함 파일 참고 이전에로드 된하시기 바랍니다) 내 코드입니다 결과. –