]> git.mxchange.org Git - friendica-addons.git/blob - dav/SabreDAV/lib/Sabre/VObject/ElementList.php
7e508db20f0841ff3f26b4300fe2ca85bdb19f90
[friendica-addons.git] / dav / SabreDAV / lib / Sabre / VObject / ElementList.php
1 <?php
2
3 /**
4  * VObject ElementList
5  *
6  * This class represents a list of elements. Lists are the result of queries,
7  * such as doing $vcalendar->vevent where there's multiple VEVENT objects.
8  *
9  * @package Sabre
10  * @subpackage VObject
11  * @copyright Copyright (C) 2007-2012 Rooftop Solutions. All rights reserved.
12  * @author Evert Pot (http://www.rooftopsolutions.nl/)
13  * @license http://code.google.com/p/sabredav/wiki/License Modified BSD License
14  */
15 class Sabre_VObject_ElementList implements Iterator, Countable, ArrayAccess {
16
17     /**
18      * Inner elements
19      *
20      * @var array
21      */
22     protected $elements = array();
23
24     /**
25      * Creates the element list.
26      *
27      * @param array $elements
28      */
29     public function __construct(array $elements) {
30
31         $this->elements = $elements;
32
33     }
34
35     /* {{{ Iterator interface */
36
37     /**
38      * Current position
39      *
40      * @var int
41      */
42     private $key = 0;
43
44     /**
45      * Returns current item in iteration
46      *
47      * @return Sabre_VObject_Element
48      */
49     public function current() {
50
51         return $this->elements[$this->key];
52
53     }
54
55     /**
56      * To the next item in the iterator
57      *
58      * @return void
59      */
60     public function next() {
61
62         $this->key++;
63
64     }
65
66     /**
67      * Returns the current iterator key
68      *
69      * @return int
70      */
71     public function key() {
72
73         return $this->key;
74
75     }
76
77     /**
78      * Returns true if the current position in the iterator is a valid one
79      *
80      * @return bool
81      */
82     public function valid() {
83
84         return isset($this->elements[$this->key]);
85
86     }
87
88     /**
89      * Rewinds the iterator
90      *
91      * @return void
92      */
93     public function rewind() {
94
95         $this->key = 0;
96
97     }
98
99     /* }}} */
100
101     /* {{{ Countable interface */
102
103     /**
104      * Returns the number of elements
105      *
106      * @return int
107      */
108     public function count() {
109
110         return count($this->elements);
111
112     }
113
114     /* }}} */
115
116     /* {{{ ArrayAccess Interface */
117
118
119     /**
120      * Checks if an item exists through ArrayAccess.
121      *
122      * @param int $offset
123      * @return bool
124      */
125     public function offsetExists($offset) {
126
127         return isset($this->elements[$offset]);
128
129     }
130
131     /**
132      * Gets an item through ArrayAccess.
133      *
134      * @param int $offset
135      * @return mixed
136      */
137     public function offsetGet($offset) {
138
139         return $this->elements[$offset];
140
141     }
142
143     /**
144      * Sets an item through ArrayAccess.
145      *
146      * @param int $offset
147      * @param mixed $value
148      * @return void
149      */
150     public function offsetSet($offset,$value) {
151
152         throw new LogicException('You can not add new objects to an ElementList');
153
154     }
155
156     /**
157      * Sets an item through ArrayAccess.
158      *
159      * This method just forwards the request to the inner iterator
160      *
161      * @param int $offset
162      * @return void
163      */
164     public function offsetUnset($offset) {
165
166         throw new LogicException('You can not remove objects from an ElementList');
167
168     }
169
170     /* }}} */
171
172 }