Strip empty parameters from RRULE properties (#4797)

This commit is contained in:
Thomas Bruederli 2015-03-05 14:31:38 +01:00
parent bf64805882
commit 874b950f73
2 changed files with 14 additions and 7 deletions

View file

@ -1520,14 +1520,18 @@ class libcalendaring extends rcube_plugin
break;
case 'RDATE':
case 'EXDATE':
foreach ((array)$val as $i => $ex)
$val[$i] = $ex->format('Ymd\THis');
foreach ((array)$val as $i => $ex) {
if (is_a($ex, 'DateTime'))
$val[$i] = $ex->format('Ymd\THis');
}
$val = join(',', (array)$val);
break;
case 'EXCEPTIONS':
continue 2;
}
$rrule .= $k . '=' . $val . ';';
if (strlen($val))
$rrule .= $k . '=' . $val . ';';
}
return rtrim($rrule, ';');

View file

@ -969,10 +969,13 @@ class libvcalendar implements Iterator
$ve->add('SEQUENCE', $event['sequence']);
if ($event['recurrence'] && !$recurrence_id) {
if ($exdates = $event['recurrence']['EXDATE']) {
$exdates = $rdates = null;
if (isset($event['recurrence']['EXDATE'])) {
$exdates = $event['recurrence']['EXDATE'];
unset($event['recurrence']['EXDATE']); // don't serialize EXDATEs into RRULE value
}
if ($rdates = $event['recurrence']['RDATE']) {
if (isset($event['recurrence']['RDATE'])) {
$rdates = $event['recurrence']['RDATE'];
unset($event['recurrence']['RDATE']); // don't serialize RDATEs into RRULE value
}
@ -981,7 +984,7 @@ class libvcalendar implements Iterator
}
// add EXDATEs each one per line (for Thunderbird Lightning)
if ($exdates) {
if (is_array($exdates)) {
foreach ($exdates as $ex) {
if ($ex instanceof \DateTime) {
$exd = clone $event['start'];
@ -992,7 +995,7 @@ class libvcalendar implements Iterator
}
}
// add RDATEs
if (!empty($rdates)) {
if (is_array($rdates) && !empty($rdates)) {
$sample = $this->datetime_prop('RDATE', $rdates[0]);
$rdprop = new VObject\Property\MultiDateTime('RDATE', null);
$rdprop->setDateTimes($rdates, $sample->getDateType());