--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/web/lib/Zend/Feed/Builder/Header.php Fri Mar 11 15:05:35 2011 +0100
@@ -0,0 +1,423 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * 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@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Feed
+ * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ * @version $Id: Header.php 20096 2010-01-06 02:05:09Z bkarwin $
+ */
+
+/**
+ * @see Zend_Feed_Builder_Header_Itunes
+ */
+require_once 'Zend/Feed/Builder/Header/Itunes.php';
+
+/**
+ * @see Zend_Uri
+ */
+require_once 'Zend/Uri.php';
+
+
+/**
+ * Header of a custom build feed
+ *
+ * Classes implementing the Zend_Feed_Builder_Interface interface
+ * uses this class to describe the header of a feed
+ *
+ * @category Zend
+ * @package Zend_Feed
+ * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ */
+class Zend_Feed_Builder_Header extends ArrayObject
+{
+ /**
+ * Constructor
+ *
+ * @param string $title title of the feed
+ * @param string $link canonical url of the feed
+ * @param string $charset charset of the textual data
+ * @return void
+ */
+ public function __construct($title, $link, $charset = 'utf-8')
+ {
+ $this->offsetSet('title', $title);
+ $this->offsetSet('link', $link);
+ $this->offsetSet('charset', $charset);
+ $this->setLastUpdate(time())
+ ->setGenerator('Zend_Feed');
+ }
+
+ /**
+ * Read only properties accessor
+ *
+ * @param string $name property to read
+ * @return mixed
+ */
+ public function __get($name)
+ {
+ if (!$this->offsetExists($name)) {
+ return NULL;
+ }
+
+ return $this->offsetGet($name);
+ }
+
+ /**
+ * Write properties accessor
+ *
+ * @param string $name name of the property to set
+ * @param mixed $value value to set
+ * @return void
+ */
+ public function __set($name, $value)
+ {
+ $this->offsetSet($name, $value);
+ }
+
+ /**
+ * Isset accessor
+ *
+ * @param string $key
+ * @return boolean
+ */
+ public function __isset($key)
+ {
+ return $this->offsetExists($key);
+ }
+
+ /**
+ * Unset accessor
+ *
+ * @param string $key
+ * @return void
+ */
+ public function __unset($key)
+ {
+ if ($this->offsetExists($key)) {
+ $this->offsetUnset($key);
+ }
+ }
+
+ /**
+ * Timestamp of the update date
+ *
+ * @param int $lastUpdate
+ * @return Zend_Feed_Builder_Header
+ */
+ public function setLastUpdate($lastUpdate)
+ {
+ $this->offsetSet('lastUpdate', $lastUpdate);
+ return $this;
+ }
+
+ /**
+ * Timestamp of the publication date
+ *
+ * @param int $published
+ * @return Zend_Feed_Builder_Header
+ */
+ public function setPublishedDate($published)
+ {
+ $this->offsetSet('published', $published);
+ return $this;
+ }
+
+ /**
+ * Short description of the feed
+ *
+ * @param string $description
+ * @return Zend_Feed_Builder_Header
+ */
+ public function setDescription($description)
+ {
+ $this->offsetSet('description', $description);
+ return $this;
+ }
+
+ /**
+ * Sets the author of the feed
+ *
+ * @param string $author
+ * @return Zend_Feed_Builder_Header
+ */
+ public function setAuthor($author)
+ {
+ $this->offsetSet('author', $author);
+ return $this;
+ }
+
+ /**
+ * Sets the author's email
+ *
+ * @param string $email
+ * @return Zend_Feed_Builder_Header
+ * @throws Zend_Feed_Builder_Exception
+ */
+ public function setEmail($email)
+ {
+ /**
+ * @see Zend_Validate_EmailAddress
+ */
+ require_once 'Zend/Validate/EmailAddress.php';
+ $validate = new Zend_Validate_EmailAddress();
+ if (!$validate->isValid($email)) {
+ /**
+ * @see Zend_Feed_Builder_Exception
+ */
+ require_once 'Zend/Feed/Builder/Exception.php';
+ throw new Zend_Feed_Builder_Exception("you have to set a valid email address into the email property");
+ }
+ $this->offsetSet('email', $email);
+ return $this;
+ }
+
+ /**
+ * Sets the copyright notice
+ *
+ * @param string $copyright
+ * @return Zend_Feed_Builder_Header
+ */
+ public function setCopyright($copyright)
+ {
+ $this->offsetSet('copyright', $copyright);
+ return $this;
+ }
+
+ /**
+ * Sets the image of the feed
+ *
+ * @param string $image
+ * @return Zend_Feed_Builder_Header
+ */
+ public function setImage($image)
+ {
+ $this->offsetSet('image', $image);
+ return $this;
+ }
+
+ /**
+ * Sets the generator of the feed
+ *
+ * @param string $generator
+ * @return Zend_Feed_Builder_Header
+ */
+ public function setGenerator($generator)
+ {
+ $this->offsetSet('generator', $generator);
+ return $this;
+ }
+
+ /**
+ * Sets the language of the feed
+ *
+ * @param string $language
+ * @return Zend_Feed_Builder_Header
+ */
+ public function setLanguage($language)
+ {
+ $this->offsetSet('language', $language);
+ return $this;
+ }
+
+ /**
+ * Email address for person responsible for technical issues
+ * Ignored if atom is used
+ *
+ * @param string $webmaster
+ * @return Zend_Feed_Builder_Header
+ * @throws Zend_Feed_Builder_Exception
+ */
+ public function setWebmaster($webmaster)
+ {
+ /**
+ * @see Zend_Validate_EmailAddress
+ */
+ require_once 'Zend/Validate/EmailAddress.php';
+ $validate = new Zend_Validate_EmailAddress();
+ if (!$validate->isValid($webmaster)) {
+ /**
+ * @see Zend_Feed_Builder_Exception
+ */
+ require_once 'Zend/Feed/Builder/Exception.php';
+ throw new Zend_Feed_Builder_Exception("you have to set a valid email address into the webmaster property");
+ }
+ $this->offsetSet('webmaster', $webmaster);
+ return $this;
+ }
+
+ /**
+ * How long in minutes a feed can be cached before refreshing
+ * Ignored if atom is used
+ *
+ * @param int $ttl
+ * @return Zend_Feed_Builder_Header
+ * @throws Zend_Feed_Builder_Exception
+ */
+ public function setTtl($ttl)
+ {
+ /**
+ * @see Zend_Validate_Int
+ */
+ require_once 'Zend/Validate/Int.php';
+ $validate = new Zend_Validate_Int();
+ if (!$validate->isValid($ttl)) {
+ /**
+ * @see Zend_Feed_Builder_Exception
+ */
+ require_once 'Zend/Feed/Builder/Exception.php';
+ throw new Zend_Feed_Builder_Exception("you have to set an integer value to the ttl property");
+ }
+ $this->offsetSet('ttl', $ttl);
+ return $this;
+ }
+
+ /**
+ * PICS rating for the feed
+ * Ignored if atom is used
+ *
+ * @param string $rating
+ * @return Zend_Feed_Builder_Header
+ */
+ public function setRating($rating)
+ {
+ $this->offsetSet('rating', $rating);
+ return $this;
+ }
+
+ /**
+ * Cloud to be notified of updates of the feed
+ * Ignored if atom is used
+ *
+ * @param string|Zend_Uri_Http $uri
+ * @param string $procedure procedure to call, e.g. myCloud.rssPleaseNotify
+ * @param string $protocol protocol to use, e.g. soap or xml-rpc
+ * @return Zend_Feed_Builder_Header
+ * @throws Zend_Feed_Builder_Exception
+ */
+ public function setCloud($uri, $procedure, $protocol)
+ {
+ if (is_string($uri) && Zend_Uri_Http::check($uri)) {
+ $uri = Zend_Uri::factory($uri);
+ }
+ if (!$uri instanceof Zend_Uri_Http) {
+ /**
+ * @see Zend_Feed_Builder_Exception
+ */
+ require_once 'Zend/Feed/Builder/Exception.php';
+ throw new Zend_Feed_Builder_Exception('Passed parameter is not a valid HTTP URI');
+ }
+ if (!$uri->getPort()) {
+ $uri->setPort(80);
+ }
+ $this->offsetSet('cloud', array('uri' => $uri,
+ 'procedure' => $procedure,
+ 'protocol' => $protocol));
+ return $this;
+ }
+
+ /**
+ * A text input box that can be displayed with the feed
+ * Ignored if atom is used
+ *
+ * @param string $title the label of the Submit button in the text input area
+ * @param string $description explains the text input area
+ * @param string $name the name of the text object in the text input area
+ * @param string $link the URL of the CGI script that processes text input requests
+ * @return Zend_Feed_Builder_Header
+ */
+ public function setTextInput($title, $description, $name, $link)
+ {
+ $this->offsetSet('textInput', array('title' => $title,
+ 'description' => $description,
+ 'name' => $name,
+ 'link' => $link));
+ return $this;
+ }
+
+ /**
+ * Hint telling aggregators which hours they can skip
+ * Ignored if atom is used
+ *
+ * @param array $hours list of hours in 24 format
+ * @return Zend_Feed_Builder_Header
+ * @throws Zend_Feed_Builder_Exception
+ */
+ public function setSkipHours(array $hours)
+ {
+ if (count($hours) > 24) {
+ /**
+ * @see Zend_Feed_Builder_Exception
+ */
+ require_once 'Zend/Feed/Builder/Exception.php';
+ throw new Zend_Feed_Builder_Exception("you can not have more than 24 rows in the skipHours property");
+ }
+ foreach ($hours as $hour) {
+ if ($hour < 0 || $hour > 23) {
+ /**
+ * @see Zend_Feed_Builder_Exception
+ */
+ require_once 'Zend/Feed/Builder/Exception.php';
+ throw new Zend_Feed_Builder_Exception("$hour has te be between 0 and 23");
+ }
+ }
+ $this->offsetSet('skipHours', $hours);
+ return $this;
+ }
+
+ /**
+ * Hint telling aggregators which days they can skip
+ * Ignored if atom is used
+ *
+ * @param array $days list of days to skip, e.g. Monday
+ * @return Zend_Feed_Builder_Header
+ * @throws Zend_Feed_Builder_Exception
+ */
+ public function setSkipDays(array $days)
+ {
+ if (count($days) > 7) {
+ /**
+ * @see Zend_Feed_Builder_Exception
+ */
+ require_once 'Zend/Feed/Builder/Exception.php';
+ throw new Zend_Feed_Builder_Exception("you can not have more than 7 days in the skipDays property");
+ }
+ $valid = array('monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday');
+ foreach ($days as $day) {
+ if (!in_array(strtolower($day), $valid)) {
+ /**
+ * @see Zend_Feed_Builder_Exception
+ */
+ require_once 'Zend/Feed/Builder/Exception.php';
+ throw new Zend_Feed_Builder_Exception("$day is not a valid day");
+ }
+ }
+ $this->offsetSet('skipDays', $days);
+ return $this;
+ }
+
+ /**
+ * Sets the iTunes rss extension
+ *
+ * @param Zend_Feed_Builder_Header_Itunes $itunes
+ * @return Zend_Feed_Builder_Header
+ */
+ public function setITunes(Zend_Feed_Builder_Header_Itunes $itunes)
+ {
+ $this->offsetSet('itunes', $itunes);
+ return $this;
+ }
+}