| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 | 
							- <?php
 
- ###
 
- # @name		Plugins Module
 
- # @author		Tobias Reich
 
- # @copyright	2014 by Tobias Reich
 
- ###
 
- if (!defined('LYCHEE')) exit('Error: Direct access is not allowed!');
 
- class Plugins implements \SplSubject {
 
- 	private $files		= array();
 
- 	private $observers	= array();
 
- 	public $action	= null;
 
- 	public $args	= null;
 
- 	public function __construct($files, $database, $settings) {
 
- 		if (!isset($files)) return false;
 
- 		# Init vars
 
- 		$plugins		= $this;
 
- 		$this->files	= $files;
 
- 		# Load plugins
 
- 		foreach ($this->files as $file) {
 
- 			if ($file==='') continue;
 
- 			$file = LYCHEE_PLUGINS . $file;
 
- 			if (file_exists($file)===false) {
 
- 				Log::warning($database, __METHOD__, __LINE__, 'Could not include plugin. File does not exist (' . $file . ').');
 
- 				continue;
 
- 			}
 
- 			include($file);
 
- 		}
 
- 		return true;
 
- 	}
 
- 	public function attach(\SplObserver $observer) {
 
- 		if (!isset($observer)) return false;
 
- 		# Add observer
 
- 		$this->observers[] = $observer;
 
- 		return true;
 
- 	}
 
- 	public function detach(\SplObserver $observer) {
 
- 		if (!isset($observer)) return false;
 
- 		# Remove observer
 
- 		$key = array_search($observer, $this->observers, true);
 
- 		if ($key) unset($this->observers[$key]);
 
- 		return true;
 
- 	}
 
- 	public function notify() {
 
- 		# Notify each observer
 
- 		foreach ($this->observers as $value) $value->update($this);
 
- 		return true;
 
- 	}
 
- 	public function activate($action, $args) {
 
- 		if (!isset($action, $args)) return false;
 
- 		# Save vars
 
- 		$this->action	= $action;
 
- 		$this->args		= $args;
 
- 		# Notify observers
 
- 		$this->notify();
 
- 		return true;
 
- 	}
 
- }
 
- ?>
 
 
  |