summaryrefslogtreecommitdiff
path: root/classes/plugins.php
diff options
context:
space:
mode:
Diffstat (limited to 'classes/plugins.php')
-rw-r--r--classes/plugins.php44
1 files changed, 44 insertions, 0 deletions
diff --git a/classes/plugins.php b/classes/plugins.php
new file mode 100644
index 000000000..6f3720ca9
--- /dev/null
+++ b/classes/plugins.php
@@ -0,0 +1,44 @@
+<?php
+class Plugins {
+ protected $link;
+ protected $plugins;
+ protected $listeners;
+
+ function __construct($link) {
+ $this->link = $link;
+ $this->listeners = array();
+ $this->load_plugins();
+ }
+
+ function load_plugins() {
+ if (defined('_ENABLE_PLUGINS')) {
+ $plugins = explode(",", _ENABLE_PLUGINS);
+
+ foreach ($plugins as $p) {
+ $plugin_class = "plugin_$p";
+ if (class_exists($plugin_class)) {
+ $plugin = new $plugin_class($this->link, $this);
+ }
+ }
+ }
+ }
+
+ function add_listener($hook_name, $plugin) {
+ if (!is_array($this->listeners[$hook_name]))
+ $this->listeners[$hook_name] = array();
+
+ array_push($this->listeners[$hook_name], $plugin);
+ }
+
+ function hook($hook_name, &$params) {
+ if (is_array($this->listeners[$hook_name])) {
+ foreach ($this->listeners[$hook_name] as $p) {
+ if (method_exists($p, $hook_name)) {
+ $p->$hook_name($params);
+ }
+ }
+ }
+ }
+
+}
+?>