summaryrefslogtreecommitdiff
path: root/hugo/libraries/plugins/PluginObserver.class.php
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--hugo/libraries/plugins/PluginObserver.class.php90
1 files changed, 90 insertions, 0 deletions
diff --git a/hugo/libraries/plugins/PluginObserver.class.php b/hugo/libraries/plugins/PluginObserver.class.php
new file mode 100644
index 0000000..520d62a
--- /dev/null
+++ b/hugo/libraries/plugins/PluginObserver.class.php
@@ -0,0 +1,90 @@
+<?php
+/* vim: set expandtab sw=4 ts=4 sts=4: */
+/**
+ * The PluginObserver class is used alongside PluginManager to implement
+ * the Observer Design Pattern.
+ *
+ * @package PhpMyAdmin
+ */
+if (! defined('PHPMYADMIN')) {
+ exit;
+}
+
+/* Each PluginObserver instance contains a PluginManager instance */
+require_once 'PluginManager.class.php';
+
+/**
+ * This class implements the SplObserver interface
+ *
+ * @package PhpMyAdmin
+ * @link http://php.net/manual/en/class.splobserver.php
+ */
+abstract class PluginObserver implements SplObserver
+{
+ /**
+ * PluginManager instance that contains a list with all the observer
+ * plugins that attach to it
+ *
+ * @var type PluginManager
+ */
+ private $_pluginManager;
+
+ /**
+ * Constructor
+ *
+ * @param PluginManager $pluginManager The Plugin Manager instance
+ */
+ public function __construct($pluginManager)
+ {
+ $this->_pluginManager = $pluginManager;
+ }
+
+ /**
+ * This method is called when any PluginManager to which the observer
+ * is attached calls PluginManager::notify()
+ *
+ * TODO Declare this function abstract, removing its body,
+ * as soon as we drop support for PHP 5.2.x.
+ * See bug #3538655.
+ *
+ * @param SplSubject $subject The PluginManager notifying the observer
+ * of an update.
+ *
+ * @return void
+ */
+ public function update (SplSubject $subject)
+ {
+ throw new Exception(
+ 'PluginObserver::update must be overridden in child classes.'
+ );
+ }
+
+
+ /* ~~~~~~~~~~~~~~~~~~~~ Getters and Setters ~~~~~~~~~~~~~~~~~~~~ */
+
+
+ /**
+ * Gets the PluginManager instance that contains the list with all the
+ * plugins that attached to it
+ *
+ * @return type PluginManager
+ */
+ public function getPluginManager()
+ {
+ return $this->_pluginManager;
+ }
+
+ /**
+ * Setter for $_pluginManager
+ *
+ * @param PluginManager $_pluginManager the private instance that it will
+ * attach to
+ *
+ * @return void
+ */
+ public function setPluginManager($_pluginManager)
+ {
+ $this->_pluginManager = $_pluginManager;
+ }
+}
+?>