From: Gunnar Wrobel Date: Mon, 30 Nov 2009 20:22:50 +0000 (+0100) Subject: Fix biweekly sunday events. X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=d49713e59ef1ad63dc457419e954465a832eb91c;p=horde.git Fix biweekly sunday events. --- 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');