_registry->get( 'model.settings' ); $rrule = $this->_registry->get( 'recurrence.rule' ); $taxonomy = $this->_registry->get( 'view.event.taxonomy' ); $location = $this->_registry->get( 'view.event.location' ); $ticket = $this->_registry->get( 'view.event.ticket' ); $content = $this->_registry->get( 'view.event.content' ); $time = $this->_registry->get( 'view.event.time' ); $subscribe_url = AI1EC_EXPORT_URL . '&ai1ec_post_ids=' . $event->get( 'post_id' ); $event->set_runtime( 'tickets_url_label', $ticket->get_tickets_url_label( $event, false ) ); $event->set_runtime( 'content_img_url', $content->get_content_img_url( $event ) ); $extra_buttons = apply_filters( 'ai1ec_rendering_single_event_actions', '', $event ); $venues_html = apply_filters( 'ai1ec_rendering_single_event_venues', nl2br( $location->get_location( $event ) ), $event ); $timezone_info = array( 'show_timezone' => false, 'text_timezone_title' => null, 'event_timezone' => null, ); $default_tz = $this->_registry->get( 'date.timezone' ) ->get_default_timezone(); /** * Only display the timezone information if: * -) local timezone is not enforced -- because if it is enforced * then site owner knows that it's clear, from event contents, * where event happens and what time means; * -) the timezone is different from the site timezone because if * they do match then it is likely obvious when and wheere the * event is about to take place. */ if ( $this->_registry->get( 'model.settings' ) ->get( 'always_use_calendar_timezone' ) && $event->get( 'timezone_name' ) !== $default_tz ) { $timezone_info = array( 'show_timezone' => true, 'event_timezone' => $event->get( 'timezone_name' ), 'text_timezone_title' => sprintf( Ai1ec_I18n:: __( 'Event was created in the %s time zone' ), $event->get( 'start' )->get_gmt_offset_as_text() ), ); } $banner_image_meta = get_post_meta( $event->get( 'post_id' ), 'ai1ec_banner_image' ); $banner_image = $banner_image_meta ? $banner_image_meta[0] : ''; // objects are passed by reference so an action is ok do_action( 'ai1ec_single_event_page_before_render', $event ); $filter_groups_html = apply_filters( 'ai1ec_get_filter_groups_html', $event ); $args = array( 'event' => $event, 'recurrence' => $rrule->rrule_to_text( $event->get( 'recurrence_rules' ) ), 'exclude' => $time->get_exclude_html( $event, $rrule ), 'categories' => $taxonomy->get_categories_html( $event ), 'tags' => $taxonomy->get_tags_html( $event ), 'location' => $venues_html, 'filter_groups' => $filter_groups_html, 'map' => $location->get_map_view( $event ), 'contact' => $ticket->get_contact_html( $event ), 'back_to_calendar' => $content->get_back_to_calendar_button_html(), 'subscribe_url' => $subscribe_url, 'subscribe_url_no_html' => $subscribe_url . '&no_html=true', 'edit_instance_url' => null, 'edit_instance_text' => null, 'google_url' => 'http://www.google.com/calendar/render?cid=' . urlencode( $subscribe_url ), 'show_subscribe_buttons' => ! $settings->get( 'turn_off_subscription_buttons' ), 'hide_featured_image' => $settings->get( 'hide_featured_image' ), 'extra_buttons' => $extra_buttons, 'show_get_calendar' => ! $settings->get( 'disable_get_calendar_button' ), 'text_add_calendar' => __( 'Add to Calendar', AI1EC_PLUGIN_NAME ), 'subscribe_buttons_text' => $this->_registry ->get( 'view.calendar.subscribe-button' ) ->get_labels(), 'text_get_calendar' => Ai1ec_I18n::__( 'Get a Timely Calendar' ), 'text_when' => __( 'When:', AI1EC_PLUGIN_NAME ), 'text_where' => __( 'Where:', AI1EC_PLUGIN_NAME ), 'text_cost' => __( 'Cost:', AI1EC_PLUGIN_NAME ), 'text_contact' => __( 'Contact:', AI1EC_PLUGIN_NAME ), 'text_free' => __( 'Free', AI1EC_PLUGIN_NAME ), 'text_categories' => __( 'Categories', AI1EC_PLUGIN_NAME ), 'text_tags' => __( 'Tags', AI1EC_PLUGIN_NAME ), 'timezone_info' => $timezone_info, 'banner_image' => $banner_image, 'content_img_url' => $event->get_runtime( 'content_img_url' ), 'post_id' => $event->get( 'post_id' ), 'ticket_url' => $event->get( 'ticket_url' ), 'tickets_url_label' => $event->get_runtime( 'tickets_url_label' ), 'start' => $event->get( 'start' ), 'end' => $event->get( 'end' ), 'cost' => $event->get( 'cost' ), 'instance_id' => $event->get( 'instance_id' ), ); if ( ! empty( $args['recurrence'] ) && $event->get( 'instance_id' ) && current_user_can( 'edit_ai1ec_events' ) ) { $args['edit_instance_url'] = ai1ec_admin_url( 'post.php?post=' . $event->get( 'post_id' ) . '&action=edit&instance=' . $event->get( 'instance_id' ) ); $args['edit_instance_text'] = sprintf( Ai1ec_I18n::__( 'Edit this occurrence (%s)' ), $event->get( 'start' )->format_i18n( 'M j' ) ); } $loader = $this->_registry->get( 'theme.loader' ); return $loader->get_file( 'event-single.twig', $args, false ) ->get_content(); } /** * @param Ai1ec_Event $event * * @return The html of the footer */ public function get_footer( Ai1ec_Event $event ) { $text_calendar_feed = Ai1ec_I18n::__( 'This post was replicated from another site\'s calendar feed.' ); $loader = $this->_registry->get( 'theme.loader' ); $text_calendar_feed = sprintf( $text_calendar_feed, esc_attr( str_replace( 'http://', 'webcal://', $event->get( 'ical_feed_url' ) ) ) ); $args = array( 'event' => $event, 'text_calendar_feed' => $text_calendar_feed, 'text_view_post' => Ai1ec_I18n::__( 'View original' ), ); return $loader->get_file( 'event-single-footer.twig', $args, false ) ->get_content(); } /** * Render the full article for the event – title, content, and footer. * * @param Ai1ec_Event $event * @param string $footer Footer HTML to append to event */ public function get_full_article( Ai1ec_Event $event, $footer = '' ) { $title = apply_filters( 'the_title', $event->get( 'post' )->post_title, $event->get( 'post_id' ) ); $event_details = $this->get_content( $event ); $content = wpautop( apply_filters( 'ai1ec_the_content', apply_filters( 'the_content', $event->get( 'post' )->post_content ) ) ); $args = compact( 'title', 'event_details', 'content', 'footer' ); $loader = $this->_registry->get( 'theme.loader' ); return $loader->get_file( 'event-single-full.twig', $args, false ) ->get_content(); } }