/**
  * Generate the content element
  */
 protected function compile()
 {
     $arrItems = array();
     $t = 'tl_calendar_events';
     if ($this->include_type == 'archives') {
         $arrArchiveIds = deserialize($this->include_archives, true);
         $strSortOrder = $this->sortOrder == 'ascending' ? 'ASC' : 'DESC';
         if (sizeof($arrArchiveIds)) {
             $arrColumns = array("{$t}.pid IN(" . implode(',', array_map('intval', $arrArchiveIds)) . ")");
             if (!BE_USER_LOGGED_IN) {
                 $time = time();
                 $arrColumns[] = "({$t}.start='' OR {$t}.start<{$time}) AND ({$t}.stop='' OR {$t}.stop>{$time}) AND {$t}.published=1";
             }
             $objItems = \CalendarEventsModel::findBy($arrColumns, null, array('order' => 'startDate ' . $strSortOrder));
         }
     } else {
         $arrItemIds = deserialize($this->include_items, true);
         if (sizeof($arrItemIds)) {
             $arrItems = array_map(function () {
                 return '';
             }, array_flip($arrItemIds));
             $arrColumns = array("{$t}.id IN(" . implode(',', array_map('intval', $arrItemIds)) . ")");
             if (!BE_USER_LOGGED_IN) {
                 $time = time();
                 $arrColumns[] = "({$t}.start='' OR {$t}.start<{$time}) AND ({$t}.stop='' OR {$t}.stop>{$time}) AND {$t}.published=1";
             }
             $objItems = \CalendarEventsModel::findBy($arrColumns, null);
         }
     }
     if (!is_null($objItems)) {
         while ($objItems->next()) {
             $objReaderPage = \PageModel::findById($objItems->getRelated('pid')->jumpTo);
             $arrItem = $objItems->row();
             $arrItem['dateStart'] = \Date::parse('Y-m-d', $objItems->startDate);
             $arrItem['dateStartReadable'] = \Date::parse(\Config::get('dateFormat') ?: 'Y-m-d', $objItems->startDate);
             if ($objItems->endDate) {
                 $arrItem['dateEnd'] = \Date::parse('Y-m-d', $objItems->endDate);
                 $arrItem['dateEndReadable'] = \Date::parse(\Config::get('dateFormat') ?: 'Y-m-d', $objItems->endDate);
             }
             $arrItem['href'] = ampersand($this->generateFrontendUrl($objReaderPage->row(), (\Config::get('useAutoItem') && !\Config::get('disableAlias') ? '/' : '/items/') . (!\Config::get('disableAlias') && $objItems->alias != '' ? $objItems->alias : $objItems->id)));
             $arrItems[$objItems->id] = $arrItem;
         }
     }
     $this->Template->items = array_filter($arrItems);
 }