/vendor/zendframework/zend-view/src/Helper/FlashMessenger.php
https://github.com/tmccormi/openemr · PHP · 353 lines · 174 code · 37 blank · 142 comment · 15 complexity · f6c83669b36ad01523d171545db2bd22 MD5 · raw file
- <?php
- /**
- * @link http://github.com/zendframework/zend-view for the canonical source repository
- * @copyright Copyright (c) 2005-2016 Zend Technologies USA Inc. (http://www.zend.com)
- * @license http://framework.zend.com/license/new-bsd New BSD License
- */
- namespace Zend\View\Helper;
- use Zend\Mvc\Controller\Plugin\FlashMessenger as V2PluginFlashMessenger;
- use Zend\Mvc\Plugin\FlashMessenger\FlashMessenger as PluginFlashMessenger;
- use Zend\View\Exception\InvalidArgumentException;
- /**
- * Helper to proxy the plugin flash messenger
- *
- * Duck-types against Zend\I18n\Translator\TranslatorAwareInterface.
- *
- * @deprecated This helper will be removed in version 3.0 of this component.
- * At that time, it will be available in zendframework/zend-mvc-plugin-flashmessenger.
- */
- class FlashMessenger extends AbstractHelper
- {
- use TranslatorAwareTrait;
- /**
- * Default attributes for the open format tag
- *
- * @todo For version 3, have the keys reference the class constants in the
- * FlashMessenger plugin.
- * @var array
- */
- protected $classMessages = [
- 'info' => 'info',
- 'error' => 'error',
- 'success' => 'success',
- 'default' => 'default',
- 'warning' => 'warning',
- ];
- /**
- * Templates for the open/close/separators for message tags
- *
- * @var string
- */
- protected $messageCloseString = '</li></ul>';
- protected $messageOpenFormat = '<ul%s><li>';
- protected $messageSeparatorString = '</li><li>';
- /**
- * Flag whether to escape messages
- *
- * @var bool
- */
- protected $autoEscape = true;
- /**
- * Html escape helper
- *
- * @var EscapeHtml
- */
- protected $escapeHtmlHelper;
- /**
- * Flash messenger plugin
- *
- * @var V2PluginFlashMessenger|PluginFlashMessenger
- */
- protected $pluginFlashMessenger;
- /**
- * Returns the flash messenger plugin controller
- *
- * @param string|null $namespace
- * @return FlashMessenger|V2PluginFlashMessenger|PluginFlashMessenger
- */
- public function __invoke($namespace = null)
- {
- if (null === $namespace) {
- return $this;
- }
- $flashMessenger = $this->getPluginFlashMessenger();
- return $flashMessenger->getMessagesFromNamespace($namespace);
- }
- /**
- * Proxy the flash messenger plugin controller
- *
- * @param string $method
- * @param array $argv
- * @return mixed
- */
- public function __call($method, $argv)
- {
- $flashMessenger = $this->getPluginFlashMessenger();
- return call_user_func_array([$flashMessenger, $method], $argv);
- }
- /**
- * Render Messages
- *
- * @param string $namespace
- * @param array $classes
- * @param null|bool $autoEscape
- * @return string
- */
- public function render($namespace = 'default', array $classes = [], $autoEscape = null)
- {
- $flashMessenger = $this->getPluginFlashMessenger();
- $messages = $flashMessenger->getMessagesFromNamespace($namespace);
- return $this->renderMessages($namespace, $messages, $classes, $autoEscape);
- }
- /**
- * Render Current Messages
- *
- * @param string $namespace
- * @param array $classes
- * @param bool|null $autoEscape
- * @return string
- */
- public function renderCurrent($namespace = 'default', array $classes = [], $autoEscape = null)
- {
- $flashMessenger = $this->getPluginFlashMessenger();
- $messages = $flashMessenger->getCurrentMessagesFromNamespace($namespace);
- return $this->renderMessages($namespace, $messages, $classes, $autoEscape);
- }
- /**
- * Render Messages
- *
- * @param string $namespace
- * @param array $messages
- * @param array $classes
- * @param bool|null $autoEscape
- * @return string
- */
- protected function renderMessages(
- $namespace = 'default',
- array $messages = [],
- array $classes = [],
- $autoEscape = null
- ) {
- if (empty($messages)) {
- return '';
- }
- // Prepare classes for opening tag
- if (empty($classes)) {
- if (isset($this->classMessages[$namespace])) {
- $classes = $this->classMessages[$namespace];
- } else {
- $classes = $this->classMessages['default'];
- }
- $classes = [$classes];
- }
- if (null === $autoEscape) {
- $autoEscape = $this->getAutoEscape();
- }
- // Flatten message array
- $escapeHtml = $this->getEscapeHtmlHelper();
- $messagesToPrint = [];
- $translator = $this->getTranslator();
- $translatorTextDomain = $this->getTranslatorTextDomain();
- array_walk_recursive(
- $messages,
- function ($item) use (& $messagesToPrint, $escapeHtml, $autoEscape, $translator, $translatorTextDomain) {
- if ($translator !== null) {
- $item = $translator->translate(
- $item,
- $translatorTextDomain
- );
- }
- if ($autoEscape) {
- $messagesToPrint[] = $escapeHtml($item);
- return;
- }
- $messagesToPrint[] = $item;
- }
- );
- if (empty($messagesToPrint)) {
- return '';
- }
- // Generate markup
- $markup = sprintf($this->getMessageOpenFormat(), ' class="' . implode(' ', $classes) . '"');
- $markup .= implode(
- sprintf($this->getMessageSeparatorString(), ' class="' . implode(' ', $classes) . '"'),
- $messagesToPrint
- );
- $markup .= $this->getMessageCloseString();
- return $markup;
- }
- /**
- * Set whether or not auto escaping should be used
- *
- * @param bool $autoEscape
- * @return self
- */
- public function setAutoEscape($autoEscape = true)
- {
- $this->autoEscape = (bool) $autoEscape;
- return $this;
- }
- /**
- * Return whether auto escaping is enabled or disabled
- *
- * return bool
- */
- public function getAutoEscape()
- {
- return $this->autoEscape;
- }
- /**
- * Set the string used to close message representation
- *
- * @param string $messageCloseString
- * @return FlashMessenger
- */
- public function setMessageCloseString($messageCloseString)
- {
- $this->messageCloseString = (string) $messageCloseString;
- return $this;
- }
- /**
- * Get the string used to close message representation
- *
- * @return string
- */
- public function getMessageCloseString()
- {
- return $this->messageCloseString;
- }
- /**
- * Set the formatted string used to open message representation
- *
- * @param string $messageOpenFormat
- * @return FlashMessenger
- */
- public function setMessageOpenFormat($messageOpenFormat)
- {
- $this->messageOpenFormat = (string) $messageOpenFormat;
- return $this;
- }
- /**
- * Get the formatted string used to open message representation
- *
- * @return string
- */
- public function getMessageOpenFormat()
- {
- return $this->messageOpenFormat;
- }
- /**
- * Set the string used to separate messages
- *
- * @param string $messageSeparatorString
- * @return FlashMessenger
- */
- public function setMessageSeparatorString($messageSeparatorString)
- {
- $this->messageSeparatorString = (string) $messageSeparatorString;
- return $this;
- }
- /**
- * Get the string used to separate messages
- *
- * @return string
- */
- public function getMessageSeparatorString()
- {
- return $this->messageSeparatorString;
- }
- /**
- * Set the flash messenger plugin
- *
- * @param V2PluginFlashMessenger|PluginFlashMessenger $pluginFlashMessenger
- * @return FlashMessenger
- * @throws InvalidArgumentException for an invalid $pluginFlashMessenger
- */
- public function setPluginFlashMessenger($pluginFlashMessenger)
- {
- if (! $pluginFlashMessenger instanceof V2PluginFlashMessenger
- && ! $pluginFlashMessenger instanceof PluginFlashMessenger
- ) {
- throw new InvalidArgumentException(sprintf(
- '%s expects either a %s or %s instance; received %s',
- __METHOD__,
- V2PluginFlashMessenger::class,
- PluginFlashMessenger::class,
- (is_object($pluginFlashMessenger) ? get_class($pluginFlashMessenger) : gettype($pluginFlashMessenger))
- ));
- }
- $this->pluginFlashMessenger = $pluginFlashMessenger;
- return $this;
- }
- /**
- * Get the flash messenger plugin
- *
- * @return V2PluginFlashMessenger|PluginFlashMessenger
- */
- public function getPluginFlashMessenger()
- {
- if (null === $this->pluginFlashMessenger) {
- $this->setPluginFlashMessenger(
- class_exists(PluginFlashMessenger::class)
- ? new PluginFlashMessenger()
- : new V2PluginFlashMessenger()
- );
- }
- return $this->pluginFlashMessenger;
- }
- /**
- * Retrieve the escapeHtml helper
- *
- * @return EscapeHtml
- */
- protected function getEscapeHtmlHelper()
- {
- if ($this->escapeHtmlHelper) {
- return $this->escapeHtmlHelper;
- }
- if (method_exists($this->getView(), 'plugin')) {
- $this->escapeHtmlHelper = $this->view->plugin('escapehtml');
- }
- if (! $this->escapeHtmlHelper instanceof EscapeHtml) {
- $this->escapeHtmlHelper = new EscapeHtml();
- }
- return $this->escapeHtmlHelper;
- }
- }