diff options
Diffstat (limited to 'Postman/PostmanMessageHandler.php')
-rw-r--r-- | Postman/PostmanMessageHandler.php | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/Postman/PostmanMessageHandler.php b/Postman/PostmanMessageHandler.php new file mode 100644 index 0000000..cd9220d --- /dev/null +++ b/Postman/PostmanMessageHandler.php @@ -0,0 +1,115 @@ +<?php +if ( ! defined( 'ABSPATH' ) ) { + exit; // Exit if accessed directly +} +if (! class_exists ( 'PostmanMessageHandler' )) { + + require_once ('PostmanSession.php'); + class PostmanMessageHandler { + + // The Session variables that carry messages + const ERROR_CLASS = 'error'; + const WARNING_CLASS = 'update-nag'; + const SUCCESS_CLASS = 'updated'; + private $logger; + + /** + * + * @param mixed $options + */ + function __construct() { + $this->logger = new PostmanLogger ( get_class ( $this ) ); + + // we'll let the 'init' functions run first; some of them may end the request + add_action ( 'admin_notices', Array ( + $this, + 'displayAllMessages' + ) ); + } + + /** + * + * @param mixed $message + */ + public function addError($message) { + $this->storeMessage ( $message, 'error' ); + } + /** + * + * @param mixed $message + */ + public function addWarning($message) { + $this->storeMessage ( $message, 'warning' ); + } + /** + * + * @param mixed $message + */ + public function addMessage($message) { + $this->storeMessage ( $message, 'notify' ); + } + + /** + * store messages for display later + * + * @param mixed $message + * @param mixed $type + */ + private function storeMessage($message, $type) { + $messageArray = array (); + $oldMessageArray = PostmanSession::getInstance ()->getMessage (); + if ($oldMessageArray) { + $messageArray = $oldMessageArray; + } + $weGotIt = false; + foreach ( $messageArray as $storedMessage ) { + if ($storedMessage ['message'] === $message) { + $weGotIt = true; + } + } + if (! $weGotIt) { + $m = array ( + 'type' => $type, + 'message' => $message + ); + array_push ( $messageArray, $m ); + PostmanSession::getInstance ()->setMessage ( $messageArray ); + } + } + /** + * Retrieve the messages and show them + */ + public function displayAllMessages() { + $messageArray = PostmanSession::getInstance ()->getMessage (); + if ($messageArray) { + PostmanSession::getInstance ()->unsetMessage (); + foreach ( $messageArray as $m ) { + $type = $m ['type']; + switch ($type) { + case 'error' : + $className = self::ERROR_CLASS; + break; + case 'warning' : + $className = self::WARNING_CLASS; + break; + default : + $className = self::SUCCESS_CLASS; + break; + } + $message = $m ['message']; + $this->printMessage ( $message, $className ); + } + } + } + + /** + * putput message + * + * @param mixed $message + * @param mixed $className + */ + public function printMessage($message, $className) { + printf ( '<div class="%s"><p>%s</p></div>', $className, $message ); + } + } +} |