2 commits - plugins/libcalendaring
Thomas Brüderli
bruederli at kolabsys.com
Thu Mar 5 14:33:32 CET 2015
plugins/libcalendaring/libcalendaring.php | 10 +++++++---
plugins/libcalendaring/libvcalendar.php | 11 +++++++----
plugins/libcalendaring/tests/libvcalendar.php | 25 +++++++++++++++++++++++--
3 files changed, 37 insertions(+), 9 deletions(-)
New commits:
commit 7280d8e6be38f8b1286262b8e26333249eae5c12
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date: Thu Mar 5 14:33:00 2015 +0100
Add test case for #4797; fix test for recurrence-id which now correctly contains timezone information
diff --git a/plugins/libcalendaring/tests/libvcalendar.php b/plugins/libcalendaring/tests/libvcalendar.php
index f8b0d85..9180e91 100644
--- a/plugins/libcalendaring/tests/libvcalendar.php
+++ b/plugins/libcalendaring/tests/libvcalendar.php
@@ -441,11 +441,32 @@ class libvcalendar_test extends PHPUnit_Framework_TestCase
$this->assertEquals($num, substr_count($ics, 'UID:'.$event['uid']), "Recurrence Exceptions with same UID");
$this->assertEquals($num, substr_count($ics, 'END:VEVENT'), "VEVENT encapsulation END");
- $this->assertContains('RECURRENCE-ID;VALUE=DATE-TIME:20130814', $ics, "Recurrence-ID (1) being the exception date");
- $this->assertContains('RECURRENCE-ID;VALUE=DATE-TIME:20131113', $ics, "Recurrence-ID (2) being the exception date");
+ $this->assertContains('RECURRENCE-ID;VALUE=DATE-TIME;TZID=Europe/Zurich:20130814', $ics, "Recurrence-ID (1) being the exception date");
+ $this->assertContains('RECURRENCE-ID;VALUE=DATE-TIME;TZID=Europe/Zurich:20131113', $ics, "Recurrence-ID (2) being the exception date");
$this->assertContains('SUMMARY:'.$exception2['title'], $ics, "Exception title");
}
+ function test_export_valid_rrules()
+ {
+ $event = array(
+ 'uid' => '1234567890',
+ 'start' => new DateTime('now'),
+ 'end' => new DateTime('now + 30min'),
+ 'title' => 'test_export_valid_rrules',
+ 'recurrence' => array(
+ 'FREQ' => 'DAILY',
+ 'COUNT' => 5,
+ 'EXDATE' => array(),
+ 'RDATE' => array(),
+ ),
+ );
+ $ical = new libvcalendar();
+ $ics = $ical->export(array($event), null, false, null, false);
+
+ $this->assertNotContains('EXDATE=', $ics);
+ $this->assertNotContains('RDATE=', $ics);
+ }
+
/**
*
*/
commit 874b950f73aa1a94201c882255f59c9f0d7a00cb
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date: Thu Mar 5 14:31:38 2015 +0100
Strip empty parameters from RRULE properties (#4797)
diff --git a/plugins/libcalendaring/libcalendaring.php b/plugins/libcalendaring/libcalendaring.php
index 94ff7f2..698fb68 100644
--- a/plugins/libcalendaring/libcalendaring.php
+++ b/plugins/libcalendaring/libcalendaring.php
@@ -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, ';');
diff --git a/plugins/libcalendaring/libvcalendar.php b/plugins/libcalendaring/libvcalendar.php
index 826e8d8..37f6224 100644
--- a/plugins/libcalendaring/libvcalendar.php
+++ b/plugins/libcalendaring/libvcalendar.php
@@ -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());
More information about the commits
mailing list