diff options
author | Andrew Dolgov <[email protected]> | 2012-12-23 23:05:51 +0400 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2012-12-23 23:05:51 +0400 |
commit | 8dcb2b47628346226b18940b5cde7849f7a24687 (patch) | |
tree | ca3ee70e34095455614f4c2c7f9d69ce9f1ed27c /classes/pluginhost.php | |
parent | 5cedb389d24861a94c1183d1562900dbe59ee3fb (diff) |
implement plugin routing masks, add example plugin
Diffstat (limited to 'classes/pluginhost.php')
-rw-r--r-- | classes/pluginhost.php | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/classes/pluginhost.php b/classes/pluginhost.php index d7926fa4e..b28d2511d 100644 --- a/classes/pluginhost.php +++ b/classes/pluginhost.php @@ -3,6 +3,7 @@ class PluginHost { private $link; private $hooks = array(); private $plugins = array(); + private $handlers = array(); const HOOK_ARTICLE_BUTTON = 1; const HOOK_ARTICLE_FILTER = 2; @@ -62,7 +63,7 @@ class PluginHost { foreach ($plugins as $class) { $class = trim($class); - $class_file = str_replace("_", "/", strtolower(basename($class))); + $class_file = strtolower(basename($class)); $file = dirname(__FILE__)."/../plugins/$class_file/$class_file.php"; if (file_exists($file)) require_once $file; @@ -75,5 +76,33 @@ class PluginHost { } } + function add_handler($handler, $method, $sender) { + $handler = strtolower($handler); + $method = strtolower($method); + + if (!is_array($this->handlers[$handler])) { + $this->handlers[$handler] = array(); + } + + $this->handlers[$handler][$method] = $sender; + } + + function del_handler($handler, $method) { + $handler = strtolower($handler); + $method = strtolower($method); + + unset($this->handlers[$handler][$method]); + } + + function lookup_handler($handler, $method) { + $handler = strtolower($handler); + $method = strtolower($method); + + if (is_array($this->handlers[$handler])) { + return $this->handlers[$handler][$method]; + } + + return false; + } } ?> |