plugins.php 908 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. <?php
  2. class Plugins {
  3. protected $link;
  4. protected $plugins;
  5. protected $listeners;
  6. function __construct($link) {
  7. $this->link = $link;
  8. $this->listeners = array();
  9. $this->load_plugins();
  10. }
  11. function load_plugins() {
  12. if (defined('_ENABLE_PLUGINS')) {
  13. $plugins = explode(",", _ENABLE_PLUGINS);
  14. foreach ($plugins as $p) {
  15. $plugin_class = "plugin_$p";
  16. if (class_exists($plugin_class)) {
  17. $plugin = new $plugin_class($this->link, $this);
  18. }
  19. }
  20. }
  21. }
  22. function add_listener($hook_name, $plugin) {
  23. if (!is_array($this->listeners[$hook_name]))
  24. $this->listeners[$hook_name] = array();
  25. array_push($this->listeners[$hook_name], $plugin);
  26. }
  27. function hook($hook_name, &$params) {
  28. if (is_array($this->listeners[$hook_name])) {
  29. foreach ($this->listeners[$hook_name] as $p) {
  30. if (method_exists($p, $hook_name)) {
  31. $p->$hook_name($params);
  32. }
  33. }
  34. }
  35. }
  36. }
  37. ?>