private function build_table() { $table_model = new SQLHTMLTableModel(CalendarSetup::$calendar_events_table, 'table', array(new HTMLTableColumn(LangLoader::get_message('form.title', 'common'), 'title'), new HTMLTableColumn(LangLoader::get_message('category', 'categories-common'), 'id_category'), new HTMLTableColumn(LangLoader::get_message('author', 'common'), 'display_name'), new HTMLTableColumn(LangLoader::get_message('date', 'date-common'), 'start_date'), new HTMLTableColumn($this->lang['calendar.titles.repetition']), new HTMLTableColumn(LangLoader::get_message('status.approved', 'common'), 'approved'), new HTMLTableColumn('')), new HTMLTableSortingRule('start_date', HTMLTableSortingRule::DESC)); $table = new HTMLTable($table_model); $table_model->set_caption($this->lang['calendar.config.events.management']); $table_model->add_permanent_filter('parent_id = 0'); $results = array(); $result = $table_model->get_sql_results('event LEFT JOIN ' . CalendarSetup::$calendar_events_content_table . ' event_content ON event_content.id = event.content_id LEFT JOIN ' . DB_TABLE_MEMBER . ' member ON member.user_id = event_content.author_id'); foreach ($result as $row) { $event = new CalendarEvent(); $event->set_properties($row); $category = $event->get_content()->get_category(); $user = $event->get_content()->get_author_user(); $edit_link = new LinkHTMLElement(CalendarUrlBuilder::edit_event(!$event->get_parent_id() ? $event->get_id() : $event->get_parent_id()), '', array('title' => LangLoader::get_message('edit', 'common')), 'fa fa-edit'); $delete_link = new LinkHTMLElement(CalendarUrlBuilder::delete_event($event->get_id()), '', array('title' => LangLoader::get_message('delete', 'common'), 'data-confirmation' => !$event->belongs_to_a_serie() ? 'delete-element' : ''), 'fa fa-delete'); $user_group_color = User::get_group_color($user->get_groups(), $user->get_level(), true); $author = $user->get_id() !== User::VISITOR_LEVEL ? new LinkHTMLElement(UserUrlBuilder::profile($user->get_id()), $user->get_display_name(), !empty($user_group_color) ? array('style' => 'color: ' . $user_group_color) : array(), UserService::get_level_class($user->get_level())) : $user->get_display_name(); $br = new BrHTMLElement(); $results[] = new HTMLTableRow(array(new HTMLTableRowCell(new LinkHTMLElement(CalendarUrlBuilder::display_event($category->get_id(), $category->get_rewrited_name(), $event->get_id(), $event->get_content()->get_rewrited_title()), $event->get_content()->get_title()), 'left'), new HTMLTableRowCell(new SpanHTMLElement($category->get_name(), array('style' => $category->get_id() != Category::ROOT_CATEGORY && $category->get_color() ? 'color:' . $category->get_color() : ''))), new HTMLTableRowCell($author), new HTMLTableRowCell(LangLoader::get_message('from_date', 'main') . ' ' . $event->get_start_date()->format(Date::FORMAT_DAY_MONTH_YEAR_HOUR_MINUTE) . $br->display() . LangLoader::get_message('to_date', 'main') . ' ' . $event->get_end_date()->format(Date::FORMAT_DAY_MONTH_YEAR_HOUR_MINUTE)), new HTMLTableRowCell($event->belongs_to_a_serie() ? $this->lang['calendar.labels.repeat.' . $event->get_content()->get_repeat_type()] . ' - ' . $event->get_content()->get_repeat_number() . ' ' . $this->lang['calendar.labels.repeat_times'] : LangLoader::get_message('no', 'common')), new HTMLTableRowCell($event->get_content()->is_approved() ? LangLoader::get_message('yes', 'common') : LangLoader::get_message('no', 'common')), new HTMLTableRowCell($edit_link->display() . $delete_link->display()))); } $table->set_rows($table_model->get_number_of_matching_rows(), $results); $this->view->put('table', $table->display()); }
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))); } } } }
public function get_feed_data_struct($idcat = 0, $name = '') { if (CalendarService::get_categories_manager()->get_categories_cache()->category_exists($idcat)) { $now = new Date(); $lang = LangLoader::get('common', 'calendar'); $querier = PersistenceContext::get_querier(); $category = CalendarService::get_categories_manager()->get_categories_cache()->get_category($idcat); $site_name = GeneralConfig::load()->get_site_name(); $site_name = $idcat != Category::ROOT_CATEGORY ? $site_name . ' : ' . $category->get_name() : $site_name; $feed_module_name = $lang['calendar.feed.name']; $data = new FeedData(); $data->set_title($feed_module_name . ' - ' . $site_name); $data->set_date(new Date()); $data->set_link(SyndicationUrlBuilder::rss('calendar', $idcat)); $data->set_host(HOST); $data->set_desc($feed_module_name . ' - ' . $site_name); $data->set_lang(LangLoader::get_message('xml_lang', 'main')); $data->set_auth_bit(Category::READ_AUTHORIZATIONS); $categories = CalendarService::get_categories_manager()->get_childrens($idcat, new SearchCategoryChildrensOptions(), true); $ids_categories = array_keys($categories); $result = $querier->select('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 . ' member ON member.user_id = event_content.author_id LEFT JOIN ' . CalendarSetup::$calendar_cats_table . ' cat ON cat.id = event_content.id_category WHERE approved = 1 AND id_category IN :cats_ids ORDER BY start_date DESC', array('cats_ids' => $ids_categories)); while ($row = $result->fetch()) { $event = new CalendarEvent(); $event->set_properties($row); $category = $categories[$event->get_content()->get_category_id()]; $link = CalendarUrlBuilder::display_event($category->get_id(), $category->get_rewrited_name() ? $category->get_rewrited_name() : 'root', $event->get_id(), $event->get_content()->get_rewrited_title()); $item = new FeedItem(); $item->set_title($event->get_content()->get_title()); $item->set_link($link); $item->set_guid($link); $item->set_desc(FormatingHelper::second_parse($event->get_content()->get_contents()) . ($event->get_content()->get_location() ? '<br />' . $lang['calendar.labels.location'] . ' : ' . $event->get_content()->get_location() . '<br />' : '') . '<br />' . $lang['calendar.labels.start_date'] . ' : ' . $event->get_start_date()->format(Date::FORMAT_DAY_MONTH_YEAR_HOUR_MINUTE) . '<br />' . $lang['calendar.labels.end_date'] . ' : ' . $event->get_end_date()->format(Date::FORMAT_DAY_MONTH_YEAR_HOUR_MINUTE)); $item->set_date($event->get_start_date()); $item->set_auth(CalendarService::get_categories_manager()->get_heritated_authorizations($category->get_id(), Category::READ_AUTHORIZATIONS, Authorizations::AUTH_PARENT_PRIORITY)); $data->add_item($item); } $result->dispose(); return $data; } }
/** * @desc Return the events of a serie. * @param int $content_id id of the content of the event */ public static function get_serie_events($content_id) { $events = array(); $result = self::$db_querier->select('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 WHERE content_id = :id', array('id' => $content_id)); while ($row = $result->fetch()) { $event = new CalendarEvent(); $event->set_properties($row); $events[$event->get_id()] = $event; } $result->dispose(); return $events; }
private function contribution_actions(CalendarEvent $event, $id_event) { if ($event->get_id() === null) { if ($this->is_contributor_member()) { $contribution = new Contribution(); $contribution->set_id_in_module($id_event); $contribution->set_description(stripslashes($this->form->get_value('contribution_description'))); $contribution->set_entitled($event->get_content()->get_title()); $contribution->set_fixing_url(CalendarUrlBuilder::edit_event($id_event)->relative()); $contribution->set_poster_id(AppContext::get_current_user()->get_id()); $contribution->set_module('calendar'); $contribution->set_auth(Authorizations::capture_and_shift_bit_auth(CalendarService::get_categories_manager()->get_heritated_authorizations($event->get_content()->get_category_id(), Category::MODERATION_AUTHORIZATIONS, Authorizations::AUTH_CHILD_PRIORITY), Category::MODERATION_AUTHORIZATIONS, Contribution::CONTRIBUTION_AUTH_BIT)); ContributionService::save_contribution($contribution); } } else { $corresponding_contributions = ContributionService::find_by_criteria('calendar', $id_event); if (count($corresponding_contributions) > 0) { $event_contribution = $corresponding_contributions[0]; $event_contribution->set_status(Event::EVENT_STATUS_PROCESSED); ContributionService::save_contribution($event_contribution); } } $event->set_id($id_event); }