ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
functions.php
Go to the documentation of this file.
1 <?php
2 
4 
6 
61 function 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 
140 function 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 
181 function 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 
241 function 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 }
if($err=$client->getError()) $namespace
$result
parseGetElements(array $elementMap=null)
parseGetElements parses everything in the current sub-tree, and returns a an array of elements...
Definition: Reader.php:105
parseCurrentElement()
Parses the current XML element.
Definition: Reader.php:235
repeatingElements(Reader $reader, $childElementName)
This deserializer helps you deserialize xml structures that look like this:
Definition: functions.php:241
keyValue(Reader $reader, $namespace=null)
This class provides a number of &#39;deserializer&#39; helper functions.
Definition: functions.php:61
The Reader class expands upon PHP&#39;s built-in XMLReader.
Definition: Reader.php:20
$values
getClark()
Returns the current nodename in clark-notation.
Definition: Reader.php:34
valueObject(Reader $reader, $className, $namespace)
The valueObject deserializer turns an xml element into a PHP object of a specific class...
Definition: functions.php:181