123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\AdminNotification\Model\ResourceModel\System\Message;
- /**
- * @api
- * @since 100.0.2
- */
- class Collection extends \Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection
- {
- /**
- * System message list
- *
- * @var \Magento\Framework\Notification\MessageList
- */
- protected $_messageList;
- /**
- * Number of messages by severity
- *
- * @var array
- */
- protected $_countBySeverity = [];
- /**
- * @param \Magento\Framework\Data\Collection\EntityFactory $entityFactory
- * @param \Psr\Log\LoggerInterface $logger
- * @param \Magento\Framework\Data\Collection\Db\FetchStrategyInterface $fetchStrategy
- * @param \Magento\Framework\Event\ManagerInterface $eventManager
- * @param \Magento\Framework\Notification\MessageList $messageList
- * @param mixed $connection
- * @param \Magento\Framework\Model\ResourceModel\Db\AbstractDb $resource
- */
- public function __construct(
- \Magento\Framework\Data\Collection\EntityFactory $entityFactory,
- \Psr\Log\LoggerInterface $logger,
- \Magento\Framework\Data\Collection\Db\FetchStrategyInterface $fetchStrategy,
- \Magento\Framework\Event\ManagerInterface $eventManager,
- \Magento\Framework\Notification\MessageList $messageList,
- \Magento\Framework\DB\Adapter\AdapterInterface $connection = null,
- \Magento\Framework\Model\ResourceModel\Db\AbstractDb $resource = null
- ) {
- $this->_messageList = $messageList;
- parent::__construct($entityFactory, $logger, $fetchStrategy, $eventManager, $connection, $resource);
- }
- /**
- * Resource collection initialization
- *
- * @return void
- */
- protected function _construct()
- {
- $this->_init(
- \Magento\AdminNotification\Model\System\Message::class,
- \Magento\AdminNotification\Model\ResourceModel\System\Message::class
- );
- }
- /**
- * Initialize db query
- *
- * @return void
- */
- protected function _initSelect()
- {
- parent::_initSelect();
- $this->addOrder('severity', self::SORT_ORDER_ASC)->addOrder('created_at');
- }
- /**
- * Initialize system messages after load
- *
- * @return void
- */
- protected function _afterLoad()
- {
- foreach ($this->_items as $key => $item) {
- $message = $this->_messageList->getMessageByIdentity($item->getIdentity());
- if ($message) {
- $item->setText($message->getText());
- if (array_key_exists($message->getSeverity(), $this->_countBySeverity)) {
- $this->_countBySeverity[$message->getSeverity()]++;
- } else {
- $this->_countBySeverity[$message->getSeverity()] = 1;
- }
- } else {
- unset($this->_items[$key]);
- }
- }
- }
- /**
- * Set message severity filter
- *
- * @param int $severity
- * @return $this
- */
- public function setSeverity($severity)
- {
- $this->addFieldToFilter('severity', ['eq' => $severity * 1]);
- return $this;
- }
- /**
- * Retrieve number of messages by severity
- *
- * @param int $severity
- * @return int
- */
- public function getCountBySeverity($severity)
- {
- return isset($this->_countBySeverity[$severity]) ? $this->_countBySeverity[$severity] : 0;
- }
- }
|