1<?php 2 3namespace Sabre\VObject\Property\VCard; 4 5use Sabre\VObject\DateTimeParser; 6use Sabre\VObject\Property\Text; 7use Sabre\Xml; 8 9/** 10 * TimeStamp property. 11 * 12 * This object encodes TIMESTAMP values. 13 * 14 * @copyright Copyright (C) fruux GmbH (https://fruux.com/) 15 * @author Evert Pot (http://evertpot.com/) 16 * @license http://sabre.io/license/ Modified BSD License 17 */ 18class TimeStamp extends Text { 19 20 /** 21 * In case this is a multi-value property. This string will be used as a 22 * delimiter. 23 * 24 * @var string|null 25 */ 26 public $delimiter = null; 27 28 /** 29 * Returns the type of value. 30 * 31 * This corresponds to the VALUE= parameter. Every property also has a 32 * 'default' valueType. 33 * 34 * @return string 35 */ 36 function getValueType() { 37 38 return 'TIMESTAMP'; 39 40 } 41 42 /** 43 * Returns the value, in the format it should be encoded for json. 44 * 45 * This method must always return an array. 46 * 47 * @return array 48 */ 49 function getJsonValue() { 50 51 $parts = DateTimeParser::parseVCardDateTime($this->getValue()); 52 53 $dateStr = 54 $parts['year'] . '-' . 55 $parts['month'] . '-' . 56 $parts['date'] . 'T' . 57 $parts['hour'] . ':' . 58 $parts['minute'] . ':' . 59 $parts['second']; 60 61 // Timezone 62 if (!is_null($parts['timezone'])) { 63 $dateStr .= $parts['timezone']; 64 } 65 66 return [$dateStr]; 67 68 } 69 70 /** 71 * This method serializes only the value of a property. This is used to 72 * create xCard or xCal documents. 73 * 74 * @param Xml\Writer $writer XML writer. 75 * 76 * @return void 77 */ 78 protected function xmlSerializeValue(Xml\Writer $writer) { 79 80 // xCard is the only XML and JSON format that has the same date and time 81 // format than vCard. 82 $valueType = strtolower($this->getValueType()); 83 $writer->writeElement($valueType, $this->getValue()); 84 85 } 86} 87