pluginspath)) { if ($handle = opendir($CONFIG->pluginspath)) { while ($mod = readdir($handle)) { if (!in_array($mod,array('.','..','.svn','CVS')) && is_dir($CONFIG->pluginspath . "/" . $mod)) { if (!@include($CONFIG->pluginspath . $mod . "/start.php")) throw new PluginException(sprintf(elgg_echo('PluginException:MisconfiguredPlugin'), $mod)); if (is_dir($CONFIG->pluginspath . $mod . "/views/default")) { autoregister_views("",$CONFIG->pluginspath . $mod . "/views/default",$CONFIG->pluginspath . $mod . "/views/"); } if (is_dir($CONFIG->pluginspath . $mod . "/languages")) { register_translations($CONFIG->pluginspath . $mod . "/languages/"); } } } } } } /** * Get the name of the most recent plugin to be called in the call stack (or the plugin that owns the current page, if any). * * i.e., if the last plugin was in /mod/foobar/, get_plugin_name would return foo_bar. * * @param boolean $mainfilename If set to true, this will instead determine the context from the main script filename called by the browser. Default = false. * @return string|false Plugin name, or false if no plugin name was called */ function get_plugin_name($mainfilename = false) { if (!$mainfilename) { if ($backtrace = debug_backtrace()) { foreach($backtrace as $step) { $file = $step['file']; $file = str_replace("\\","/",$file); $file = str_replace("//","/",$file); if (preg_match("/mod\/([a-zA-Z0-9\-\_]*)\/start\.php$/",$file,$matches)) { return $matches[1]; } } } } else { $file = $_SERVER["SCRIPT_NAME"]; $file = str_replace("\\","/",$file); $file = str_replace("//","/",$file); if (preg_match("/mod\/([a-zA-Z0-9\-\_]*)\//",$file,$matches)) { return $matches[1]; } } return false; } /** * PluginException * * A plugin Exception, thrown when an Exception occurs relating to the plugin mechanism. Subclass for specific plugin Exceptions. * * @package Elgg * @subpackage Exceptions */ class PluginException extends Exception {} ?>