private function hack_to_remove_broken_filters() { // a stupid hack for some stupid code // the callback will automatically replace every Venue title with "Unnamed Venue" $TribeEvents = TribeEvents::instance(); remove_action('save_post', array($TribeEvents, 'save_venue_data'), 16, 2); }
/** * Initialize the class and place hooks and styling. */ function init() { $this->title(__('Tribe', 'tribe-events-calendar')); remove_action('tribe_debug', array(TribeEvents::instance(), 'renderDebug'), 10, 2); add_action('tribe_debug', array($this, 'logDebug'), 8, 3); wp_enqueue_style('tribe-debugger', TribeEvents::instance()->pluginUrl . 'resources/debugger.css'); }
/** * Set the notices used on week view * * @since 3.0 * @author tim@imaginesimplicty.com * @return void * */ function set_notices() { global $wp_query; $tribe = TribeEvents::instance(); $search_term = $geographic_term = ''; $tax_term = ''; // We have events to display, no need for notices! if (!empty(self::$events->all_day) || !empty(self::$events->hourly)) { return; } if (is_tax($tribe->get_event_taxonomy())) { $tax_term = get_term_by('slug', get_query_var('term'), $tribe->get_event_taxonomy()); $tax_term = esc_html($tax_term->name); } // Was the user searching for a keyword or place? if (!empty($wp_query->query_vars['s'])) { $search_term = $wp_query->query_vars['s']; } elseif (!empty($_REQUEST['tribe-bar-search'])) { $search_term = $_REQUEST['tribe-bar-search']; } elseif (!empty($_REQUEST['tribe-bar-geoloc'])) { $geographic_term = $_REQUEST['tribe-bar-geoloc']; } // Set an appropriate notice if (!empty($search_term)) { TribeEvents::setNotice('event-search-no-results', sprintf(__('There were no results found for <strong>"%s"</strong> this week. Try searching another week.', 'tribe-events-calendar-pro'), esc_html($search_term))); } elseif (!empty($geographic_term)) { TribeEvents::setNotice('event-search-no-results', sprintf(__('No results were found for events in or near <strong>"%s"</strong> this week. Try searching another week.', 'tribe-events-calendar-pro'), esc_html($geographic_term))); } elseif (!empty($tax_term)) { TribeEvents::setNotice('events-not-found', sprintf(__('No matching events listed under %s. Please try viewing the full calendar for a complete list of events.', 'tribe-events-calendar'), $tax_term)); } else { TribeEvents::setNotice('event-search-no-results', __('No results were found for this week. Try searching another week.', 'tribe-events-calendar-pro')); } }
/** * Output a link for the mini calendar month next nav, includes data attributes needed to update the month with ajax * * @return void * @since 3.0 * @author Jessica Yazbek **/ function tribe_events_the_mini_calendar_next_link() { $tribe_ecp = TribeEvents::instance(); $args = tribe_events_get_mini_calendar_args(); $html = '<a class="tribe-mini-calendar-nav-link next-month" href="#" data-month="' . $tribe_ecp->nextMonth($args['eventDate']) . '-01" title="' . tribe_get_next_month_text() . '"><span>»</span></a>'; echo apply_filters('tribe_events_the_mini_calendar_prev_link', $html); }
function tribe_attachment_404_fix() { if (class_exists('TribeEvents')) { remove_action('init', array(TribeEvents::instance(), 'init'), 10); add_action('init', array(TribeEvents::instance(), 'init'), 1); } }
function _backend_load_event_of_date() { if (isset($_POST['event_date']) && $_POST['event_date']) { TribeEventsQuery::init(); $states[] = 'publish'; if (0 < get_current_user_id()) { $states[] = 'private'; } $args = array('post_status' => $states, 'eventDate' => $_POST["event_date"], 'eventDisplay' => 'day'); TribeEvents::instance()->displaying = 'day'; $query = TribeEventsQuery::getEvents($args, true); global $wp_query, $post; $wp_query = $query; add_filter('tribe_is_day', '__return_true'); $html = ''; if ($query->have_posts()) { while ($query->have_posts()) { $query->the_post(); $html .= '<option value="' . get_the_ID() . '"> ' . get_the_title() . '</option>'; } wp_reset_postdata(); } $response = array('html' => $html, 'success' => true, 'total_count' => $query->found_posts, 'view' => 'day'); header('Content-type: application/json'); echo json_encode($response); die; } }
/** * Google Calendar Link * * Returns an "add to Google Calendar link for a single event. Must be used in the loop * * @param int $postId (optional) * * @return string URL for google calendar. * @since 2.0 */ function tribe_get_gcal_link($postId = null) { $postId = TribeEvents::postIdHelper($postId); $tribe_ecp = TribeEvents::instance(); $output = esc_url($tribe_ecp->googleCalendarLink($postId)); return apply_filters('tribe_get_gcal_link', $output); }
function form($instance) { /* Set up default widget settings. */ $defaults = array('title' => 'Upcoming Events', 'limit' => '5', 'no_upcoming_events' => false); $instance = wp_parse_args((array) $instance, $defaults); $tribe_ecp = TribeEvents::instance(); include $tribe_ecp->pluginPath . 'admin-views/widget-admin-list.php'; }
/** * single_event_meta * * loads the custom field meta box on the event editor screen * * @return void */ public static function single_event_meta() { $tribe_ecp = TribeEvents::instance(); $customFields = tribe_get_option('custom-fields'); $events_event_meta_template = TribeEventsPro::instance()->pluginPath . 'admin-views/event-meta.php'; $events_event_meta_template = apply_filters('tribe_events_event_meta_template', $events_event_meta_template); include $events_event_meta_template; }
/** * Replaces tribe_event_meta_cats(); */ function krafit_event_meta_cats($label = null, $separator = ', ') { if (!$label) { $label = ''; } $tribe_ecp = TribeEvents::instance(); $list = apply_filters('krafit_event_meta_cats', get_the_term_list(get_the_ID(), $tribe_ecp->get_event_taxonomy(), '<h3 class="event-preheader">' . $label . '', $separator, '</h3>')); echo $list; }
function column_order_status($item) { $icon = ""; if (strtolower($item['order_status']) !== 'completed') { $tec = TribeEvents::instance(); $icon = sprintf("<span class='warning'><img src='%s'/></span> ", trailingslashit($tec->pluginUrl) . 'resources/warning.png'); } return $icon . ucwords($item['order_status']); }
/** * Add the agenda view rewrite rule * * @param $wp_rewrite the WordPress rewrite rules object * @return void **/ function tribe_events_agenda_add_routes($wp_rewrite) { // Get the instance of the TribeEvents plugin, and the rewriteSlug that the plugin uses $tec = TribeEvents::instance(); $tec_rewrite_slug = trailingslashit($tec->rewriteSlug); // create new rule for the agenda view $newRules = array($tec_rewrite_slug . 'agenda/?$' => 'index.php?post_type=' . TribeEvents::POSTTYPE . '&eventDisplay=agenda'); // Add the new rule to the global rewrite rules array $wp_rewrite->rules = $newRules + $wp_rewrite->rules; }
/** * Check to make sure that 'previous_ecp_versions' is saving correctly. * * @since 2.0.5 * @author Paul Hughes */ function test_previous_ecp_versions_saving() { $tribe_ecp = TribeEvents::instance(); $tribe_ecp->init(); $tribe_ecp->setOption('latest_ecp_version', '1.6.5'); $tribe_ecp->init(); $previous_ecp_versions = tribe_get_option('previous_ecp_versions'); $this->assertEquals('0', $previous_ecp_versions[0]); $this->assertEquals('1.6.5', $previous_ecp_versions[1]); $this->assertFalse(isset($previous_ecp_versions[2])); }
/** * Enqueues the JS and CSS for the attendees page in the admin * @param $hook */ public function attendees_page_load_css_js($hook) { if ($hook != $this->attendees_page) { return; } $ecp = TribeEvents::instance(); wp_enqueue_style(TribeEventsTicketsPro::$attendees_slug, trailingslashit($ecp->pluginUrl) . 'resources/tickets-attendees.css', array(), apply_filters('tribe_events_css_version', TribeEvents::VERSION)); wp_enqueue_style(TribeEventsTicketsPro::$attendees_slug . '-print', trailingslashit($ecp->pluginUrl) . 'resources/tickets-attendees-print.css', array(), apply_filters('tribe_events_css_version', TribeEvents::VERSION), 'print'); wp_enqueue_script(TribeEventsTicketsPro::$attendees_slug, trailingslashit($ecp->pluginUrl) . 'resources/tickets-attendees.js', array('jquery'), apply_filters('tribe_events_js_version', TribeEvents::VERSION)); $mail_data = array('nonce' => wp_create_nonce('email-attendee-list'), 'required' => __('You need to select a user or type a valid email address', 'tribe-events-calendar'), 'sending' => __('Sending...', 'tribe-events-calendar'), 'checkin_nonce' => wp_create_nonce('checkin'), 'uncheckin_nonce' => wp_create_nonce('uncheckin')); wp_localize_script(TribeEventsTicketsPro::$attendees_slug, 'Attendees', $mail_data); }
/** * AJAX handler for the Map view */ function ajax_response() { $tribe_paged = !empty($_POST['tribe_paged']) ? $_POST['tribe_paged'] : 1; TribeEventsQuery::init(); $defaults = array('post_type' => TribeEvents::POSTTYPE, 'posts_per_page' => tribe_get_option('postsPerPage', 10), 'paged' => $tribe_paged, 'post_status' => array('publish'), 'eventDisplay' => 'map'); $view_state = 'map'; /* if past view */ if (!empty($_POST['tribe_event_display']) && $_POST['tribe_event_display'] == 'past') { $view_state = 'past'; $defaults['eventDisplay'] = 'past'; } if (isset($_POST['tribe_event_category'])) { $defaults[TribeEvents::TAXONOMY] = $_POST['tribe_event_category']; } $query = TribeEventsQuery::getEvents($defaults, true); $have_events = 0 < $query->found_posts; if ($have_events && TribeEventsGeoLoc::instance()->is_geoloc_query()) { $lat = isset($_POST['tribe-bar-geoloc-lat']) ? $_POST['tribe-bar-geoloc-lat'] : 0; $lng = isset($_POST['tribe-bar-geoloc-lng']) ? $_POST['tribe-bar-geoloc-lng'] : 0; TribeEventsGeoLoc::instance()->assign_distance_to_posts($query->posts, $lat, $lng); } elseif (!$have_events && isset($_POST['tribe-bar-geoloc'])) { TribeEvents::setNotice('event-search-no-results', sprintf(__('No results were found for events in or near <strong>"%s"</strong>.', 'tribe-events-calendar-pro'), esc_html($_POST['tribe-bar-geoloc']))); } elseif (!$have_events && isset($_POST['tribe_event_category'])) { TribeEvents::setNotice('events-not-found', sprintf(__('No matching events listed under %s. Please try viewing the full calendar for a complete list of events.', 'tribe-events-calendar'), esc_html($_POST['tribe_event_category']))); } elseif (!$have_events) { TribeEvents::setNotice('event-search-no-results', __('There were no results found.', 'tribe-events-calendar-pro')); } $response = array('html' => '', 'markers' => array(), 'success' => true, 'tribe_paged' => $tribe_paged, 'max_pages' => $query->max_num_pages, 'total_count' => $query->found_posts, 'view' => $view_state); // @TODO: clean this up / refactor the following conditional if ($have_events) { global $wp_query, $post; $data = $query->posts; $post = $query->posts[0]; $wp_query = $query; TribeEvents::instance()->displaying = 'map'; ob_start(); tribe_get_view('pro/map/content'); $response['html'] .= ob_get_clean(); $response['markers'] = TribeEventsGeoLoc::instance()->generate_markers($data); } else { global $wp_query; $wp_query = $query; TribeEvents::instance()->setDisplay(); ob_start(); tribe_get_view('pro/map/content'); $response['html'] .= ob_get_clean(); } $response = apply_filters('tribe_events_ajax_response', $response); header('Content-type: application/json'); echo json_encode($response); exit; }
/** * filters the tabs array from TribeSettings * and adds the current tab to it * does not add a tab if it's empty * * @since 2.0.5 * @author jkudish * @param array $tabs the $tabs from TribeSettings * @return array $tabs the filtered tabs */ public function addTab($tabs) { $hideSettingsTabs = TribeEvents::instance()->getNetworkOption('hideSettingsTabs', array()); if ((isset($this->fields) || has_action('tribe_settings_content_tab_' . $this->id)) && (empty($hideSettingsTabs) || !in_array($this->id, $hideSettingsTabs))) { if (is_network_admin() && $this->args['network_admin'] || !is_network_admin() && !$this->args['network_admin']) { $tabs[$this->id] = $this->name; add_filter('tribe_settings_fields', array($this, 'addFields')); add_filter('tribe_settings_no_save_tabs', array($this, 'showSaveTab')); add_filter('tribe_settings_content_tab_' . $this->id, array($this, 'doContent')); } } return $tabs; }
/** * Organizer ID * * Returns the event Organizer ID. * * @param int $postId Can supply either event id or organizer id, if none specified, current post is used * @return int Organizer * @since 2.0 */ function tribe_get_organizer_id($postId = null) { $postId = TribeEvents::postIdHelper($postId); if (is_numeric($postId) && $postId > 0) { $tribe_ecp = TribeEvents::instance(); // check if $postId is an organizer id if ($tribe_ecp->isOrganizer($postId)) { $organizer_id = $postId; } else { $organizer_id = tribe_get_event_meta($postId, '_EventOrganizerID', true); } } return apply_filters('tribe_get_organizer_id', $organizer_id, $postId); }
/** * Add the Tribe Bar to the tribe_events_before_html filter. * @param $content * * @filter tribe-events-bar-should-show set it to false to prevent infinite nesting * @filter tribe-events-bar-filters to get the list of registered filters * @filter tribe-events-bar-views to get the list of registered views * * To add filters: * * add_filter( 'tribe-events-bar-filters', 'setup_my_field_in_bar', 1, 1 ); * * public function setup_my_field_in_bar( $filters ) { * $filters[] = array( 'name' => 'tribe-bar-my-field', * 'caption' => 'My Field', * 'html' => '<input type="text" name="tribe-bar-my-field" id="tribe-bar-my-field">' ); * return $filters; * } * * To add views: * * add_filter( 'tribe-events-bar-views', 'my_setup_view_for_bar', 10); * * public function my_setup_view_for_bar( $views ) { * $tec = TribeEvents::instance(); * $views[] = array('displaying' => 'myview', 'anchor' => 'My view', 'url' => $tec->getOption( 'eventsSlug', 'events' ) . '/my_view_slug' ); * return $views; * } * * @return string */ public function show($content) { $tec = TribeEvents::instance(); //set it to false to prevent infinite nesting add_filter('tribe-events-bar-should-show', '__return_false', 9999); // Load the registered filters and views for the Bar. This values will be used in the template. $filters = apply_filters('tribe-events-bar-filters', self::instance()->filters); $views = apply_filters('tribe-events-bar-views', self::instance()->views); //Load the template ob_start(); include TribeEventsTemplates::getTemplateHierarchy('bar.php', array('subfolder' => 'modules')); $html = ob_get_clean() . $content; echo apply_filters('tribe_events_bar_show', $html, $filters, $views, $content); }
/** * */ public function do_menu_page() { $remote = $this->get_all_products(); if ($remote) { $products = NULL; if (property_exists($remote, 'data')) { $products = $remote->data; } $banner = NULL; if (property_exists($remote, 'banner')) { $banner = $remote->banner; } $categories = array_unique(wp_list_pluck($products, 'category')); include_once TribeEvents::instance()->pluginPath . 'admin-views/app-shop.php'; } }
/** * List view ajax handler * * @return void */ function ajax_response() { TribeEventsQuery::init(); $tribe_paged = !empty($_POST['tribe_paged']) ? intval($_POST['tribe_paged']) : 1; $args = array('eventDisplay' => 'list', 'post_type' => TribeEvents::POSTTYPE, 'post_status' => 'publish', 'paged' => $tribe_paged); // check & set past display if (isset($_POST['tribe_event_display']) && $_POST['tribe_event_display'] == 'past') { $args['eventDisplay'] = 'past'; } // check & set event category if (isset($_POST['tribe_event_category'])) { $args[TribeEvents::TAXONOMY] = $_POST['tribe_event_category']; } $query = tribe_get_events($args, true); // $hash is used to detect whether the primary arguments in the query have changed (i.e. due to a filter bar request) // if they have, we want to go back to page 1 $hash = $query->query_vars; $hash['paged'] = null; $hash['start_date'] = null; $hash['end_date'] = null; $hash_str = md5(maybe_serialize($hash)); if (!empty($_POST['hash']) && $hash_str !== $_POST['hash']) { $tribe_paged = 1; $args['paged'] = 1; $query = TribeEventsQuery::getEvents($args, true); } $response = array('html' => '', 'success' => true, 'max_pages' => $query->max_num_pages, 'hash' => $hash_str, 'tribe_paged' => $tribe_paged, 'total_count' => $query->found_posts, 'view' => 'list'); global $wp_query, $post, $paged; $wp_query = $query; if (!empty($query->posts)) { $post = $query->posts[0]; } $paged = $tribe_paged; TribeEvents::instance()->displaying = 'list'; if (!empty($_POST['tribe_event_display']) && $_POST['tribe_event_display'] == 'past') { $response['view'] = 'past'; } ob_start(); tribe_get_view('list/content'); $response['html'] .= ob_get_clean(); apply_filters('tribe_events_ajax_response', $response); header('Content-type: application/json'); echo json_encode($response); die; }
/** * The asset loading function. * * @param string $name The name of the package reqested. * @param array $deps An array of dependencies (this should be the registered name that is registered to the wp_enqueue functions). * @return void * @author Timothy Wood * @since 3.0 */ public static function asset_package($name, $deps = array()) { $tec_pro = TribeEventsPro::instance(); $prefix = 'tribe-events-pro'; // setup plugin resources & 3rd party vendor urls $resources_url = trailingslashit($tec_pro->pluginUrl) . 'resources/'; $vendor_url = trailingslashit($tec_pro->pluginUrl) . 'vendor/'; switch ($name) { case 'ajax-weekview': $ajax_data = array("ajaxurl" => admin_url('admin-ajax.php', is_ssl() ? 'https' : 'http'), 'post_type' => TribeEvents::POSTTYPE); $path1 = Tribe_Template_Factory::getMinFile($vendor_url . 'jquery-slimscroll/jquery.slimscroll.js', true); $path2 = Tribe_Template_Factory::getMinFile($resources_url . 'tribe-events-week.js', true); wp_enqueue_script('tribe-events-pro-slimscroll', $path1, array('tribe-events-pro', 'jquery-ui-draggable'), apply_filters('tribe_events_pro_js_version', TribeEventsPro::VERSION), true); wp_enqueue_script('tribe-events-pro-week', $path2, array('tribe-events-pro-slimscroll'), apply_filters('tribe_events_pro_js_version', TribeEventsPro::VERSION), true); wp_localize_script('tribe-events-pro-week', 'TribeWeek', $ajax_data); break; case 'ajax-photoview': $tribe_paged = !empty($_REQUEST['tribe_paged']) ? $_REQUEST['tribe_paged'] : 0; $ajax_data = array("ajaxurl" => admin_url('admin-ajax.php', is_ssl() ? 'https' : 'http'), 'tribe_paged' => $tribe_paged); $path1 = Tribe_Template_Factory::getMinFile($vendor_url . 'isotope/jquery.isotope.js', true); $path2 = Tribe_Template_Factory::getMinFile($resources_url . 'tribe-events-photo-view.js', true); wp_enqueue_script('tribe-events-pro-isotope', $path1, array('tribe-events-pro'), apply_filters('tribe_events_pro_js_version', TribeEventsPro::VERSION), true); wp_enqueue_script('tribe-events-pro-photo', $path2, array('tribe-events-pro-isotope'), apply_filters('tribe_events_pro_js_version', TribeEventsPro::VERSION), true); wp_localize_script('tribe-events-pro-photo', 'TribePhoto', $ajax_data); break; case 'ajax-dayview': $ajax_data = array("ajaxurl" => admin_url('admin-ajax.php', is_ssl() ? 'https' : 'http'), 'post_type' => TribeEvents::POSTTYPE); $path = Tribe_Template_Factory::getMinFile($resources_url . 'tribe-events-ajax-day.js', true); wp_enqueue_script('tribe-events-pro-ajax-day', $path, array('tribe-events-pro'), apply_filters('tribe_events_pro_js_version', TribeEventsPro::VERSION), true); wp_localize_script('tribe-events-pro-ajax-day', 'TribeCalendar', $ajax_data); break; case 'ajax-maps': $http = is_ssl() ? 'https' : 'http'; wp_register_script('gmaps', $http . '://maps.google.com/maps/api/js?sensor=false', array('tribe-events-pro')); $path = Tribe_Template_Factory::getMinFile($resources_url . 'tribe-events-ajax-maps.js', true); wp_register_script('tribe-events-pro-geoloc', $path, array('gmaps', parent::get_placeholder_handle()), apply_filters('tribe_events_pro_js_version', TribeEventsPro::VERSION)); wp_enqueue_script('tribe-events-pro-geoloc'); $geoloc = TribeEventsGeoLoc::instance(); $data = array('ajaxurl' => admin_url('admin-ajax.php', $http), 'nonce' => wp_create_nonce('tribe_geosearch'), 'map_view' => TribeEvents::instance()->displaying == 'map' ? true : false); wp_localize_script('tribe-events-pro-geoloc', 'GeoLoc', $data); break; } parent::asset_package($name, $deps); }
/** * AJAX handler for Photo view * * @return void */ function ajax_response() { $tec = TribeEvents::instance(); TribeEventsQuery::init(); $tribe_paged = !empty($_POST['tribe_paged']) ? intval($_POST['tribe_paged']) : 1; $args = array('eventDisplay' => 'list', 'post_type' => TribeEvents::POSTTYPE, 'post_status' => 'publish', 'paged' => $tribe_paged); $view_state = 'photo'; if (isset($_POST['tribe_event_category'])) { $args[TribeEvents::TAXONOMY] = $_POST['tribe_event_category']; } /* if past view */ if (!empty($_POST['tribe_event_display']) && $_POST['tribe_event_display'] == 'past') { $view_state = 'past'; $args['eventDisplay'] = 'past'; } $query = TribeEventsQuery::getEvents($args, true); $hash = $query->query_vars; $hash['paged'] = null; $hash['start_date'] = null; $hash_str = md5(maybe_serialize($hash)); if (!empty($_POST['hash']) && $hash_str !== $_POST['hash']) { $tribe_paged = 1; $args['paged'] = 1; $query = TribeEventsQuery::getEvents($args, true); } $response = array('html' => '', 'success' => true, 'max_pages' => $query->max_num_pages, 'hash' => $hash_str, 'tribe_paged' => $tribe_paged, 'view' => $view_state); global $wp_query, $post; $wp_query = $query; if (!empty($query->posts)) { $post = $query->posts[0]; } add_filter('tribe_events_list_pagination', array('TribeEvents', 'clear_module_pagination'), 10); $tec->displaying = 'photo'; ob_start(); tribe_get_view('pro/photo/content'); $response['html'] .= ob_get_clean(); apply_filters('tribe_events_ajax_response', $response); header('Content-type: application/json'); echo json_encode($response); die; }
/** * Google Map Embed * * Returns an embedded google maps for an event * * @param string $postId * @param int $width * @param int $height * @param bool $force_load If true, then load the map even if an address is not provided. * @return string An iframe pulling http://maps.google.com/ for this event * @since 2.0 */ function tribe_get_embedded_map($postId = null, $width = '', $height = '', $force_load = false) { $postId = TribeEvents::postIdHelper($postId); if (!tribe_is_venue($postId) && !tribe_is_event($postId)) { return false; } $postId = tribe_is_venue($postId) ? $postId : tribe_get_venue_id($postId); $locationMetaSuffixes = array('address', 'city', 'state', 'province', 'zip', 'country'); $toUrlEncode = ""; foreach ($locationMetaSuffixes as $val) { $metaVal = call_user_func('tribe_get_' . $val); if ($metaVal) { $toUrlEncode .= $metaVal . " "; } } if ($toUrlEncode) { $address = $toUrlEncode; } else { $address = null; } if (!$height) { $height = tribe_get_option('embedGoogleMapsHeight', '350'); } if (!$width) { $width = tribe_get_option('embedGoogleMapsWidth', '100%'); } if ($address || $force_load) { ob_start(); include TribeEvents::instance()->pluginPath . 'admin-views/event-map.php'; $google_map = ob_get_contents(); ob_get_clean(); return $google_map; } else { return ''; } }
/** * Is hooked by init() filter to parse the WP_Query arguments for main and alt queries. * * @param object $query WP_Query object args supplied or default * * @return object $query (modified) */ public static function pre_get_posts($query) { if ($query->is_main_query() && is_home()) { // check option for including events in the main wordpress loop, if true, add events post type if (tribe_get_option('showEventsInMainLoop', false)) { $query->query_vars['post_type'] = isset($query->query_vars['post_type']) ? (array) $query->query_vars['post_type'] : array('post'); $query->query_vars['post_type'][] = TribeEvents::POSTTYPE; $query->tribe_is_multi_posttype = true; } } if ($query->tribe_is_multi_posttype) { do_action('log', 'multi_posttype', 'default', $query->tribe_is_multi_posttype); add_filter('posts_fields', array(__CLASS__, 'multi_type_posts_fields'), 10, 2); add_filter('posts_join', array(__CLASS__, 'posts_join'), 10, 2); add_filter('posts_join', array(__CLASS__, 'posts_join_orderby'), 10, 2); add_filter('posts_distinct', array(__CLASS__, 'posts_distinct')); add_filter('posts_groupby', array(__CLASS__, 'posts_groupby'), 10, 2); add_filter('posts_orderby', array(__CLASS__, 'posts_orderby'), 10, 2); do_action('tribe_events_pre_get_posts', $query); return; } if ($query->tribe_is_event || $query->tribe_is_event_category) { if (!($query->is_main_query() && $query->get('eventDisplay') == 'month')) { add_filter('posts_fields', array(__CLASS__, 'posts_fields'), 10, 2); add_filter('posts_join', array(__CLASS__, 'posts_join'), 10, 2); add_filter('posts_join', array(__CLASS__, 'posts_join_orderby'), 10, 2); add_filter('posts_where', array(__CLASS__, 'posts_where'), 10, 2); add_filter('posts_distinct', array(__CLASS__, 'posts_distinct')); add_filter('posts_groupby', array(__CLASS__, 'posts_groupby'), 10, 2); } else { // reduce number of queries triggered by main WP_Query on month view $query->set('posts_per_page', 1); $query->set('no_found_rows', true); $query->set('cache_results', false); $query->set('update_post_meta_cache', false); $query->set('update_post_term_cache', false); $query->set('meta_query', array(array('key' => '_EventStartDate', 'type' => 'DATETIME'))); do_action('tribe_events_pre_get_posts', $query); return $query; } // if a user selects a date in the event bar we want it to persist as long as possible if (!empty($_REQUEST['tribe-bar-date'])) { $query->set('eventDate', $_REQUEST['tribe-bar-date']); do_action('log', 'changed eventDate to tribe-bar-date', 'tribe-events-query', $_REQUEST['tribe-bar-date']); } // if a user provides a search term we want to use that in the search params if (!empty($_REQUEST['tribe-bar-search'])) { $query->query_vars['s'] = $_REQUEST['tribe-bar-search']; } $query->query_vars['eventDisplay'] = !empty($query->query_vars['eventDisplay']) ? $query->query_vars['eventDisplay'] : TribeEvents::instance()->displaying; //@todo stop calling EOD cutoff transformations all over the place if (!empty($query->query_vars['eventDisplay'])) { switch ($query->query_vars['eventDisplay']) { case 'custom': // if the eventDisplay is 'custom', all we're gonna do is make sure the start and end dates are formatted $start_date = $query->get('start_date'); if ($start_date) { $query->set('start_date', date_i18n(TribeDateUtils::DBDATETIMEFORMAT, strtotime($start_date))); } $end_date = $query->get('end_date'); if ($end_date) { $query->set('end_date', date_i18n(TribeDateUtils::DBDATETIMEFORMAT, strtotime($end_date))); } break; case 'month': // make sure start and end date are set if ($query->get('start_date') == '') { $event_date = $query->get('eventDate') != '' ? $query->get('eventDate') : date_i18n(TribeDateUtils::DBDATETIMEFORMAT); $query->set('start_date', tribe_event_beginning_of_day($event_date)); } if ($query->get('end_date' == '')) { $query->set('end_date', tribe_event_end_of_day($query->get('start_date'))); } $query->set('hide_upcoming', true); break; case 'day': $event_date = $query->get('eventDate') != '' ? $query->get('eventDate') : Date('Y-m-d', current_time('timestamp')); $query->set('eventDate', $event_date); $beginning_of_day = strtotime(tribe_event_beginning_of_day($event_date)) + 1; $query->set('start_date', date_i18n(TribeDateUtils::DBDATETIMEFORMAT, $beginning_of_day)); $query->set('end_date', tribe_event_end_of_day($event_date)); $query->set('posts_per_page', -1); // show ALL day posts $query->set('hide_upcoming', false); $query->set('order', self::set_order('ASC', $query)); break; case 'all': $query->set('orderby', self::set_orderby(null, $query)); $query->set('order', self::set_order(null, $query)); break; case 'single-event': if ($query->get('eventDate') != '') { $query->set('start_date', $query->get('eventDate')); $query->set('eventDate', $query->get('eventDate')); } break; case 'list': default: // default display query $event_date = $query->get('eventDate') != '' ? $query->get('eventDate') : date_i18n(TribeDateUtils::DBDATETIMEFORMAT); if (!$query->tribe_is_past) { $query->set('start_date', tribe_event_beginning_of_day($event_date)); $query->set('end_date', ''); $query->set('order', self::set_order('ASC', $query)); } else { // on past view, set the passed date as the end date $query->set('start_date', ''); $query->set('end_date', tribe_event_end_of_day($event_date)); $query->set('order', self::set_order('DESC', $query)); } $query->set('orderby', self::set_orderby(null, $query)); $query->set('hide_upcoming', true); break; } } else { $query->set('hide_upcoming', true); $query->set('start_date', date_i18n(TribeDateUtils::DBDATETIMEFORMAT)); $query->set('orderby', self::set_orderby(null, $query)); $query->set('order', self::set_order(null, $query)); } // eventCat becomes a standard taxonomy query - will need to deprecate and update views eventually if (!in_array($query->get(TribeEvents::TAXONOMY), array('', '-1'))) { $tax_query[] = array('taxonomy' => TribeEvents::TAXONOMY, 'field' => is_numeric($query->get(TribeEvents::TAXONOMY)) ? 'id' : 'slug', 'terms' => $query->get(TribeEvents::TAXONOMY), 'include_children' => apply_filters('tribe_events_query_include_children', true)); } // Only add the postmeta hack if it's not the main admin events list // Because this method filters out drafts without EventStartDate. // For this screen we're doing the JOIN manually in TribeEventsAdminList $screen = !is_admin() || defined('DOING_AJAX') && DOING_AJAX ? null : get_current_screen(); if (empty($screen) || $screen->id != 'edit-tribe_events') { $meta_query[] = array('key' => '_EventStartDate', 'type' => 'DATETIME'); } } // filter by Venue ID if ($query->tribe_is_event_query && $query->get('venue') != '') { $meta_query[] = array('key' => '_EventVenueID', 'value' => $query->get('venue')); } // filter by Organizer ID if ($query->tribe_is_event_query && $query->get('organizer') != '') { $meta_query[] = array('key' => '_EventOrganizerID', 'value' => $query->get('organizer')); } // enable pagination setup if ($query->tribe_is_event_query && $query->get('posts_per_page') == '') { $query->set('posts_per_page', (int) tribe_get_option('postsPerPage', 10)); } // hide upcoming events from query (only not in admin) if ($query->tribe_is_event_query && $query->get('hide_upcoming')) { $hide_upcoming_ids = self::getHideFromUpcomingEvents(); if (!empty($hide_upcoming_ids)) { $query->set('post__not_in', $hide_upcoming_ids); } } if ($query->tribe_is_event_query && !empty($meta_query)) { // setup default relation for meta queries $meta_query['relation'] = 'AND'; $meta_query_combined = array_merge((array) $meta_query, (array) $query->get('meta_query')); $query->set('meta_query', $meta_query_combined); } if ($query->tribe_is_event_query && !empty($tax_query)) { // setup default relation for tax queries $tax_query_combined = array_merge((array) $tax_query, (array) $query->get('tax_query')); $query->set('tax_query', $tax_query_combined); } if ($query->tribe_is_event_query) { add_filter('posts_orderby', array(__CLASS__, 'posts_orderby'), 10, 2); } // if is in the admin remove the event date & upcoming filters, unless is an ajax call global $current_screen; if (is_admin() && $query->tribe_is_event_query && !empty($current_screen->id) && $current_screen->id == 'edit-' . TribeEvents::POSTTYPE) { if (!defined('DOING_AJAX') || defined('DOING_AJAX') && !DOING_AJAX) { remove_filter('posts_where', array(__CLASS__, 'posts_where'), 10, 2); remove_filter('posts_fields', array(__CLASS__, 'posts_fields')); remove_filter('posts_groupby', array(__CLASS__, 'posts_groupby')); remove_filter('posts_orderby', array(__CLASS__, 'posts_orderby'), 10, 2); $query->set('post__not_in', ''); // set the default order for posts within admin lists if (!isset($query->query['order'])) { $query->set('order', 'DESC'); } else { // making sure we preserve the order supplied by the query string even if it is overwritten above $query->set('order', $query->query['order']); } } } if ($query->tribe_is_event_query) { do_action('tribe_events_pre_get_posts', $query); } return $query; }
/** * Single Event Link * * Get link to a single event * * @param int $postId (optional) * @return string * @since 2.0 */ function tribe_get_event_link($event = null) { if ('' == get_option('permalink_structure')) { return apply_filters('tribe_get_event_link', TribeEvents::instance()->getLink('single', $event), $event); } else { return trailingslashit(apply_filters('tribe_get_event_link', TribeEvents::instance()->getLink('single', $event), $event)); } }
* * @version $Id$ * @package wpbase * @author WPOpal Team <wpopal@gmail.com, support@wpopal.com> * @copyright Copyright (C) 2015 wpopal.com. All Rights Reserved. * @license GNU/GPL v2 or later http://www.gnu.org/licenses/gpl-2.0.html * * @website http://www.wpopal.com * @support http://www.wpopal.com/support/forum.html */ $atts = vc_map_get_attributes($this->getShortcode(), $atts); extract($atts); TribeEventsQuery::init(); $states[] = 'publish'; $args = array('post_status' => $states, 'eventDate' => $event_date, 'eventDisplay' => 'day', 'orderby' => 'date', 'order' => 'DESC', 'post_type' => 'tribe_events', 'post__in' => wp_parse_id_list($event_ids)); TribeEvents::instance()->displaying = 'day'; $query = TribeEventsQuery::getEvents($args, true); $_id = training_wpo_makeid(); ?> <div class="widget wpo-event-of-date <?php echo esc_attr($el_class); ?> "> <?php if ($title) { ?> <h3 class="widget-title visual-title <?php echo esc_attr($size) . ' ' . $alignment; ?> "> </h3>
/** * Get photo permalink by provided date * @return string $permalink * @since 3.0 */ function tribe_get_photo_permalink($term = true) { if (isset($wp_query->query_vars[TribeEvents::TAXONOMY])) { $term = $wp_query->query_vars[TribeEvents::TAXONOMY]; } $output = TribeEvents::instance()->getLink('photo', null, $term); return apply_filters('tribe_get_photo_view_permalink', $output); }
/** * save the settings * * @return void */ public function save() { // some hooks do_action('tribe_settings_save'); do_action('tribe_settings_save_tab_' . $this->currentTab); // we'll need this later $parent_options = array(); /** * loop through each validated option and either * save it as is or figure out its parent option ID * (in that case, it's a serialized option array and * will be saved in the next loop) */ if (!empty($this->validated)) { foreach ($this->validated as $field_id => $validated_field) { // get the value and filter it $value = $validated_field->value; $value = apply_filters('tribe_settings_save_field_value', $value, $field_id, $validated_field); // figure out the parent option [could be set to false] and filter it if (is_network_admin()) { $parent_option = isset($validated_field->field['parent_option']) ? $validated_field->field['parent_option'] : TribeEvents::OPTIONNAMENETWORK; } if (!is_network_admin()) { $parent_option = isset($validated_field->field['parent_option']) ? $validated_field->field['parent_option'] : TribeEvents::OPTIONNAME; } $parent_option = apply_filters('tribe_settings_save_field_parent_option', $parent_option, $field_id); // some hooks do_action('tribe_settings_save_field', $field_id, $value, $validated_field); do_action('tribe_settings_save_field_' . $field_id, $value, $validated_field); if (!$parent_option) { if (is_network_admin()) { update_site_option($field_id, $value); } else { update_option($field_id, $value); } } else { // set the parent option $parent_options[$parent_option][$field_id] = $value; } } } /** * loop through parent option arrays * and save them * NOTE: in the case of the main option Tribe Options, * this will save using the TribeEvents:setOptions method. */ foreach ($parent_options as $option_id => $new_options) { // get the old options if ($option_id == TribeEvents::OPTIONNAME) { $old_options = (array) get_option($option_id); } else { $old_options = (array) get_site_option($option_id); } // set the options by parsing old + new and filter that $options = apply_filters('tribe_settings_save_option_array', wp_parse_args($new_options, $old_options), $option_id); if ($option_id == TribeEvents::OPTIONNAME) { // save using the TribeEvents method TribeEvents::instance()->setOptions($options); } elseif ($option_id == TribeEvents::OPTIONNAMENETWORK) { TribeEvents::instance()->setNetworkOptions($options); } else { // save using regular WP method if (is_network_admin()) { update_site_option($option_id, $options); } else { update_option($option_id, $options); } } } do_action('tribe_settings_after_save'); do_action('tribe_settings_after_save_' . $this->currentTab); remove_action('shutdown', array($this, 'deleteOptions')); add_option('tribe_settings_sent_data', $_POST); add_option('tribe_settings_errors', $this->errors); add_option('tribe_settings_major_error', $this->major_error); wp_redirect(add_query_arg(array('saved' => true), $this->url)); exit; }
/** * @param string $date * @return WP_Query */ private function get_daily_events($date) { global $wp_query; $tribe_ecp = TribeEvents::instance(); $post_status = is_user_logged_in() ? array('publish', 'private') : 'publish'; $args = wp_parse_args(array('post__in' => self::$event_daily_ids[$date], 'post_type' => TribeEvents::POSTTYPE, 'start_date' => tribe_event_beginning_of_day($date), 'end_date' => tribe_event_end_of_day($date), 'eventDisplay' => 'custom', 'no_found_rows' => true, 'posts_per_page' => self::$posts_per_page_limit), self::$args); $result = TribeEventsQuery::getEvents($args, true); return $result; }
/** * Asset calls for vendor packages * * @param string $name * @param array $deps Dependents */ public static function asset_package($name, $deps = array()) { $tec = TribeEvents::instance(); $prefix = 'tribe-events'; // TribeEvents::POSTTYPE; // setup plugin resources & 3rd party vendor urls $resources_url = trailingslashit($tec->pluginUrl) . 'resources/'; $vendor_url = trailingslashit($tec->pluginUrl) . 'vendor/'; switch ($name) { case 'jquery-resize': $path = self::getMinFile($vendor_url . 'jquery-resize/jquery.ba-resize.js', true); $deps = array_merge($deps, array('jquery')); wp_enqueue_script($prefix . '-jquery-resize', $path, $deps, '1.1', false); self::$vendor_scripts[] = $prefix . '-jquery-resize'; break; case 'chosen': // Vendor: jQuery Chosen $deps = array_merge($deps, array('jquery')); $css_path = self::getMinFile($vendor_url . 'chosen/public/chosen.css', true); $path = self::getMinFile($vendor_url . 'chosen/public/chosen.jquery.js', true); wp_enqueue_style($prefix . '-chosen-style', $css_path); wp_enqueue_script($prefix . '-chosen-jquery', $path, $deps, '0.9.5', false); self::$vendor_scripts[] = $prefix . '-chosen-jquery'; break; case 'smoothness': // Vendor: jQuery Custom Styles $path = self::getMinFile($vendor_url . 'jquery/smoothness/jquery-ui-1.8.23.custom.css', true); wp_enqueue_style($prefix . '-custom-jquery-styles', $path); break; case 'select2': // Vendor: Select2 $css_path = self::getMinFile($vendor_url . 'select2/select2.css', true); $path = self::getMinFile($vendor_url . 'select2/select2.js', true); wp_enqueue_style($prefix . '-select2-css', $css_path); wp_enqueue_script($prefix . '-select2', $path, 'jquery', '3.2'); self::$vendor_scripts[] = $prefix . '-select2'; break; case 'calendar-script': // Tribe Events JS $deps = array_merge($deps, array('jquery'), self::$vendor_scripts); $path = self::getMinFile($resources_url . 'tribe-events.js', true); wp_enqueue_script($prefix . '-calendar-script', $path, $deps, apply_filters('tribe_events_js_version', TribeEvents::VERSION)); break; case 'datepicker': // Vendor: jQuery Datepicker wp_enqueue_script('jquery-ui-datepicker'); wp_enqueue_style('jquery-ui-datepicker'); self::$vendor_scripts[] = 'jquery-ui-datepicker'; break; case 'bootstrap-datepicker': // Vendor: Bootstrap Datepicker $css_path = self::getMinFile($vendor_url . 'bootstrap-datepicker/css/datepicker.css', true); $path = self::getMinFile($vendor_url . 'bootstrap-datepicker/js/bootstrap-datepicker.js', true); wp_enqueue_style($prefix . '-bootstrap-datepicker-css', $css_path); wp_enqueue_script($prefix . '-bootstrap-datepicker', $path, 'jquery', '3.2'); self::$vendor_scripts[] = $prefix . '-bootstrap-datepicker'; $localized_datepicker_array = array('days' => array_merge($tec->daysOfWeek, array($tec->daysOfWeek[0])), 'daysShort' => array_merge($tec->daysOfWeekShort, array($tec->daysOfWeekShort[0])), 'daysMin' => array_merge($tec->daysOfWeekMin, array($tec->daysOfWeekMin[0])), 'months' => array_values($tec->monthsFull), 'monthsShort' => array_values($tec->monthsShort)); wp_localize_script($prefix . '-bootstrap-datepicker', 'tribe_bootstrap_datepicker_strings', array('dates' => $localized_datepicker_array)); break; case 'dialog': // Vendor: jQuery Dialog wp_enqueue_script('jquery-ui-dialog'); self::$vendor_scripts[] = 'jquery-ui-dialog'; break; case 'admin-ui': // Tribe Events $path = self::getMinFile($resources_url . 'events-admin.css', true); wp_enqueue_style($prefix . '-admin-ui', $path); break; case 'admin': $deps = array_merge($deps, array('jquery', 'jquery-ui-datepicker')); $path = self::getMinFile($resources_url . 'events-admin.js', true); wp_enqueue_script($prefix . '-admin', $path, $deps, apply_filters('tribe_events_js_version', TribeEvents::VERSION), true); break; case 'settings': $deps = array_merge($deps, array('jquery')); $path = self::getMinFile($resources_url . 'tribe-settings.js', true); wp_enqueue_script($prefix . '-settings', $path, $deps, apply_filters('tribe_events_js_version', TribeEvents::VERSION), true); break; case 'ecp-plugins': $deps = array_merge($deps, array('jquery')); $path = self::getMinFile($resources_url . 'jquery-ecp-plugins.js', true); wp_enqueue_script($prefix . '-ecp-plugins', $path, $deps, apply_filters('tribe_events_js_version', TribeEvents::VERSION)); break; case 'tribe-events-bar': $deps = array_merge($deps, array('jquery', $prefix . '-calendar-script', $prefix . '-bootstrap-datepicker', $prefix . '-jquery-resize', $prefix . '-select2', 'tribe-placeholder')); $path = self::getMinFile($resources_url . 'tribe-events-bar.js', true); wp_enqueue_script($prefix . '-bar', $path, $deps, apply_filters('tribe_events_js_version', TribeEvents::VERSION)); break; case 'jquery-placeholder': // Vendor: jQuery Placeholder $deps = array_merge($deps, array('jquery')); $path = self::getMinFile($vendor_url . 'jquery-placeholder/jquery.placeholder.js', true); wp_enqueue_script('tribe-placeholder', $path, $deps, '2.0.7', false); self::$vendor_scripts[] = 'tribe-placeholder'; break; case 'ajax-calendar': $deps = array_merge($deps, array('jquery', $prefix . '-calendar-script')); $ajax_data = array("ajaxurl" => admin_url('admin-ajax.php', is_ssl() ? 'https' : 'http')); $path = self::getMinFile($resources_url . 'tribe-events-ajax-calendar.js', true); wp_enqueue_script('tribe-events-calendar', $path, $deps, apply_filters('tribe_events_js_version', TribeEvents::VERSION), true); wp_localize_script('tribe-events-calendar', 'TribeCalendar', $ajax_data); break; case 'ajax-list': $deps = array_merge($deps, array('jquery', $prefix . '-calendar-script')); $tribe_paged = !empty($_REQUEST['tribe_paged']) ? $_REQUEST['tribe_paged'] : 0; $ajax_data = array("ajaxurl" => admin_url('admin-ajax.php', is_ssl() ? 'https' : 'http'), 'tribe_paged' => $tribe_paged); $path = self::getMinFile($resources_url . 'tribe-events-ajax-list.js', true); wp_enqueue_script('tribe-events-list', $path, $deps, apply_filters('tribe_events_js_version', TribeEvents::VERSION), true); wp_localize_script('tribe-events-list', 'TribeList', $ajax_data); break; case 'events-css': // Tribe Events CSS filename $event_file = 'tribe-events.css'; $stylesheet_option = tribe_get_option('stylesheetOption', 'tribe'); // What Option was selected switch ($stylesheet_option) { case 'skeleton': case 'full': $event_file_option = 'tribe-events-' . $stylesheet_option . '.css'; break; default: $event_file_option = 'tribe-events-theme.css'; break; } $styleUrl = trailingslashit($tec->pluginUrl) . 'resources/' . $event_file_option; $styleUrl = self::getMinFile($styleUrl, true); $styleUrl = apply_filters('tribe_events_stylesheet_url', $styleUrl); // Is there a core override file in the theme? $styleOverrideUrl = TribeEventsTemplates::locate_stylesheet('tribe-events/' . $event_file, $styleUrl); // Load up stylesheet from theme or plugin if ($styleUrl && $stylesheet_option == 'tribe') { $full_path = self::getMinFile(trailingslashit($tec->pluginUrl) . 'resources/tribe-events-full.css', true); wp_enqueue_style('full-calendar-style', $full_path); wp_enqueue_style(TribeEvents::POSTTYPE . '-calendar-style', $styleUrl); } else { wp_enqueue_style(TribeEvents::POSTTYPE . '-calendar-style', $styleUrl); } if ($styleOverrideUrl) { wp_enqueue_style(TribeEvents::POSTTYPE . '-calendar-override-style', $styleOverrideUrl); } break; default: do_action($prefix . '-' . $name); break; } }