private function build_view(HTTPRequestCustom $request)
    {
        $db_querier = PersistenceContext::get_querier();
        $date_lang = LangLoader::get('date-common');
        $events_list = $participants = array();
        $config = CalendarConfig::load();
        $year = $this->year ? $this->year : $request->get_int('calendar_ajax_year', date('Y'));
        $month = $this->month ? $this->month : $request->get_int('calendar_ajax_month', date('n'));
        $day = $this->day ? $this->day : $request->get_int('calendar_ajax_day', 1);
        $array_l_month = array($date_lang['january'], $date_lang['february'], $date_lang['march'], $date_lang['april'], $date_lang['may'], $date_lang['june'], $date_lang['july'], $date_lang['august'], $date_lang['september'], $date_lang['october'], $date_lang['november'], $date_lang['december']);
        $result = $db_querier->select("SELECT *\n\t\tFROM " . CalendarSetup::$calendar_events_table . " event\n\t\tLEFT JOIN " . CalendarSetup::$calendar_events_content_table . " event_content ON event_content.id = event.content_id\n\t\tLEFT JOIN " . DB_TABLE_MEMBER . " member ON member.user_id = event_content.author_id\n\t\tLEFT JOIN " . DB_TABLE_COMMENTS_TOPIC . " com ON com.id_in_module = event.id_event AND com.module_id = 'calendar'\n\t\tWHERE approved = 1\n\t\tAND ((start_date BETWEEN :first_day_hour AND :last_day_hour) OR (end_date BETWEEN :first_day_hour AND :last_day_hour) OR (:first_day_hour BETWEEN start_date AND end_date))\n\t\tORDER BY start_date ASC", array('first_day_hour' => mktime(0, 0, 0, $month, $day, $year), 'last_day_hour' => mktime(23, 59, 59, $month, $day, $year)));
        while ($row = $result->fetch()) {
            $event = new CalendarEvent();
            $event->set_properties($row);
            $events_list[$event->get_id()] = $event;
        }
        $result->dispose();
        $events_number = $result->get_rows_count();
        $this->view->put_all(array('C_COMMENTS_ENABLED' => $config->are_comments_enabled(), 'C_EVENTS' => $events_number > 0, 'DATE' => $day . ' ' . $array_l_month[$month - 1] . ' ' . $year, 'L_EVENTS_NUMBER' => $events_number > 1 ? StringVars::replace_vars($this->lang['calendar.labels.events_number'], array('events_number' => $events_number)) : $this->lang['calendar.labels.one_event']));
        if (!empty($events_list)) {
            $result = $db_querier->select('SELECT event_id, member.user_id, display_name, level, groups
			FROM ' . CalendarSetup::$calendar_users_relation_table . ' participants
			LEFT JOIN ' . DB_TABLE_MEMBER . ' member ON member.user_id = participants.user_id
			WHERE event_id IN :events_list', array('events_list' => array_keys($events_list)));
            while ($row = $result->fetch()) {
                if (!empty($row['display_name'])) {
                    $participant = new CalendarEventParticipant();
                    $participant->set_properties($row);
                    $participants[$row['event_id']][$participant->get_user_id()] = $participant;
                }
            }
            $result->dispose();
            foreach ($events_list as $event) {
                if (isset($participants[$event->get_id()])) {
                    $event->set_participants($participants[$event->get_id()]);
                }
                $this->view->assign_block_vars('event', $event->get_array_tpl_vars());
                $participants_number = count($event->get_participants());
                $i = 0;
                foreach ($event->get_participants() as $participant) {
                    $i++;
                    $this->view->assign_block_vars('event.participant', array_merge($participant->get_array_tpl_vars(), array('C_LAST_PARTICIPANT' => $i == $participants_number)));
                }
            }
        }
    }
    /**
     * @desc Return the content of an event.
     * @param string $condition Restriction to apply to the list of events
     * @param string[] $parameters Parameters of the condition
     */
    public static function get_event($condition, array $parameters)
    {
        $row = self::$db_querier->select_single_row_query('SELECT *
		FROM ' . CalendarSetup::$calendar_events_table . ' event
		LEFT JOIN ' . CalendarSetup::$calendar_events_content_table . ' event_content ON event_content.id = event.content_id
		LEFT JOIN ' . DB_TABLE_MEMBER . ' author ON author.user_id = event_content.author_id
		' . $condition, $parameters);
        $event = new CalendarEvent();
        $event->set_properties($row);
        $event->set_participants(self::get_event_participants($event->get_id()));
        return $event;
    }