contao/test — Issue #432: Rechenfehler bei wiederkehrenden Termine (Calendar)
Author: importer
Created: 2011-11-29 05:08:27+00:00
State: open
Labels: backend, Defect

In der Berechung der Intervalle ist in meinen Augen ein Fehler drin.
(Datei system/modules/calendar/Events.php, Zeilen: 151 ff):

```
switch ($arrRepeat['unit'])
{
case 'days':	$multiplier = 86400;
break;

case 'weeks':	$multiplier = 604800;
break;

case 'months':	$multiplier = (date('t', $objEvents->startTime)) * 86400;
break;

case 'years':	if (date('n', $objEvents->startTime) < 3)
$multiplier = date('L', $objEvents->startTime) ? 31622400 : 31536000;
else
$multiplier = ((date('Y', $objEvents->startTime) % 4) == 3) ? 31622400 : 31536000;
break;

default:	$multiplier = 0;
break(2);
}
$objEvents->startTime += ($multiplier * $arrRepeat['value']);
```

Für Intervalle von Monaten und Jahren, wenn das Intervall > 1 ist, werden die Timestamp-Differenzen falsch gerechnet.

Beispiel:
Termin: 21.1.2009, Intervall 3 Monate
dann wird für den 2. Termin in $mulitplier die Sekunden für den **aktuellen** Monat berechnet, dann aber einfach mal Anzahl der Monate genommen, d.h. die nächsten 3 Monate sind alle 31 Tage lang (wie der Januar).
Genauso verhält es sich mit Intervallen von mehreren Jahren bezügl. Schaltjahr.

--- _Originally created by do_while on January 21st, 2009, at 10:45am (ID 432)_