Fix bug where exception was unintentionally thrown after catching it.
Fix so invalid dates in LAST-MODIFIED, DTSTAMP, CREATED fields of iCalendar import doesn't throw exceptions (Bug #2144)
This commit is contained in:
parent
a3e3e3fe13
commit
9f8c4d547e
1 changed files with 15 additions and 7 deletions
|
@ -108,7 +108,6 @@ class libvcalendar
|
||||||
return $this->import_from_vobject($vobject);
|
return $this->import_from_vobject($vobject);
|
||||||
}
|
}
|
||||||
catch (Exception $e) {
|
catch (Exception $e) {
|
||||||
throw $e;
|
|
||||||
rcube::raise_error(array(
|
rcube::raise_error(array(
|
||||||
'code' => 600, 'type' => 'php',
|
'code' => 600, 'type' => 'php',
|
||||||
'file' => __FILE__, 'line' => __LINE__,
|
'file' => __FILE__, 'line' => __LINE__,
|
||||||
|
@ -206,19 +205,28 @@ class libvcalendar
|
||||||
$event = array(
|
$event = array(
|
||||||
'uid' => strval($ve->UID),
|
'uid' => strval($ve->UID),
|
||||||
'title' => strval($ve->SUMMARY),
|
'title' => strval($ve->SUMMARY),
|
||||||
'created' => $ve->CREATED ? $ve->CREATED->getDateTime() : null,
|
|
||||||
'changed' => null,
|
|
||||||
'_type' => $ve->name == 'VTODO' ? 'task' : 'event',
|
'_type' => $ve->name == 'VTODO' ? 'task' : 'event',
|
||||||
// set defaults
|
// set defaults
|
||||||
'priority' => 0,
|
'priority' => 0,
|
||||||
'attendees' => array(),
|
'attendees' => array(),
|
||||||
);
|
);
|
||||||
|
|
||||||
if ($ve->{'LAST-MODIFIED'}) {
|
// Catch possible exceptions when date is invalid (Bug #2144)
|
||||||
$event['changed'] = $ve->{'LAST-MODIFIED'}->getDateTime();
|
// We can skip these fields, they aren't critical
|
||||||
|
if ($ve->CREATED) {
|
||||||
|
try {
|
||||||
|
$event['created'] = $ve->CREATED->getDateTime();
|
||||||
|
} catch (Exception $e) {};
|
||||||
}
|
}
|
||||||
else if ($ve->DTSTAMP) {
|
if ($ve->{'LAST-MODIFIED'}) {
|
||||||
$event['changed'] = $ve->DTSTAMP->getDateTime();
|
try {
|
||||||
|
$event['changed'] = $ve->{'LAST-MODIFIED'}->getDateTime();
|
||||||
|
} catch (Exception $e) {};
|
||||||
|
}
|
||||||
|
if (!$event['changed'] && $ve->DTSTAMP) {
|
||||||
|
try {
|
||||||
|
$event['changed'] = $ve->DTSTAMP->getDateTime();
|
||||||
|
} catch (Exception $e) {};
|
||||||
}
|
}
|
||||||
|
|
||||||
// map other attributes to internal fields
|
// map other attributes to internal fields
|
||||||
|
|
Loading…
Add table
Reference in a new issue