load() public method

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.
return DOMNode | boolean The named DOMNode or false if no node value was found.
コード例 #1
0
ファイル: Root.php プロジェクト: raz0rsdge/horde
 /**
  * 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;
 }
コード例 #2
0
ファイル: Composite.php プロジェクト: jubinpatel/horde
 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);
 }
コード例 #3
0
ファイル: Recurrence.php プロジェクト: horde/horde
 /**
  * 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;
 }