From 63a8854f4041b939a0d235e0d24ea1b6676a5460 Mon Sep 17 00:00:00 2001 From: Eric Lippmann Date: Fri, 12 Jul 2013 11:53:05 +0200 Subject: [PATCH] Notification: Add todo that we do not want singleton usage of this class --- library/Icinga/Web/Notification.php | 110 +++++----------------------- 1 file changed, 19 insertions(+), 91 deletions(-) diff --git a/library/Icinga/Web/Notification.php b/library/Icinga/Web/Notification.php index 1b5a975e6..6d1f5690b 100644 --- a/library/Icinga/Web/Notification.php +++ b/library/Icinga/Web/Notification.php @@ -1,106 +1,47 @@ - * @author Icinga Development Team - */ -// {{{ICINGA_LICENSE_HEADER}}} namespace Icinga\Web; use Icinga\Exception\ProgrammingError; use Icinga\Application\Platform; use Icinga\Application\Logger as Log; +use Icinga\Authentication\Manager as AuthManager; /** - * Class Notification - * @package Icinga\Web + * // @TODO(eL): Use Notification not as Singleton but within request: + * + * [getUser()]->notify('some message', Notification::INFO); + * */ class Notification { - /** - * @var Notification - */ - private static $instance; + protected static $instance; + protected $isCli = false; - /** - * @var bool - */ - private $cliFlag = false; - - /** - * @param boolean $cliFlag - */ - public function setCliFlag($cliFlag) - { - $this->cliFlag = $cliFlag; - } - - /** - * @return boolean - */ - public function getCliFlag() - { - return $this->cliFlag; - } - - /** - * @param $msg - */ public static function info($msg) { self::getInstance()->addMessage($msg, 'info'); } - /** - * @param $msg - */ public static function success($msg) { self::getInstance()->addMessage($msg, 'success'); } - /** - * @param $msg - */ public static function warning($msg) { self::getInstance()->addMessage($msg, 'warning'); } - /** - * @param $msg - */ public static function error($msg) { self::getInstance()->addMessage($msg, 'error'); } - /** - * @param $message - * @param string $type - * @throws \Icinga\Exception\ProgrammingError - */ - public function addMessage($message, $type = 'info') + protected function addMessage($message, $type = 'info') { - if (!in_array( + if (! in_array( $type, array( 'info', @@ -108,8 +49,7 @@ class Notification 'warning', 'success' ) - ) - ) { + )) { throw new ProgrammingError( sprintf( '"%s" is not a valid notification type', @@ -118,7 +58,7 @@ class Notification ); } - if ($this->cliFlag) { + if ($this->is_cli) { $msg = sprintf('[%s] %s', $type, $message); switch ($type) { case 'info': @@ -135,8 +75,8 @@ class Notification return; } - $mo = (object)array( - 'type' => $type, + $mo = (object) array( + 'type' => $type, 'message' => $message, ); @@ -146,17 +86,11 @@ class Notification $this->session->messages = $msgs; } - /** - * @return bool - */ public function hasMessages() { - return !empty($this->session->messages); + return ! empty($this->session->messages); } - /** - * @return mixed - */ public function getMessages() { $msgs = $this->session->messages; @@ -164,24 +98,18 @@ class Notification return $msgs; } - /** - * Create a new Notification object - */ final private function __construct() { - //$this->session = new SessionNamespace('IcingaNotification'); - //if (!is_array($this->session->messages)) { + $this->session = AuthManager::getInstance()->getSession(); + if (!is_array($this->session->get('messages'))) { $this->session->messages = array(); - //} + } if (Platform::isCli()) { - $this->cliFlag = true; + $this->is_cli = true; } } - /** - * @return Notification - */ public static function getInstance() { if (self::$instance === null) {