Events auswählen - Eventchooser
Wenn ich den Quellcode in WidgetEventchooser.php richtig deute, dann werden nur Events zur Auswahl angeboten, die ab heute starten
Code:
(startTime >= $intStart
und die innerhalb eines Jahres zu Ende gehen
Code:
AND endTime <= $intEnd)
wobei $intEnd = $intStart + 360*3600*24 ist.
Diese Logik hat sicherlich ihre Berechtigung, aber ich versuche gerade Messetermine per Newsletter zu kommunizieren und stehe vor dem Problem, dass laufende Messen nicht mehr ausgewählt werden können. Das selbe Problem betrifft Hausmessen, die länger als ein Jahr laufen.
Dreh- und Angelpunkt dieser Problematik sind die hart codierte Rahmenbedingungen in getAllEvents()
Habe mir selbst Abhilfe geschaffen indem ich einen update-unsicheren Hack reingeschieben habe. Je nach Kunde wähle ich für $inX 1,2 oder 3.
PHP-Code:
protected function getAllEvents()
{
$intStart = time();
$intDays = 360*3600*24;
$intEnd = $intStart + $intDays;
$arrVariante[1] = "(startTime >= $intStart AND endTime <= $intEnd)"; // Start ab heute und Ende innerhalb ??? Tage (aktueller Standard)
$arrVariante[2] = "(startTime >= $intStart )"; // Start ab heute
$arrVariante[3] = "(endTime > $intEnd)"; // Ende liegt ??? Tage in der Zukunft
$intX = 3;
// Get events of the current period
$objEvents = $this->Database->prepare("SELECT e.startTime, e.endTime, e.id,e.title, e.recurring, e.recurrences, e.repeatEach, c.title AS calendar
FROM tl_calendar_events AS e
LEFT JOIN tl_calendar AS c ON (e.pid = c.id)
WHERE
published='1' ". // only published events
"AND ( " .
$arrVariante[$intX] . // all events in the selected period
"OR recurring='1' AND (". // all recurring events which are not ending bevore intStart
"recurrences=0 OR repeatEnd>=$intStart
)
)")
->execute();
Der schnellste Weg zu einer konfigurierbaren Lösung wäre eine Variantenauswahl in der localconfig.php und die Anzahl Tage.
Oder gibt es schon einen anderen Weg, der sich mir noch nicht erschlossen hat?
Gruß Andreas