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;
|
break;
|
||||||
case 'RDATE':
|
case 'RDATE':
|
||||||
case 'EXDATE':
|
case 'EXDATE':
|
||||||
foreach ((array)$val as $i => $ex)
|
foreach ((array)$val as $i => $ex) {
|
||||||
$val[$i] = $ex->format('Ymd\THis');
|
if (is_a($ex, 'DateTime'))
|
||||||
|
$val[$i] = $ex->format('Ymd\THis');
|
||||||
|
}
|
||||||
$val = join(',', (array)$val);
|
$val = join(',', (array)$val);
|
||||||
break;
|
break;
|
||||||
case 'EXCEPTIONS':
|
case 'EXCEPTIONS':
|
||||||
continue 2;
|
continue 2;
|
||||||
}
|
}
|
||||||
$rrule .= $k . '=' . $val . ';';
|
|
||||||
|
if (strlen($val))
|
||||||
|
$rrule .= $k . '=' . $val . ';';
|
||||||
}
|
}
|
||||||
|
|
||||||
return rtrim($rrule, ';');
|
return rtrim($rrule, ';');
|
||||||
|
|
|
@ -969,10 +969,13 @@ class libvcalendar implements Iterator
|
||||||
$ve->add('SEQUENCE', $event['sequence']);
|
$ve->add('SEQUENCE', $event['sequence']);
|
||||||
|
|
||||||
if ($event['recurrence'] && !$recurrence_id) {
|
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
|
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
|
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)
|
// add EXDATEs each one per line (for Thunderbird Lightning)
|
||||||
if ($exdates) {
|
if (is_array($exdates)) {
|
||||||
foreach ($exdates as $ex) {
|
foreach ($exdates as $ex) {
|
||||||
if ($ex instanceof \DateTime) {
|
if ($ex instanceof \DateTime) {
|
||||||
$exd = clone $event['start'];
|
$exd = clone $event['start'];
|
||||||
|
@ -992,7 +995,7 @@ class libvcalendar implements Iterator
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// add RDATEs
|
// add RDATEs
|
||||||
if (!empty($rdates)) {
|
if (is_array($rdates) && !empty($rdates)) {
|
||||||
$sample = $this->datetime_prop('RDATE', $rdates[0]);
|
$sample = $this->datetime_prop('RDATE', $rdates[0]);
|
||||||
$rdprop = new VObject\Property\MultiDateTime('RDATE', null);
|
$rdprop = new VObject\Property\MultiDateTime('RDATE', null);
|
||||||
$rdprop->setDateTimes($rdates, $sample->getDateType());
|
$rdprop->setDateTimes($rdates, $sample->getDateType());
|
||||||
|
|
Loading…
Add table
Reference in a new issue