[ Index ]

PHP Cross Reference of moodle-2.8

title

Body

[close]

/lib/zend/Zend/Gdata/App/ -> Feed.php (source)

   1  <?php
   2  
   3  /**
   4   * Zend Framework
   5   *
   6   * LICENSE
   7   *
   8   * This source file is subject to the new BSD license that is bundled
   9   * with this package in the file LICENSE.txt.
  10   * It is also available through the world-wide-web at this URL:
  11   * http://framework.zend.com/license/new-bsd
  12   * If you did not receive a copy of the license and are unable to
  13   * obtain it through the world-wide-web, please send an email
  14   * to [email protected] so we can send you a copy immediately.
  15   *
  16   * @category   Zend
  17   * @package    Zend_Gdata
  18   * @subpackage App
  19   * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
  20   * @license    http://framework.zend.com/license/new-bsd     New BSD License
  21   * @version    $Id$
  22   */
  23  
  24  /**
  25   * @see Zend_Gdata_App_Entry
  26   */
  27  require_once 'Zend/Gdata/App/Entry.php';
  28  
  29  /**
  30   * @see Zend_Gdata_App_FeedSourceParent
  31   */
  32  require_once 'Zend/Gdata/App/FeedSourceParent.php';
  33  
  34  /**
  35   * Atom feed class
  36   *
  37   * @category   Zend
  38   * @package    Zend_Gdata
  39   * @subpackage App
  40   * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
  41   * @license    http://framework.zend.com/license/new-bsd     New BSD License
  42   */
  43  class Zend_Gdata_App_Feed extends Zend_Gdata_App_FeedSourceParent
  44          implements Iterator, ArrayAccess
  45  {
  46  
  47      /**
  48       * The root xml element of this data element
  49       *
  50       * @var string
  51       */
  52      protected $_rootElement = 'feed';
  53  
  54      /**
  55       * Cache of feed entries.
  56       *
  57       * @var array
  58       */
  59      protected $_entry = array();
  60  
  61      /**
  62       * Current location in $_entry array
  63       *
  64       * @var int
  65       */
  66      protected $_entryIndex = 0;
  67  
  68      /**
  69       * Make accessing some individual elements of the feed easier.
  70       *
  71       * Special accessors 'entry' and 'entries' are provided so that if
  72       * you wish to iterate over an Atom feed's entries, you can do so
  73       * using foreach ($feed->entries as $entry) or foreach
  74       * ($feed->entry as $entry).
  75       *
  76       * @param  string $var The property to get.
  77       * @return mixed
  78       */
  79      public function __get($var)
  80      {
  81          switch ($var) {
  82              case 'entries':
  83                  return $this;
  84              default:
  85                  return parent::__get($var);
  86          }
  87      }
  88  
  89      /**
  90       * Retrieves the DOM model representing this object and all children
  91       *
  92       * @param DOMDocument $doc
  93       * @return DOMElement
  94       */
  95      public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
  96      {
  97          $element = parent::getDOM($doc, $majorVersion, $minorVersion);
  98          foreach ($this->_entry as $entry) {
  99              $element->appendChild($entry->getDOM($element->ownerDocument));
 100          }
 101          return $element;
 102      }
 103  
 104      /**
 105       * Creates individual Entry objects of the appropriate type and
 106       * stores them in the $_entry array based upon DOM data.
 107       *
 108       * @param DOMNode $child The DOMNode to process
 109       */
 110      protected function takeChildFromDOM($child)
 111      {
 112          $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
 113          switch ($absoluteNodeName) {
 114          case $this->lookupNamespace('atom') . ':' . 'entry':
 115              $newEntry = new $this->_entryClassName($child);
 116              $newEntry->setHttpClient($this->getHttpClient());
 117              $newEntry->setMajorProtocolVersion($this->getMajorProtocolVersion());
 118              $newEntry->setMinorProtocolVersion($this->getMinorProtocolVersion());
 119              $this->_entry[] = $newEntry;
 120              break;
 121          default:
 122              parent::takeChildFromDOM($child);
 123              break;
 124          }
 125      }
 126  
 127      /**
 128       * Get the number of entries in this feed object.
 129       *
 130       * @return integer Entry count.
 131       */
 132      public function count()
 133      {
 134          return count($this->_entry);
 135      }
 136  
 137      /**
 138       * Required by the Iterator interface.
 139       *
 140       * @return void
 141       */
 142      public function rewind()
 143      {
 144          $this->_entryIndex = 0;
 145      }
 146  
 147      /**
 148       * Required by the Iterator interface.
 149       *
 150       * @return mixed The current row, or null if no rows.
 151       */
 152      public function current()
 153      {
 154          return $this->_entry[$this->_entryIndex];
 155      }
 156  
 157      /**
 158       * Required by the Iterator interface.
 159       *
 160       * @return mixed The current row number (starts at 0), or NULL if no rows
 161       */
 162      public function key()
 163      {
 164          return $this->_entryIndex;
 165      }
 166  
 167      /**
 168       * Required by the Iterator interface.
 169       *
 170       * @return mixed The next row, or null if no more rows.
 171       */
 172      public function next()
 173      {
 174          ++$this->_entryIndex;
 175      }
 176  
 177      /**
 178       * Required by the Iterator interface.
 179       *
 180       * @return boolean Whether the iteration is valid
 181       */
 182      public function valid()
 183      {
 184          return 0 <= $this->_entryIndex && $this->_entryIndex < $this->count();
 185      }
 186  
 187      /**
 188       * Gets the array of atom:entry elements contained within this
 189       * atom:feed representation
 190       *
 191       * @return array Zend_Gdata_App_Entry array
 192       */
 193      public function getEntry()
 194      {
 195          return $this->_entry;
 196      }
 197  
 198      /**
 199       * Sets the array of atom:entry elements contained within this
 200       * atom:feed representation
 201       *
 202       * @param array $value The array of Zend_Gdata_App_Entry elements
 203       * @return Zend_Gdata_App_Feed Provides a fluent interface
 204       */
 205      public function setEntry($value)
 206      {
 207          $this->_entry = $value;
 208          return $this;
 209      }
 210  
 211      /**
 212       * Adds an entry representation to the array of entries
 213       * contained within this feed
 214       *
 215       * @param Zend_Gdata_App_Entry An individual entry to add.
 216       * @return Zend_Gdata_App_Feed Provides a fluent interface
 217       */
 218      public function addEntry($value)
 219      {
 220          $this->_entry[] = $value;
 221          return $this;
 222      }
 223  
 224      /**
 225       * Required by the ArrayAccess interface
 226       *
 227       * @param int $key The index to set
 228       * @param Zend_Gdata_App_Entry $value The value to set
 229       * @return void
 230       */
 231      public function offsetSet($key, $value)
 232      {
 233          $this->_entry[$key] = $value;
 234      }
 235  
 236      /**
 237       * Required by the ArrayAccess interface
 238       *
 239       * @param int $key The index to get
 240       * @param Zend_Gdata_App_Entry $value The value to set
 241       */
 242      public function offsetGet($key)
 243      {
 244          if (array_key_exists($key, $this->_entry)) {
 245              return $this->_entry[$key];
 246          }
 247      }
 248  
 249      /**
 250       * Required by the ArrayAccess interface
 251       *
 252       * @param int $key The index to set
 253       * @param Zend_Gdata_App_Entry $value The value to set
 254       */
 255      public function offsetUnset($key)
 256      {
 257          if (array_key_exists($key, $this->_entry)) {
 258              unset($this->_entry[$key]);
 259          }
 260      }
 261  
 262      /**
 263       * Required by the ArrayAccess interface
 264       *
 265       * @param int $key The index to check for existence
 266       * @return boolean
 267       */
 268      public function offsetExists($key)
 269      {
 270          return (array_key_exists($key, $this->_entry));
 271      }
 272  
 273     /**
 274       * Retrieve the next set of results from this feed.
 275       *
 276       * @throws Zend_Gdata_App_Exception
 277       * @return mixed|null Returns the next set of results as a feed of the same
 278       *          class as this feed, or null if no results exist.
 279       */
 280      public function getNextFeed()
 281      {
 282          $nextLink = $this->getNextLink();
 283          if (!$nextLink) {
 284              require_once 'Zend/Gdata/App/HttpException.php';
 285              throw new Zend_Gdata_App_Exception('No link to next set ' .
 286              'of results found.');
 287          }
 288          $nextLinkHref = $nextLink->getHref();
 289          $service = new Zend_Gdata_App($this->getHttpClient());
 290  
 291          return $service->getFeed($nextLinkHref, get_class($this));
 292      }
 293  
 294     /**
 295       * Retrieve the previous set of results from this feed.
 296       *
 297       * @throws Zend_Gdata_App_Exception
 298       * @return mixed|null Returns the previous set of results as a feed of
 299       *          the same class as this feed, or null if no results exist.
 300       */
 301      public function getPreviousFeed()
 302      {
 303          $previousLink = $this->getPreviousLink();
 304          if (!$previousLink) {
 305              require_once 'Zend/Gdata/App/HttpException.php';
 306              throw new Zend_Gdata_App_Exception('No link to previous set ' .
 307              'of results found.');
 308          }
 309          $previousLinkHref = $previousLink->getHref();
 310          $service = new Zend_Gdata_App($this->getHttpClient());
 311  
 312          return $service->getFeed($previousLinkHref, get_class($this));
 313      }
 314  
 315      /**
 316       * Set the major protocol version that should be used. Values < 1 will
 317       * cause a Zend_Gdata_App_InvalidArgumentException to be thrown.
 318       *
 319       * This value will be propogated to all child entries.
 320       *
 321       * @see _majorProtocolVersion
 322       * @param (int|NULL) $value The major protocol version to use.
 323       * @throws Zend_Gdata_App_InvalidArgumentException
 324       */
 325      public function setMajorProtocolVersion($value)
 326      {
 327          parent::setMajorProtocolVersion($value);
 328          foreach ($this->entries as $entry) {
 329              $entry->setMajorProtocolVersion($value);
 330          }
 331      }
 332  
 333      /**
 334       * Set the minor protocol version that should be used. If set to NULL, no
 335       * minor protocol version will be sent to the server. Values < 0 will
 336       * cause a Zend_Gdata_App_InvalidArgumentException to be thrown.
 337       *
 338       * This value will be propogated to all child entries.
 339       *
 340       * @see _minorProtocolVersion
 341       * @param (int|NULL) $value The minor protocol version to use.
 342       * @throws Zend_Gdata_App_InvalidArgumentException
 343       */
 344      public function setMinorProtocolVersion($value)
 345      {
 346          parent::setMinorProtocolVersion($value);
 347          foreach ($this->entries as $entry) {
 348              $entry->setMinorProtocolVersion($value);
 349          }
 350      }
 351  
 352  }


Generated: Fri Nov 28 20:29:05 2014 Cross-referenced by PHPXref 0.7.1