Messages.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\AdminNotification\Block\System;
  7. class Messages extends \Magento\Backend\Block\Template
  8. {
  9. /**
  10. * Message list
  11. *
  12. * @var \Magento\AdminNotification\Model\ResourceModel\System\Message\Collection\Synchronized
  13. */
  14. protected $_messages;
  15. /**
  16. * @var \Magento\Framework\Json\Helper\Data
  17. * @deprecated 100.3.0
  18. */
  19. protected $jsonHelper;
  20. /**
  21. * @var \Magento\Framework\Serialize\Serializer\Json
  22. */
  23. private $serializer;
  24. /**
  25. * @param \Magento\Backend\Block\Template\Context $context
  26. * @param \Magento\AdminNotification\Model\ResourceModel\System\Message\Collection\Synchronized $messages
  27. * @param \Magento\Framework\Json\Helper\Data $jsonHelper
  28. * @param array $data
  29. * @param \Magento\Framework\Serialize\Serializer\Json|null $serializer
  30. */
  31. public function __construct(
  32. \Magento\Backend\Block\Template\Context $context,
  33. \Magento\AdminNotification\Model\ResourceModel\System\Message\Collection\Synchronized $messages,
  34. \Magento\Framework\Json\Helper\Data $jsonHelper,
  35. array $data = [],
  36. \Magento\Framework\Serialize\Serializer\Json $serializer = null
  37. ) {
  38. $this->jsonHelper = $jsonHelper;
  39. parent::__construct($context, $data);
  40. $this->_messages = $messages;
  41. $this->serializer = $serializer ?: \Magento\Framework\App\ObjectManager::getInstance()
  42. ->get(\Magento\Framework\Serialize\Serializer\Json::class);
  43. }
  44. /**
  45. * Prepare html output
  46. *
  47. * @return string
  48. */
  49. protected function _toHtml()
  50. {
  51. if (count($this->_messages->getItems())) {
  52. return parent::_toHtml();
  53. }
  54. return '';
  55. }
  56. /**
  57. * Retrieve message list
  58. *
  59. * @return \Magento\Framework\Notification\MessageInterface[]
  60. */
  61. public function getLastCritical()
  62. {
  63. $items = array_values($this->_messages->getItems());
  64. if (isset(
  65. $items[0]
  66. ) && $items[0]->getSeverity() == \Magento\Framework\Notification\MessageInterface::SEVERITY_CRITICAL
  67. ) {
  68. return $items[0];
  69. }
  70. return null;
  71. }
  72. /**
  73. * Retrieve number of critical messages
  74. *
  75. * @return int
  76. */
  77. public function getCriticalCount()
  78. {
  79. return $this->_messages->getCountBySeverity(
  80. \Magento\Framework\Notification\MessageInterface::SEVERITY_CRITICAL
  81. );
  82. }
  83. /**
  84. * Retrieve number of major messages
  85. *
  86. * @return int
  87. */
  88. public function getMajorCount()
  89. {
  90. return $this->_messages->getCountBySeverity(
  91. \Magento\Framework\Notification\MessageInterface::SEVERITY_MAJOR
  92. );
  93. }
  94. /**
  95. * Check whether system messages are present
  96. *
  97. * @return bool
  98. */
  99. public function hasMessages()
  100. {
  101. return (bool)count($this->_messages->getItems());
  102. }
  103. /**
  104. * Retrieve message list url
  105. *
  106. * @return string
  107. */
  108. protected function _getMessagesUrl()
  109. {
  110. return $this->getUrl('adminhtml/system_message/list');
  111. }
  112. /**
  113. * Initialize system message dialog widget
  114. *
  115. * @return string
  116. */
  117. public function getSystemMessageDialogJson()
  118. {
  119. return $this->serializer->serialize(
  120. [
  121. 'systemMessageDialog' => [
  122. 'buttons' => [],
  123. 'modalClass' => 'ui-dialog-active ui-popup-message modal-system-messages',
  124. 'ajaxUrl' => $this->_getMessagesUrl()
  125. ],
  126. ]
  127. );
  128. }
  129. }