diff options
Diffstat (limited to 'classes')
-rw-r--r-- | classes/handler.php | 2 | ||||
-rw-r--r-- | classes/ihandler.php | 7 | ||||
-rw-r--r-- | classes/pluginhost.php | 31 |
3 files changed, 38 insertions, 2 deletions
diff --git a/classes/handler.php b/classes/handler.php index e00b36aa3..68b16eac1 100644 --- a/classes/handler.php +++ b/classes/handler.php @@ -1,5 +1,5 @@ <?php -class Handler { +class Handler implements IHandler { protected $link; protected $args; diff --git a/classes/ihandler.php b/classes/ihandler.php new file mode 100644 index 000000000..e3c8a535f --- /dev/null +++ b/classes/ihandler.php @@ -0,0 +1,7 @@ +<?php +interface IHandler { + function csrf_ignore($method); + function before($method); + function after(); +} +?> 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; + } } ?> |