mirror of
https://github.com/bdnugget/magento2.git
synced 2026-11-07 09:17:35 +00:00
119 lines
3.5 KiB
PHP
119 lines
3.5 KiB
PHP
<?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;
|
|
}
|
|
}
|