Feed.php in Zircon Profile 8
Same filename in this branch
- 8 vendor/zendframework/zend-feed/src/Writer/Feed.php
- 8 core/modules/aggregator/src/Entity/Feed.php
- 8 vendor/zendframework/zend-feed/src/Reader/Extension/Syndication/Feed.php
- 8 vendor/zendframework/zend-feed/src/Reader/Extension/Atom/Feed.php
- 8 vendor/zendframework/zend-feed/src/Reader/Extension/Podcast/Feed.php
- 8 vendor/zendframework/zend-feed/src/Reader/Extension/DublinCore/Feed.php
- 8 vendor/zendframework/zend-feed/src/Reader/Extension/CreativeCommons/Feed.php
- 8 vendor/zendframework/zend-feed/src/Writer/Extension/ITunes/Feed.php
- 8 core/modules/views/src/Plugin/views/display/Feed.php
- 8 vendor/zendframework/zend-feed/src/Writer/Extension/Atom/Renderer/Feed.php
- 8 vendor/zendframework/zend-feed/src/Writer/Extension/DublinCore/Renderer/Feed.php
- 8 vendor/zendframework/zend-feed/src/Writer/Extension/ITunes/Renderer/Feed.php
Same filename and directory in other branches
Namespace
Zend\Feed\Reader\Extension\SyndicationFile
vendor/zendframework/zend-feed/src/Reader/Extension/Syndication/Feed.phpView source
<?php
/**
* Zend Framework (http://framework.zend.com/)
*
* @link http://github.com/zendframework/zf2 for the canonical source repository
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
namespace Zend\Feed\Reader\Extension\Syndication;
use DateTime;
use Zend\Feed\Reader;
use Zend\Feed\Reader\Extension;
class Feed extends Extension\AbstractFeed {
/**
* Get update period
*
* @return string
* @throws Reader\Exception\InvalidArgumentException
*/
public function getUpdatePeriod() {
$name = 'updatePeriod';
$period = $this
->getData($name);
if ($period === null) {
$this->data[$name] = 'daily';
return 'daily';
//Default specified by spec
}
switch ($period) {
case 'hourly':
case 'daily':
case 'weekly':
case 'yearly':
return $period;
default:
throw new Reader\Exception\InvalidArgumentException("Feed specified invalid update period: '{$period}'." . " Must be one of hourly, daily, weekly or yearly");
}
}
/**
* Get update frequency
*
* @return int
*/
public function getUpdateFrequency() {
$name = 'updateFrequency';
$freq = $this
->getData($name, 'number');
if (!$freq || $freq < 1) {
$this->data[$name] = 1;
return 1;
}
return $freq;
}
/**
* Get update frequency as ticks
*
* @return int
*/
public function getUpdateFrequencyAsTicks() {
$name = 'updateFrequency';
$freq = $this
->getData($name, 'number');
if (!$freq || $freq < 1) {
$this->data[$name] = 1;
$freq = 1;
}
$period = $this
->getUpdatePeriod();
$ticks = 1;
switch ($period) {
case 'yearly':
$ticks *= 52;
//TODO: fix generalisation, how?
// no break
case 'weekly':
$ticks *= 7;
// no break
case 'daily':
$ticks *= 24;
// no break
case 'hourly':
$ticks *= 3600;
break;
default:
//Never arrive here, exception thrown in getPeriod()
break;
}
return $ticks / $freq;
}
/**
* Get update base
*
* @return DateTime|null
*/
public function getUpdateBase() {
$updateBase = $this
->getData('updateBase');
$date = null;
if ($updateBase) {
$date = DateTime::createFromFormat(DateTime::W3C, $updateBase);
}
return $date;
}
/**
* Get the entry data specified by name
*
* @param string $name
* @param string $type
* @return mixed|null
*/
private function getData($name, $type = 'string') {
if (array_key_exists($name, $this->data)) {
return $this->data[$name];
}
$data = $this->xpath
->evaluate($type . '(' . $this
->getXpathPrefix() . '/syn10:' . $name . ')');
if (!$data) {
$data = null;
}
$this->data[$name] = $data;
return $data;
}
/**
* Register Syndication namespaces
*
* @return void
*/
protected function registerNamespaces() {
$this->xpath
->registerNamespace('syn10', 'http://purl.org/rss/1.0/modules/syndication/');
}
}