19 require_once(BASE.
"wcmf/lib/persistence/class.PersistenceFacade.php");
20 require_once(BASE.
"wcmf/lib/model/class.Node.php");
21 require_once(BASE.
"wcmf/lib/model/class.NodeIterator.php");
22 require_once(BASE.
"wcmf/lib/model/class.NodeProcessor.php");
47 $node = $persistenceFacade->create($type, BUILDEPTH_SINGLE);
51 if (!$hasFlattendedValues)
54 $properties = array();
56 foreach($data as $key => $value)
58 if ($key ==
'values') {
61 elseif ($key ==
'properties') {
64 elseif ($key !=
'oid' && $key !=
'type') {
65 $relatives[$key] = $value;
68 foreach ($valueData as $dataType => $values)
70 foreach ($values as $key => $value) {
74 foreach ($properties as $key => $value) {
75 $node->setProperty($key, $value);
77 foreach ($relatives as $type => $objects)
79 foreach ($objects as $object) {
88 foreach($data as $key => $value)
92 if ($parent != null) {
93 $parent->addChild($node);
110 if (!is_array($value)) {
111 $node->setValue($key, $value, $dataType);
116 foreach($value as $childData) {
134 while (!$iter->isEnd())
136 $curNode = &$iter->getCurrentObject();
143 $processor->run($curNode,
false);
145 if ($flattenValues) {
146 $curResult = $values;
149 $curResult[
'values'] = $values;
153 $curResult[
'oid'] = $curNode->getOID();
154 $curResult[
'type'] = $curNode->getType();
155 $curResult[
'properties'] = array();
156 foreach($curNode->getPropertyNames() as $name) {
157 $propertyValue = $curNode->getProperty($name);
158 if ($propertyValue instanceof
Node) {
161 $curResult[
'properties'][$name] = $propertyValue;
164 $path = split(
'/', $curNode->getPath());
165 if (
sizeof($path) == 1) {
166 $result = &$curResult;
172 $array[
sizeof($array)] = $curResult;
183 if (!$flattenDataTypes)
185 if (!isset($result[$dataType]))
186 $result[$dataType] = array();
187 $result[$dataType][$valueName] = $node->getValue($valueName, $dataType);
190 $result[$valueName] = $node->getValue($valueName, $dataType);
202 if (!isset($array[$path[$curDepth]]))
203 $array[$path[$curDepth]] = array();
205 if ($curDepth <
sizeof($path)-1)
208 return $array[$path[$curDepth]];
& getPathArray(&$array, $path, $curDepth)
& deserializeNode($type, $data, $hasFlattendedValues, $parent=null)
Node is the basic component for building trees (although a Node can have one than more parents)...
serializeAttribute(&$node, $valueName, $dataType, &$result, $flattenDataTypes)
NodeIterator is used to iterate over a tree/list build of objects using a Depth-First-Algorithm. Classes used with the NodeIterator must implement the getChildren() and getOID() methods. NodeIterator implements the 'Iterator Pattern'. The base class NodeIterator defines the interface for all specialized Iterator classes.
NodeProcessor is used to iterate over all values of a Node and apply a given callback function...
deserializeValue(&$node, $key, $value, $dataType, $hasFlattendedValues)
serializeNode(&$obj, $flattenValues)
NodeSerializer provides helper functions to de-/serialize Nodes.