Revision: 36238
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at November 19, 2010 19:44 by althaus
Initial Code
public function __construct($date = null, $dtz = null) {
$this->is_date = false;
if ( preg_match('{;?VALUE=DATE[:;]}', $date, $matches) ) $this->is_date = true;
elseif ( preg_match('{:([12]\d{3}) (0[1-9]|1[012]) (0[1-9]|[12]\d|3[01]Z?) $}x', $date, $matches) ) $this->is_date = true;
if (preg_match('/;?TZID=([^:]+).*:(\d{8}(T\d{6})?)(Z)?/', $date, $matches) ) {
if ( isset($matches[4]) && $matches[4] == 'Z' ) {
$dtz = new RepeatRuleTimeZone('UTC');
$this->tzid = 'UTC';
}
else if ( isset($matches[1]) && $matches[1] != '' ) {
$dtz = new RepeatRuleTimeZone($matches[1]);
$this->tzid = $dtz->tzid();
}
else {
$dtz = new RepeatRuleTimeZone('UTC');
$this->tzid = null;
}
$date = $matches[2];
}
elseif ( is_string($dtz) ) {
$dtz = new RepeatRuleTimeZone($dtz);
$this->tzid = $dtz->tzid();
}
elseif( $dtz === null ) {
$dtz = new RepeatRuleTimeZone('UTC');
if ( preg_match('/(\d{8}(T\d{6})?)Z/', $date, $matches) ) {
if ( strlen($matches[1]) == 8 ) $this->is_date = true;
$this->tzid = 'UTC';
}
else {
$this->tzid = null;
}
}
else {
$this->tzid = $dtz->getName();
}
parent::__construct($date, $dtz);
return $this;
}
Initial URL
Initial Description
Added "$date = $matches[2];" to prevent exception when putting dates like "TZID=Europe/Berlin:20101110T140000" into the constructor.
Initial Title
RepeatRuleDateTime
Initial Tags
Initial Language
PHP