/xampp/htdocs/magento/app/code/core/Mage/AdminNotification/Model/Feed.php
https://github.com/edmondscommerce/XAMPP-Magento-Demo-Site · PHP · 194 lines · 93 code · 21 blank · 80 comment · 7 complexity · e8b7afa87f3239859e5814a0e57fa9f6 MD5 · raw file
- <?php
- /**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @category Mage
- * @package Mage_AdminNotification
- * @copyright Copyright (c) 2008 Irubin Consulting Inc. DBA Varien (http://www.varien.com)
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
- */
- /**
- * AdminNotification Feed model
- *
- * @category Mage
- * @package Mage_AdminNotification
- * @author Magento Core Team <core@magentocommerce.com>
- */
- class Mage_AdminNotification_Model_Feed extends Mage_Core_Model_Abstract
- {
- const XML_USE_HTTPS_PATH = 'system/adminnotification/use_https';
- const XML_FEED_URL_PATH = 'system/adminnotification/feed_url';
- const XML_FREQUENCY_PATH = 'system/adminnotification/frequency';
- const XML_LAST_UPDATE_PATH = 'system/adminnotification/last_update';
- /**
- * Feed url
- *
- * @var string
- */
- protected $_feedUrl;
- /**
- * Init model
- *
- */
- protected function _construct()
- {}
- /**
- * Retrieve feed url
- *
- * @return string
- */
- public function getFeedUrl()
- {
- if (is_null($this->_feedUrl)) {
- $this->_feedUrl = (Mage::getStoreConfigFlag(self::XML_USE_HTTPS_PATH) ? 'https://' : 'http://')
- . Mage::getStoreConfig(self::XML_FEED_URL_PATH);
- }
- return $this->_feedUrl;
- }
- /**
- * Check feed for modification
- *
- * @return Mage_AdminNotification_Model_Feed
- */
- public function checkUpdate()
- {
- if (($this->getFrequency() + $this->getLastUpdate()) > time()) {
- return $this;
- }
- $feedData = array();
- $feedXml = $this->getFeedData();
- if ($feedXml && $feedXml->channel && $feedXml->channel->item) {
- foreach ($feedXml->channel->item as $item) {
- $feedData[] = array(
- 'severity' => (int)$item->severity,
- 'date_added' => $this->getDate((string)$item->pubDate),
- 'title' => (string)$item->title,
- 'description' => (string)$item->description,
- 'url' => (string)$item->link,
- );
- }
- if ($feedData) {
- Mage::getModel('adminnotification/inbox')->parse(array_reverse($feedData));
- }
- }
- $this->setLastUpdate();
- return $this;
- }
- /**
- * Retrieve DB date from RSS date
- *
- * @param string $rssDate
- * @return string YYYY-MM-DD YY:HH:SS
- */
- public function getDate($rssDate)
- {
- return gmdate('Y-m-d H:i:s', strtotime($rssDate));
- }
- /**
- * Retrieve Update Frequency
- *
- * @return int
- */
- public function getFrequency()
- {
- return Mage::getStoreConfig(self::XML_FREQUENCY_PATH) * 3600;
- }
- /**
- * Retrieve Last update time
- *
- * @return int
- */
- public function getLastUpdate()
- {
- return Mage::app()->loadCache('admin_notifications_lastcheck');
- // return Mage::getStoreConfig(self::XML_LAST_UPDATE_PATH);
- }
- /**
- * Set last update time (now)
- *
- * @return Mage_AdminNotification_Model_Feed
- */
- public function setLastUpdate()
- {
- Mage::app()->saveCache(time(), 'admin_notifications_lastcheck');
- // $config = Mage::getModel('core/config');
- // /* @var $config Mage_Core_Model_Config */
- // $config->saveConfig(self::XML_LAST_UPDATE_PATH, time());
- return $this;
- }
- /**
- * Retrieve feed data as XML element
- *
- * @return SimpleXMLElement
- */
- public function getFeedData()
- {
- $curl = new Varien_Http_Adapter_Curl();
- $curl->setConfig(array(
- 'timeout' => 2
- ));
- $curl->write(Zend_Http_Client::GET, $this->getFeedUrl(), '1.0');
- $data = $curl->read();
- if ($data === false) {
- return false;
- }
- $data = preg_split('/^\r?$/m', $data, 2);
- $data = trim($data[1]);
- $curl->close();
- try {
- $xml = new SimpleXMLElement($data);
- }
- catch (Exception $e) {
- return false;
- }
- return $xml;
- }
- public function getFeedXml()
- {
- try {
- $data = $this->getFeedData();
- $xml = new SimpleXMLElement($data);
- }
- catch (Exception $e) {
- $xml = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8" ?>');
- }
- return $xml;
- }
- }