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