Commit 10a09b91 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Extraction de MessageAwareInterface et de MessageAwareTrait dans l'aide de vue Messenger.

parent 1e58dce1
<?php
namespace UnicaenApp\Traits;
/**
*
*
* @author Bertrand GAUTHIER <bertrand.gauthier at unicaen.fr>
*/
interface MessageAwareInterface
{
const INFO = 'info';
const SUCCESS = 'success';
const WARNING = 'warning';
const ERROR = 'danger';
/**
* Spécifie les messages courants (remplaçant les messages existants).
*
* @param string|array $messages
* @return self
*/
public function setMessages($messages);
/**
* Spécifie l'unique message courant.
*
* @param string $message Message
* @param string $severity Ex: self::INFO
* @return self
*/
public function setMessage($message, $severity = null);
/**
* Indique si cette aide de vue contient des messages actuellement.
*
* @param string $severity Seule sévérité éventuelle à prendre en compte, ex: self::INFO
* @return bool
*/
public function hasMessages($severity = null);
/**
* Retourne les messages courants.
*
* @param string $severity Seule sévérité éventuelle à prendre en compte, ex: self::INFO
* @return array
*/
public function getMessages($severity = null);
/**
* Ajoute un message.
*
* @param string $message Message
* @param string $severity Sévérité, ex: self::INFO
* @return self
*/
public function addMessage($message, $severity = null);
/**
* Ajoute plusieurs messages.
*
* @param array $messages [Sévérité => Message]
* @return self
*/
public function addMessages($messages);
/**
* Supprime tous les messages courants.
*
* @param string $severity Seule sévérité éventuelle à prendre en compte, ex: self::INFO
* @return self
*/
public function clearMessages($severity = null);
}
\ No newline at end of file
<?php
namespace UnicaenApp\Traits;
/**
*
*
* @author Bertrand GAUTHIER <bertrand.gauthier at unicaen.fr>
*/
trait MessageAwareTrait
{
/**
* @var array
*/
protected $messages = [];
/**
* Spécifie les messages courants (remplaçant les messages existants).
*
* @param string|array $messages
* @return self
*/
public function setMessages($messages)
{
$this->messages = array();
foreach ((array)$messages as $severity => $message) {
$this->addMessage($message, $severity);
}
return $this;
}
/**
* Spécifie l'unique message courant.
*
* @param string $message Message
* @param string $severity Ex: MessageAwareInterface::INFO
* @return self
*/
public function setMessage($message, $severity = null)
{
return $this->setMessages(array($severity => $message));
}
/**
* Indique si cette aide de vue contient des messages actuellement.
*
* @param string $severity Seule sévérité éventuelle à prendre en compte, ex: MessageAwareInterface::INFO
* @return bool
*/
public function hasMessages($severity = null)
{
return (boolean)$this->getMessages($severity);
}
/**
* Retourne les messages courants.
*
* @param string $severity Seule sévérité éventuelle à prendre en compte, ex: MessageAwareInterface::INFO
* @return array
*/
public function getMessages($severity = null)
{
if ($severity && array_key_exists($severity, $this->messages)) {
return $this->messages[$severity];
}
return $this->messages;
}
/**
* Retourne les messages courants en une seule chaîne de caractères.
*
* @param string $glue Séparateur à utiliser
* @param string $severity Seule sévérité éventuelle à prendre en compte, ex: MessageAwareInterface::INFO
* @return string
*/
public function getMessage($glue, $severity = null)
{
$messages = $this->messages;
if ($severity && array_key_exists($severity, $this->messages)) {
$messages = $this->messages[$severity];
}
return implode($glue, \UnicaenApp\Util::extractArrayLeafNodes($messages));
}
/**
* Ajoute un message.
*
* @param string $message Message
* @param string $severity Sévérité, ex: MessageAwareInterface::INFO
* @return self
*/
public function addMessage($message, $severity = null)
{
if (!$severity || !is_string($severity)) {
$severity = MessageAwareInterface::INFO;
}
$this->messages[$severity][] = $message;
return $this;
}
/**
* Ajoute plusieurs messages.
*
* @param array $messages [Sévérité => Message]
* @return self
*/
public function addMessages($messages)
{
foreach ($messages as $severity => $message) {
$this->addMessage($message, $severity);
}
return $this;
}
/**
* Supprime tous les messages courants.
*
* @param string $severity Seule sévérité éventuelle à prendre en compte, ex: MessageAwareInterface::INFO
* @return self
*/
public function clearMessages($severity = null)
{
if ($severity && array_key_exists($severity, $this->getMessages())) {
$this->messages[$severity] = array();
}
else {
$this->messages = array();
}
return $this;
}
}
\ No newline at end of file
<?php
namespace UnicaenApp\View\Helper;
use UnicaenApp\Traits\MessageAwareInterface;
use UnicaenApp\Traits\MessageAwareTrait;
use UnicaenApp\Exception\LogicException;
use UnicaenApp\View\Helper\Messenger;
use Zend\View\Helper\AbstractHelper;
......@@ -13,8 +15,10 @@ use Zend\View\Helper\AbstractHelper;
*
* @author Bertrand GAUTHIER <bertrand.gauthier@unicaen.fr>
*/
class Messenger extends AbstractHelper
class Messenger extends AbstractHelper implements MessageAwareInterface
{
use MessageAwareTrait;
const INFO = 'info';
const SUCCESS = 'success';
const WARNING = 'warning';
......@@ -27,12 +31,6 @@ class Messenger extends AbstractHelper
self::ERROR => array('danger', 'exclamation-sign'),
);
/**
* Messages courants
* @var array
*/
protected $messages = array();
/**
* Seule sévérité éventuelle à prendre en compte
* @var string
......@@ -156,21 +154,6 @@ class Messenger extends AbstractHelper
return $this->setMessages(array($severity => $message));
}
/**
* Spécifie les messages courants (remplaçant les messages existants).
*
* @param string|array $messages
* @return Messenger
*/
public function setMessages($messages)
{
$this->messages = array();
foreach ((array)$messages as $severity => $message) {
$this->addMessage($message, $severity);
}
return $this;
}
/**
* Importe les messages courants du FlashMessenger (remplaçant les messages existants).
*
......@@ -184,74 +167,6 @@ class Messenger extends AbstractHelper
return $this;
}
/**
* Spécifie l'unique message courant.
*
* @param string $message Message
* @param string $severity Ex: Messenger::INFO
* @return Messenger
*/
public function setMessage($message, $severity = self::INFO)
{
return $this->setMessages(array($severity => $message));
}
/**
* Indique si cette aide de vue contient des messages actuellement.
*
* @param string $severity Seule sévérité éventuelle à prendre en compte, ex: Messenger::INFO
* @return bool
*/
public function hasMessages($severity = null)
{
return (boolean)$this->getMessages($severity);
}
/**
* Retourne les messages courants.
*
* @param string $severity Seule sévérité éventuelle à prendre en compte, ex: Messenger::INFO
* @return array
*/
public function getMessages($severity = null)
{
if ($severity && array_key_exists($severity, $this->messages)) {
return $this->messages[$severity];
}
return $this->messages;
}
/**
* Ajoute un message.
*
* @param string $message Message
* @param string $severity Sévérité, ex: Messenger::INFO
* @return Messenger
*/
public function addMessage($message, $severity = self::INFO)
{
if (!$severity || !is_string($severity)) {
$severity = self::INFO;
}
$this->messages[$severity][] = $message;
return $this;
}
/**
* Ajoute plusieurs messages.
*
* @param array $messages [Sévérité => Message]
* @return Messenger
*/
public function addMessages($messages)
{
foreach ($messages as $severity => $message) {
$this->addMessage($message, $severity);
}
return $this;
}
/**
* Ajoute les messages courants du FlashMessenger.
*
......@@ -264,23 +179,6 @@ class Messenger extends AbstractHelper
return $this;
}
/**
* Supprime tous les messages courants.
*
* @param string $severity Seule sévérité éventuelle à prendre en compte, ex: Messenger::INFO
* @return Messenger
*/
public function clearMessages($severity = null)
{
if ($severity && array_key_exists($severity, $this->getMessages())) {
$this->messages[$severity] = array();
}
else {
$this->messages = array();
}
return $this;
}
/**
* Active ou non l'affichage de l'icône.
*
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment