📄 pluginmanager.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 + -