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

📄 acp_modules.php

📁 这些都是我以前学习是用到的源码
💻 PHP
📖 第 1 页 / 共 2 页
字号:
<?php/** ** @package acp* @version $Id: acp_modules.php,v 1.37 2006/11/24 14:58:07 acydburn Exp $* @copyright (c) 2005 phpBB Group * @license http://opensource.org/licenses/gpl-license.php GNU Public License **//*** - Able to check for new module versions (modes changed/adjusted/added/removed)* Icons for:* - module enabled and displayed (common)* - module enabled and not displayed* - module deactivated* - category (enabled)* - category disabled*//*** @package acp*/class acp_modules{	var $module_class = '';	var $parent_id;	var $u_action;	function main($id, $mode)	{		global $db, $user, $auth, $template;		global $config, $phpbb_admin_path, $phpbb_root_path, $phpEx;		// Set a global define for modules we might include (the author is able to prevent execution of code by checking this constant)		define('MODULE_INCLUDE', true);		$user->add_lang('acp/modules');		$this->tpl_name = 'acp_modules';		// module class		$this->module_class = $mode;		if ($this->module_class == 'ucp')		{			$user->add_lang('ucp');		}		else if ($this->module_class == 'mcp')		{			$user->add_lang('mcp');		}		$this->page_title = strtoupper($this->module_class);		$this->parent_id = request_var('parent_id', 0);		$module_id = request_var('m', 0);		$action = request_var('action', '');		$errors = array();		switch ($action)		{			case 'delete':				if (!$module_id)				{					trigger_error($user->lang['NO_MODULE_ID'] . adm_back_link($this->u_action . '&amp;parent_id=' . $this->parent_id), E_USER_WARNING);				}				if (confirm_box(true))				{					$errors = $this->delete_module($module_id);					if (!sizeof($errors))					{						$this->remove_cache_file();						trigger_error($user->lang['MODULE_DELETED'] . adm_back_link($this->u_action . '&amp;parent_id=' . $this->parent_id));					}				}				else				{					confirm_box(false, 'DELETE_MODULE', build_hidden_fields(array(						'i'			=> $id,						'mode'		=> $mode,						'parent_id'	=> $this->parent_id,						'module_id'	=> $module_id,						'action'	=> $action,					)));				}			break;						case 'enable':			case 'disable':				if (!$module_id)				{					trigger_error($user->lang['NO_MODULE_ID'] . adm_back_link($this->u_action . '&amp;parent_id=' . $this->parent_id), E_USER_WARNING);				}				$sql = 'UPDATE ' . MODULES_TABLE . ' 					SET module_enabled = ' . (($action == 'enable') ? 1 : 0) . "					WHERE module_id = $module_id";				$db->sql_query($sql);				add_log('admin', 'LOG_MODULE_' . strtoupper($action));				$this->remove_cache_file();			break;			case 'move_up':			case 'move_down':				if (!$module_id)				{					trigger_error($user->lang['NO_MODULE_ID'] . adm_back_link($this->u_action . '&amp;parent_id=' . $this->parent_id), E_USER_WARNING);				}				$sql = 'SELECT *					FROM ' . MODULES_TABLE . "					WHERE module_class = '" . $db->sql_escape($this->module_class) . "'						AND module_id = $module_id";				$result = $db->sql_query($sql);				$row = $db->sql_fetchrow($result);				$db->sql_freeresult($result);				if (!$row)				{					trigger_error($user->lang['NO_MODULE'] . adm_back_link($this->u_action . '&amp;parent_id=' . $this->parent_id), E_USER_WARNING);				}				$move_module_name = $this->move_module_by($row, $action, 1);				if ($move_module_name !== false)				{					add_log('admin', 'LOG_MODULE_' . strtoupper($action), $move_module_name);					$this->remove_cache_file();				}					break;			case 'quickadd':				$quick_install = request_var('quick_install', '');				if (confirm_box(true))				{					if (!$quick_install || strpos($quick_install, '::') === false)					{						break;					}					list($module_basename, $module_mode) = explode('::', $quick_install);					// Check if module name and mode exist...					$fileinfo = $this->get_module_infos($module_basename);					$fileinfo = $fileinfo[$module_basename];					if (isset($fileinfo['modes'][$module_mode]))					{						$module_data = array(							'module_basename'	=> $module_basename,							'module_enabled'	=> 0,							'module_display'	=> (isset($fileinfo['modes'][$module_mode]['display'])) ? $fileinfo['modes'][$module_mode]['display'] : 1,							'parent_id'			=> $this->parent_id,							'module_class'		=> $this->module_class,							'module_langname'	=> $fileinfo['modes'][$module_mode]['title'],							'module_mode'		=> $module_mode,							'module_auth'		=> $fileinfo['modes'][$module_mode]['auth'],						);						$errors = $this->update_module_data($module_data);						if (!sizeof($errors))						{							$this->remove_cache_file();								trigger_error($user->lang['MODULE_ADDED'] . adm_back_link($this->u_action . '&amp;parent_id=' . $this->parent_id));						}					}				}				else				{					confirm_box(false, 'ADD_MODULE', build_hidden_fields(array(						'i'			=> $id,						'mode'		=> $mode,						'parent_id'	=> $this->parent_id,						'action'	=> 'quickadd',						'quick_install'	=> $quick_install,					)));				}			break;			case 'edit':				if (!$module_id)				{					trigger_error($user->lang['NO_MODULE_ID'] . adm_back_link($this->u_action . '&amp;parent_id=' . $this->parent_id), E_USER_WARNING);				}								$module_row = $this->get_module_row($module_id);			// no break			case 'add':				if ($action == 'add')				{					$module_row = array(						'module_basename'	=> '',						'module_enabled'	=> 0,						'module_display'	=> 1,						'parent_id'			=> 0,						'module_langname'	=> request_var('module_langname', '', true),						'module_mode'		=> '',						'module_auth'		=> '',					);				}								$module_data = array();				$module_data['module_basename'] = request_var('module_basename', (string) $module_row['module_basename']);				$module_data['module_enabled'] = request_var('module_enabled', (int) $module_row['module_enabled']);				$module_data['module_display'] = request_var('module_display', (int) $module_row['module_display']);				$module_data['parent_id'] = request_var('module_parent_id', (int) $module_row['parent_id']);				$module_data['module_class'] = $this->module_class;				$module_data['module_langname'] = request_var('module_langname', (string) $module_row['module_langname'], true);				$module_data['module_mode'] = request_var('module_mode', (string) $module_row['module_mode']);				$submit = (isset($_POST['submit'])) ? true : false;				if ($submit)				{					if (!$module_data['module_langname'])					{						trigger_error($user->lang['NO_MODULE_LANGNAME'] . adm_back_link($this->u_action . '&amp;parent_id=' . $this->parent_id), E_USER_WARNING);					}					$module_type = request_var('module_type', 'category');					if ($module_type == 'category')					{						$module_data['module_basename'] = $module_data['module_mode'] = $module_data['module_auth'] = '';						$module_data['module_display'] = 1;					}					if ($action == 'edit')					{						$module_data['module_id'] = $module_id;					}					// Adjust auth row					if ($module_data['module_basename'] && $module_data['module_mode'])					{						$fileinfo = $this->get_module_infos($module_data['module_basename']);						$module_data['module_auth'] = $fileinfo[$module_data['module_basename']]['modes'][$module_data['module_mode']]['auth'];					}					$errors = $this->update_module_data($module_data);					if (!sizeof($errors))					{						$this->remove_cache_file();							trigger_error((($action == 'add') ? $user->lang['MODULE_ADDED'] : $user->lang['MODULE_EDITED']) . adm_back_link($this->u_action . '&amp;parent_id=' . $this->parent_id));					}				}				// Category/not category?				$is_cat = (!$module_data['module_basename']) ? true : false;				// Get module information				$module_infos = $this->get_module_infos();				// Build name options				$s_name_options = $s_mode_options = '';				foreach ($module_infos as $option => $values)				{					if (!$module_data['module_basename'])					{						$module_data['module_basename'] = $option;					}					// Name options					$s_name_options .= '<option value="' . $option . '"' . (($option == $module_data['module_basename']) ? ' selected="selected"' : '') . '>' . $this->lang_name($values['title']) . ' [' . $this->module_class . '_' . $option . ']</option>';					$template->assign_block_vars('m_names', array('NAME' => $option));					// Build module modes					foreach ($values['modes'] as $m_mode => $m_values)					{						if ($option == $module_data['module_basename'])						{							$s_mode_options .= '<option value="' . $m_mode . '"' . (($m_mode == $module_data['module_mode']) ? ' selected="selected"' : '') . '>' . $this->lang_name($m_values['title']) . '</option>';						}												$template->assign_block_vars('m_names.modes', array(							'OPTION'		=> $m_mode,							'VALUE'			=> $this->lang_name($m_values['title']),							'A_OPTION'		=> addslashes($m_mode),							'A_VALUE'		=> addslashes($this->lang_name($m_values['title'])))						);					}				}								$s_cat_option = '<option value="0"' . (($module_data['parent_id'] == 0) ? ' selected="selected"' : '') . '>' . $user->lang['NO_PARENT'] . '</option>';				$template->assign_vars(array_merge(array(					'S_EDIT_MODULE'		=> true,					'S_IS_CAT'			=> $is_cat,					'S_CAT_OPTIONS'		=> $s_cat_option . $this->make_module_select($module_data['parent_id'], ($action == 'edit') ? $module_row['module_id'] : false, false, false, false, true),					'S_MODULE_NAMES'	=> $s_name_options,					'S_MODULE_MODES'	=> $s_mode_options,					'U_BACK'			=> $this->u_action . '&amp;parent_id=' . $this->parent_id,					'U_EDIT_ACTION'		=> $this->u_action . '&amp;parent_id=' . $this->parent_id,					'L_TITLE'			=> $user->lang[strtoupper($action) . '_MODULE'],										'MODULENAME'		=> $this->lang_name($module_data['module_langname']),					'ACTION'			=> $action,					'MODULE_ID'			=> $module_id,				), 					array_change_key_case($module_data, CASE_UPPER))				);				if (sizeof($errors))				{					$template->assign_vars(array(						'S_ERROR'	=> true,						'ERROR_MSG'	=> implode('<br />', $errors))					);				}				return;			break;		}		// Default management page		if (sizeof($errors))		{			$template->assign_vars(array(				'S_ERROR'	=> true,				'ERROR_MSG'	=> implode('<br />', $errors))			);		}		if (!$this->parent_id)		{			$navigation = strtoupper($this->module_class);		}		else		{			$navigation = '<a href="' . $this->u_action . '">' . strtoupper($this->module_class) . '</a>';			$modules_nav = $this->get_module_branch($this->parent_id, 'parents', 'descending');			foreach ($modules_nav as $row)			{				$langname = $this->lang_name($row['module_langname']);				if ($row['module_id'] == $this->parent_id)				{					$navigation .= ' -&gt; ' . $langname;				}				else				{					$navigation .= ' -&gt; <a href="' . $this->u_action . '&amp;parent_id=' . $row['module_id'] . '">' . $langname . '</a>';				}			}		}		// Jumpbox		$module_box = $this->make_module_select($this->parent_id, false, false, false, false);		$sql = 'SELECT *			FROM ' . MODULES_TABLE . "			WHERE parent_id = {$this->parent_id}				AND module_class = '" . $db->sql_escape($this->module_class) . "'			ORDER BY left_id";		$result = $db->sql_query($sql);		if ($row = $db->sql_fetchrow($result))		{			do			{				$langname = $this->lang_name($row['module_langname']);				if (!$row['module_enabled'])				{					$module_image = '<img src="images/icon_folder_lock.gif" width="46" height="25" alt="' . $user->lang['DEACTIVATED_MODULE'] .'" />';				}				else				{					$module_image = (!$row['module_basename'] || $row['left_id'] + 1 != $row['right_id']) ? '<img src="images/icon_subfolder.gif" width="46" height="25" alt="' . $user->lang['CATEGORY'] . '" />' : '<img src="images/icon_folder.gif" width="46" height="25" alt="' . $user->lang['MODULE'] . '" />';				}				$url = $this->u_action . '&amp;parent_id=' . $this->parent_id . '&amp;m=' . $row['module_id'];				$template->assign_block_vars('modules', array(					'MODULE_IMAGE'		=> $module_image,					'MODULE_TITLE'		=> $langname,					'MODULE_ENABLED'	=> ($row['module_enabled']) ? true : false,					'MODULE_DISPLAYED'	=> ($row['module_display']) ? true : false,					'S_ACP_CAT_SYSTEM'			=> ($this->module_class == 'acp' && $row['module_langname'] == 'ACP_CAT_SYSTEM') ? true : false,					'S_ACP_MODULE_MANAGEMENT'	=> ($this->module_class == 'acp' && ($row['module_basename'] == 'modules' || $row['module_langname'] == 'ACP_MODULE_MANAGEMENT')) ? true : false,					'U_MODULE'			=> $this->u_action . '&amp;parent_id=' . $row['module_id'],					'U_MOVE_UP'			=> $url . '&amp;action=move_up',					'U_MOVE_DOWN'		=> $url . '&amp;action=move_down',					'U_EDIT'			=> $url . '&amp;action=edit',					'U_DELETE'			=> $url . '&amp;action=delete',					'U_ENABLE'			=> $url . '&amp;action=enable',					'U_DISABLE'			=> $url . '&amp;action=disable')				);			}			while ($row = $db->sql_fetchrow($result));		}		else if ($this->parent_id)		{			$row = $this->get_module_row($this->parent_id);			$url = $this->u_action . '&amp;parent_id=' . $this->parent_id . '&amp;m=' . $row['module_id'];			$template->assign_vars(array(				'S_NO_MODULES'		=> true,				'MODULE_TITLE'		=> $langname,				'MODULE_ENABLED'	=> ($row['module_enabled']) ? true : false,				'MODULE_DISPLAYED'	=> ($row['module_display']) ? true : false,				'U_EDIT'			=> $url . '&amp;action=edit',				'U_DELETE'			=> $url . '&amp;action=delete',				'U_ENABLE'			=> $url . '&amp;action=enable',				'U_DISABLE'			=> $url . '&amp;action=disable')			);		}		$db->sql_freeresult($result);		// Quick adding module		$module_infos = $this->get_module_infos();		// Build quick options		$s_install_options = '';		foreach ($module_infos as $option => $values)		{			// Name options			$s_install_options .= '<optgroup label="' . $this->lang_name($values['title']) . ' [' . $this->module_class . '_' . $option . ']">';			// Build module modes			foreach ($values['modes'] as $m_mode => $m_values)			{				$s_install_options .= '<option value="' . $option . '::' . $m_mode . '">&nbsp; &nbsp;' . $this->lang_name($m_values['title']) . '</option>';			}			$s_install_options .= '</optgroup>';		}		$template->assign_vars(array(			'U_SEL_ACTION'		=> $this->u_action,			'U_ACTION'			=> $this->u_action . '&amp;parent_id=' . $this->parent_id,			'NAVIGATION'		=> $navigation,			'MODULE_BOX'		=> $module_box,			'PARENT_ID'			=> $this->parent_id,			'S_INSTALL_OPTIONS'	=> $s_install_options,			)		);	}	/**	* Get row for specified module	*/	function get_module_row($module_id)	{		global $db, $user;		$sql = 'SELECT *			FROM ' . MODULES_TABLE . "			WHERE module_class = '" . $db->sql_escape($this->module_class) . "'				AND module_id = $module_id";		$result = $db->sql_query($sql);		$row = $db->sql_fetchrow($result);		$db->sql_freeresult($result);				if (!$row)		{			trigger_error($user->lang['NO_MODULE'] . adm_back_link($this->u_action . '&amp;parent_id=' . $this->parent_id), E_USER_WARNING);		}		return $row;	}		/**	* Get available module information from module files	*/	function get_module_infos($module = '', $module_class = false)	{		global $phpbb_root_path, $phpEx;				$module_class = ($module_class === false) ? $this->module_class : $module_class;		$directory = $phpbb_root_path . 'includes/' . $module_class . '/info/';		$fileinfo = array();		if (!$module)		{			$dh = opendir($directory);			while (($file = readdir($dh)) !== false)			{				// Is module?				if (preg_match('/^' . $module_class . '_.+\.' . $phpEx . '$/', $file))				{					$class = str_replace(".$phpEx", '', $file) . '_info';

⌨️ 快捷键说明

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