ezcWorkflowDefinitionStorageXml::conditionToXml PHP Method

conditionToXml() public static method

"Convert" an ezcWorkflowCondition object into an DOMElement object.
public static conditionToXml ( ezcWorkflowCondition $condition, DOMDocument $document ) : DOMElement
$condition ezcWorkflowCondition
$document DOMDocument
return DOMElement
    public static function conditionToXml(ezcWorkflowCondition $condition, DOMDocument $document)
    {
        $xmlCondition = $document->createElement('condition');
        $conditionClass = get_class($condition);
        $conditionType = str_replace('ezcWorkflowCondition', '', $conditionClass);
        $xmlCondition->setAttribute('type', $conditionType);
        switch ($conditionClass) {
            case 'ezcWorkflowConditionVariable':
                $xmlCondition->setAttribute('name', $condition->getVariableName());
                $xmlCondition->appendChild(self::conditionToXml($condition->getCondition(), $document));
                break;
            case 'ezcWorkflowConditionVariables':
                list($variableNameA, $variableNameB) = $condition->getVariableNames();
                $xmlCondition->setAttribute('a', $variableNameA);
                $xmlCondition->setAttribute('b', $variableNameB);
                $xmlCondition->appendChild(self::conditionToXml($condition->getCondition(), $document));
                break;
            case 'ezcWorkflowConditionAnd':
            case 'ezcWorkflowConditionOr':
            case 'ezcWorkflowConditionXor':
                foreach ($condition->getConditions() as $childCondition) {
                    $xmlCondition->appendChild(self::conditionToXml($childCondition, $document));
                }
                break;
            case 'ezcWorkflowConditionNot':
                $xmlCondition->appendChild(self::conditionToXml($condition->getCondition(), $document));
                break;
            case 'ezcWorkflowConditionIsEqual':
            case 'ezcWorkflowConditionIsEqualOrGreaterThan':
            case 'ezcWorkflowConditionIsEqualOrLessThan':
            case 'ezcWorkflowConditionIsGreaterThan':
            case 'ezcWorkflowConditionIsLessThan':
            case 'ezcWorkflowConditionIsNotEqual':
                $xmlCondition->setAttribute('value', $condition->getValue());
                break;
            case 'ezcWorkflowConditionInArray':
                $xmlCondition->appendChild(self::variableToXml($condition->getValue(), $document));
                break;
        }
        return $xmlCondition;
    }

Usage Example

Beispiel #1
0
 /**
  * Generate XML representation of this node's configuration.
  *
  * @param DOMElement $element
  * @ignore
  */
 public function configurationToXML(DOMElement $element)
 {
     foreach ($this->configuration as $variable => $condition) {
         $xmlVariable = $element->appendChild($element->ownerDocument->createElement('variable'));
         $xmlVariable->setAttribute('name', $variable);
         $xmlVariable->appendChild(ezcWorkflowDefinitionStorageXml::conditionToXml($condition, $element->ownerDocument));
     }
 }