Horde_Kolab_Format_Xml_Type_String::save PHP Method

save() public method

Update the specified attribute.
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.
return 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);
    }

Usage Example

Example #1
0
 /**
  * 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);
 }
Horde_Kolab_Format_Xml_Type_String