Strip empty parameters from RRULE properties (#4797)
This commit is contained in:
parent
bf64805882
commit
874b950f73
2 changed files with 14 additions and 7 deletions
|
@ -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, ';');
|
||||
|
|
|
@ -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());
|
||||
|
|
Loading…
Add table
Reference in a new issue