Horde_Kolab_Format_Xml_Helper::findNodeRelativeTo PHP Method

findNodeRelativeTo() public method

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.
return DOMNode | false The named DOMNode or empty if no node was found.
    public function findNodeRelativeTo($query, DOMNode $context)
    {
        $result = $this->_xpath->query($query, $context);
        if ($result->length) {
            return $result->item(0);
        }
        return false;
    }

Usage Example

Exemplo n.º 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())
 {
     $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;
 }
All Usage Examples Of Horde_Kolab_Format_Xml_Helper::findNodeRelativeTo