aboutsummaryrefslogtreecommitdiffstats
path: root/3rdparty/Sabre/VObject
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/Sabre/VObject')
-rw-r--r--3rdparty/Sabre/VObject/Component.php13
-rw-r--r--3rdparty/Sabre/VObject/Element/DateTime.php43
-rw-r--r--3rdparty/Sabre/VObject/Element/MultiDateTime.php6
-rw-r--r--3rdparty/Sabre/VObject/Node.php7
-rw-r--r--3rdparty/Sabre/VObject/Property.php13
-rw-r--r--3rdparty/Sabre/VObject/Reader.php6
-rw-r--r--3rdparty/Sabre/VObject/Version.php2
7 files changed, 70 insertions, 20 deletions
diff --git a/3rdparty/Sabre/VObject/Component.php b/3rdparty/Sabre/VObject/Component.php
index 3d5a3d75635..47cf9f3d812 100644
--- a/3rdparty/Sabre/VObject/Component.php
+++ b/3rdparty/Sabre/VObject/Component.php
@@ -83,13 +83,16 @@ class Sabre_VObject_Component extends Sabre_VObject_Element {
if (!is_null($itemValue)) {
throw new InvalidArgumentException('The second argument must not be specified, when passing a VObject');
}
+ $item->parent = $this;
$this->children[] = $item;
} elseif(is_string($item)) {
if (!is_scalar($itemValue)) {
throw new InvalidArgumentException('The second argument must be scalar');
}
- $this->children[] = new Sabre_VObject_Property($item,$itemValue);
+ $item = new Sabre_VObject_Property($item,$itemValue);
+ $item->parent = $this;
+ $this->children[] = $item;
} else {
@@ -208,16 +211,19 @@ class Sabre_VObject_Component extends Sabre_VObject_Element {
$overWrite = count($matches)?key($matches):null;
if ($value instanceof Sabre_VObject_Component || $value instanceof Sabre_VObject_Property) {
+ $value->parent = $this;
if (!is_null($overWrite)) {
$this->children[$overWrite] = $value;
} else {
$this->children[] = $value;
}
} elseif (is_scalar($value)) {
+ $property = new Sabre_VObject_Property($name,$value);
+ $property->parent = $this;
if (!is_null($overWrite)) {
- $this->children[$overWrite] = new Sabre_VObject_Property($name,$value);
+ $this->children[$overWrite] = $property;
} else {
- $this->children[] = new Sabre_VObject_Property($name,$value);
+ $this->children[] = $property;
}
} else {
throw new InvalidArgumentException('You must pass a Sabre_VObject_Component, Sabre_VObject_Property or scalar type');
@@ -237,6 +243,7 @@ class Sabre_VObject_Component extends Sabre_VObject_Element {
foreach($matches as $k=>$child) {
unset($this->children[$k]);
+ $child->parent = null;
}
diff --git a/3rdparty/Sabre/VObject/Element/DateTime.php b/3rdparty/Sabre/VObject/Element/DateTime.php
index 30e5c6ca86a..3350ec02c88 100644
--- a/3rdparty/Sabre/VObject/Element/DateTime.php
+++ b/3rdparty/Sabre/VObject/Element/DateTime.php
@@ -70,7 +70,7 @@ class Sabre_VObject_Element_DateTime extends Sabre_VObject_Property {
$this->setValue($dt->format('Ymd\\THis'));
$this->offsetUnset('VALUE');
$this->offsetUnset('TZID');
- $this->offsetSet('VALUE','DATE-TIME');
+ $this->offsetSet('VALUE','DATE-TIME');
break;
case self::UTC :
$dt->setTimeZone(new DateTimeZone('UTC'));
@@ -116,7 +116,7 @@ class Sabre_VObject_Element_DateTime extends Sabre_VObject_Property {
list(
$this->dateType,
$this->dateTime
- ) = self::parseData($this->value, $this->offsetGet('TZID'));
+ ) = self::parseData($this->value, $this);
return $this->dateTime;
}
@@ -137,7 +137,7 @@ class Sabre_VObject_Element_DateTime extends Sabre_VObject_Property {
list(
$this->dateType,
$this->dateTime,
- ) = self::parseData($this->value, $this->offsetGet('TZID'));
+ ) = self::parseData($this->value, $this);
return $this->dateType;
}
@@ -151,12 +151,12 @@ class Sabre_VObject_Element_DateTime extends Sabre_VObject_Property {
* 2. A DateTime object (or null)
*
* @param string|null $propertyValue The string to parse (yymmdd or
- * ymmddThhmmss, etc..)
- * @param string|null $tzid The value of the 'TZID' property.
+ * ymmddThhmmss, etc..)
+ * @param Sabre_VObject_Property|null $property The instance of the
+ * property we're parsing.
* @return array
*/
- static public function parseData($propertyValue, $tzid) {
-
+ static public function parseData($propertyValue, Sabre_VObject_Property $property = null) {
if (is_null($propertyValue)) {
return array(null, null);
@@ -195,6 +195,8 @@ class Sabre_VObject_Element_DateTime extends Sabre_VObject_Property {
);
}
+ // Finding the timezone.
+ $tzid = $property['TZID'];
if (!$tzid) {
return array(
self::LOCAL,
@@ -202,7 +204,32 @@ class Sabre_VObject_Element_DateTime extends Sabre_VObject_Property {
);
}
- $tz = new DateTimeZone($tzid->value);
+ try {
+ $tz = new DateTimeZone($tzid->value);
+ } catch (Exception $e) {
+
+ // The id was invalid, we're going to try to find the information
+ // through the VTIMEZONE object.
+
+ // First we find the root object
+ $root = $property;
+ while($root->parent) {
+ $root = $root->parent;
+ }
+
+ if (isset($root->VTIMEZONE)) {
+ foreach($root->VTIMEZONE as $vtimezone) {
+ if (((string)$vtimezone->TZID) == $tzid) {
+ if (isset($vtimezone->{'X-LIC-LOCATION'})) {
+ $tzid = (string)$vtimezone->{'X-LIC-LOCATION'};
+ }
+ }
+ }
+ }
+
+ $tz = new DateTimeZone($tzid);
+
+ }
$dt = new DateTime($dateStr, $tz);
$dt->setTimeZone($tz);
diff --git a/3rdparty/Sabre/VObject/Element/MultiDateTime.php b/3rdparty/Sabre/VObject/Element/MultiDateTime.php
index 5e677f5e5b5..dc6ca5abb80 100644
--- a/3rdparty/Sabre/VObject/Element/MultiDateTime.php
+++ b/3rdparty/Sabre/VObject/Element/MultiDateTime.php
@@ -60,7 +60,7 @@ class Sabre_VObject_Element_MultiDateTime extends Sabre_VObject_Property {
$val[] = $i->format('Ymd\\THis');
}
$this->setValue(implode(',',$val));
- $this->offsetSet('VALUE','DATE-TIME');
+ $this->offsetSet('VALUE','DATE-TIME');
break;
case Sabre_VObject_Element_DateTime::UTC :
$val = array();
@@ -121,7 +121,7 @@ class Sabre_VObject_Element_MultiDateTime extends Sabre_VObject_Property {
list(
$type,
$dt
- ) = Sabre_VObject_Element_DateTime::parseData($val, $this->offsetGet('TZID'));
+ ) = Sabre_VObject_Element_DateTime::parseData($val, $this);
$dts[] = $dt;
$this->dateType = $type;
}
@@ -154,7 +154,7 @@ class Sabre_VObject_Element_MultiDateTime extends Sabre_VObject_Property {
list(
$type,
$dt
- ) = Sabre_VObject_Element_DateTime::parseData($val, $this->offsetGet('TZID'));
+ ) = Sabre_VObject_Element_DateTime::parseData($val, $this);
$dts[] = $dt;
$this->dateType = $type;
}
diff --git a/3rdparty/Sabre/VObject/Node.php b/3rdparty/Sabre/VObject/Node.php
index efc7f76da79..7100b62f1cb 100644
--- a/3rdparty/Sabre/VObject/Node.php
+++ b/3rdparty/Sabre/VObject/Node.php
@@ -25,6 +25,13 @@ abstract class Sabre_VObject_Node implements IteratorAggregate, ArrayAccess, Cou
*/
protected $iterator = null;
+ /**
+ * A link to the parent node
+ *
+ * @var Sabre_VObject_Node
+ */
+ protected $parent = null;
+
/* {{{ IteratorAggregator interface */
/**
diff --git a/3rdparty/Sabre/VObject/Property.php b/3rdparty/Sabre/VObject/Property.php
index 624dd4b8a58..06058229043 100644
--- a/3rdparty/Sabre/VObject/Property.php
+++ b/3rdparty/Sabre/VObject/Property.php
@@ -149,13 +149,16 @@ class Sabre_VObject_Property extends Sabre_VObject_Element {
if (!is_null($itemValue)) {
throw new InvalidArgumentException('The second argument must not be specified, when passing a VObject');
}
+ $item->parent = $this;
$this->parameters[] = $item;
} elseif(is_string($item)) {
if (!is_scalar($itemValue)) {
throw new InvalidArgumentException('The second argument must be scalar');
}
- $this->parameters[] = new Sabre_VObject_Parameter($item,$itemValue);
+ $parameter = new Sabre_VObject_Parameter($item,$itemValue);
+ $parameter->parent = $this;
+ $this->parameters[] = $parameter;
} else {
@@ -231,12 +234,15 @@ class Sabre_VObject_Property extends Sabre_VObject_Element {
throw new InvalidArgumentException('A parameter name must be specified. This means you cannot use the $array[]="string" to add parameters.');
$this->offsetUnset($name);
- $this->parameters[] = new Sabre_VObject_Parameter($name, $value);
+ $parameter = new Sabre_VObject_Parameter($name, $value);
+ $parameter->parent = $this;
+ $this->parameters[] = $parameter;
} elseif ($value instanceof Sabre_VObject_Parameter) {
if (!is_null($name))
throw new InvalidArgumentException('Don\'t specify a parameter name if you\'re passing a Sabre_VObject_Parameter. Add using $array[]=$parameterObject.');
-
+
+ $value->parent = $this;
$this->parameters[] = $value;
} else {
throw new InvalidArgumentException('You can only add parameters to the property object');
@@ -258,6 +264,7 @@ class Sabre_VObject_Property extends Sabre_VObject_Element {
$result = array();
foreach($this->parameters as $key=>$parameter) {
if ($parameter->name == $name) {
+ $parameter->parent = null;
unset($this->parameters[$key]);
}
diff --git a/3rdparty/Sabre/VObject/Reader.php b/3rdparty/Sabre/VObject/Reader.php
index c38afbfb632..5ed7882ac91 100644
--- a/3rdparty/Sabre/VObject/Reader.php
+++ b/3rdparty/Sabre/VObject/Reader.php
@@ -95,7 +95,7 @@ class Sabre_VObject_Reader {
while(stripos($nextLine,"END:")!==0) {
- $obj->children[] = self::readLine($lines);
+ $obj->add(self::readLine($lines));
$nextLine = current($lines);
if ($nextLine===false)
@@ -140,7 +140,9 @@ class Sabre_VObject_Reader {
if ($matches['parameters']) {
- $obj->parameters = self::readParameters($matches['parameters']);
+ foreach(self::readParameters($matches['parameters']) as $param) {
+ $obj->add($param);
+ }
}
return $obj;
diff --git a/3rdparty/Sabre/VObject/Version.php b/3rdparty/Sabre/VObject/Version.php
index 950c1c51104..937c367e222 100644
--- a/3rdparty/Sabre/VObject/Version.php
+++ b/3rdparty/Sabre/VObject/Version.php
@@ -14,7 +14,7 @@ class Sabre_VObject_Version {
/**
* Full version number
*/
- const VERSION = '1.2.2';
+ const VERSION = '1.2.4';
/**
* Stability : alpha, beta, stable