PageRenderTime 21ms CodeModel.GetById 22ms RepoModel.GetById 1ms app.codeStats 0ms

/app/code/core/Mage/Core/Block/Messages.php

https://gitlab.com/LisovyiEvhenii/ismextensions
PHP | 309 lines | 133 code | 25 blank | 151 comment | 4 complexity | 81e21fc3d8782d4ddb9f82847f79f78d MD5 | raw file
  1. <?php
  2. /**
  3. * Magento
  4. *
  5. * NOTICE OF LICENSE
  6. *
  7. * This source file is subject to the Open Software License (OSL 3.0)
  8. * that is bundled with this package in the file LICENSE.txt.
  9. * It is also available through the world-wide-web at this URL:
  10. * http://opensource.org/licenses/osl-3.0.php
  11. * If you did not receive a copy of the license and are unable to
  12. * obtain it through the world-wide-web, please send an email
  13. * to license@magento.com so we can send you a copy immediately.
  14. *
  15. * DISCLAIMER
  16. *
  17. * Do not edit or add to this file if you wish to upgrade Magento to newer
  18. * versions in the future. If you wish to customize Magento for your
  19. * needs please refer to http://www.magento.com for more information.
  20. *
  21. * @category Mage
  22. * @package Mage_Core
  23. * @copyright Copyright (c) 2006-2016 X.commerce, Inc. and affiliates (http://www.magento.com)
  24. * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
  25. */
  26. /**
  27. * Messages block
  28. *
  29. * @category Mage
  30. * @package Mage_Core
  31. * @author Magento Core Team <core@magentocommerce.com>
  32. */
  33. class Mage_Core_Block_Messages extends Mage_Core_Block_Template
  34. {
  35. /**
  36. * Messages collection
  37. *
  38. * @var Mage_Core_Model_Message_Collection
  39. */
  40. protected $_messages;
  41. /**
  42. * Store first level html tag name for messages html output
  43. *
  44. * @var string
  45. */
  46. protected $_messagesFirstLevelTagName = 'ul';
  47. /**
  48. * Store second level html tag name for messages html output
  49. *
  50. * @var string
  51. */
  52. protected $_messagesSecondLevelTagName = 'li';
  53. /**
  54. * Store content wrapper html tag name for messages html output
  55. *
  56. * @var string
  57. */
  58. protected $_messagesContentWrapperTagName = 'span';
  59. /**
  60. * Flag which require message text escape
  61. *
  62. * @var bool
  63. */
  64. protected $_escapeMessageFlag = false;
  65. /**
  66. * Storage for used types of message storages
  67. *
  68. * @var array
  69. */
  70. protected $_usedStorageTypes = array('core/session');
  71. public function _prepareLayout()
  72. {
  73. $this->addMessages(Mage::getSingleton('core/session')->getMessages(true));
  74. parent::_prepareLayout();
  75. }
  76. /**
  77. * Set message escape flag
  78. * @param bool $flag
  79. * @return Mage_Core_Block_Messages
  80. */
  81. public function setEscapeMessageFlag($flag)
  82. {
  83. $this->_escapeMessageFlag = $flag;
  84. return $this;
  85. }
  86. /**
  87. * Set messages collection
  88. *
  89. * @param Mage_Core_Model_Message_Collection $messages
  90. * @return Mage_Core_Block_Messages
  91. */
  92. public function setMessages(Mage_Core_Model_Message_Collection $messages)
  93. {
  94. $this->_messages = $messages;
  95. return $this;
  96. }
  97. /**
  98. * Add messages to display
  99. *
  100. * @param Mage_Core_Model_Message_Collection $messages
  101. * @return Mage_Core_Block_Messages
  102. */
  103. public function addMessages(Mage_Core_Model_Message_Collection $messages)
  104. {
  105. foreach ($messages->getItems() as $message) {
  106. $this->getMessageCollection()->add($message);
  107. }
  108. return $this;
  109. }
  110. /**
  111. * Retrieve messages collection
  112. *
  113. * @return Mage_Core_Model_Message_Collection
  114. */
  115. public function getMessageCollection()
  116. {
  117. if (!($this->_messages instanceof Mage_Core_Model_Message_Collection)) {
  118. $this->_messages = Mage::getModel('core/message_collection');
  119. }
  120. return $this->_messages;
  121. }
  122. /**
  123. * Adding new message to message collection
  124. *
  125. * @param Mage_Core_Model_Message_Abstract $message
  126. * @return Mage_Core_Block_Messages
  127. */
  128. public function addMessage(Mage_Core_Model_Message_Abstract $message)
  129. {
  130. $this->getMessageCollection()->add($message);
  131. return $this;
  132. }
  133. /**
  134. * Adding new error message
  135. *
  136. * @param string $message
  137. * @return Mage_Core_Block_Messages
  138. */
  139. public function addError($message)
  140. {
  141. $this->addMessage(Mage::getSingleton('core/message')->error($message));
  142. return $this;
  143. }
  144. /**
  145. * Adding new warning message
  146. *
  147. * @param string $message
  148. * @return Mage_Core_Block_Messages
  149. */
  150. public function addWarning($message)
  151. {
  152. $this->addMessage(Mage::getSingleton('core/message')->warning($message));
  153. return $this;
  154. }
  155. /**
  156. * Adding new nitice message
  157. *
  158. * @param string $message
  159. * @return Mage_Core_Block_Messages
  160. */
  161. public function addNotice($message)
  162. {
  163. $this->addMessage(Mage::getSingleton('core/message')->notice($message));
  164. return $this;
  165. }
  166. /**
  167. * Adding new success message
  168. *
  169. * @param string $message
  170. * @return Mage_Core_Block_Messages
  171. */
  172. public function addSuccess($message)
  173. {
  174. $this->addMessage(Mage::getSingleton('core/message')->success($message));
  175. return $this;
  176. }
  177. /**
  178. * Retrieve messages array by message type
  179. *
  180. * @param string $type
  181. * @return array
  182. */
  183. public function getMessages($type=null)
  184. {
  185. return $this->getMessageCollection()->getItems($type);
  186. }
  187. /**
  188. * Retrieve messages in HTML format
  189. *
  190. * @param string $type
  191. * @return string
  192. */
  193. public function getHtml($type=null)
  194. {
  195. $html = '<' . $this->_messagesFirstLevelTagName . ' id="admin_messages">';
  196. foreach ($this->getMessages($type) as $message) {
  197. $html.= '<' . $this->_messagesSecondLevelTagName . ' class="'.$message->getType().'-msg">'
  198. . ($this->_escapeMessageFlag) ? $this->escapeHtml($message->getText()) : $message->getText()
  199. . '</' . $this->_messagesSecondLevelTagName . '>';
  200. }
  201. $html .= '</' . $this->_messagesFirstLevelTagName . '>';
  202. return $html;
  203. }
  204. /**
  205. * Retrieve messages in HTML format grouped by type
  206. *
  207. * @param string $type
  208. * @return string
  209. */
  210. public function getGroupedHtml()
  211. {
  212. $types = array(
  213. Mage_Core_Model_Message::ERROR,
  214. Mage_Core_Model_Message::WARNING,
  215. Mage_Core_Model_Message::NOTICE,
  216. Mage_Core_Model_Message::SUCCESS
  217. );
  218. $html = '';
  219. foreach ($types as $type) {
  220. if ( $messages = $this->getMessages($type) ) {
  221. if ( !$html ) {
  222. $html .= '<' . $this->_messagesFirstLevelTagName . ' class="messages">';
  223. }
  224. $html .= '<' . $this->_messagesSecondLevelTagName . ' class="' . $type . '-msg">';
  225. $html .= '<' . $this->_messagesFirstLevelTagName . '>';
  226. foreach ( $messages as $message ) {
  227. $html.= '<' . $this->_messagesSecondLevelTagName . '>';
  228. $html.= '<' . $this->_messagesContentWrapperTagName . '>';
  229. $html.= ($this->_escapeMessageFlag) ? $this->escapeHtml($message->getText()) : $message->getText();
  230. $html.= '</' . $this->_messagesContentWrapperTagName . '>';
  231. $html.= '</' . $this->_messagesSecondLevelTagName . '>';
  232. }
  233. $html .= '</' . $this->_messagesFirstLevelTagName . '>';
  234. $html .= '</' . $this->_messagesSecondLevelTagName . '>';
  235. }
  236. }
  237. if ( $html) {
  238. $html .= '</' . $this->_messagesFirstLevelTagName . '>';
  239. }
  240. return $html;
  241. }
  242. protected function _toHtml()
  243. {
  244. return $this->getGroupedHtml();
  245. }
  246. /**
  247. * Set messages first level html tag name for output messages as html
  248. *
  249. * @param string $tagName
  250. */
  251. public function setMessagesFirstLevelTagName($tagName)
  252. {
  253. $this->_messagesFirstLevelTagName = $tagName;
  254. }
  255. /**
  256. * Set messages first level html tag name for output messages as html
  257. *
  258. * @param string $tagName
  259. */
  260. public function setMessagesSecondLevelTagName($tagName)
  261. {
  262. $this->_messagesSecondLevelTagName = $tagName;
  263. }
  264. /**
  265. * Get cache key informative items
  266. *
  267. * @return array
  268. */
  269. public function getCacheKeyInfo()
  270. {
  271. return array(
  272. 'storage_types' => serialize($this->_usedStorageTypes)
  273. );
  274. }
  275. /**
  276. * Add used storage type
  277. *
  278. * @param string $type
  279. */
  280. public function addStorageType($type)
  281. {
  282. $this->_usedStorageTypes[] = $type;
  283. }
  284. }