diff options
Diffstat (limited to 'hugo/libraries/plugins/PluginManager.class.php')
| -rw-r--r-- | hugo/libraries/plugins/PluginManager.class.php | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/hugo/libraries/plugins/PluginManager.class.php b/hugo/libraries/plugins/PluginManager.class.php new file mode 100644 index 0000000..28400b7 --- /dev/null +++ b/hugo/libraries/plugins/PluginManager.class.php @@ -0,0 +1,132 @@ +<?php +/* vim: set expandtab sw=4 ts=4 sts=4: */ +/** + * The PluginManager class is used alongside PluginObserver to implement + * the Observer Design Pattern. + * + * @package PhpMyAdmin + */ +if (! defined('PHPMYADMIN')) { + exit; +} + +/** + * This class implements the SplSubject interface + * + * @todo implement all methods + * @package PhpMyAdmin + * @link http://php.net/manual/en/class.splsubject.php + * + */ +class PluginManager implements SplSubject +{ + /** + * Contains a list with all the plugins that attach to it + * + * @var type SplObjectStorage + */ + private $_storage; + + /** + * Contains information about the current plugin state + * + * @var type string + */ + private $_status; + + /** + * Constructor + * Initializes $_storage with an empty SplObjectStorage + */ + public function __construct() + { + $this->_storage = new SplObjectStorage(); + } + + /** + * Attaches an SplObserver so that it can be notified of updates + * + * @param SplObserver $observer The SplObserver to attach + * + * @return void + */ + function attach (SplObserver $observer ) + { + $this->_storage->attach($observer); + } + + /** + * Detaches an observer from the subject to no longer notify it of updates + * + * @param SplObserver $observer The SplObserver to detach + * + * @return void + */ + function detach (SplObserver $observer) + { + $this->_storage->detach($observer); + } + + /** + * It is called after setStatus() was run by a certain plugin, and has + * the role of sending a notification to all of the plugins in $_storage, + * by calling the update() method for each of them. + * + * @todo implement + * @return void + */ + function notify () + { + } + + /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */ + + /** + * Gets the list with all the plugins that attach to it + * + * @return type SplObjectStorage + */ + public function getStorage() + { + return $this->_storage; + } + + /** + * Setter for $_storage + * + * @param SplObjectStorage $_storage the list with all the plugins that + * attach to it + * + * @return void + */ + public function setStorage($_storage) + { + $this->_storage = $_storage; + } + + /** + * Gets the information about the current plugin state + * It is called by all the plugins in $_storage in their update() method + * + * @return type mixed + */ + public function getStatus() + { + return $this->_status; + } + + /** + * Setter for $_status + * If a plugin changes its status, this has to be remembered in order to + * notify the rest of the plugins that they should update + * + * @param mixed $_status contains information about the current plugin state + * + * @return void + */ + public function setStatus($_status) + { + $this->_status = $_status; + } +} +?>
\ No newline at end of file |
