private function _parseValueNode(__ConfigurationSection $node_value, $property_name, $instance_id) { $return_value = null; if ($node_value->getName() == 'ref') { if ($node_value->hasAttribute('id')) { $return_value = new __InstanceReference(); $return_value->setReferenceId($node_value->getAttribute('id')); } } else { if ($node_value->getName() == 'context-instance') { $return_value = $this->_createInstanceDefinition($node_value); $this->_addInstanceDefinition($return_value); } else { if ($node_value->getName() == 'list') { $return_value = array(); $value_nodes = $node_value->getSections(); foreach ($value_nodes as $value_node) { $key = null; if ($value_node->getName() == 'entry') { if ($value_node->hasAttribute('key')) { $key = $value_node->getAttribute('key'); } $value_section = $value_node->getSections(); if (count($value_section) == 1) { $value_node = current($value_section); } else { throw new __ConfigurationException("Wrong entry content for property " . $property_name . " on instance " . $instance_id); } } $value = $this->_parseValueNode($value_node, $property_name, $instance_id); if ($key !== null) { $return_value[$key] = $value; } else { $return_value[] = $value; } } } else { if ($node_value->getName() == 'value') { $return_value = $this->_getPlainTextContent($node_value); } else { if ($node_value->getName() == 'null') { $return_value = null; } } } } } return $return_value; }
protected function _setupFlow(__IFlowState &$flow_state, __ConfigurationSection &$section) { $subsections = $section->getSections(); foreach ($subsections as $flow_section) { switch (strtoupper($flow_section->getName())) { case 'TRANSITION': $transition = $this->_parseTransitionNode($flow_section); $flow_state->addTransition($transition); break; case 'SET': $attribute = $this->_parseAttribute($flow_section); $flow_state->addAttribute($attribute); break; case 'IF': $transition = $this->_parseIfNode($flow_section); $flow_state->addTransition($transition); break; case 'IF-PERMISSION': $transition = $this->_parseIfPermissionNode($flow_section); $flow_state->addTransition($transition); break; default: throw new __ConfigurationException('Unexpected tag ' . $flow_section->getName() . ' as child of ' . $section->getName()); break; } } return $flow_state; }