⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 acp_permissions.php

📁 这些都是我以前学习是用到的源码
💻 PHP
📖 第 1 页 / 共 3 页
字号:
<?php/** ** @package acp* @version $Id: acp_permissions.php,v 1.41 2006/10/30 19:51:56 acydburn Exp $* @copyright (c) 2005 phpBB Group * @license http://opensource.org/licenses/gpl-license.php GNU Public License **//*** @package acp*/class acp_permissions{	var $u_action;	var $permission_dropdown;		function main($id, $mode)	{		global $db, $user, $auth, $template, $cache;		global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;		include_once($phpbb_root_path . 'includes/functions_user.' . $phpEx);		include_once($phpbb_root_path . 'includes/acp/auth.' . $phpEx);		$auth_admin = new auth_admin();		$user->add_lang('acp/permissions');		add_permission_language();		$this->tpl_name = 'acp_permissions';		// Trace has other vars		if ($mode == 'trace')		{			$user_id = request_var('u', 0);			$forum_id = request_var('f', 0);			$permission = request_var('auth', '');			$this->tpl_name = 'permission_trace';			if ($user_id && isset($auth_admin->option_ids[$permission]) && $auth->acl_get('a_viewauth'))			{				$this->page_title = sprintf($user->lang['TRACE_PERMISSION'], $user->lang['acl_' . $permission]['lang']);				$this->permission_trace($user_id, $forum_id, $permission);				return;			}						trigger_error('NO_MODE', E_USER_ERROR);		}		// Set some vars		$action = request_var('action', array('' => 0));		$action = key($action);		$action = (isset($_POST['psubmit'])) ? 'apply_permissions' : $action;		$all_forums = request_var('all_forums', 0);		$subforum_id = request_var('subforum_id', 0);		$forum_id = request_var('forum_id', array(0));		$username = request_var('username', array(''), true);		$usernames = request_var('usernames', '', true);		$user_id = request_var('user_id', array(0));		$group_id = request_var('group_id', array(0));		$select_all_groups = request_var('select_all_groups', 0);		// If select all groups is set, we pre-build the group id array (this option is used for other screens to link to the permission settings screen)		if ($select_all_groups)		{			// Add default groups to selection			$sql_and = (!$config['coppa_enable']) ? " AND group_name <> 'REGISTERED_COPPA'" : '';			$sql = 'SELECT group_id				FROM ' . GROUPS_TABLE . '				WHERE group_type = ' . GROUP_SPECIAL . "				$sql_and";			$result = $db->sql_query($sql);			while ($row = $db->sql_fetchrow($result))			{				$group_id[] = $row['group_id'];			}			$db->sql_freeresult($result);		}				// Map usernames to ids and vice versa		if ($usernames)		{			$username = explode("\n", $usernames);		}		unset($usernames);		if (sizeof($username) && !sizeof($user_id))		{			user_get_id_name($user_id, $username);			if (!sizeof($user_id))			{				trigger_error($user->lang['SELECTED_USER_NOT_EXIST'] . adm_back_link($this->u_action), E_USER_WARNING);			}		}		unset($username);				// Build forum ids (of all forums are checked or subforum listing used)		if ($all_forums)		{			$sql = 'SELECT forum_id				FROM ' . FORUMS_TABLE . '				ORDER BY left_id';			$result = $db->sql_query($sql);			$forum_id = array();			while ($row = $db->sql_fetchrow($result))			{				$forum_id[] = $row['forum_id'];			}			$db->sql_freeresult($result);		}		else if ($subforum_id)		{			$forum_id = array();			foreach (get_forum_branch($subforum_id, 'children') as $row)			{				$forum_id[] = $row['forum_id'];			}		}		// Define some common variables for every mode		$error = array();		$permission_scope = (strpos($mode, '_global') !== false) ? 'global' : 'local';		// Showing introductionary page?		if ($mode == 'intro')		{			$this->page_title = 'ACP_PERMISSIONS';			$template->assign_vars(array(				'S_INTRO'		=> true)			);			return;		}		switch ($mode)		{			case 'setting_user_global':			case 'setting_group_global':				$this->permission_dropdown = array('u_', 'm_', 'a_');				$permission_victim = ($mode == 'setting_user_global') ? array('user') : array('group');				$this->page_title = ($mode == 'setting_user_global') ? 'ACP_USERS_PERMISSIONS' : 'ACP_GROUPS_PERMISSIONS';			break;			case 'setting_user_local':			case 'setting_group_local':				$this->permission_dropdown = array('f_', 'm_');				$permission_victim = ($mode == 'setting_user_local') ? array('user', 'forums') : array('group', 'forums');				$this->page_title = ($mode == 'setting_user_local') ? 'ACP_USERS_FORUM_PERMISSIONS' : 'ACP_GROUPS_FORUM_PERMISSIONS';			break;			case 'setting_admin_global':			case 'setting_mod_global':				$this->permission_dropdown = (strpos($mode, '_admin_') !== false) ? array('a_') : array('m_');				$permission_victim = array('usergroup');				$this->page_title = ($mode == 'setting_admin_global') ? 'ACP_ADMINISTRATORS' : 'ACP_GLOBAL_MODERATORS';			break;			case 'setting_mod_local':			case 'setting_forum_local':				$this->permission_dropdown = ($mode == 'setting_mod_local') ? array('m_') : array('f_');				$permission_victim = array('forums', 'usergroup');				$this->page_title = ($mode == 'setting_mod_local') ? 'ACP_FORUM_MODERATORS' : 'ACP_FORUM_PERMISSIONS';			break;			case 'view_admin_global':			case 'view_user_global':			case 'view_mod_global':				$this->permission_dropdown = ($mode == 'view_admin_global') ? array('a_') : (($mode == 'view_user_global') ? array('u_') : array('m_'));				$permission_victim = array('usergroup_view');				$this->page_title = ($mode == 'view_admin_global') ? 'ACP_VIEW_ADMIN_PERMISSIONS' : (($mode == 'view_user_global') ? 'ACP_VIEW_USER_PERMISSIONS' : 'ACP_VIEW_GLOBAL_MOD_PERMISSIONS');			break;			case 'view_mod_local':			case 'view_forum_local':				$this->permission_dropdown = ($mode == 'view_mod_local') ? array('m_') : array('f_');				$permission_victim = array('forums', 'usergroup_view');				$this->page_title = ($mode == 'view_mod_local') ? 'ACP_VIEW_FORUM_MOD_PERMISSIONS' : 'ACP_VIEW_FORUM_PERMISSIONS';			break;			default:				trigger_error('NO_MODE', E_USER_ERROR);			break;		}		$template->assign_vars(array(			'L_TITLE'		=> $user->lang[$this->page_title],			'L_EXPLAIN'		=> $user->lang[$this->page_title . '_EXPLAIN'])		);		// Get permission type		$permission_type = request_var('type', $this->permission_dropdown[0]);		if (!in_array($permission_type, $this->permission_dropdown))		{			trigger_error($user->lang['WRONG_PERMISSION_TYPE'] . adm_back_link($this->u_action), E_USER_WARNING);		}		// Handle actions		if (strpos($mode, 'setting_') === 0 && $action)		{			switch ($action)			{				case 'delete':					// All users/groups selected?					$all_users = (isset($_POST['all_users'])) ? true : false;					$all_groups = (isset($_POST['all_groups'])) ? true : false;					if ($all_users || $all_groups)					{						$items = $this->retrieve_defined_user_groups($permission_scope, $forum_id, $permission_type);						if ($all_users && sizeof($items['user_ids']))						{							$user_id = $items['user_ids'];						}						else if ($all_groups && sizeof($items['group_ids']))						{							$group_id = $items['group_ids'];						}					}					if (sizeof($user_id) || sizeof($group_id))					{						$this->remove_permissions($mode, $permission_type, $auth_admin, $user_id, $group_id, $forum_id);					}					else					{						trigger_error($user->lang['NO_USER_GROUP_SELECTED'] . adm_back_link($this->u_action), E_USER_WARNING);					}				break;				case 'apply_permissions':					if (!isset($_POST['setting']))					{						trigger_error($user->lang['NO_AUTH_SETTING_FOUND'] . adm_back_link($this->u_action), E_USER_WARNING);					}					$this->set_permissions($mode, $permission_type, $auth_admin, $user_id, $group_id);				break;				case 'apply_all_permissions':					if (!isset($_POST['setting']))					{						trigger_error($user->lang['NO_AUTH_SETTING_FOUND'] . adm_back_link($this->u_action), E_USER_WARNING);					}					$this->set_all_permissions($mode, $permission_type, $auth_admin, $user_id, $group_id);				break;			}		}		// Setting permissions screen		$s_hidden_fields = build_hidden_fields(array(			'user_id'		=> $user_id,			'group_id'		=> $group_id,			'forum_id'		=> $forum_id,			'type'			=> $permission_type)		);		// Go through the screens/options needed and present them in correct order		foreach ($permission_victim as $victim)		{			switch ($victim)			{				case 'forum_dropdown':					if (sizeof($forum_id))					{						$this->check_existence('forum', $forum_id);						continue 2;					}					$template->assign_vars(array(						'S_SELECT_FORUM'		=> true,						'S_FORUM_OPTIONS'		=> make_forum_select(false, false, true, false, false))					);				break;				case 'forums':					if (sizeof($forum_id))					{						$this->check_existence('forum', $forum_id);						continue 2;					}					$forum_list = make_forum_select(false, false, true, false, false, false, true);					// Build forum options					$s_forum_options = '';					foreach ($forum_list as $f_id => $f_row)					{						$s_forum_options .= '<option value="' . $f_id . '"' . $f_row['selected'] . '>' . $f_row['padding'] . $f_row['forum_name'] . '</option>';					}					// Build subforum options					$s_subforum_options = $this->build_subforum_options($forum_list);					$template->assign_vars(array(						'S_SELECT_FORUM'		=> true,						'S_FORUM_OPTIONS'		=> $s_forum_options,						'S_SUBFORUM_OPTIONS'	=> $s_subforum_options,						'S_FORUM_ALL'			=> true,						'S_FORUM_MULTIPLE'		=> true)					);				break;				case 'user':					if (sizeof($user_id))					{						$this->check_existence('user', $user_id);						continue 2;					}					$template->assign_vars(array(						'S_SELECT_USER'			=> true,						'U_FIND_USERNAME'		=> append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&amp;form=select_victim&amp;field=username'),						'UA_FIND_USERNAME'		=> append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&form=select_victim&field=username', false))					);				break;				case 'group':					if (sizeof($group_id))					{						$this->check_existence('group', $group_id);						continue 2;					}					$template->assign_vars(array(						'S_SELECT_GROUP'		=> true,						'S_GROUP_OPTIONS'		=> group_select_options(false))					);				break;				case 'usergroup':				case 'usergroup_view':					if (sizeof($user_id) || sizeof($group_id))					{						if (sizeof($user_id))						{							$this->check_existence('user', $user_id);						}						if (sizeof($group_id))						{							$this->check_existence('group', $group_id);						}						continue 2;					}					$items = $this->retrieve_defined_user_groups($permission_scope, $forum_id, $permission_type);					// Now we check the users... because the "all"-selection is different here (all defined users/groups)					$all_users = (isset($_POST['all_users'])) ? true : false;					$all_groups = (isset($_POST['all_groups'])) ? true : false;					if ($all_users && sizeof($items['user_ids']))					{						$user_id = $items['user_ids'];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -