Load the node value from the Kolab object.
public load ( string $name, &$attributes, DOMNode $parent_node, Horde_Kolab_Format_Xml_Helper $helper, array $params = [] ) : DOMNode | boolean | ||
$name | string | The name of the the attribute to be fetched. |
$parent_node | DOMNode | The parent node of the node to be loaded. |
$helper | Horde_Kolab_Format_Xml_Helper | A XML helper instance. |
$params | array | Additiona parameters for this parse operation. |
Résultat | DOMNode | boolean | The named DOMNode or false if no node value was found. |
/** * Load the node value from the Kolab object. * * @param string $name The name of the the * attribute to be fetched. * @param array &$attributes The data array that * holds all attribute * values. * @param DOMNode $parent_node The parent node of the * node to be loaded. * @param Horde_Kolab_Format_Xml_Helper $helper A XML helper instance. * @param array $params Additiona parameters for * this parse operation. * * @return DOMNode|boolean The named DOMNode or false if no node value was * found. */ public function load($name, &$attributes, $parent_node, Horde_Kolab_Format_Xml_Helper $helper, $params = array()) { if (!($root = $helper->findNode('/' . $name))) { throw new Horde_Kolab_Format_Exception_InvalidRoot(sprintf('Missing root node "%s"!', $name)); } $attributes['_format-version'] = $root->getAttribute('version'); $attributes['_api-version'] = $params['api-version']; if (!$this->isRelaxed($params)) { if (version_compare($params['expected-version'], $attributes['_format-version']) < 0) { throw new Horde_Kolab_Format_Exception_InvalidRoot(sprintf('Not attempting to read higher root version of %s with our version %s!', $attributes['_format-version'], $params['expected-version'])); } } $this->_prepareCompositeParameters($params, $attributes['_format-version']); parent::load($name, $attributes, $parent_node, $helper, $params); return $root; }
public function load($name, &$attributes, $parent_node, Horde_Kolab_Format_Xml_Helper $helper, $params = array()) { if (isset($params['array'])) { $this->elements = $params['array']; unset($params['array']); } if (isset($params['value'])) { $this->value = $params['value']; unset($params['value']); } if (isset($params['default'])) { $this->default = $params['default']; unset($params['default']); } return parent::load($name, $attributes, $parent_node, $helper, $params); }
/** * Load the node value from the Kolab object. * * @param string $name The name of the the * attribute to be fetched. * @param array &$attributes The data array that * holds all attribute * values. * @param DOMNode $parent_node The parent node of the * node to be loaded. * @param Horde_Kolab_Format_Xml_Helper $helper A XML helper instance. * @param array $params Additiona parameters for * this parse operation. * * @return DOMNode|boolean The named DOMNode or false if no node value was * found. */ public function load($name, &$attributes, $parent_node, Horde_Kolab_Format_Xml_Helper $helper, $params = array()) { $result = parent::load($name, $attributes, $parent_node, $helper, $params); if ($node = $helper->findNodeRelativeTo('./' . $name, $parent_node)) { // Get the cycle type (must be present) $attributes['recurrence']['cycle'] = $node->getAttribute('cycle'); // Get the sub type (may be present) $attributes['recurrence']['type'] = $node->getAttribute('type'); } if (empty($attributes['recurrence'])) { return $result; } $recurrence = $attributes['recurrence']; if ($recurrence['interval'] < 0) { throw new Horde_Kolab_Format_Exception_ParseError(sprintf('Recurrence: interval cannot be below zero [Value: %s]!', $recurrence['interval'])); } if (empty($recurrence['cycle'])) { throw new Horde_Kolab_Format_Exception_ParseError('Recurrence: "cycle" attribute missing!'); } if ($recurrence['cycle'] == 'weekly') { // Check for <day> if (!isset($recurrence['day']) || count($recurrence['day']) == 0) { throw new Horde_Kolab_Format_Exception_ParseError('Recurrence: day tag missing for weekly recurrence!'); } } // The code below is only for monthly or yearly recurrences if ($recurrence['cycle'] == 'monthly' || $recurrence['cycle'] == 'yearly') { if (!isset($recurrence['type'])) { throw new Horde_Kolab_Format_Exception_ParseError('Recurrence: type attribute missing!'); } if (!isset($recurrence['daynumber'])) { throw new Horde_Kolab_Format_Exception_ParseError('Recurrence: daynumber tag missing!'); } $daynumber = $recurrence['daynumber']; if ($daynumber < 0) { throw new Horde_Kolab_Format_Exception_ParseError(sprintf('Recurrence: daynumber cannot be below zero ["%s"]!', $daynumber)); } if ($recurrence['type'] == 'daynumber') { if ($recurrence['cycle'] == 'yearly' && $daynumber > 366) { throw new Horde_Kolab_Format_Exception_ParseError(sprintf('Recurrence: daynumber cannot be larger than 366 for yearly recurrences ["%s"]!', $daynumber)); } else { if ($recurrence['cycle'] == 'monthly' && $daynumber > 31) { throw new Horde_Kolab_Format_Exception_ParseError(sprintf('Recurrence: daynumber cannot be larger than 31 for monthly recurrences ["%s"]!', $daynumber)); } } } else { if ($recurrence['type'] == 'weekday') { // daynumber is the week of the month if ($daynumber > 5) { throw new Horde_Kolab_Format_Exception_ParseError(sprintf('Recurrence: daynumber cannot be larger than 5 for type weekday ["%s"]!', $daynumber)); } // Check for <day> if (!isset($recurrence['day']) || count($recurrence['day']) == 0) { throw new Horde_Kolab_Format_Exception_ParseError('Recurrence: day tag missing for type weekday!'); } } } if (($recurrence['type'] == 'monthday' || $recurrence['type'] == 'yearday') && $recurrence['cycle'] == 'monthly') { throw new Horde_Kolab_Format_Exception_ParseError('Recurrence: type monthday/yearday is only allowed for yearly recurrences'); } if ($recurrence['cycle'] == 'yearly') { if ($recurrence['type'] == 'monthday') { // daynumber and month if (!isset($recurrence['month'])) { throw new Horde_Kolab_Format_Exception_ParseError('Recurrence: month tag missing for type monthday'); } if ($daynumber > 31) { throw new Horde_Kolab_Format_Exception_ParseError(sprintf('Recurrence: daynumber cannot be larger than 31 for type monthday ["%s"]!', $daynumber)); } } else { if ($recurrence['type'] == 'yearday') { if ($daynumber > 366) { throw new Horde_Kolab_Format_Exception_ParseError(sprintf('Recurrence: daynumber cannot be larger than 366 for type yearday ["%s"]!', $daynumber)); } } } } } return $result; }