public save ( string $name, array $attributes, DOMNode $parent_node, Horde_Kolab_Format_Xml_Helper $helper, array $params = [] ) : DOMNode | boolean | ||
$name | string | The name of the the attribute to be updated. |
$attributes | array | The data array that holds all attribute values. |
$parent_node | DOMNode | The parent node of the node that should be updated. |
$helper | Horde_Kolab_Format_Xml_Helper | A XML helper instance. |
$params | array | Additional parameters for this write operation. |
리턴 | DOMNode | boolean | The new/updated child node or false if this failed. |
public function save($name, $attributes, $parent_node, Horde_Kolab_Format_Xml_Helper $helper, $params = array())
{
$node = $helper->findNodeRelativeTo('./' . $name, $parent_node);
if (!isset($attributes[$name])) {
if ($node === false) {
if ($this->value == Horde_Kolab_Format_Xml::VALUE_MAYBE_MISSING || $this->value == Horde_Kolab_Format_Xml::VALUE_NOT_EMPTY && $this->isRelaxed($params)) {
return false;
}
} else {
if ($this->value == Horde_Kolab_Format_Xml::VALUE_MAYBE_MISSING) {
/** Client indicates that the value should get removed */
$helper->removeNodes($parent_node, $name);
return false;
} else {
return $node;
}
}
}
return $this->saveNodeValue($name, $this->generateWriteValue($name, $attributes, $params), $parent_node, $helper, $params, $node);
}
/** * Update the specified attribute. * * @param string $name The name of the the * attribute to be updated. * @param array $attributes The data array that holds * all attribute values. * @param DOMNode $parent_node The parent node of the * node that should be * updated. * @param Horde_Kolab_Format_Xml_Helper $helper A XML helper instance. * @param array $params Additional parameters * for this write operation. * * @return DOMNode|boolean The new/updated child node or false if this * failed. * * @throws Horde_Kolab_Format_Exception If converting the data to XML failed. */ public function save($name, $attributes, $parent_node, Horde_Kolab_Format_Xml_Helper $helper, $params = array()) { if (isset($attributes['range-type']) && $attributes['range-type'] == 'date') { $attributes[$name] = Horde_Kolab_Format_Date::writeDate($attributes[$name]); } $node = parent::save($name, $attributes, $parent_node, $helper, $params); if (isset($attributes['range-type'])) { $type = $attributes['range-type']; } else { $type = 'none'; } $node->setAttribute('type', $type); }