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

📄 acp_permissions.php

📁 通过基于Windows的图形化界面
💻 PHP
📖 第 1 页 / 共 3 页
字号:
		}		return true;	}	/**	* Remove permissions	*/	function remove_permissions($mode, $permission_type, &$auth_admin, &$user_id, &$group_id, &$forum_id)	{		global $user, $db, $auth;					// User or group to be set?		$ug_type = (sizeof($user_id)) ? 'user' : 'group';		// Check the permission setting again		if (!$auth->acl_get('a_' . str_replace('_', '', $permission_type) . 'auth') || !$auth->acl_get('a_auth' . $ug_type . 's'))		{			trigger_error($user->lang['NO_AUTH_OPERATION'] . adm_back_link($this->u_action), E_USER_WARNING);		}		$auth_admin->acl_delete($ug_type, (($ug_type == 'user') ? $user_id : $group_id), (sizeof($forum_id) ? $forum_id : false), $permission_type);		// Do we need to recache the moderator lists?		if ($permission_type == 'm_')		{			cache_moderators();		}		$this->log_action($mode, 'del', $permission_type, $ug_type, (($ug_type == 'user') ? $user_id : $group_id), (sizeof($forum_id) ? $forum_id : array(0 => 0)));		trigger_error($user->lang['AUTH_UPDATED'] . adm_back_link($this->u_action));	}	/**	* Log permission changes	*/	function log_action($mode, $action, $permission_type, $ug_type, $ug_id, $forum_id)	{		global $db, $user;		if (!is_array($ug_id))		{			$ug_id = array($ug_id);		}		if (!is_array($forum_id))		{			$forum_id = array($forum_id);		}		// Logging ... first grab user or groupnames ...		$sql = ($ug_type == 'group') ? 'SELECT group_name as name, group_type FROM ' . GROUPS_TABLE . ' WHERE ' : 'SELECT username as name FROM ' . USERS_TABLE . ' WHERE ';		$sql .= $db->sql_in_set(($ug_type == 'group') ? 'group_id' : 'user_id', array_map('intval', $ug_id));		$result = $db->sql_query($sql);		$l_ug_list = '';		while ($row = $db->sql_fetchrow($result))		{			$l_ug_list .= (($l_ug_list != '') ? ', ' : '') . ((isset($row['group_type']) && $row['group_type'] == GROUP_SPECIAL) ? '<span class="blue">' . $user->lang['G_' . $row['name']] . '</span>' : $row['name']);		}		$db->sql_freeresult($result);		$mode = str_replace('setting_', '', $mode);		if ($forum_id[0] == 0)		{			add_log('admin', 'LOG_ACL_' . strtoupper($action) . '_' . strtoupper($mode) . '_' . strtoupper($permission_type), $l_ug_list);		}		else		{			// Grab the forum details if non-zero forum_id			$sql = 'SELECT forum_name 				FROM ' . FORUMS_TABLE . '				WHERE ' . $db->sql_in_set('forum_id', $forum_id);			$result = $db->sql_query($sql);			$l_forum_list = '';			while ($row = $db->sql_fetchrow($result))			{				$l_forum_list .= (($l_forum_list != '') ? ', ' : '') . $row['forum_name'];			}			$db->sql_freeresult($result);			add_log('admin', 'LOG_ACL_' . strtoupper($action) . '_' . strtoupper($mode) . '_' . strtoupper($permission_type), $l_forum_list, $l_ug_list);		}	}	/**	* Display a complete trace tree for the selected permission to determine where settings are set/unset	*/	function permission_trace($user_id, $forum_id, $permission)	{		global $db, $template, $user, $auth;		if ($user_id != $user->data['user_id'])		{			$sql = 'SELECT user_id, username, user_permissions, user_type				FROM ' . USERS_TABLE . '				WHERE user_id = ' . $user_id;			$result = $db->sql_query($sql);			$userdata = $db->sql_fetchrow($result);			$db->sql_freeresult($result);		}		else		{			$userdata = $user->data;		}		if (!$userdata)		{			trigger_error('NO_USERS', E_USER_ERROR);		}		$forum_name = false;		if ($forum_id)		{			$sql = 'SELECT forum_name				FROM ' . FORUMS_TABLE . "				WHERE forum_id = $forum_id";			$result = $db->sql_query($sql, 3600);			$forum_name = $db->sql_fetchfield('forum_name');			$db->sql_freeresult($result);		}		$back = request_var('back', 0);		$template->assign_vars(array(			'PERMISSION'			=> $user->lang['acl_' . $permission]['lang'],			'PERMISSION_USERNAME'	=> $userdata['username'],			'FORUM_NAME'			=> $forum_name,			'U_BACK'					=> ($back) ? build_url(array('f', 'back')) . "&amp;f=$back" : '')		);		$template->assign_block_vars('trace', array(			'WHO'			=> $user->lang['DEFAULT'],			'INFORMATION'	=> $user->lang['TRACE_DEFAULT'],			'S_SETTING_NO'		=> true,			'S_TOTAL_NO'		=> true)		);		$sql = 'SELECT DISTINCT g.group_name, g.group_id, g.group_type			FROM ' . GROUPS_TABLE . ' g				LEFT JOIN ' . USER_GROUP_TABLE . ' ug ON (ug.group_id = g.group_id)			WHERE ug.user_id = ' . $user_id . '				AND ug.user_pending = 0			ORDER BY g.group_type DESC, g.group_id DESC';		$result = $db->sql_query($sql);		$groups = array();		while ($row = $db->sql_fetchrow($result))		{			$groups[$row['group_id']] = array(				'auth_setting'		=> ACL_NO,				'group_name'		=> ($row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $row['group_name']] : $row['group_name']			);		}		$db->sql_freeresult($result);		$total = ACL_NO;		if (sizeof($groups))		{			// Get group auth settings			$hold_ary = $auth->acl_group_raw_data(array_keys($groups), $permission, $forum_id);			foreach ($hold_ary as $group_id => $forum_ary)			{				$groups[$group_id]['auth_setting'] = $hold_ary[$group_id][$forum_id][$permission];			}			unset($hold_ary);			foreach ($groups as $id => $row)			{				switch ($row['auth_setting'])				{					case ACL_NO:						$information = $user->lang['TRACE_GROUP_NO'];					break;					case ACL_YES:						$information = ($total == ACL_YES) ? $user->lang['TRACE_GROUP_YES_TOTAL_YES'] : (($total == ACL_NEVER) ? $user->lang['TRACE_GROUP_YES_TOTAL_NEVER'] : $user->lang['TRACE_GROUP_YES_TOTAL_NO']);						$total = ($total == ACL_NO) ? ACL_YES : $total;					break;					case ACL_NEVER:						$information = ($total == ACL_YES) ? $user->lang['TRACE_GROUP_NEVER_TOTAL_YES'] : (($total == ACL_NEVER) ? $user->lang['TRACE_GROUP_NEVER_TOTAL_NEVER'] : $user->lang['TRACE_GROUP_NEVER_TOTAL_NO']);						$total = ACL_NEVER;					break;				}				$template->assign_block_vars('trace', array(					'WHO'			=> $row['group_name'],					'INFORMATION'	=> $information,					'S_SETTING_NO'		=> ($row['auth_setting'] == ACL_NO) ? true : false,					'S_SETTING_YES'		=> ($row['auth_setting'] == ACL_YES) ? true : false,					'S_SETTING_NEVER'	=> ($row['auth_setting'] == ACL_NEVER) ? true : false,					'S_TOTAL_NO'		=> ($total == ACL_NO) ? true : false,					'S_TOTAL_YES'		=> ($total == ACL_YES) ? true : false,					'S_TOTAL_NEVER'		=> ($total == ACL_NEVER) ? true : false)				);			}		}		// Get user specific permission...		$hold_ary = $auth->acl_user_raw_data($user_id, $permission, $forum_id);		$auth_setting = (!sizeof($hold_ary)) ? ACL_NO : $hold_ary[$user_id][$forum_id][$permission];		switch ($auth_setting)		{			case ACL_NO:				$information = ($total == ACL_NO) ? $user->lang['TRACE_USER_NO_TOTAL_NO'] : $user->lang['TRACE_USER_KEPT'];				$total = ($total == ACL_NO) ? ACL_NEVER : $total;			break;			case ACL_YES:				$information = ($total == ACL_YES) ? $user->lang['TRACE_USER_YES_TOTAL_YES'] : (($total == ACL_NEVER) ? $user->lang['TRACE_USER_YES_TOTAL_NEVER'] : $user->lang['TRACE_USER_YES_TOTAL_NO']);				$total = ($total == ACL_NO) ? ACL_YES : $total;			break;			case ACL_NEVER:				$information = ($total == ACL_YES) ? $user->lang['TRACE_USER_NEVER_TOTAL_YES'] : (($total == ACL_NEVER) ? $user->lang['TRACE_USER_NEVER_TOTAL_NEVER'] : $user->lang['TRACE_USER_NEVER_TOTAL_NO']);				$total = ACL_NEVER;			break;		}		$template->assign_block_vars('trace', array(			'WHO'			=> $userdata['username'],			'INFORMATION'	=> $information,			'S_SETTING_NO'		=> ($auth_setting == ACL_NO) ? true : false,			'S_SETTING_YES'		=> ($auth_setting == ACL_YES) ? true : false,			'S_SETTING_NEVER'	=> ($auth_setting == ACL_NEVER) ? true : false,			'S_TOTAL_NO'		=> false,			'S_TOTAL_YES'		=> ($total == ACL_YES) ? true : false,			'S_TOTAL_NEVER'		=> ($total == ACL_NEVER) ? true : false)		);		// global permission might overwrite local permission		if (($forum_id != 0) && isset($auth->acl_options['global'][$permission]))		{			if ($user_id != $user->data['user_id'])			{				$auth2 = new auth();				$auth2->acl($userdata);				$auth_setting = $auth2->acl_get($permission);			}			else			{				$auth_setting = $auth->acl_get($permission);			}			if ($auth_setting)			{				$information = ($total == ACL_YES) ? $user->lang['TRACE_USER_GLOBAL_YES_TOTAL_YES'] : $user->lang['TRACE_USER_GLOBAL_YES_TOTAL_NEVER'];				$total = ACL_YES;			}			else			{				$information = $user->lang['TRACE_USER_GLOBAL_NEVER_TOTAL_KEPT'];			}			$template->assign_block_vars('trace', array(				'WHO'			=> sprintf($user->lang['TRACE_GLOBAL_SETTING'], $userdata['username']),				'INFORMATION'	=> sprintf($information, '<a href="' . $this->u_action . "&amp;u=$user_id&amp;f=0&amp;auth=$permission&amp;back=$forum_id\">", '</a>'),				'S_SETTING_NO'		=> false,				'S_SETTING_YES'		=> $auth_setting,				'S_SETTING_NEVER'	=> !$auth_setting,				'S_TOTAL_NO'		=> false,				'S_TOTAL_YES'		=> ($total == ACL_YES) ? true : false,				'S_TOTAL_NEVER'		=> ($total == ACL_NEVER) ? true : false)			);		}		// Take founder status into account, overwriting the default values		if ($userdata['user_type'] == USER_FOUNDER && strpos($permission, 'a_') === 0)		{			$template->assign_block_vars('trace', array(				'WHO'			=> $userdata['username'],				'INFORMATION'	=> $user->lang['TRACE_USER_FOUNDER'],				'S_SETTING_NO'		=> ($auth_setting == ACL_NO) ? true : false,				'S_SETTING_YES'		=> ($auth_setting == ACL_YES) ? true : false,				'S_SETTING_NEVER'	=> ($auth_setting == ACL_NEVER) ? true : false,				'S_TOTAL_NO'		=> false,				'S_TOTAL_YES'		=> true,				'S_TOTAL_NEVER'		=> false)			);		}	}	/**	* Get already assigned users/groups	*/	function retrieve_defined_user_groups($permission_scope, $forum_id, $permission_type)	{		global $db, $user;		$sql_forum_id = ($permission_scope == 'global') ? 'AND a.forum_id = 0' : ((sizeof($forum_id)) ? 'AND ' . $db->sql_in_set('a.forum_id', $forum_id) : 'AND a.forum_id <> 0');		$sql_permission_option = "AND o.auth_option LIKE '" . $db->sql_escape($permission_type) . "%'";		$sql = $db->sql_build_query('SELECT_DISTINCT', array(			'SELECT'	=> 'u.username, u.username_clean, u.user_regdate, u.user_id',			'FROM'		=> array(				USERS_TABLE			=> 'u',				ACL_OPTIONS_TABLE	=> 'o',				ACL_USERS_TABLE		=> 'a'			),			'LEFT_JOIN'	=> array(				array(					'FROM'	=> array(ACL_ROLES_DATA_TABLE => 'r'),					'ON'	=> 'a.auth_role_id = r.role_id'				)			),			'WHERE'		=> "(a.auth_option_id = o.auth_option_id OR r.auth_option_id = o.auth_option_id)				$sql_permission_option				$sql_forum_id				AND u.user_id = a.user_id",			'ORDER_BY'	=> 'u.username_clean, u.user_regdate ASC'		));		$result = $db->sql_query($sql);		$s_defined_user_options = '';		$defined_user_ids = array();		while ($row = $db->sql_fetchrow($result))		{			$s_defined_user_options .= '<option value="' . $row['user_id'] . '">' . $row['username'] . '</option>';			$defined_user_ids[] = $row['user_id'];		}		$db->sql_freeresult($result);		$sql = $db->sql_build_query('SELECT_DISTINCT', array(			'SELECT'	=> 'g.group_type, g.group_name, g.group_id',			'FROM'		=> array(				GROUPS_TABLE		=> 'g',				ACL_OPTIONS_TABLE	=> 'o',				ACL_GROUPS_TABLE	=> 'a'			),			'LEFT_JOIN'	=> array(				array(					'FROM'	=> array(ACL_ROLES_DATA_TABLE => 'r'),					'ON'	=> 'a.auth_role_id = r.role_id'				)			),			'WHERE'		=> "(a.auth_option_id = o.auth_option_id OR r.auth_option_id = o.auth_option_id)				$sql_permission_option				$sql_forum_id				AND g.group_id = a.group_id",			'ORDER_BY'	=> 'g.group_type DESC, g.group_name ASC'		));		$result = $db->sql_query($sql);		$s_defined_group_options = '';		$defined_group_ids = array();		while ($row = $db->sql_fetchrow($result))		{			$s_defined_group_options .= '<option' . (($row['group_type'] == GROUP_SPECIAL) ? ' class="sep"' : '') . ' value="' . $row['group_id'] . '">' . (($row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $row['group_name']] : $row['group_name']) . '</option>';			$defined_group_ids[] = $row['group_id'];		}		$db->sql_freeresult($result);		return array(			'group_ids'			=> $defined_group_ids,			'group_ids_options'	=> $s_defined_group_options,			'user_ids'			=> $defined_user_ids,			'user_ids_options'	=> $s_defined_user_options		);	}}?>

⌨️ 快捷键说明

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