admin_extensions.php
来自「这是php编的论坛的原代码」· PHP 代码 · 共 1,077 行 · 第 1/3 页
PHP
1,077 行
}
}
if (!$error)
{
$message = $lang['Attach_config_updated'] . '<br /><br />' . sprintf($lang['Click_return_attach_config'], '<a href="' . append_sid("admin_extensions.$phpEx?mode=forbidden") . '">', '</a>') . '<br /><br />' . sprintf($lang['Click_return_admin_index'], '<a href="' . append_sid("index.$phpEx?pane=right") . '">', '</a>');
message_die(GENERAL_MESSAGE, $message);
}
}
if ($mode == 'forbidden')
{
$template->set_filenames(array(
'body' => 'admin/attach_forbidden_extensions.tpl')
);
$template->assign_vars(array(
'S_ATTACH_ACTION' => append_sid('admin_extensions.' . $phpEx . '?mode=forbidden'),
'L_EXTENSIONS_TITLE' => $lang['Manage_forbidden_extensions'],
'L_EXTENSIONS_EXPLAIN' => $lang['Manage_forbidden_extensions_explain'],
'L_EXTENSION' => $lang['Extension'],
'L_ADD_NEW' => $lang['Add_new'],
'L_DELETE' => $lang['Delete'])
);
$sql = "SELECT *
FROM " . FORBIDDEN_EXTENSIONS_TABLE . "
ORDER BY 'extension'";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not get forbidden extension informations', '', __LINE__, __FILE__, $sql);
}
$extensionrow = $db->sql_fetchrowset($result);
$num_extensionrow = $db->sql_numrows($result);
if ( $num_extensionrow > 0 )
{
for ($i = 0; $i < $num_extensionrow; $i++)
{
if (!strstr($extensionrow[$i]['extension'], 'php'))
{
$template->assign_block_vars('extensionrow', array(
'EXTENSION_ID' => $extensionrow[$i]['ext_id'],
'EXTENSION_NAME' => $extensionrow[$i]['extension'])
);
}
}
}
}
if ($e_mode == 'perm')
{
if( isset($HTTP_POST_VARS['e_group']) || isset($HTTP_GET_VARS['e_group']) )
{
$group = ( isset($HTTP_POST_VARS['e_group']) ) ? $HTTP_POST_VARS['e_group'] : $HTTP_GET_VARS['e_group'];
}
else
{
$group = -1;
}
$add_forum = (isset($HTTP_POST_VARS['add_forum'])) ? TRUE : FALSE;
$delete_forum = (isset($HTTP_POST_VARS['del_forum'])) ? TRUE : FALSE;
if (isset($HTTP_POST_VARS['close_perm']))
{
$e_mode = '';
}
}
// Add Forums
if (($add_forum) && ($e_mode == 'perm') && ($group != -1))
{
$add_forums_list = ( isset($HTTP_POST_VARS['entries']) ) ? $HTTP_POST_VARS['entries'] : array();
$add_all_forums = FALSE;
for ($i = 0; $i < count($add_forums_list); $i++)
{
if ($add_forums_list[$i] == GPERM_ALL)
{
$add_all_forums = TRUE;
}
}
// If we add ALL FORUMS, we are able to overwrite the Permissions
if ($add_all_forums)
{
$sql = "UPDATE " . EXTENSION_GROUPS_TABLE . " SET forum_permissions = '' WHERE group_id = " . $group;
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not update Permissions', '', __LINE__, __FILE__, $sql);
}
}
// Else we have to add Permissions
if (!$add_all_forums)
{
$sql = "SELECT forum_permissions
FROM " . EXTENSION_GROUPS_TABLE . "
WHERE group_id = " . intval($group) . "
LIMIT 1";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not get Group Permissions from ' . EXTENSION_GROUPS_TABLE, '', __LINE__, __FILE__, $sql);
}
$row = $db->sql_fetchrow($result);
if (trim($row['forum_permissions']) == '')
{
$auth_p = array();
}
else
{
$auth_p = auth_unpack($row['forum_permissions']);
}
// Generate array for Auth_Pack, do not add doubled forums
for ($i = 0; $i < count($add_forums_list); $i++)
{
if (!in_array($add_forums_list[$i], $auth_p))
{
$auth_p[] = $add_forums_list[$i];
}
}
$auth_bitstream = auth_pack($auth_p);
$sql = "UPDATE " . EXTENSION_GROUPS_TABLE . " SET forum_permissions = '" . $auth_bitstream . "' WHERE group_id = " . $group;
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not update Permissions', '', __LINE__, __FILE__, $sql);
}
}
}
// Delete Forums
if (($delete_forum) && ($e_mode == 'perm') && ($group != -1))
{
$delete_forums_list = ( isset($HTTP_POST_VARS['entries']) ) ? $HTTP_POST_VARS['entries'] : array();
// Get the current Forums
$sql = "SELECT forum_permissions
FROM " . EXTENSION_GROUPS_TABLE . "
WHERE group_id = " . intval($group) . "
LIMIT 1";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not get Group Permissions from ' . EXTENSION_GROUPS_TABLE, '', __LINE__, __FILE__, $sql);
}
$row = $db->sql_fetchrow($result);
$auth_p2 = auth_unpack(trim($row['forum_permissions']));
$auth_p = array();
// Generate array for Auth_Pack, delete the chosen ones
for ($i = 0; $i < count($auth_p2); $i++)
{
if (!in_array($auth_p2[$i], $delete_forums_list))
{
$auth_p[] = $auth_p2[$i];
}
}
$auth_bitstream = ( count($auth_p) > 0 ) ? auth_pack($auth_p) : '';
$sql = "UPDATE " . EXTENSION_GROUPS_TABLE . " SET forum_permissions = '" . $auth_bitstream . "' WHERE group_id = " . $group;
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not update Permissions', '', __LINE__, __FILE__, $sql);
}
}
// Display the Group Permissions Box for configuring it
if (($e_mode == 'perm') && ($group != -1))
{
$template->set_filenames(array(
'perm_box' => 'admin/extension_groups_permissions.tpl')
);
$sql = "SELECT group_name, forum_permissions
FROM " . EXTENSION_GROUPS_TABLE . "
WHERE group_id = " . intval($group) . "
LIMIT 1";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not get Group Name from ' . EXTENSION_GROUPS_TABLE, '', __LINE__, __FILE__, $sql);
}
$row = $db->sql_fetchrow($result);
$group_name = $row['group_name'];
$allowed_forums = trim($row['forum_permissions']);
$forum_perm = array();
if ($allowed_forums == '')
{
$forum_perm[0]['forum_id'] = 0;
$forum_perm[0]['forum_name'] = $lang['Perm_all_forums'];
}
else
{
$forum_p = array();
$act_id = 0;
$forum_p = auth_unpack($allowed_forums);
$sql = "SELECT forum_id, forum_name FROM " . FORUMS_TABLE . " WHERE forum_id IN (" . implode(', ', $forum_p) . ")";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not get Forum Names', '', __LINE__, __FILE__, $sql);
}
while ($row = $db->sql_fetchrow($result))
{
$forum_perm[$act_id]['forum_id'] = $row['forum_id'];
$forum_perm[$act_id]['forum_name'] = $row['forum_name'];
$act_id++;
}
}
for ($i = 0; $i < count($forum_perm); $i++)
{
$template->assign_block_vars('allow_option_values', array(
'VALUE' => $forum_perm[$i]['forum_id'],
'OPTION' => $forum_perm[$i]['forum_name'])
);
}
$template->assign_vars(array(
'L_GROUP_PERMISSIONS_TITLE' => sprintf($lang['Group_permissions_title'], trim($group_name)),
'L_GROUP_PERMISSIONS_EXPLAIN' => $lang['Group_permissions_explain'],
'L_REMOVE_SELECTED' => $lang['Remove_selected'],
'L_CLOSE_WINDOW' => $lang['Close_window'],
'L_ADD_FORUMS' => $lang['Add_forums'],
'L_ADD_SELECTED' => $lang['Add_selected'],
'L_RESET' => $lang['Reset'],
'A_PERM_ACTION' => append_sid("admin_extensions.$phpEx?mode=groups&e_mode=perm&e_group=$group"))
);
$forum_option_values = array(GPERM_ALL => $lang['Perm_all_forums']);
$sql = "SELECT forum_id, forum_name FROM " . FORUMS_TABLE;
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not get Forums', '', __LINE__, __FILE__, $sql);
}
while ($row = $db->sql_fetchrow($result))
{
$forum_option_values[intval($row['forum_id'])] = $row['forum_name'];
}
@reset($forum_option_values);
while (list($value, $option) = each($forum_option_values))
{
$template->assign_block_vars('forum_option_values', array(
'VALUE' => $value,
'OPTION' => $option)
);
}
$template->assign_var_from_handle('GROUP_PERMISSIONS_BOX', 'perm_box');
$empty_perm_forums = array();
$sql = "SELECT forum_id, forum_name FROM " . FORUMS_TABLE . " WHERE auth_attachments < " . AUTH_ADMIN;
if ( !($f_result = attach_sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not get Forums.', '', __LINE__, __FILE__, $sql);
}
while ($row = $db->sql_fetchrow($f_result))
{
$forum_id = $row['forum_id'];
$sql = "SELECT forum_permissions
FROM " . EXTENSION_GROUPS_TABLE . "
WHERE allow_group = 1
ORDER BY group_name ASC";
if ( !($result = attach_sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not query Extension Groups.', '', __LINE__, __FILE__, $sql);
}
$rows = $db->sql_fetchrowset($result);
$num_rows = $db->sql_numrows($result);
$found_forum = FALSE;
for ($i = 0; $i < $num_rows; $i++)
{
$allowed_forums = auth_unpack(trim($rows[$i]['forum_permissions']));
if ( (in_array($forum_id, $allowed_forums)) || (trim($rows[$i]['forum_permissions']) == '') )
{
$found_forum = TRUE;
break;
}
}
if (!$found_forum)
{
$empty_perm_forums[$forum_id] = $row['forum_name'];
}
}
@reset($empty_perm_forums);
$message = '';
while (list($forum_id, $forum_name) = each($empty_perm_forums))
{
$message .= ( $message == '' ) ? $forum_name : '<br />' . $forum_name;
}
if (count($empty_perm_forums) > 0)
{
$template->set_filenames(array(
'perm_reg_header' => 'error_body.tpl')
);
$template->assign_vars(array(
'ERROR_MESSAGE' => $lang['Note_admin_empty_group_permissions'] . $message)
);
$template->assign_var_from_handle('PERM_ERROR_BOX', 'perm_reg_header');
}
}
if ($error)
{
$template->set_filenames(array(
'reg_header' => 'error_body.tpl')
);
$template->assign_vars(array(
'ERROR_MESSAGE' => $error_msg)
);
$template->assign_var_from_handle('ERROR_BOX', 'reg_header');
}
$template->pparse('body');
include('page_footer_admin.'.$phpEx);
?>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?