summaryrefslogtreecommitdiff
path: root/hugo/libraries/plugins/PluginManager.class.php
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--hugo/libraries/plugins/PluginManager.class.php132
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