| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 | <?php#### @name			Plugins Module# @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;	}}?>
 |