Return a single named node below the given context matching the given
XPath query.
public findNodeRelativeTo ( string $query, DOMNode $context ) : DOMNode | false | ||
$query | string | The query. |
$context | DOMNode | Search below this node. |
리턴 | DOMNode | false | The named DOMNode or empty if no node was found. |
/** * 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()) { $node = $helper->findNodeRelativeTo('./' . $name, $parent_node); if ($node === false) { if (!isset($attributes[$name])) { if ($this->isRelaxed($params)) { return false; } else { throw new Horde_Kolab_Format_Exception_MissingUid(); } } } else { if (isset($attributes[$name])) { if (($old = $this->loadNodeValue($node, $helper, $params)) != $attributes[$name]) { if (!$this->isRelaxed($params)) { throw new Horde_Kolab_Format_Exception(sprintf('Not attempting to overwrite old %s %s with new value %s!', $name, $old, $attributes['uid'])); } } else { return $node; } } } $result = $this->saveNodeValue($name, $this->generateWriteValue($name, $attributes, $params), $parent_node, $helper, $params, $node); return $node !== false ? $node : $result; }
/** * 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()) { $node = $helper->findNodeRelativeTo('./' . $name, $parent_node); if (!isset($attributes[$name])) { if ($node !== false) { /** Client indicates that the value should get removed */ $helper->removeNodes($parent_node, $name); } return false; } 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()) { $node = $helper->findNodeRelativeTo('./' . $name, $parent_node); if (!isset($attributes[$name])) { if (!empty($attributes['categories'])) { $attributes[$name] = $attributes['categories']; unset($attributes['categories']); } } if (!isset($attributes[$name]) && $node === false && !$this->isRelaxed($params)) { throw new Horde_Kolab_Format_Exception_MissingValue('Preferences data is missing an application setting.'); } if ($node === false) { $categories = $helper->findNodeRelativeTo('./categories', $parent_node); /** Remove old categories entry */ $helper->removeNodes($parent_node, 'categories'); } 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()) { $node = $helper->findNodeRelativeTo('./' . $name, $parent_node); if (!$this->merge && !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()) { $node = $helper->findNodeRelativeTo('./' . $name, $parent_node); $result = $this->saveNodeValue($name, $this->generateWriteValue($name, $attributes, $params), $parent_node, $helper, $params, $node); return $node !== false ? $node : $result; }