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