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

📄 pluginmanager.class

📁 GForge 3.0 协作开发平台 支持CVS, mailing lists, bug tracking, message boards/forums, task management, perman
💻 CLASS
字号:
<?php/** *	PluginManager object * *	Provides an abstract way to handle plugins * * This file is copyright (c) Roland Mas <lolando@debian.org>, 2002 * * @version   $Id: PluginManager.class,v 1.4 2003/02/12 17:23:47 bigdisk Exp $ * * This file is part of GForge. * * GForge is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * GForge is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with GForge; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */class PluginManager extends Error {	var $plugins_objects ;	var $plugins_to_hooks ;	var $hooks_to_plugins ;	/**	 * PluginManager() - constructor	 *	 */	function PluginManager () {		$this->Error() ;		$this->plugins_objects = array () ;		$this->plugins_to_hooks = array () ;		$this->hooks_to_plugins = array () ;	}	/**	 * GetPlugins() - get a list of installed plugins	 *	 * @return hash of plugin id => plugin names	 */	function GetPlugins () {		if (!isset($this->plugins_data)) {			$this->plugins_data = array () ;			$sql = "SELECT * FROM plugins" ;			$res = db_query($sql);			$rows = db_numrows($res);			for ($i=0; $i<$rows; $i++) {				$plugin_id = db_result($res,$i,'plugin_id');				$this->plugins_data[$plugin_id] = db_result($res,$i,'plugin_name');			}		}		return $this->plugins_data ;	}	/**	 * PluginIsInstalled() - is a plugin installed?	 *	 * @param pluginname - name of plugin	 * @return boolean, true if installed	 */	function PluginIsInstalled ($pluginname) {		$plugins_data = $this->getPlugins() ;		foreach ($plugins_data as $p_id => $p_name) {			if ($p_name == $pluginname) {				return true ;			}		}		return false ;	}	/**	 * LoadPlugins() - load available plugins	 *	 */	function LoadPlugins () {		$plugins_data = $this->GetPlugins() ;		$include_path = "/usr/lib/sourceforge/plugins/" ;		foreach ($plugins_data as $p_id => $p_name) {			$filename = $include_path . $p_name . "/include/".$p_name."-init.php" ;			if (file_exists ($filename)) {				require_once ($filename) ;			}		}		return true ;	}	/**	 * SetupHooks() - setup all hooks for installed plugins	 *	 */	function SetupHooks () {		foreach ($this->plugins_to_hooks as $p_name => $hook_list) {			foreach ($hook_list as $hook_name) {				if (!isset ($this->hooks_to_plugins[$hook_name])) {					$this->hooks_to_plugins[$hook_name] = array () ;				}				$this->hooks_to_plugins[$hook_name][] = $p_name ;			}		}		return true ;	}	/**	 * RegisterPlugin() - register a plugin	 *	 * @param pluginobject - an object of a subclass of the Plugin class	 */	function RegisterPlugin (&$pluginobject) {		if (!$pluginobject->GetName ()) {			exit_error ("Some plugin did not provide a name.  I'd gladly tell you which one, but obviously I can't.  Sorry.") ;		}		$p_name = $pluginobject->GetName () ;		$this->plugins_objects [$p_name] =& $pluginobject ;		$this->plugins_to_hooks [$p_name] = $pluginobject->GetHooks () ;		return true ;	}	/**	 * RunHooks() - call hooks from a particular point	 *	 * @param hookname - name of the hook	 * @param params - array of extra parameters	 */	function RunHooks ($hookname, $params) {		echo "\n<!-- Starting hook $hookname -->" ;		$p_list = $this->hooks_to_plugins[$hookname] ;		if (isset ($p_list)) {			foreach ($p_list as $p_name) {				echo "<!-- Hook $hookname for plugin $p_name -->" ;				$p_obj = $this->plugins_objects[$p_name] ;				$p_obj->CallHook ($hookname, $params) ;				echo "<!-- End of hook $hookname for plugin $p_name -->" ;			}		}		echo "<!-- End of hook $hookname -->\n" ;		return true ;	}}/** * plugin_manager_get_object() - get the PluginManager object * * @return the PluginManager object */function &plugin_manager_get_object() {	global $PLUGINMANAGER_OBJ;	if (!isset($PLUGINMANAGER_OBJ) || !$PLUGINMANAGER_OBJ) {		$PLUGINMANAGER_OBJ = new PluginManager ;	}	return $PLUGINMANAGER_OBJ ;}/** * register_plugin () - register a plugin * * @param pluginobject - an object of a subclass of the Plugin class */function register_plugin (&$pluginobject) {	$pm =& plugin_manager_get_object () ;	return $pm->RegisterPlugin ($pluginobject) ;}/** * plugin_hook () - run a set of hooks * * @param hookname - name of the hook * @param params - parameters for the hook */function plugin_hook ($hookname, $params=false) {	$pm =& plugin_manager_get_object () ;	return $pm->RunHooks ($hookname, $params) ;}/** * setup_plugin_manager () - initialise the plugin ingrastructure * */function setup_plugin_manager () {	$pm =& plugin_manager_get_object() ;	$pm->LoadPlugins () ;	$pm->SetupHooks () ;	return true ;}// Local Variables:// mode: php// c-file-style: "bsd"// End:?>

⌨️ 快捷键说明

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