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 .= '
';
$out .= '';
$out .= '' . datetime2dmy($evt->getStartDate()) . '
';
$out .= $evt->getTitle() . '
';
$out .= '
';
$out .= '';
$out .= '';
$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();
}
}
?>