Copyright 2004-2016 Horde LLC (http://www.horde.org/) See the enclosed file COPYING for license information (LGPL). If you did not receive this file, see http://www.horde.org/licenses/lgpl21.
Author: Stuart Binge (omicron@mighty.co.za)
Author: Thomas Jarosch (thomas.jarosch@intra2net.com)
Beispiel #1
0
 /**
  * Generate the value that should be written to the node. Override in the
  * extending classes.
  *
  * @param string  $name        The name of the the attribute
  *                             to be updated.
  * @param array   $attributes  The data array that holds all
  *                             attribute values.
  * @param array   $params      The parameters for this write operation.
  *
  * @return mixed The value to be written.
  */
 protected function generateWriteValue($name, $attributes, $params)
 {
     if (isset($attributes[$name])) {
         return Horde_Kolab_Format_Date::writeUtcDateTime($attributes[$name]);
     } else {
         return Horde_Kolab_Format_Date::writeUtcDateTime(new DateTime());
     }
 }
Beispiel #2
0
 /**
  * Load the value of a node.
  *
  * @param DOMNode                       $node   Retrieve value for this node.
  * @param Horde_Kolab_Format_Xml_Helper $helper A XML helper instance.
  * @param array                         $params Additiona parameters for
  *                                              this parse operation.
  *
  * @return mixed|null The value or null if no value was found.
  */
 public function loadNodeValue($node, Horde_Kolab_Format_Xml_Helper $helper, $params = array())
 {
     $result = $helper->fetchNodeValue($node);
     if (strlen($result) == 10) {
         return array('date' => Horde_Kolab_Format_Date::readDate($result), 'date-only' => true);
     }
     return array('date' => Horde_Kolab_Format_Date::readDateTime($result), 'date-only' => false);
 }
Beispiel #3
0
 /**
  * Update the specified attribute.
  *
  * @param string                        $name        The name of the attribute
  *                                                   to be updated.
  * @param mixed                         $value       The value to store.
  * @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      The parameters for this
  *                                                   write operation.
  * @param DOMNode|NULL                  $old_node    The previous value (or
  *                                                   null if there is none).
  *
  * @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 saveNodeValue($name, $value, $parent_node, Horde_Kolab_Format_Xml_Helper $helper, $params = array(), $old_node = false)
 {
     if (!isset($value) || !$value instanceof DateTime) {
         throw new Horde_Kolab_Format_Exception(sprintf('Missing or invalid date for the "%s" entry!', $name));
     }
     $date = Horde_Kolab_Format_Date::writeDate($value);
     $node = parent::saveNodeValue($name, $date, $parent_node, $helper, $params, $old_node);
     return $node;
 }
Beispiel #4
0
 /**
  * Load the value of a node.
  *
  * @param DOMNode                       $node   Retrieve value for this node.
  * @param Horde_Kolab_Format_Xml_Helper $helper A XML helper instance.
  * @param array                         $params Additiona parameters for
  *                                              this parse operation.
  *
  * @return mixed|null The value or null if no value was found.
  */
 public function loadNodeValue($node, Horde_Kolab_Format_Xml_Helper $helper, $params = array())
 {
     $result = $helper->fetchNodeValue($node);
     if ($result !== null) {
         $date = Horde_Kolab_Format_Date::readUtcDateTime($result);
         if ($date === false && !$this->isRelaxed($params)) {
             throw new Horde_Kolab_Format_Exception(sprintf('Invalid date input "%s"!', $result));
         }
         return $date;
     } else {
         return $result;
     }
 }
Beispiel #5
0
 /**
  * Update the specified attribute.
  *
  * @param string                        $name        The name of the attribute
  *                                                   to be updated.
  * @param mixed                         $value       The value to store.
  * @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      The parameters for this
  *                                                   write operation.
  * @param DOMNode|NULL                  $old_node    The previous value (or
  *                                                   null if there is none).
  *
  * @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 saveNodeValue($name, $value, $parent_node, Horde_Kolab_Format_Xml_Helper $helper, $params = array(), $old_node = false)
 {
     if ($value instanceof DateTime) {
         $value = array('date' => $value);
     }
     if (!isset($value['date']) || !$value['date'] instanceof DateTime) {
         throw new Horde_Kolab_Format_Exception(sprintf('Missing or invalid data in the "date" element of the "%s" entry!', $name));
     }
     if (empty($value['date-only'])) {
         $date = Horde_Kolab_Format_Date::writeDateTime($value['date']);
     } else {
         $date = Horde_Kolab_Format_Date::writeDate($value['date']);
     }
     $node = parent::saveNodeValue($name, $date, $parent_node, $helper, $params, $old_node);
     return $node;
 }
Beispiel #6
0
 /**
  * Update the specified attribute.
  *
  * @param string                        $name        The name of the attribute
  *                                                   to be updated.
  * @param mixed                         $value       The value to store.
  * @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      The parameters for this
  *                                                   write operation.
  * @param DOMNode|NULL                  $old_node    The previous value (or
  *                                                   null if there is none).
  *
  * @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 saveNodeValue($name, $value, $parent_node, Horde_Kolab_Format_Xml_Helper $helper, $params = array(), $old_node = false)
 {
     if (empty($value)) {
         $type = 'none';
         $value = '';
     } else {
         if ($value instanceof DateTime) {
             $type = 'date';
             $value = Horde_Kolab_Format_Date::writeDate($value);
         } else {
             $type = 'number';
         }
     }
     $node = parent::saveNodeValue($name, $value, $parent_node, $helper, $params, $old_node);
     $node->setAttribute('type', $type);
     return $node;
 }
Beispiel #7
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);
 }
Beispiel #8
0
 /**
  * Update the specified attribute.
  *
  * @param string                        $name        The name of the attribute
  *                                                   to be updated.
  * @param mixed                         $value       The value to store.
  * @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      The parameters for this
  *                                                   write operation.
  * @param DOMNode|NULL                  $old_node    The previous value (or
  *                                                   null if there is none).
  *
  * @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 saveNodeValue($name, $value, $parent_node, Horde_Kolab_Format_Xml_Helper $helper, $params = array(), $old_node = false)
 {
     $date = Horde_Kolab_Format_Date::writeDate($value);
     $node = parent::saveNodeValue($name, $date, $parent_node, $helper, $params, $old_node);
     return $node;
 }
Beispiel #9
0
 /**
  * Generate the value that should be written to the node. Override in the
  * extending classes.
  *
  * @param string  $name        The name of the the attribute
  *                             to be updated.
  * @param array   $attributes  The data array that holds all
  *                             attribute values.
  * @param array   $params      The parameters for this write operation.
  *
  * @return mixed The value to be written.
  */
 protected function generateWriteValue($name, $attributes, $params)
 {
     return Horde_Kolab_Format_Date::writeUtcDateTime(new DateTime('now', new DateTimeZone('UTC')));
 }
Beispiel #10
0
 /**
  * @dataProvider provideUtcExportDates
  */
 public function testWriteUtc($string_date, $result)
 {
     $date = Horde_Kolab_Format_Date::readUtcDateTime($string_date);
     $this->assertEquals($result, Horde_Kolab_Format_Date::writeUtcDateTime($date));
 }