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.
/** * 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()); } }
/** * 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); }
/** * 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; }
/** * 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; } }
/** * 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; }
/** * 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; }
/** * 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); }
/** * 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; }
/** * 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'))); }
/** * @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)); }