ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
functions.php
Go to the documentation of this file.
1<?php
2
4
6
61function keyValue(Reader $reader, $namespace = null) {
62
63 // If there's no children, we don't do anything.
64 if ($reader->isEmptyElement) {
65 $reader->next();
66 return [];
67 }
68
69 $values = [];
70
71 $reader->read();
72 do {
73
74 if ($reader->nodeType === Reader::ELEMENT) {
75 if ($namespace !== null && $reader->namespaceURI === $namespace) {
76 $values[$reader->localName] = $reader->parseCurrentElement()['value'];
77 } else {
78 $clark = $reader->getClark();
79 $values[$clark] = $reader->parseCurrentElement()['value'];
80 }
81 } else {
82 $reader->read();
83 }
84 } while ($reader->nodeType !== Reader::END_ELEMENT);
85
86 $reader->read();
87
88 return $values;
89
90}
91
140function enum(Reader $reader, $namespace = null) {
141
142 // If there's no children, we don't do anything.
143 if ($reader->isEmptyElement) {
144 $reader->next();
145 return [];
146 }
147 $reader->read();
148 $currentDepth = $reader->depth;
149
150 $values = [];
151 do {
152
153 if ($reader->nodeType !== Reader::ELEMENT) {
154 continue;
155 }
156 if (!is_null($namespace) && $namespace === $reader->namespaceURI) {
157 $values[] = $reader->localName;
158 } else {
159 $values[] = $reader->getClark();
160 }
161
162 } while ($reader->depth >= $currentDepth && $reader->next());
163
164 $reader->next();
165 return $values;
166
167}
168
181function valueObject(Reader $reader, $className, $namespace) {
182
183 $valueObject = new $className();
184 if ($reader->isEmptyElement) {
185 $reader->next();
186 return $valueObject;
187 }
188
189 $defaultProperties = get_class_vars($className);
190
191 $reader->read();
192 do {
193
194 if ($reader->nodeType === Reader::ELEMENT && $reader->namespaceURI == $namespace) {
195
196 if (property_exists($valueObject, $reader->localName)) {
197 if (is_array($defaultProperties[$reader->localName])) {
198 $valueObject->{$reader->localName}[] = $reader->parseCurrentElement()['value'];
199 } else {
200 $valueObject->{$reader->localName} = $reader->parseCurrentElement()['value'];
201 }
202 } else {
203 // Ignore property
204 $reader->next();
205 }
206 } else {
207 $reader->read();
208 }
209 } while ($reader->nodeType !== Reader::END_ELEMENT);
210
211 $reader->read();
212 return $valueObject;
213
214}
215
241function repeatingElements(Reader $reader, $childElementName) {
242
243 if ($childElementName[0] !== '{') {
244 $childElementName = '{}' . $childElementName;
245 }
246 $result = [];
247
248 foreach ($reader->parseGetElements() as $element) {
249
250 if ($element['name'] === $childElementName) {
251 $result[] = $element['value'];
252 }
253
254 }
255
256 return $result;
257
258}
$result
An exception for terminatinating execution or to throw for unit testing.
The Reader class expands upon PHP's built-in XMLReader.
Definition: Reader.php:20
if($err=$client->getError()) $namespace
valueObject(Reader $reader, $className, $namespace)
The valueObject deserializer turns an xml element into a PHP object of a specific class.
Definition: functions.php:181
keyValue(Reader $reader, $namespace=null)
This class provides a number of 'deserializer' helper functions.
Definition: functions.php:61
repeatingElements(Writer $writer, array $items, $childElementName)
This serializer helps you serialize xml structures that look like this:
Definition: functions.php:97
$values