Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Public Member Functions | Data Fields | Protected Member Functions | Protected Attributes
Feed Class Reference
Inheritance diagram for Feed:
AbstractModel DataObject

Public Member Functions

 __construct (\Magento\Framework\Model\Context $context, \Magento\Framework\Registry $registry, \Magento\Backend\App\ConfigInterface $backendConfig, \Magento\AdminNotification\Model\InboxFactory $inboxFactory, \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=[])
 
 getFeedUrl ()
 
 checkUpdate ()
 
 getFrequency ()
 
 getLastUpdate ()
 
 setLastUpdate ()
 
 getFeedData ()
 
 getFeedXml ()
 
- Public Member Functions inherited from AbstractModel
 __construct (\Magento\Framework\Model\Context $context, \Magento\Framework\Registry $registry, \Magento\Framework\Model\ResourceModel\AbstractResource $resource=null, \Magento\Framework\Data\Collection\AbstractDb $resourceCollection=null, array $data=[])
 
 __sleep ()
 
 __wakeup ()
 
 setIdFieldName ($name)
 
 getIdFieldName ()
 
 getId ()
 
 setId ($value)
 
 isDeleted ($isDeleted=null)
 
 hasDataChanges ()
 
 setData ($key, $value=null)
 
 unsetData ($key=null)
 
 setDataChanges ($value)
 
 getOrigData ($key=null)
 
 setOrigData ($key=null, $data=null)
 
 dataHasChangedFor ($field)
 
 getResourceName ()
 
 getResourceCollection ()
 
 getCollection ()
 
 load ($modelId, $field=null)
 
 beforeLoad ($identifier, $field=null)
 
 afterLoad ()
 
 isSaveAllowed ()
 
 setHasDataChanges ($flag)
 
 save ()
 
 afterCommitCallback ()
 
 isObjectNew ($flag=null)
 
 beforeSave ()
 
 validateBeforeSave ()
 
 getCacheTags ()
 
 cleanModelCache ()
 
 afterSave ()
 
 delete ()
 
 beforeDelete ()
 
 afterDelete ()
 
 afterDeleteCommit ()
 
 getResource ()
 
 getEntityId ()
 
 setEntityId ($entityId)
 
 clearInstance ()
 
 getStoredData ()
 
 getEventPrefix ()
 
- Public Member Functions inherited from DataObject
 __construct (array $data=[])
 
 addData (array $arr)
 
 setData ($key, $value=null)
 
 unsetData ($key=null)
 
 getData ($key='', $index=null)
 
 getDataByPath ($path)
 
 getDataByKey ($key)
 
 setDataUsingMethod ($key, $args=[])
 
 getDataUsingMethod ($key, $args=null)
 
 hasData ($key='')
 
 toArray (array $keys=[])
 
 convertToArray (array $keys=[])
 
 toXml (array $keys=[], $rootName='item', $addOpenTag=false, $addCdata=true)
 
 convertToXml (array $arrAttributes=[], $rootName='item', $addOpenTag=false, $addCdata=true)
 
 toJson (array $keys=[])
 
 convertToJson (array $keys=[])
 
 toString ($format='')
 
 __call ($method, $args)
 
 isEmpty ()
 
 serialize ($keys=[], $valueSeparator='=', $fieldSeparator=' ', $quote='"')
 
 debug ($data=null, &$objects=[])
 
 offsetSet ($offset, $value)
 
 offsetExists ($offset)
 
 offsetUnset ($offset)
 
 offsetGet ($offset)
 

Data Fields

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'
 

Protected Member Functions

 _construct ()
 
- Protected Member Functions inherited from AbstractModel
 _construct ()
 
 _init ($resourceModel)
 
 _setResourceModel ($resourceName, $collectionName=null)
 
 _getResource ()
 
 _getEventData ()
 
 _beforeLoad ($modelId, $field=null)
 
 _afterLoad ()
 
 _hasModelChanged ()
 
 _getValidatorBeforeSave ()
 
 _createValidatorBeforeSave ()
 
 _getValidationRulesBeforeSave ()
 
 _clearReferences ()
 
 _clearData ()
 
- Protected Member Functions inherited from DataObject
 _getData ($key)
 
 _underscore ($name)
 

Protected Attributes

 $_feedUrl
 
 $_backendConfig
 
 $_inboxFactory
 
 $curlFactory
 
 $_deploymentConfig
 
 $productMetadata
 
 $urlBuilder
 
- Protected Attributes inherited from AbstractModel
 $_eventPrefix = 'core_abstract'
 
 $_eventObject = 'object'
 
 $_idFieldName = 'id'
 
 $_hasDataChanges = false
 
 $_origData
 
 $_isDeleted = false
 
 $_resource
 
 $_resourceCollection
 
 $_resourceName
 
 $_collectionName
 
 $_cacheTag = false
 
 $_dataSaveAllowed = true
 
 $_isObjectNew = null
 
 $_validatorBeforeSave = null
 
 $_eventManager
 
 $_cacheManager
 
 $_registry
 
 $_logger
 
 $_appState
 
 $_actionValidator
 
 $storedData = []
 
- Protected Attributes inherited from DataObject
 $_data = []
 

Additional Inherited Members

- Static Protected Attributes inherited from DataObject
static $_underscoreCache = []
 

Detailed Description

AdminNotification Feed model

Author
Magento Core Team core@.nosp@m.mage.nosp@m.ntoco.nosp@m.mmer.nosp@m.ce.co.nosp@m.m @SuppressWarnings(PHPMD.CouplingBetweenObjects) @api
Since
100.0.2

Definition at line 18 of file Feed.php.

Constructor & Destructor Documentation

◆ __construct()

__construct ( \Magento\Framework\Model\Context  $context,
\Magento\Framework\Registry  $registry,
\Magento\Backend\App\ConfigInterface  $backendConfig,
\Magento\AdminNotification\Model\InboxFactory  $inboxFactory,
\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 = [] 
)
Parameters
\Magento\Framework\Model\Context$context
\Magento\Framework\Registry$registry
\Magento\Backend\App\ConfigInterface$backendConfig
InboxFactory$inboxFactory
\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
\Magento\Framework\Data\Collection\AbstractDb$resourceCollection
array$data@SuppressWarnings(PHPMD.ExcessiveParameterList)

Definition at line 82 of file Feed.php.

94  {
95  parent::__construct($context, $registry, $resource, $resourceCollection, $data);
96  $this->_backendConfig = $backendConfig;
97  $this->_inboxFactory = $inboxFactory;
98  $this->curlFactory = $curlFactory;
99  $this->_deploymentConfig = $deploymentConfig;
100  $this->productMetadata = $productMetadata;
101  $this->urlBuilder = $urlBuilder;
102  }
$resource
Definition: bulk.php:12
$deploymentConfig

Member Function Documentation

◆ _construct()

_construct ( )
protected

Init model

Returns
void

Definition at line 109 of file Feed.php.

110  {
111  }

◆ checkUpdate()

checkUpdate ( )

Check feed for modification

Returns
$this

Definition at line 132 of file Feed.php.

133  {
134  if ($this->getFrequency() + $this->getLastUpdate() > time()) {
135  return $this;
136  }
137 
138  $feedData = [];
139 
140  $feedXml = $this->getFeedData();
141 
142  $installDate = strtotime($this->_deploymentConfig->get(ConfigOptionsListConstants::CONFIG_PATH_INSTALL_DATE));
143 
144  if ($feedXml && $feedXml->channel && $feedXml->channel->item) {
145  foreach ($feedXml->channel->item as $item) {
146  $itemPublicationDate = strtotime((string)$item->pubDate);
147  if ($installDate <= $itemPublicationDate) {
148  $feedData[] = [
149  'severity' => (int)$item->severity,
150  'date_added' => date('Y-m-d H:i:s', $itemPublicationDate),
151  'title' => $this->escapeString($item->title),
152  'description' => $this->escapeString($item->description),
153  'url' => $this->escapeString($item->link),
154  ];
155  }
156  }
157 
158  if ($feedData) {
159  $this->_inboxFactory->create()->parse(array_reverse($feedData));
160  }
161  }
162  $this->setLastUpdate();
163 
164  return $this;
165  }

◆ getFeedData()

getFeedData ( )

Retrieve feed data as XML element

Returns
\SimpleXMLElement

Definition at line 203 of file Feed.php.

204  {
205  $curl = $this->curlFactory->create();
206  $curl->setConfig(
207  [
208  'timeout' => 2,
209  'useragent' => $this->productMetadata->getName()
210  . '/' . $this->productMetadata->getVersion()
211  . ' (' . $this->productMetadata->getEdition() . ')',
212  'referer' => $this->urlBuilder->getUrl('*/*/*')
213  ]
214  );
215  $curl->write(\Zend_Http_Client::GET, $this->getFeedUrl(), '1.0');
216  $data = $curl->read();
217  $data = preg_split('/^\r?$/m', $data, 2);
218  $data = trim($data[1]);
219  $curl->close();
220 
221  try {
222  $xml = new \SimpleXMLElement($data);
223  } catch (\Exception $e) {
224  return false;
225  }
226 
227  return $xml;
228  }

◆ getFeedUrl()

getFeedUrl ( )

Retrieve feed url

Returns
string

Definition at line 118 of file Feed.php.

119  {
120  $httpPath = $this->_backendConfig->isSetFlag(self::XML_USE_HTTPS_PATH) ? 'https://' : 'http://';
121  if ($this->_feedUrl === null) {
122  $this->_feedUrl = $httpPath . $this->_backendConfig->getValue(self::XML_FEED_URL_PATH);
123  }
124  return $this->_feedUrl;
125  }

◆ getFeedXml()

getFeedXml ( )

Retrieve feed as XML element

Returns
\SimpleXMLElement

Definition at line 235 of file Feed.php.

236  {
237  try {
238  $data = $this->getFeedData();
239  $xml = new \SimpleXMLElement($data);
240  } catch (\Exception $e) {
241  $xml = new \SimpleXMLElement('<?xml version="1.0" encoding="utf-8" ?>');
242  }
243 
244  return $xml;
245  }

◆ getFrequency()

getFrequency ( )

Retrieve Update Frequency

Returns
int

Definition at line 172 of file Feed.php.

173  {
174  return $this->_backendConfig->getValue(self::XML_FREQUENCY_PATH) * 3600;
175  }

◆ getLastUpdate()

getLastUpdate ( )

Retrieve Last update time

Returns
int

Definition at line 182 of file Feed.php.

183  {
184  return $this->_cacheManager->load('admin_notifications_lastcheck');
185  }

◆ setLastUpdate()

setLastUpdate ( )

Set last update time (now)

Returns
$this

Definition at line 192 of file Feed.php.

193  {
194  $this->_cacheManager->save(time(), 'admin_notifications_lastcheck');
195  return $this;
196  }

Field Documentation

◆ $_backendConfig

$_backendConfig
protected

Definition at line 38 of file Feed.php.

◆ $_deploymentConfig

$_deploymentConfig
protected

Definition at line 56 of file Feed.php.

◆ $_feedUrl

$_feedUrl
protected

Definition at line 33 of file Feed.php.

◆ $_inboxFactory

$_inboxFactory
protected

Definition at line 43 of file Feed.php.

◆ $curlFactory

$curlFactory
protected

Definition at line 49 of file Feed.php.

◆ $productMetadata

$productMetadata
protected

Definition at line 61 of file Feed.php.

◆ $urlBuilder

$urlBuilder
protected

Definition at line 66 of file Feed.php.

◆ XML_FEED_URL_PATH

const XML_FEED_URL_PATH = 'system/adminnotification/feed_url'

Definition at line 22 of file Feed.php.

◆ XML_FREQUENCY_PATH

const XML_FREQUENCY_PATH = 'system/adminnotification/frequency'

Definition at line 24 of file Feed.php.

◆ XML_LAST_UPDATE_PATH

const XML_LAST_UPDATE_PATH = 'system/adminnotification/last_update'

Definition at line 26 of file Feed.php.

◆ XML_USE_HTTPS_PATH

const XML_USE_HTTPS_PATH = 'system/adminnotification/use_https'

Definition at line 20 of file Feed.php.


The documentation for this class was generated from the following file: