Plugins.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. ###
  3. # @name Plugins Module
  4. # @author Tobias Reich
  5. # @copyright 2014 by Tobias Reich
  6. ###
  7. class Plugins implements \SplSubject {
  8. private $files = array();
  9. private $observers = array();
  10. public $action = null;
  11. public $args = null;
  12. public function __construct($files, $database) {
  13. if (!isset($files)) return false;
  14. # Init vars
  15. $plugins = $this;
  16. $this->files = $files;
  17. # Load plugins
  18. foreach ($this->files as $file) {
  19. if ($file==='') continue;
  20. include('../plugins/' . $file);
  21. }
  22. return true;
  23. }
  24. public function attach(\SplObserver $observer) {
  25. if (!isset($observer)) return false;
  26. # Add observer
  27. $this->observers[] = $observer;
  28. return true;
  29. }
  30. public function detach(\SplObserver $observer) {
  31. if (!isset($observer)) return false;
  32. # Remove observer
  33. $key = array_search($observer, $this->observers, true);
  34. if ($key) unset($this->observers[$key]);
  35. return true;
  36. }
  37. public function notify() {
  38. # Notify each observer
  39. foreach ($this->observers as $value) $value->update($this);
  40. return true;
  41. }
  42. public function activate($action, $args) {
  43. if (!isset($action, $args)) return false;
  44. # Save vars
  45. $this->action = $action;
  46. $this->args = $args;
  47. # Notify observers
  48. $this->notify();
  49. return true;
  50. }
  51. }
  52. ?>