Mercurial > hg > rc1
comparison vendor/sabre/vobject/lib/Node.php @ 7:430dbd5346f7
vendor sabre as distributed
| author | Charlie Root |
|---|---|
| date | Sat, 13 Jan 2018 09:06:10 -0500 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 6:cec75ba50afc | 7:430dbd5346f7 |
|---|---|
| 1 <?php | |
| 2 | |
| 3 namespace Sabre\VObject; | |
| 4 | |
| 5 /** | |
| 6 * A node is the root class for every element in an iCalendar of vCard object. | |
| 7 * | |
| 8 * @copyright Copyright (C) 2011-2015 fruux GmbH (https://fruux.com/). | |
| 9 * @author Evert Pot (http://evertpot.com/) | |
| 10 * @license http://sabre.io/license/ Modified BSD License | |
| 11 */ | |
| 12 abstract class Node implements \IteratorAggregate, \ArrayAccess, \Countable { | |
| 13 | |
| 14 /** | |
| 15 * The following constants are used by the validate() method. | |
| 16 * | |
| 17 * If REPAIR is set, the validator will attempt to repair any broken data | |
| 18 * (if possible). | |
| 19 */ | |
| 20 const REPAIR = 1; | |
| 21 | |
| 22 /** | |
| 23 * If this option is set, the validator will operate on the vcards on the | |
| 24 * assumption that the vcards need to be valid for CardDAV. | |
| 25 * | |
| 26 * This means for example that the UID is required, whereas it is not for | |
| 27 * regular vcards. | |
| 28 */ | |
| 29 const PROFILE_CARDDAV = 2; | |
| 30 | |
| 31 /** | |
| 32 * If this option is set, the validator will operate on iCalendar objects | |
| 33 * on the assumption that the vcards need to be valid for CalDAV. | |
| 34 * | |
| 35 * This means for example that calendars can only contain objects with | |
| 36 * identical component types and UIDs. | |
| 37 */ | |
| 38 const PROFILE_CALDAV = 4; | |
| 39 | |
| 40 /** | |
| 41 * Reference to the parent object, if this is not the top object. | |
| 42 * | |
| 43 * @var Node | |
| 44 */ | |
| 45 public $parent; | |
| 46 | |
| 47 /** | |
| 48 * Iterator override | |
| 49 * | |
| 50 * @var ElementList | |
| 51 */ | |
| 52 protected $iterator = null; | |
| 53 | |
| 54 /** | |
| 55 * The root document | |
| 56 * | |
| 57 * @var Component | |
| 58 */ | |
| 59 protected $root; | |
| 60 | |
| 61 /** | |
| 62 * Serializes the node into a mimedir format | |
| 63 * | |
| 64 * @return string | |
| 65 */ | |
| 66 abstract public function serialize(); | |
| 67 | |
| 68 /** | |
| 69 * This method returns an array, with the representation as it should be | |
| 70 * encoded in json. This is used to create jCard or jCal documents. | |
| 71 * | |
| 72 * @return array | |
| 73 */ | |
| 74 abstract public function jsonSerialize(); | |
| 75 | |
| 76 /* {{{ IteratorAggregator interface */ | |
| 77 | |
| 78 /** | |
| 79 * Returns the iterator for this object | |
| 80 * | |
| 81 * @return ElementList | |
| 82 */ | |
| 83 public function getIterator() { | |
| 84 | |
| 85 if (!is_null($this->iterator)) | |
| 86 return $this->iterator; | |
| 87 | |
| 88 return new ElementList(array($this)); | |
| 89 | |
| 90 } | |
| 91 | |
| 92 /** | |
| 93 * Sets the overridden iterator | |
| 94 * | |
| 95 * Note that this is not actually part of the iterator interface | |
| 96 * | |
| 97 * @param ElementList $iterator | |
| 98 * @return void | |
| 99 */ | |
| 100 public function setIterator(ElementList $iterator) { | |
| 101 | |
| 102 $this->iterator = $iterator; | |
| 103 | |
| 104 } | |
| 105 | |
| 106 /** | |
| 107 * Validates the node for correctness. | |
| 108 * | |
| 109 * The following options are supported: | |
| 110 * Node::REPAIR - May attempt to automatically repair the problem. | |
| 111 * | |
| 112 * This method returns an array with detected problems. | |
| 113 * Every element has the following properties: | |
| 114 * | |
| 115 * * level - problem level. | |
| 116 * * message - A human-readable string describing the issue. | |
| 117 * * node - A reference to the problematic node. | |
| 118 * | |
| 119 * The level means: | |
| 120 * 1 - The issue was repaired (only happens if REPAIR was turned on) | |
| 121 * 2 - An inconsequential issue | |
| 122 * 3 - A severe issue. | |
| 123 * | |
| 124 * @param int $options | |
| 125 * @return array | |
| 126 */ | |
| 127 public function validate($options = 0) { | |
| 128 | |
| 129 return array(); | |
| 130 | |
| 131 } | |
| 132 | |
| 133 /* }}} */ | |
| 134 | |
| 135 /* {{{ Countable interface */ | |
| 136 | |
| 137 /** | |
| 138 * Returns the number of elements | |
| 139 * | |
| 140 * @return int | |
| 141 */ | |
| 142 public function count() { | |
| 143 | |
| 144 $it = $this->getIterator(); | |
| 145 return $it->count(); | |
| 146 | |
| 147 } | |
| 148 | |
| 149 /* }}} */ | |
| 150 | |
| 151 /* {{{ ArrayAccess Interface */ | |
| 152 | |
| 153 | |
| 154 /** | |
| 155 * Checks if an item exists through ArrayAccess. | |
| 156 * | |
| 157 * This method just forwards the request to the inner iterator | |
| 158 * | |
| 159 * @param int $offset | |
| 160 * @return bool | |
| 161 */ | |
| 162 public function offsetExists($offset) { | |
| 163 | |
| 164 $iterator = $this->getIterator(); | |
| 165 return $iterator->offsetExists($offset); | |
| 166 | |
| 167 } | |
| 168 | |
| 169 /** | |
| 170 * Gets an item through ArrayAccess. | |
| 171 * | |
| 172 * This method just forwards the request to the inner iterator | |
| 173 * | |
| 174 * @param int $offset | |
| 175 * @return mixed | |
| 176 */ | |
| 177 public function offsetGet($offset) { | |
| 178 | |
| 179 $iterator = $this->getIterator(); | |
| 180 return $iterator->offsetGet($offset); | |
| 181 | |
| 182 } | |
| 183 | |
| 184 /** | |
| 185 * Sets an item through ArrayAccess. | |
| 186 * | |
| 187 * This method just forwards the request to the inner iterator | |
| 188 * | |
| 189 * @param int $offset | |
| 190 * @param mixed $value | |
| 191 * @return void | |
| 192 */ | |
| 193 public function offsetSet($offset, $value) { | |
| 194 | |
| 195 $iterator = $this->getIterator(); | |
| 196 $iterator->offsetSet($offset,$value); | |
| 197 | |
| 198 // @codeCoverageIgnoreStart | |
| 199 // | |
| 200 // This method always throws an exception, so we ignore the closing | |
| 201 // brace | |
| 202 } | |
| 203 // @codeCoverageIgnoreEnd | |
| 204 | |
| 205 /** | |
| 206 * Sets an item through ArrayAccess. | |
| 207 * | |
| 208 * This method just forwards the request to the inner iterator | |
| 209 * | |
| 210 * @param int $offset | |
| 211 * @return void | |
| 212 */ | |
| 213 public function offsetUnset($offset) { | |
| 214 | |
| 215 $iterator = $this->getIterator(); | |
| 216 $iterator->offsetUnset($offset); | |
| 217 | |
| 218 // @codeCoverageIgnoreStart | |
| 219 // | |
| 220 // This method always throws an exception, so we ignore the closing | |
| 221 // brace | |
| 222 } | |
| 223 // @codeCoverageIgnoreEnd | |
| 224 | |
| 225 /* }}} */ | |
| 226 } |
