Files
bm/public_html/public/cms/modules/lmspage.class.php
2025-09-24 13:26:28 +02:00

113 lines
3.1 KiB
PHP

<?php
class LmsPage extends StdPage {
/** @see StdPage::doPublish()
*/
//----------------------------------------------
function doPublish(){
//----------------------------------------------
$html = parent::doPublish();
$t = new Template();
$t->setString($html);
$t->setVar('EVENTS', $this->printUpcomingEvents());
return $t->toString();
}
/** prints the next upcoming event
* @return string
*/
//-------------------------------------------
function printUpcomingEvents(){
//-------------------------------------------
$out = "";
$count = 0;
$maxEvents = 3;
//load all current events
$query = sprintf("SELECT flexiconId FROM bruckm_ticketevent WHERE endDate >= '%s' AND houseId = 2 ORDER BY startDate ASC", date("Y-m-d"));
$result = dbQuery($query);
while($line = mysqli_fetch_array($result, MYSQLI_ASSOC)){
$event = FlexiconFactory::instanceById($line['flexiconId'], $this);
$event->load();
$events[] = $event;
}
//add events
while($count < $maxEvents && sizeof($events) > 0){
$index = $this->findClosest($events);
$evt = $events[$index];
$out .= '<li>';
$out .= '<a href="index.php?id=1988&event=' . $evt->getId() . '">';
$out .= '<em>' . datetime2dmy($evt->getStartDate()) . '</em><br>';
$out .= $evt->getTitle() . '<br>';
$out .= '<img src="tickets/thumbs/' . $evt->getId() . '.jpg" alt="' . htmlspecialchars($evt->getTitle()) . '">';
$out .= '</a>';
$out .= '</li>';
$events = array_remove($events, $index);
$count++;
}
return $out;
}
/** finds the event closest to the current date
* @return index in the events array
*/
//-------------------------------------
function findClosest($events){
//-------------------------------------
$closest = 0;
$minDifference = 1000;
$now = intval(date("Ymd"));
foreach($events as $i=>$event){
//one day event
if($event->getStartDate() == $event->getEndDate()){
$difference = date2int($event->getStartDate()) - $now;
if($difference < $minDifference){
$minDifference = $difference;
$closest = $i;
}
}
//long range event
else{
$difference = date2int($event->getStartDate()) - $now;
if($difference >= 0 && $difference < $minDifference){
$minDifference = $difference;
$closest = $i;
}
else{
$difference = date2int($event->getEndDate()) - $now;
if($difference <= $minDifference){
$minDifference = abs($difference);
$closest = $i;
}
}
}
}
return $closest;
}
/** builds the page
* @static
*/
//------------------------------------
static function build(){
//------------------------------------
$query = sprintf("SELECT id FROM bruckm_index WHERE class = 'LmsPage' LIMIT 1");
$result = dbQuery($query);
$line = mysqli_fetch_array($result, MYSQLI_ASSOC);
$page = FlexiconFactory::instanceById($line['id']);
$page->load();
$page->publish();
}
}
?>