123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205 |
- <?php
- namespace Sabre\VObject;
- /**
- * A node is the root class for every element in an iCalendar of vCard object.
- *
- * @copyright Copyright (C) 2007-2014 fruux GmbH. All rights reserved.
- * @author Evert Pot (http://evertpot.com/)
- * @license http://sabre.io/license/ Modified BSD License
- */
- abstract class Node implements \IteratorAggregate, \ArrayAccess, \Countable {
- /**
- * The following constants are used by the validate() method.
- */
- const REPAIR = 1;
- /**
- * Reference to the parent object, if this is not the top object.
- *
- * @var Node
- */
- public $parent;
- /**
- * Iterator override
- *
- * @var ElementList
- */
- protected $iterator = null;
- /**
- * The root document
- *
- * @var Component
- */
- protected $root;
- /**
- * Serializes the node into a mimedir format
- *
- * @return string
- */
- abstract public function serialize();
- /**
- * This method returns an array, with the representation as it should be
- * encoded in json. This is used to create jCard or jCal documents.
- *
- * @return array
- */
- abstract public function jsonSerialize();
- /* {{{ IteratorAggregator interface */
- /**
- * Returns the iterator for this object
- *
- * @return ElementList
- */
- public function getIterator() {
- if (!is_null($this->iterator))
- return $this->iterator;
- return new ElementList(array($this));
- }
- /**
- * Sets the overridden iterator
- *
- * Note that this is not actually part of the iterator interface
- *
- * @param ElementList $iterator
- * @return void
- */
- public function setIterator(ElementList $iterator) {
- $this->iterator = $iterator;
- }
- /**
- * Validates the node for correctness.
- *
- * The following options are supported:
- * Node::REPAIR - May attempt to automatically repair the problem.
- *
- * This method returns an array with detected problems.
- * Every element has the following properties:
- *
- * * level - problem level.
- * * message - A human-readable string describing the issue.
- * * node - A reference to the problematic node.
- *
- * The level means:
- * 1 - The issue was repaired (only happens if REPAIR was turned on)
- * 2 - An inconsequential issue
- * 3 - A severe issue.
- *
- * @param int $options
- * @return array
- */
- public function validate($options = 0) {
- return array();
- }
- /* }}} */
- /* {{{ Countable interface */
- /**
- * Returns the number of elements
- *
- * @return int
- */
- public function count() {
- $it = $this->getIterator();
- return $it->count();
- }
- /* }}} */
- /* {{{ ArrayAccess Interface */
- /**
- * Checks if an item exists through ArrayAccess.
- *
- * This method just forwards the request to the inner iterator
- *
- * @param int $offset
- * @return bool
- */
- public function offsetExists($offset) {
- $iterator = $this->getIterator();
- return $iterator->offsetExists($offset);
- }
- /**
- * Gets an item through ArrayAccess.
- *
- * This method just forwards the request to the inner iterator
- *
- * @param int $offset
- * @return mixed
- */
- public function offsetGet($offset) {
- $iterator = $this->getIterator();
- return $iterator->offsetGet($offset);
- }
- /**
- * Sets an item through ArrayAccess.
- *
- * This method just forwards the request to the inner iterator
- *
- * @param int $offset
- * @param mixed $value
- * @return void
- */
- public function offsetSet($offset, $value) {
- $iterator = $this->getIterator();
- $iterator->offsetSet($offset,$value);
- // @codeCoverageIgnoreStart
- //
- // This method always throws an exception, so we ignore the closing
- // brace
- }
- // @codeCoverageIgnoreEnd
- /**
- * Sets an item through ArrayAccess.
- *
- * This method just forwards the request to the inner iterator
- *
- * @param int $offset
- * @return void
- */
- public function offsetUnset($offset) {
- $iterator = $this->getIterator();
- $iterator->offsetUnset($offset);
- // @codeCoverageIgnoreStart
- //
- // This method always throws an exception, so we ignore the closing
- // brace
- }
- // @codeCoverageIgnoreEnd
- /* }}} */
- }
|