aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/sabre/vobject/lib/Parser/MimeDir.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/sabre/vobject/lib/Parser/MimeDir.php')
-rw-r--r--vendor/sabre/vobject/lib/Parser/MimeDir.php20
1 files changed, 16 insertions, 4 deletions
diff --git a/vendor/sabre/vobject/lib/Parser/MimeDir.php b/vendor/sabre/vobject/lib/Parser/MimeDir.php
index db0f81531..513f7bd0c 100644
--- a/vendor/sabre/vobject/lib/Parser/MimeDir.php
+++ b/vendor/sabre/vobject/lib/Parser/MimeDir.php
@@ -167,7 +167,11 @@ class MimeDir extends Parser
while (true) {
// Reading until we hit END:
- $line = $this->readLine();
+ try {
+ $line = $this->readLine();
+ } catch (EofException $oEx) {
+ $line = 'END:'.$this->root->name;
+ }
if ('END:' === strtoupper(substr($line, 0, 4))) {
break;
}
@@ -372,12 +376,22 @@ class MimeDir extends Parser
$value = $this->unescapeParam($value);
if (is_null($lastParam)) {
+ if ($this->options & self::OPTION_IGNORE_INVALID_LINES) {
+ // When the property can't be matched and the configuration
+ // option is set to ignore invalid lines, we ignore this line
+ // This can happen when servers provide faulty data as iCloud
+ // frequently does with X-APPLE-STRUCTURED-LOCATION
+ continue;
+ }
throw new ParseException('Invalid Mimedir file. Line starting at '.$this->startLine.' did not follow iCalendar/vCard conventions');
}
if (is_null($property['parameters'][$lastParam])) {
$property['parameters'][$lastParam] = $value;
} elseif (is_array($property['parameters'][$lastParam])) {
$property['parameters'][$lastParam][] = $value;
+ } elseif ($property['parameters'][$lastParam] === $value) {
+ // When the current value of the parameter is the same as the
+ // new one, then we can leave the current parameter as it is.
} else {
$property['parameters'][$lastParam] = [
$property['parameters'][$lastParam],
@@ -450,10 +464,8 @@ class MimeDir extends Parser
switch (strtolower($charset)) {
case 'utf-8':
break;
- case 'iso-8859-1':
- $property['value'] = utf8_encode($property['value']);
- break;
case 'windows-1252':
+ case 'iso-8859-1':
$property['value'] = mb_convert_encoding($property['value'], 'UTF-8', $charset);
break;
default: