123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- <?php
- /**
- * Copyright © 2015 Ihor Vansach (ihor@magefan.com). All rights reserved.
- * See LICENSE.txt for license details (http://opensource.org/licenses/osl-3.0.php).
- *
- * Glory to Ukraine! Glory to the heroes!
- */
- namespace Magefan\Blog\Model;
- use Magento\Framework\Config\ConfigOptionsListConstants;
- /**
- * Blog admin notification feed model
- */
- class AdminNotificationFeed extends \Magento\AdminNotification\Model\Feed
- {
- /**
- * @var \Magento\Backend\Model\Auth\Session
- */
- protected $_backendAuthSession;
- /**
- * @var \Magento\Framework\Module\ModuleListInterface
- */
- protected $_moduleList;
- /**
- * @var \Magento\Framework\Module\Manager
- */
- protected $_moduleManager;
- /**
- * @param \Magento\Framework\Model\Context $context
- * @param \Magento\Framework\Registry $registry
- * @param \Magento\Backend\App\ConfigInterface $backendConfig
- * @param InboxFactory $inboxFactory
- * @param \Magento\Backend\Model\Auth\Session $backendAuthSession
- * @param \Magento\Framework\Module\ModuleListInterface $moduleList
- * @param \Magento\Framework\Module\Manager $moduleManager,
- * @param \Magento\Framework\HTTP\Adapter\CurlFactory $curlFactory
- * @param \Magento\Framework\App\DeploymentConfig $deploymentConfig
- * @param \Magento\Framework\App\ProductMetadataInterface $productMetadata
- * @param \Magento\Framework\UrlInterface $urlBuilder
- * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
- * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
- * @param array $data
- * @SuppressWarnings(PHPMD.ExcessiveParameterList)
- */
- public function __construct(
- \Magento\Framework\Model\Context $context,
- \Magento\Framework\Registry $registry,
- \Magento\Backend\App\ConfigInterface $backendConfig,
- \Magento\AdminNotification\Model\InboxFactory $inboxFactory,
- \Magento\Backend\Model\Auth\Session $backendAuthSession,
- \Magento\Framework\Module\ModuleListInterface $moduleList,
- \Magento\Framework\Module\Manager $moduleManager,
- \Magento\Framework\HTTP\Adapter\CurlFactory $curlFactory,
- \Magento\Framework\App\DeploymentConfig $deploymentConfig,
- \Magento\Framework\App\ProductMetadataInterface $productMetadata,
- \Magento\Framework\UrlInterface $urlBuilder,
- \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
- \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
- array $data = []
- ) {
- parent::__construct($context, $registry, $backendConfig, $inboxFactory, $curlFactory, $deploymentConfig, $productMetadata, $urlBuilder, $resource, $resourceCollection, $data);
- $this->_backendAuthSession = $backendAuthSession;
- $this->_moduleList = $moduleList;
- $this->_moduleManager = $moduleManager;
- }
- /**
- * Retrieve feed url
- *
- * @return string
- */
- public function getFeedUrl()
- {
- if (is_null($this->_feedUrl)) {
- $this->_feedUrl = 'http://mage'.'fan'
- .'.c'.'om/community/notifications'.'/'.'feed/';
- }
- $urlInfo = parse_url($this->urlBuilder->getBaseUrl());
- $domain = isset($urlInfo['host']) ? $urlInfo['host'] : '';
- $url = $this->_feedUrl . 'domain/' . urlencode($domain);
- $modulesParams = [];
- foreach($this->getMagefanModules() as $key => $module) {
- $key = str_replace('Magefan_', '', $key);
- $modulesParams[] = $key . ',' . $module['setup_version'];
- }
- if (count($modulesParams)) {
- $url .= '/modules/'.base64_encode(implode(';', $modulesParams));
- }
- return $url;
- }
- /**
- * Get Magefan Modules Info
- *
- * @return $this
- */
- protected function getMagefanModules()
- {
- $modules = [];
- foreach($this->_moduleList->getAll() as $moduleName => $module) {
- if ( strpos($moduleName, 'Magefan_') !== false && $this->_moduleManager->isEnabled($moduleName) ) {
- $modules[$moduleName] = $module;
- }
- }
- return $modules;
- }
- /**
- * Check feed for modification
- *
- * @return $this
- */
- public function checkUpdate()
- {
- $session = $this->_backendAuthSession;
- $time = time();
- $frequency = $this->getFrequency();
- if (($frequency + $session->getMfNoticeLastUpdate() > $time)
- || ($frequency + $this->getLastUpdate() > $time)
- ) {
- return $this;
- }
- $session->setMfNoticeLastUpdate($time);
- return parent::checkUpdate();
- }
- /**
- * Retrieve Update Frequency
- *
- * @return int
- */
- public function getFrequency()
- {
- return 86400;
- }
- /**
- * Retrieve Last update time
- *
- * @return int
- */
- public function getLastUpdate()
- {
- return $this->_cacheManager->load('magefan_admin_notifications_lastcheck');
- }
- /**
- * Set last update time (now)
- *
- * @return $this
- */
- public function setLastUpdate()
- {
- $this->_cacheManager->save(time(), 'magefan_admin_notifications_lastcheck');
- return $this;
- }
- }
|