113 lines
3.1 KiB
PHP
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();
|
|
}
|
|
|
|
}
|
|
|
|
?>
|