_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; } }