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 participants of an event. * @param int $event_id id of the event */ public static function get_event_participants($event_id) { $participants = array(); $result = self::$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 = :id', array('id' => $event_id)); while ($row = $result->fetch()) { if (!empty($row['display_name'])) { $participant = new CalendarEventParticipant(); $participant->set_properties($row); $participants[$participant->get_user_id()] = $participant; } } $result->dispose(); return $participants; }