/** * Constructor method */ public function __construct() { parent::__construct(); // create the HTML Renderer $this->html = new THtmlRenderer('app/resources/agenda.html'); // define replacements for the main section $replaces = array(); try { // load the products TTransaction::open('samples'); $events = Event::getWeekEvents(); $first_date = Event::getFirstWeekDay(); $replace_detail = array(); if ($events) { // iterate products foreach ($events as $event) { $ordered_events[$event->event_date][(int) $event->start_hour] = $event; } for ($day = 0; $day < 7; $day++) { $dt = new DateTime($first_date); $dt->add(new DateInterval('P' . $day . 'D')); $filter_date = $dt->format('Y-m-d'); $replaces['day' . ($day + 1)] = ''; if (isset($ordered_events[$filter_date])) { for ($hour = 0; $hour < 24; $hour++) { if (isset($ordered_events[$filter_date][$hour])) { $event = $ordered_events[$filter_date][$hour]; $replace_event = $event->toArray(); $replace_event['height'] = $event->duration * 24; $replace_event['hour'] = $hour; $event_html = new THtmlRenderer('app/resources/event.html'); $event_html->enableSection('main', $replace_event); $replaces['day' . ($day + 1)] .= $event_html->getContents(); // array of replacements $hour += $event->duration - 1; } else { $event_html = new THtmlRenderer('app/resources/event_empty.html'); $event_html->enableSection('main', array('popmenu' => 'fa-plus-square-o', 'day' => $filter_date, 'hour' => $hour)); $replaces['day' . ($day + 1)] .= $event_html->getContents(); } } } else { for ($hour = 0; $hour < 24; $hour++) { $event_html = new THtmlRenderer('app/resources/event_empty.html'); $event_html->enableSection('main', array('popmenu' => 'fa-plus-square-o', 'day' => $filter_date, 'hour' => $hour)); $replaces['day' . ($day + 1)] .= $event_html->getContents(); } } } } else { for ($day = 0; $day < 7; $day++) { $dt = new DateTime($first_date); $dt->add(new DateInterval('P' . $day . 'D')); $filter_date = $dt->format('Y-m-d'); $replaces['day' . ($day + 1)] = ''; for ($hour = 0; $hour < 24; $hour++) { $event_html = new THtmlRenderer('app/resources/event_empty.html'); $event_html->enableSection('main', array('popmenu' => 'fa-plus-square-o', 'day' => $filter_date, 'hour' => $hour)); $replaces['day' . ($day + 1)] .= $event_html->getContents(); } } } // enable products section as repeatable $this->html->enableSection('main', $replaces); TTransaction::close(); } catch (Exception $e) { new TMessage('error', $e->getMessage()); } // wrap the page content using vertical box $vbox = new TVBox(); $vbox->add(new TXMLBreadCrumb('menu.xml', __CLASS__)); $vbox->add($this->html); parent::add($vbox); }