From d49713e59ef1ad63dc457419e954465a832eb91c Mon Sep 17 00:00:00 2001 From: Gunnar Wrobel
Date: Mon, 30 Nov 2009 21:22:50 +0100 Subject: [PATCH] Fix biweekly sunday events. --- framework/Date/lib/Horde/Date/Recurrence.php | 4 ++-- framework/Date/test/Horde/Date/RecurrenceTest.php | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/framework/Date/lib/Horde/Date/Recurrence.php b/framework/Date/lib/Horde/Date/Recurrence.php index 4046c0a5a..ba7f547e4 100644 --- a/framework/Date/lib/Horde/Date/Recurrence.php +++ b/framework/Date/lib/Horde/Date/Recurrence.php @@ -442,15 +442,15 @@ class Horde_Date_Recurrence } $next = clone $start_week; - $next->mday += $recur - 1; + $next->mday += $recur; while ($next->compareDateTime($after) < 0 && $next->compareDateTime($after_week_end) < 0) { - ++$next->mday; if ($this->hasRecurCount() && $next->compareDateTime($after) < 0 && $this->recurOnDay((int)pow(2, $next->dayOfWeek()))) { $recurrences++; } + ++$next->mday; } if ($this->hasRecurCount() && $recurrences >= $this->recurCount) { diff --git a/framework/Date/test/Horde/Date/RecurrenceTest.php b/framework/Date/test/Horde/Date/RecurrenceTest.php index ca60813f6..808735912 100644 --- a/framework/Date/test/Horde/Date/RecurrenceTest.php +++ b/framework/Date/test/Horde/Date/RecurrenceTest.php @@ -253,6 +253,21 @@ class Horde_Date_RecurrenceTest extends PHPUnit_Framework_TestCase $this->_getRecurrences($r)); } + public function testBiweeklySundayEvent() + { + $r = new Horde_Date_Recurrence('2009-11-29 06:00:00'); + $r->setRecurType(Horde_Date_Recurrence::RECUR_WEEKLY); + $r->setRecurOnDay(Horde_Date::MASK_SUNDAY); + $r->setRecurInterval(2); + $r->setRecurCount(3); + $this->assertEquals('W2 SU #3', $r->toRRule10($this->ical)); + $this->assertEquals('FREQ=WEEKLY;INTERVAL=2;BYDAY=SU;COUNT=3', $r->toRRule20($this->ical)); + $this->assertEquals(array('2009-11-29 06:00:00', + '2009-12-13 06:00:00', + '2009-12-27 06:00:00'), + $this->_getRecurrences($r)); + } + public function testMonthlyEnd() { $r = new Horde_Date_Recurrence('2007-03-01 10:00:00'); -- 2.11.0