Files
ks-nossenerland-bundle/src/DataContainer/CalendarEvents.php
T
2026-04-01 09:48:52 +02:00

117 lines
4.0 KiB
PHP

<?php
namespace Mummert\KsNossenerlandBundle\DataContainer;
use Contao\Database;
use Contao\Date;
use Contao\StringUtil;
use Contao\System;
use Contao\Calendar;
use Contao\Config;
class CalendarEvents
{
public function listEvents($arrRow)
{
$database = Database::getInstance();
// Ortstitel aus `ctlg_orte`-Tabelle holen
$ort = $database->prepare("SELECT ortTitle FROM ctlg_orte WHERE id=?")
->execute($arrRow['catalog_ort'])
->fetchAssoc();
$ortTitle = $ort ? $ort['ortTitle'] : '-';
// Event-Datum formatieren
$span = Calendar::calculateSpan($arrRow['startTime'], $arrRow['endTime']);
if ($span > 0) {
$date = Date::parse(Config::get(($arrRow['addTime'] ? 'datimFormat' : 'dateFormat')), $arrRow['startTime']) .
$GLOBALS['TL_LANG']['MSC']['cal_timeSeparator'] .
Date::parse(Config::get(($arrRow['addTime'] ? 'datimFormat' : 'dateFormat')), $arrRow['endTime']);
} elseif ($arrRow['startTime'] == $arrRow['endTime']) {
$date = Date::parse(Config::get('dateFormat'), $arrRow['startTime']) .
($arrRow['addTime'] ? ' ' . Date::parse(Config::get('timeFormat'), $arrRow['startTime']) : '');
} else {
$date = Date::parse(Config::get('dateFormat'), $arrRow['startTime']) .
($arrRow['addTime'] ? ' ' . Date::parse(Config::get('timeFormat'), $arrRow['startTime']) .
$GLOBALS['TL_LANG']['MSC']['cal_timeSeparator'] .
Date::parse(Config::get('timeFormat'), $arrRow['endTime']) : '');
}
// Rückgabe ohne <strong>-Tag
return '<div class="tl_content_left">' .
$arrRow['title'] .
' <span style="color:#999;padding-left:3px">[' . $ortTitle . ' ' . $date . ']</span>' .
'</div>';
}
public function getCtlgOrteOptions(): array
{
$options = [];
$result = Database::getInstance()->prepare("SELECT id, ortTitle FROM ctlg_orte ORDER BY ortTitle")->execute();
while ($result->next()) {
$options[$result->id] = $result->ortTitle;
}
return $options;
}
public function getCtlgPfarrbereicheOptions(): array
{
$options = [];
// Daten aus ctlg_districts sortiert nach districtsTitle laden
$result = Database::getInstance()->prepare("
SELECT id, districtsTitle
FROM ctlg_districts
ORDER BY districtsTitle
")->execute();
while ($result->next()) {
$options[$result->id] = $result->districtsTitle;
}
return $options;
}
public function getCtlgKontaktOptions(): array
{
$options = [];
// Sortierung nach lastname, contactsTerm, firstname
$result = Database::getInstance()->prepare("
SELECT id, contactsTerm, contactsFirstname, contactsLastname, contactsFunction
FROM ctlg_contacts
ORDER BY contactsLastname, contactsTerm, contactsFirstname
")->execute();
while ($result->next()) {
// Aufbau des Labels
if (empty($result->contactsLastname) && empty($result->contactsFirstname)) {
// Wenn lastname und firstname fehlen
$label = $result->contactsTerm;
} else {
// Wenn lastname oder firstname vorhanden
$label = $result->contactsLastname;
if (!empty($result->contactsFirstname)) {
$label .= ', ' . $result->contactsFirstname;
}
if (!empty($result->contactsFunction)) {
$label .= ' (' . $result->contactsFunction . ')';
}
}
// Nur Labels hinzufügen, die tatsächlich Werte haben
if (!empty($label)) {
$options[$result->id] = $label;
}
}
return $options;
}
}