/** * Registers the widget with the WordPress Widget API. * * @return void. */ public static function register() { $supports = eventorganiser_get_option('supports'); if (in_array('event-venue', $supports)) { register_widget(__CLASS__); } }
/** * Enqueues the page's scripts and styles, and localises them. */ function page_scripts() { global $wp_locale; wp_enqueue_script('eo_calendar'); //wp_enqueue_script( 'eo_event' ); wp_localize_script('eo_event', 'EO_Ajax_Event', array('ajaxurl' => admin_url('admin-ajax.php'), 'startday' => intval(get_option('start_of_week')), 'format' => eventorganiser_php2jquerydate(eventorganiser_get_option('dateformat')))); wp_localize_script('eo_calendar', 'EO_Ajax', array('ajaxurl' => admin_url('admin-ajax.php'), 'startday' => intval(get_option('start_of_week')), 'format' => eventorganiser_php2jquerydate(eventorganiser_get_option('dateformat')), 'timeFormat' => get_current_screen()->get_option('eofc_time_format', 'value') ? 'h:mmtt' : 'HH:mm', 'perm_edit' => current_user_can('edit_events'), 'categories' => get_terms('event-category', array('hide_empty' => 0)), 'venues' => get_terms('event-venue', array('hide_empty' => 0)), 'locale' => array('isrtl' => $wp_locale->is_rtl(), 'monthNames' => array_values($wp_locale->month), 'monthAbbrev' => array_values($wp_locale->month_abbrev), 'dayNames' => array_values($wp_locale->weekday), 'dayAbbrev' => array_values($wp_locale->weekday_abbrev), 'today' => __('today', 'eventorganiser'), 'day' => __('day', 'eventorganiser'), 'week' => __('week', 'eventorganiser'), 'month' => __('month', 'eventorganiser'), 'gotodate' => __('go to date', 'eventorganiser'), 'cat' => __('View all categories', 'eventorganiser'), 'venue' => __('View all venues', 'eventorganiser')))); }
public function testOndateSlug() { global $wp_rewrite; update_option('permalink_structure', '/%year%/%monthnum%/%day%/%postname%/'); $options = eventorganiser_get_option(false); $options['url_on'] = 'events-on'; update_option('eventorganiser_options', $options); eventorganiser_cpt_register(); $GLOBALS['wp_rewrite']->init(); flush_rewrite_rules(); $this->go_to(eo_get_event_archive_link(2014, 03)); $this->assertTrue(eo_is_event_archive('month')); $this->assertEquals('2014-03-01', eo_get_event_archive_date('Y-m-d')); $this->assertEquals('http://example.org/events/event/events-on/2014/03', eo_get_event_archive_link(2014, 03)); }
/** * Enqueues the page's scripts and styles, and localises them. */ function page_scripts() { global $wp_locale; wp_enqueue_script('eo_calendar'); $edittime = defined('EVENT_ORGANISER_BETA_FEATURES') && EVENT_ORGANISER_BETA_FEATURES; $venues = $categories = $all_cats = $all_venues = false; if ($category_tax = get_taxonomy('event-category')) { $categories = get_terms('event-category', array('hide_empty' => 0)); $all_cats = $category_tax->labels->view_all_items; } if ($venue_tax = get_taxonomy('event-venue')) { $venues = get_terms('event-venue', array('hide_empty' => 0)); $all_venues = $venue_tax->labels->view_all_items; } wp_localize_script('eo_calendar', 'EO_Ajax', array('ajaxurl' => admin_url('admin-ajax.php'), 'startday' => intval(get_option('start_of_week')), 'format' => eventorganiser_php2jquerydate(eventorganiser_get_option('dateformat')), 'timeFormat' => get_current_screen()->get_option('eofc_time_format', 'value') ? 'h:mmtt' : 'HH:mm', 'perm_edit' => current_user_can('edit_events'), 'edit_time' => $edittime ? current_user_can('edit_events') : false, 'edit_nonce' => wp_create_nonce('edit_events'), 'categories' => $categories, 'venues' => $venues, 'locale' => array('isrtl' => $wp_locale->is_rtl(), 'monthNames' => array_values($wp_locale->month), 'monthAbbrev' => array_values($wp_locale->month_abbrev), 'dayNames' => array_values($wp_locale->weekday), 'dayAbbrev' => array_values($wp_locale->weekday_abbrev), 'today' => __('today', 'eventorganiser'), 'day' => __('day', 'eventorganiser'), 'week' => __('week', 'eventorganiser'), 'month' => __('month', 'eventorganiser'), 'gotodate' => __('go to date', 'eventorganiser'), 'cat' => $all_cats, 'venue' => $all_venues))); }
public function __construct() { global $pagenow, $EO_Errors; if (!isset($EO_Errors)) { $EO_Errors = new WP_Error(); } if (is_feed('eo-events') && eventorganiser_get_option('feed')) { $this->get_export_file(); } //If importing / exporting events make sure we a logged in and check nonces. if (is_admin() && !empty($_POST['eventorganiser_download_events']) && check_admin_referer('eventorganiser_download_events') && current_user_can('manage_options')) { //Exporting events //mmm... maybe finally a legitimate use of query_posts query_posts(array('post_type' => 'event', 'showpastevents' => true, 'group_events_by' => 'series', 'posts_per_page' => -1)); $this->get_export_file(); } elseif (is_admin() && !empty($_POST['eventorganiser_import_events']) && check_admin_referer('eventorganiser_import_events') && current_user_can('manage_options')) { //Importing events //Perform checks on file: if (in_array($_FILES["ics"]["type"], array("text/calendar", "application/octet-stream")) && $_FILES["ics"]["size"] < 2097152) { if ($_FILES["ics"]["error"] > 0) { $EO_Errors = new WP_Error('eo_error', sprintf(__("File Error encountered: %d", 'eventorganiser'), $_FILES["ics"]["error"])); } else { //Import file $this->import_file($_FILES['ics']['tmp_name']); } } elseif (!isset($_FILES) || empty($_FILES['ics']['name'])) { $EO_Errors = new WP_Error('eo_error', __("No file detected.", 'eventorganiser')); } else { $EO_Errors = new WP_Error('eo_error', __("Invalid file uploaded. The file must be a ics calendar file of type 'text/calendar', no larger than 2MB.", 'eventorganiser')); $size = size_format($_FILES["ics"]["size"], 2); $details = sprintf(__('File size: %s. File type: %s', 'eventorganiser'), $size, $_FILES["ics"]["type"]); $EO_Errors->add('eo_error', $details); } } add_action('eventorganiser_event_settings_imexport', array($this, 'get_im_export_markup')); }
/** * If a menu isn't being used the above won't work. They're using wp_list_pages, so the * best we can do is append a link to the end of the list. * Hooked onto wp_list_pages * * @ignore * @access private * @since 1.0 */ function eventorganiser_menu_link($items) { if (eventorganiser_get_option('addtomenu') != '1') { return $items; } $class = 'menu-item menu-item-type-event'; if (is_post_type_archive('event') || is_singular('event') || eo_is_event_taxonomy()) { $class = 'current_page_item'; } $items .= sprintf('<li class="%s"><a href="%s" > %s </a></li>', $class, get_post_type_archive_link('event'), esc_html(eventorganiser_get_option('navtitle'))); return $items; }
function display() { $plugins = get_plugins(); $plugin = $plugins['event-organiser/event-organiser.php']; ?> <div class="wrap"> <h2> <?php esc_html_e('Event Organiser Extensions', 'eventorganiser'); ?> </h2> <div class="eo-addon-text"> <?php echo '<p>' . __('Event Organiser offers a range of extension which add additional features to the plug-in.', 'eventorganiser') . '</p>'; $settings_link = esc_url(admin_url('options-general.php?page=event-settings')); ?> <label><input type="checkbox" id="eo-submenu-toggle" <?php checked(eventorganiser_get_option('hide_addon_page'), 1); ?> /> <small>Hide this page from the admin menu. You can still access it from <a href="<?php echo $settings_link; ?> "><em><small>Settings > Event Organiser</small></em></a>.</small> </label> </div> <hr style="color:#CCC;background-color:#CCC;border:0;border-bottom:1px solid #CCC;"> <?php $addons = self::get_addons(); if ($addons && !is_wp_error($addons)) { echo '<div id="eo-addons-wrap">'; foreach ($addons as $addon) { if (!isset($addon['status']) || !in_array($addon['status'], array('available', 'coming-soon'))) { continue; } self::print_addon($addon); } echo '</div>'; } else { ?> <div class="error"><p>There was an error retrieving the add-on list from the server. Please try again later.</p></div> <?php } ?> <div style="clear:both"></div> <p> <strong><a href="http://wp-event-organiser.com/extensions?aid=7"><?php _e('Find out more …', 'eventorganiser'); ?> </a></strong> </p> </div><!-- .wrap --> <?php }
/** * Parses event queries and alters the WP_Query object appropriately * * Parse's the query, and sets date range and other event specific query variables. * If query is for 'event' post type - the posts_* filters are added. * * Hooked onto pre_get_posts * @since 1.0.0 * @access private * @ignore * * @param WP_Query $query The query */ function eventorganiser_pre_get_posts($query) { //Deprecated, use event-venue instead. if (!empty($query->query_vars['venue'])) { $venue = $query->get('venue'); $query->set('event-venue', $venue); $query->set('post_type', 'event'); } //If the query is for eo-events feed, set post type if ($query->is_feed('eo-events')) { $query->set('post_type', 'event'); } //If querying for all events starting on given date, set the date parameters if (!empty($query->query_vars['ondate'])) { $ondate_start = str_replace('/', '-', $query->query_vars['ondate']); $ondate_end = str_replace('/', '-', $query->query_vars['ondate']); $parts = count(explode('-', $ondate_start)); if ($parts == 1 && is_numeric($ondate_start)) { //Numeric - interpret as year $ondate_start .= '-01-01'; $ondate_end .= '-12-31'; } elseif ($parts == 2) { // 2012-01 format: interpret as month $ondate_start .= '-01'; try { $end = new DateTime($ondate_start); $ondate_end = $end->format('Y-m-t'); } catch (Exception $e) { $query->set('ondate', false); break; } } $query->set('post_type', 'event'); $query->set('event_start_before', $ondate_end); $query->set('event_end_after', $ondate_start); } //If not on event, stop here. if (!eventorganiser_is_event_query($query, true)) { return $query; } $blog_now = new DateTime(null, eo_get_blog_timezone()); //Determine whether or not to show past events and each occurrence. //If not set, use options if (!is_admin() && !is_single() && !$query->is_feed('eo-events') && !isset($query->query_vars['showpastevents'])) { //If showpastevents is not set - use options (except for admin / single pages. $query->set('showpastevents', eventorganiser_get_option('showpast')); } //Deprecated: showrepeats - use group_events_by instead if (isset($query->query_vars['showrepeats']) && !isset($query->query_vars['group_events_by'])) { if (!$query->query_vars['showrepeats']) { $query->set('group_events_by', 'series'); } } //Determine how to group events: by series or show each occurrence if (!isset($query->query_vars['group_events_by'])) { //Group by isn't set - default depends on context: if ($query->is_main_query() && (is_admin() || is_single() || $query->is_feed('eo-events'))) { //If in admin or single page - we probably don't want to see duplicates of (recurrent) events - unless specified otherwise. $query->set('group_events_by', 'series'); } elseif (eventorganiser_get_option('group_events') == 'series') { //In other instances (archives, shortcode listing) if showrepeats option is false display only the next event. $query->set('group_events_by', 'series'); } else { $query->set('group_events_by', 'occurrence'); } } //Parse user input as date-time objects $date_objs = array('event_start_after' => '', 'event_start_before' => '', 'event_end_after' => '', 'event_end_before' => ''); foreach ($date_objs as $prop => $value) { $date = $query->get($prop); try { $date = empty($date) ? false : new DateTime($date, eo_get_blog_timezone()); } catch (Exception $e) { $date = false; } $date_objs[$prop] = $date; $query->set($prop, $date); } //If eo_interval is set, determine date ranges if (!empty($query->query_vars['eo_interval'])) { switch ($query->get('eo_interval')) { case 'expired': $meta_query = (array) $query->get('meta_query'); $meta_query[] = array('key' => '_eventorganiser_schedule_last_finish', 'value' => $blog_now->format('Y-m-d H:i:s'), 'compare' => '<='); $query->set('meta_query', $meta_query); break; case 'future': $meta_query = $query->get('meta_query'); $meta_query = empty($meta_query) ? array() : $meta_query; $meta_query[] = array('key' => '_eventorganiser_schedule_last_start', 'value' => $blog_now->format('Y-m-d H:i:s'), 'compare' => '>='); $query->set('meta_query', $meta_query); break; case 'P1D': case 'P1W': case 'P1M': case 'P6M': case 'P1Y': //I hate you php5.2 $intervals = array('P1D' => '+1 day', 'P1W' => '+1 week', 'P1M' => '+1 month', 'P6M' => '+6 month', 'P1Y' => '+1 Year'); $cutoff = clone $blog_now; $cutoff->modify($intervals[$query->query_vars['eo_interval']]); if (is_admin() && 'series' == $query->get('group_events_by')) { //On admin we want to show the **first** occurrence of a recurring event which has an occurrence in the interval global $wpdb; $post_ids = $wpdb->get_results($wpdb->prepare("SELECT DISTINCT post_id FROM {$wpdb->eo_events}\n\t\t\t\t\t\tWHERE {$wpdb->eo_events}.StartDate <= %s\n\t\t\t\t\t\tAND {$wpdb->eo_events}.EndDate >= %s", $cutoff->format('Y-m-d'), $blog_now->format('Y-m-d'))); if ($post_ids) { $query->set('post__in', wp_list_pluck($post_ids, 'post_id')); } } else { if (empty($date_objs['event_start_before']) || $cutoff < $date_objs['event_start_before']) { $date_objs['event_start_before'] = $cutoff; } if (empty($date_objs['event_end_after']) || $blog_now > $date_objs['event_end_after']) { $date_objs['event_end_after'] = $blog_now; } } } } //Endif interval set $running_event_is_past = eventorganiser_get_option('runningisnotpast') ? true : false; //Set date range according to whether we show past events if (isset($query->query_vars['showpastevents']) && !$query->query_vars['showpastevents']) { //Showing only future events //Running event is past - Get events which start in the future //A current event is not past - Get events which finish in the future $key = $running_event_is_past ? 'event_start_after' : 'event_end_after'; //If current queried date is not set or before now, set the queried date to now $date_objs[$key] = empty($date_objs[$key]) || $blog_now > $date_objs[$key] ? $blog_now : $date_objs[$key]; } //Set event dates to 'Y-m-d H:i:s' format. foreach ($date_objs as $prop => $datetime) { if (!empty($datetime)) { $query->set($prop, $datetime->format('Y-m-d H:i:s')); } } if ($query->is_feed('eo-events')) { //Posts per page for feeds bug http://core.trac.wordpress.org/ticket/17853 add_filter('post_limits', 'wp17853_eventorganiser_workaround'); $query->set('posts_per_page', -1); } //Add the posts_* filters to modify the query add_filter('posts_fields', 'eventorganiser_event_fields', 10, 2); add_filter('posts_join', 'eventorganiser_join_tables', 10, 2); add_filter('posts_where', 'eventorganiser_events_where', 10, 2); add_filter('posts_orderby', 'eventorganiser_sort_events', 10, 2); add_filter('posts_groupby', 'eventorganiser_event_groupby', 10, 2); }
/** * Toggle visibility of extensionpage. * *@since 2.3 *@access private *@ignore */ function eventorganiser_ajax_toggle_addon_page() { if (!isset($_POST['hide_addon_page']) || !current_user_can('manage_options')) { exit; } $hide = (int) (strtolower($_POST['hide_addon_page']) == 'true'); $options = eventorganiser_get_option(false); $options['hide_addon_page'] = $hide; update_option('eventorganiser_options', $options); exit(1); }
/** * Saves the event data posted from the event metabox. * Hooked to the 'save_post' action * * @since 1.0.0 * * @param int $post_id the event post ID * @return int $post_id the event post ID */ function eventorganiser_details_save($post_id) { //make sure data came from our meta box if (!isset($_POST['_eononce']) || !wp_verify_nonce($_POST['_eononce'], 'eventorganiser_event_update_' . $post_id . '_' . get_current_blog_id())) { return; } //verify this is not an auto save routine. if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { return; } //authentication checks if (!current_user_can('edit_event', $post_id)) { return; } //Collect raw data $raw_data = isset($_POST['eo_input']) ? $_POST['eo_input'] : array(); $raw_data = wp_parse_args($raw_data, array('StartDate' => '', 'EndDate' => '', 'StartTime' => '00:00', 'FinishTime' => '23:59', 'schedule' => 'once', 'event_frequency' => 1, 'schedule_end' => '', 'allday' => 0, 'schedule_meta' => '', 'days' => array(), 'include' => '', 'exclude' => '')); //Update venue $venue_id = !empty($raw_data['event-venue']) ? intval($raw_data['event-venue']) : null; //Maybe create a new venue if (empty($venue_id) && !empty($_POST['eo_venue']) && current_user_can('manage_venues')) { $venue = $_POST['eo_venue']; if (!empty($venue['name'])) { $new_venue = eo_insert_venue($venue['name'], $venue); if (!is_wp_error($new_venue)) { $venue_id = $new_venue['term_id']; } else { if ($new_venue->get_error_code() == 'term_exists') { $venue_id = eo_get_venue($event_id); } } } } //Set venue $r = wp_set_post_terms($post_id, array($venue_id), 'event-venue', false); //If reocurring, but not editing occurrences, can abort here, but trigger hook. if (eo_reoccurs($post_id) && (!isset($raw_data['AlterRe']) || 'yes' != $raw_data['AlterRe'])) { /** * Triggered after an event has been updated. * * @param int $post_id The ID of the event */ do_action('eventorganiser_save_event', $post_id); //Need this to update cache return; } //Check dates $date_format = eventorganiser_get_option('dateformat'); $is24 = eventorganiser_blog_is_24(); $time_format = $is24 ? 'H:i' : 'g:ia'; $datetime_format = $date_format . ' ' . $time_format; //Set times for all day events $all_day = intval($raw_data['allday']); if ($all_day) { $raw_data['StartTime'] = $is24 ? '00:00' : '12:00am'; $raw_data['FinishTime'] = $is24 ? '23:59' : '11:59pm'; } $start = eo_check_datetime($datetime_format, trim($raw_data['StartDate']) . ' ' . trim($raw_data['StartTime'])); $end = eo_check_datetime($datetime_format, trim($raw_data['EndDate']) . ' ' . trim($raw_data['FinishTime'])); $until = eo_check_datetime($datetime_format, trim($raw_data['schedule_end']) . ' ' . trim($raw_data['StartTime'])); //Collect schedule meta $schedule = $raw_data['schedule']; if ('weekly' == $schedule) { $schedule_meta = $raw_data['days']; $occurs_by = ''; } elseif ('monthly' == $schedule) { $schedule_meta = $raw_data['schedule_meta']; $occurs_by = trim($schedule_meta, '='); } else { $schedule_meta = ''; $occurs_by = ''; } //Collect include/exclude $in_ex = array(); $orig_schedule = eo_get_event_schedule($post_id); foreach (array('include', 'exclude') as $key) { $in_ex[$key] = array(); $arr = explode(',', sanitize_text_field($raw_data[$key])); if (!empty($arr)) { foreach ($arr as $date) { if ($date_obj = eo_check_datetime('Y-m-d', trim($date))) { $date_obj->setTime($start->format('H'), $start->format('i')); $in_ex[$key][] = $date_obj; } } /* see https://github.com/stephenharris/Event-Organiser/issues/260 if( $orig = array_uintersect( $orig_schedule[$key], $in_ex[$key], '_eventorganiser_compare_dates' ) ){ $in_ex[$key] = array_merge( $orig, $in_ex[$key] ); $in_ex[$key] = _eventorganiser_remove_duplicates( $in_ex[$key] ); }*/ } } $event_data = array('start' => $start, 'end' => $end, 'all_day' => $all_day, 'schedule' => $schedule, 'frequency' => (int) $raw_data['event_frequency'], 'until' => $until, 'schedule_meta' => $schedule_meta, 'occurs_by' => $occurs_by, 'include' => $in_ex['include'], 'exclude' => $in_ex['exclude']); $response = eo_update_event($post_id, $event_data); if (is_wp_error($response)) { global $EO_Errors; $code = $response->get_error_code(); $message = $response->get_error_message($code); $errors[$post_id][] = __('Event dates were not saved.', 'eventorganiser'); $errors[$post_id][] = $message; $EO_Errors->add('eo_error', $message); update_option('eo_notice', $errors); } return; }
function eventorganiser_posterboard_shortcode_handler($atts = array()) { $defaults = array('filters' => ''); $query = array_diff_key((array) $atts, $defaults); $atts = shortcode_atts($defaults, $atts); $query = array_merge(array('posts_per_page' => 10), $query); //Get template ob_start(); eo_locate_template('single-event-board-item.html', true, false); $template = ob_get_contents(); ob_end_clean(); //Load & 'localize' script if (!eventorganiser_get_option('disable_css')) { wp_enqueue_style('eo_posterboard'); } wp_enqueue_script('eo_posterboard'); wp_localize_script('eo_posterboard', 'eventorganiser_posterboard', array('url' => admin_url('admin-ajax.php'), 'loading' => __('Loading...', 'event-organiser-posterboard'), 'load_more' => __('Load more', 'event-organiser-posterboard'), 'template' => $template, 'query' => $query)); //Handle filters $filters = explode(',', $atts['filters']); $filers_markup = ''; $venues = eo_get_venues(); $cats = get_terms(array('event-category'), array('hide_empty' => false)); //'state'/'country'/'city' functions only available in Pro $is_pro_active = in_array('event-organiser-pro/event-organiser-pro.php', (array) get_option('active_plugins', array())); if ($filters) { foreach ($filters as $filter) { $filter = strtolower(trim($filter)); switch ($filter) { case 'venue': if ($venues) { foreach ($venues as $venue) { $filers_markup .= sprintf('<a href="#" class="eo-eb-filter eo-eb-filter-venue eo-eb-filter-venue-%1$d" data-filter-type="venue" data-venue="%1$d" data-filter-on="false">%2$s</a>', $venue->term_id, $venue->name); } } break; case 'category': if ($cats) { foreach ($cats as $cat) { $filers_markup .= sprintf('<a href="#" class="eo-eb-filter eo-eb-filter-category eo-eb-filter-category-%1$d" data-filter-type="category" data-category="%1$d" data-filter-on="false">%2$s</a>', $cat->term_id, $cat->name); } } $filers_markup .= sprintf('<a href="#" class="eo-eb-filter eo-eb-filter-category eo-eb-filter-category-%1$d" data-filter-type="category" data-category="%1$d" data-filter-on="false">%2$s</a>', 0, __('Uncategorised', 'event-organiser-posterboard')); break; case 'city': case 'state': case 'country': //If Pro isn't active, this won't work if (!$is_pro_active) { break; } if ('city' == $filter) { $terms = eo_get_venue_cities(); } elseif ('state' == $filter) { $terms = eo_get_venue_states(); } else { $terms = eo_get_venue_countries(); } if ($terms) { foreach ($terms as $term) { $filers_markup .= sprintf('<a href="#" class="eo-eb-filter eo-eb-filter-%1$s eo-eb-filter-%1$s-%2$s" data-filter-type="%1$s" data-%1$s="%2$s" data-filter-on="false">%2$s</a>', $filter, $term); } } break; } } } return '<div id="event-board">' . '<div id="event-board-filters" data-filters="">' . $filers_markup . '</div>' . '<div id="event-board-items"></div>' . '<div id="event-board-more"></div>' . '</div>'; }
/** * (Private) Utility function checks a date-time string is formatted correctly (according to the options) * @access private * @ignore * @since 1.0.0 * @param datetime_string - a datetime string * @param string $format - Format of the datetime string. One of 'd-m-Y H:i', 'm-d-Y H:i' and 'Y-m-d H:i'. * @return int DateTime| false - the parsed datetime string as a DateTime object or false on error (incorrectly formatted for example) */ function _eventorganiser_check_datetime($datetime_string = '', $format = null) { if (is_null($format)) { $format = eventorganiser_get_option('dateformat'); } //Backwards compatible - can probably remove 2.1+ if (is_bool($format)) { _deprecated_argument('_eventorganiser_check_datetime', '1.8', 'This function no longer accepts a boolean, pass the format of the passed date-time string.'); if (true === $format) { $format = 'Y-m-d'; } else { $format = eventorganiser_get_option('dateformat'); } } //Get regular expression. if ($format == 'Y-m-d') { $reg_exp = "/(?P<year>\\d{4})[-.\\/](?P<month>\\d{1,})[-.\\/](?P<day>\\d{1,}) (?P<hour>\\d{2}):(?P<minute>\\d{2})/"; } elseif ($format == 'd-m-Y') { $reg_exp = "/(?P<day>\\d{1,})[-.\\/](?P<month>\\d{1,})[-.\\/](?P<year>\\d{4}) (?P<hour>\\d{2}):(?P<minute>\\d{2})/"; } else { $reg_exp = "/(?P<month>\\d{1,})[-.\\/](?P<day>\\d{1,})[-.\\/](?P<year>\\d{4}) (?P<hour>\\d{2}):(?P<minute>\\d{2})/"; } if (!preg_match($reg_exp, $datetime_string, $matches)) { return false; } extract(array_map('intval', $matches)); if (!checkdate($month, $day, $year) || $hour < 0 || $hour > 23 || $minute < 0 || $minute > 59) { return false; } $datetime = new DateTime(null, eo_get_blog_timezone()); $datetime->setDate($year, $month, $day); $datetime->setTime($hour, $minute); return $datetime; }
public function download_debug_info() { global $wpdb; $installed = get_plugins(); $active_plugins = array(); foreach ($installed as $plugin_slug => $plugin_data) { if (!is_plugin_active($plugin_slug)) { continue; } $active_plugins[] = $plugin_slug; } $theme = wp_get_theme(); $db_tables = array(); if ($this->db_tables) { foreach ($this->db_tables as $db_table) { if ($this->table_exists($db_table)) { $db_table = "**" . $db_table . "**"; } $db_tables[] = $db_table; } } $options = array(); $options['event-organiser'] = eventorganiser_get_option(false); /** * Settings to include in an export. * * These options are included in both the settings export on the settings * page and the also printed in the system information file. By default * they inlude Event Organiser's options, but others can be added. * * The filtered value should be a (2+ dimensional) array, indexed by plugin/ * extension name. * * @param array $options Array of user settings, indexed by plug-in/extension. */ $options = apply_filters('eventorganiser_export_settings', $options); $filename = 'event-organiser-system-info-' . get_bloginfo('name') . '.md'; $filename = sanitize_file_name($filename); header("Content-type: text/plain"); header('Content-disposition: attachment; filename=' . $filename); echo '## Event Organiser Sytem Informaton ##' . "\n"; echo "\n"; echo "\n"; echo '### Site Information ###' . "\n"; echo "\n"; echo 'Site url' . "\t\t\t" . site_url() . "\n"; echo 'Home url' . "\t\t\t" . home_url() . "\n"; echo 'Multisite' . "\t\t\t" . (is_multisite() ? 'Yes' : 'No') . "\n"; echo 'Permalink' . "\t\t\t" . get_option('permalink_structure') . "\n"; echo "\n"; echo "\n"; echo '### Versions ###' . "\n"; echo "\n"; echo 'Event Organiser' . "\t\t" . EVENT_ORGANISER_VER . "\n"; if ($this->jquery_version) { echo 'jQuery Version' . "\t\t" . $this->jquery_version . "\n"; } echo 'WordPress' . "\t\t\t" . get_bloginfo('version') . "\n"; echo 'PHP Version' . "\t\t\t" . PHP_VERSION . "\n"; global $wpdb; $ver = empty($wpdb->use_mysqli) ? mysql_get_server_info() : mysqli_get_server_info($wpdb->dbh); echo 'MySQL Version' . "\t\t" . $ver . "\n"; echo "\n"; echo "\n"; echo '### Server Information ###' . "\n"; echo "\n"; echo 'Web Server' . "\t\t\t" . $_SERVER['SERVER_SOFTWARE'] . "\n"; echo 'PHP Memory Usage' . "\t" . $this->get_memory_usage('percent') . '%' . "\n"; echo 'PHP Memory Limit' . "\t" . ini_get('memory_limit') . "\n"; echo 'PHP Upload Max Size' . "\t" . ini_get('post_max_size') . "\n"; echo 'PHP FSOCKOPEN support' . "\t" . (function_exists('fsockopen') ? 'Yes' : 'No') . "\n"; echo 'PHP cURL support' . "\t" . (function_exists('curl_init') ? 'Yes' : 'No') . "\n"; echo 'PHP openSSL support' . "\t" . (function_exists('openssl_verify') ? 'Yes' : 'No') . "\n"; echo "\n"; echo "\n"; echo '### Plug-ins & Themes ###' . "\n"; echo "\n"; echo 'Active Plug-ins' . "\n\t-\t" . implode("\n\t-\t", $active_plugins) . "\n"; echo 'Theme' . "\n\t-\t" . $theme->get('Name') . ' (' . $theme->get('Version') . ')' . "\n"; echo "\n"; echo "\n"; echo '### Database ###' . "\n"; echo "\n"; echo "Database Prefix" . "\t\t\t" . $wpdb->prefix . "\n"; echo "Database tables" . "\t\t\t" . implode(', ', $db_tables) . "\n"; echo "Database character set" . "\t" . ($this->database_charset_check() ? DB_CHARSET : "**" . DB_CHARSET . "**") . "\n"; echo "\n"; echo "\n"; echo '### Site Settings ###' . "\n"; echo 'Timezone' . "\t\t\t" . eo_get_blog_timezone()->getName() . sprintf(' ( %s / %s ) ', get_option('gmt_offset'), get_option('timezone_string')) . "\n"; echo 'WP Cron' . "\t\t\t" . ($this->get_cron_status() == 0 ? 'Disabled' : ($this->get_cron_status() == 1 ? 'Enabled' : 'Alternative ')) . "\n"; echo 'WP Lang' . "\t\t\t" . (defined('WP_LANG') && WP_LANG ? WP_LANG : 'en_us') . "\n"; echo 'Date format' . "\t\t" . get_option('date_format') . "\n"; echo 'Time format' . "\t\t" . get_option('time_format'); echo "\n"; echo "\n"; echo '### Event Organiser Settings ###' . "\n"; foreach ($options['event-organiser'] as $option => $value) { if (is_array($value)) { $value = implode(', ', $value); } echo "\n\t-\t**" . esc_html($option) . ":**\t " . $value; } echo "\n"; echo "\n"; echo '### Debug Mode ###' . "\n"; echo "\n"; echo 'Debug mode' . "\t\t\t" . (defined('WP_DEBUG') && WP_DEBUG ? 'Enabled' : 'Disabled') . "\n"; echo 'Script mode' . "\t\t\t" . (defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? 'Enabled' : 'Disabled') . "\n"; exit; }
/** * Sets up the event data metabox * This allows user to enter date / time, reoccurrence and venue data for the event * @ignore * @since 1.0.0 */ function _eventorganiser_details_metabox($post) { global $wp_locale; //Sets the format as php understands it, and textual. $phpFormat = eventorganiser_get_option('dateformat'); if ('d-m-Y' == $phpFormat) { $format = 'dd-mm-yyyy'; //Human form } elseif ('Y-m-d' == $phpFormat) { $format = 'yyyy-mm-dd'; //Human form } else { $format = 'mm-dd-yyyy'; //Human form } $is24 = eventorganiser_blog_is_24(); $time_format = $is24 ? 'H:i' : 'g:ia'; //Get the starting day of the week $start_day = intval(get_option('start_of_week')); $ical_days = array('SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA'); //Retrieve event details extract(eo_get_event_schedule($post->ID)); $venues = eo_get_venues(); $venue_id = (int) eo_get_venue($post->ID); //$sche_once is used to disable date editing unless the user specifically requests it. //But a new event might be recurring (via filter), and we don't want to 'lock' new events. //See http://wordpress.org/support/topic/wrong-default-in-input-element $sche_once = $schedule == 'once' || !empty(get_current_screen()->action); if (!$sche_once) { $notices = '<strong>' . __('This is a reoccurring event', 'eventorganiser') . '</strong>. ' . __('Check to edit this event and its reoccurrences', 'eventorganiser') . ' <input type="checkbox" id="HWSEvent_rec" name="eo_input[AlterRe]" value="yes">'; } else { $notices = ''; } //Start of meta box if ($notices = apply_filters('eventorganiser_event_metabox_notice', $notices, $post)) { echo '<div class="updated below-h2"><p>' . $notices . '</p></div>'; } ?> <div class="<?php echo $sche_once ? 'onetime' : 'reoccurence'; ?> "> <p><?php printf(__('Ensure dates are entered in %1$s format and times in %2$s (24 hour) format', 'eventorganiser'), '<strong>' . $format . '</strong>', ' <strong>hh:mm</strong>'); ?> </p> <table id="eventorganiser_event_detail" class="form-table"> <tr valign="top" class="event-date"> <td class="eo-label"><?php echo __('Start Date/Time', 'eventorganiser') . ':'; ?> </td> <td> <input class="ui-widget-content ui-corner-all" name="eo_input[StartDate]" size="10" maxlength="10" id="from_date" <?php disabled(!$sche_once); ?> value="<?php echo $start->format($phpFormat); ?> "/> <?php printf('<input name="eo_input[StartTime]" class="eo_time ui-widget-content ui-corner-all" size="6" maxlength="8" id="HWSEvent_time" %s value="%s"/>', disabled(!$sche_once || $all_day, true, false), eo_format_datetime($start, $time_format)); ?> </td> </tr> <tr valign="top" class="event-date"> <td class="eo-label"><?php echo __('End Date/Time', 'eventorganiser') . ':'; ?> </td> <td> <input class="ui-widget-content ui-corner-all" name="eo_input[EndDate]" size="10" maxlength="10" id="to_date" <?php disabled(!$sche_once); ?> value="<?php echo $end->format($phpFormat); ?> "/> <?php printf('<input name="eo_input[FinishTime]" class="eo_time ui-widget-content ui-corner-all" size="6" maxlength="8" id="HWSEvent_time2" %s value="%s"/>', disabled(!$sche_once || $all_day, true, false), eo_format_datetime($end, $time_format)); ?> <label> <input type="checkbox" id="eo_allday" <?php checked($all_day); ?> name="eo_input[allday]" <?php disabled(!$sche_once); ?> value="1"/> <?php _e('All day', 'eventorganiser'); ?> </label> </td> </tr> <tr class="event-date"> <td class="eo-label"><?php _e('Reoccurence:', 'eventorganiser'); ?> </td> <td> <?php $reoccurrence_schedules = array('once' => __('once', 'eventorganiser'), 'daily' => __('daily', 'eventorganiser'), 'weekly' => __('weekly', 'eventorganiser'), 'monthly' => __('monthly', 'eventorganiser'), 'yearly' => __('yearly', 'eventorganiser'), 'custom' => __('custom', 'eventorganiser')); ?> <select id="HWSEventInput_Req" name="eo_input[schedule]"> <?php foreach ($reoccurrence_schedules as $index => $val) { ?> <option value="<?php echo $index; ?> " <?php selected($schedule, $index); ?> ><?php echo $val; ?> </option> <?php } //End foreach $allowed_reoccurs ?> </select> </td> </tr> <tr valign="top" class="event-date reocurrence_row"> <td></td> <td> <p><?php _e('Repeat every', 'eventorganiser'); ?> <input <?php disabled(!$sche_once || $all_day); ?> class="ui-widget-content ui-corner-all" name="eo_input[event_frequency]" id="HWSEvent_freq" type="number" min="1" max="365" maxlength="4" size="4" disabled="disabled" value="<?php echo $frequency; ?> " /> <span id="recpan" > </span> </p> <p id="dayofweekrepeat"> <?php _e('on', 'eventorganiser'); ?> <?php for ($i = 0; $i <= 6; $i++) { $d = ($start_day + $i) % 7; $ical_d = $ical_days[$d]; $day = $wp_locale->weekday_abbrev[$wp_locale->weekday[$d]]; $schedule_days = is_array($schedule_meta) ? $schedule_meta : array(); ?> <input type="checkbox" id="day-<?php echo $day; ?> " <?php checked(in_array($ical_d, $schedule_days), true); ?> value="<?php echo esc_attr($ical_d); ?> " class="daysofweek" name="eo_input[days][]" disabled="disabled" /> <label for="day-<?php echo $day; ?> " > <?php echo $day; ?> </label> <?php } ?> </p> <p id="dayofmonthrepeat"> <label for="bymonthday" > <input type="radio" id="bymonthday" disabled="disabled" name="eo_input[schedule_meta]" <?php checked($occurs_by, 'BYMONTHDAY'); ?> value="BYMONTHDAY=" /> <?php _e('day of month', 'eventorganiser'); ?> </label> <label for="byday" > <input type="radio" id="byday" disabled="disabled" name="eo_input[schedule_meta]" <?php checked($occurs_by != 'BYMONTHDAY', true); ?> value="BYDAY=" /> <?php _e('day of week', 'eventorganiser'); ?> </label> </p> <p class="reoccurrence_label"> <?php _e('until', 'eventorganiser'); ?> <input <?php disabled(!$sche_once || $all_day); ?> class="ui-widget-content ui-corner-all" name="eo_input[schedule_end]" id="recend" size="10" maxlength="10" disabled="disabled" value="<?php echo $schedule_last->format($phpFormat); ?> "/> </p> <p id="event_summary"> </p> </td> </tr> <tr valign="top" id="eo_occurrence_picker_row" class="event-date"> <td class="eo-label"> <?php esc_html_e('Include/Exclude occurrences', 'eventorganiser'); ?> </td> <td> <?php submit_button(__('Show dates', 'eventorganiser'), 'hide-if-no-js eo_occurrence_toggle button small', 'eo_date_toggle', false); ?> <div id="eo_occurrence_datepicker"></div> <?php //var_dump($include); if (!empty($include)) { $include_str = array_map('eo_format_datetime', $include, array_fill(0, count($include), 'Y-m-d')); $include_str = esc_textarea(sanitize_text_field(implode(',', $include_str))); } else { $include_str = ''; } ?> <textarea style="display:none;" name="eo_input[include]" id="eo_occurrence_includes"><?php echo $include_str; ?> </textarea> <?php if (!empty($exclude)) { $exclude_str = array_map('eo_format_datetime', $exclude, array_fill(0, count($exclude), 'Y-m-d')); $exclude_str = esc_textarea(sanitize_text_field(implode(',', $exclude_str))); } else { $exclude_str = ''; } ?> <textarea style="display:none;" name="eo_input[exclude]" id="eo_occurrence_excludes"><?php echo $exclude_str; ?> </textarea> </td> </tr> <tr valign="top" class="eo-venue-combobox-select"> <td class="eo-label"> <?php _e('Venue', 'eventorganiser'); ?> : </td> <td> <select size="50" id="venue_select" name="eo_input[event-venue]"> <option><?php _e('Select a venue', 'eventorganiser'); ?> </option> <?php foreach ($venues as $venue) { ?> <option <?php selected($venue->term_id, $venue_id); ?> value="<?php echo intval($venue->term_id); ?> "><?php echo esc_html($venue->name); ?> </option> <?php } ?> </select> </td> </tr> <!-- Add New Venue --> <tr valign="top" class="eo-add-new-venue"> <td class="eo-label"><label><?php _e('Venue Name', 'eventorganiser'); ?> :</label></td> <td><input type="text" name="eo_venue[name]" id="eo_venue_name" value=""/></td> </tr> <?php $address_fields = _eventorganiser_get_venue_address_fields(); foreach ($address_fields as $key => $label) { printf('<tr valign="top" class="eo-add-new-venue"> <td class="eo-label"><label>%1$s:</label></td> <td><input type="text" name="eo_venue[%2$s]" class="eo_addressInput" id="eo_venue_add" value=""/></td> </tr>', $label, esc_attr(trim($key, '_'))); } ?> <tr valign="top" class="eo-add-new-venue" > <td class="eo-label"></td> <td> <a class="button eo-add-new-venue-cancel" href="#"><?php esc_html_e('Cancel', 'eventorganiser'); ?> </a> </td> </tr> <!-- Venue Map --> <tr valign="top" class="venue_row <?php if (!$venue_id) { echo 'novenue'; } ?> " > <td class="eo-label"></td> <td> <div id="eventorganiser_venue_meta" style="display:none;"> <input type="hidden" id="eo_venue_Lat" name="eo_venue[latitude]" value="<?php eo_venue_lat($venue_id); ?> " /> <input type="hidden" id="eo_venue_Lng" name="eo_venue[longtitude]" value="<?php eo_venue_lng($venue_id); ?> " /> </div> <div id="venuemap" class="ui-widget-content ui-corner-all gmap3"></div> <div class="clear"></div> </td> </tr> </table> </div> <?php // create a custom nonce for submit verification later wp_nonce_field('eventorganiser_event_update_' . get_the_ID(), '_eononce'); }
/** * Returns an array of classes associated with an event. Adds the following classes * * * `eo-event-venue-[venue slug]` - if the event has a venue * * `eo-event-cat-[category slug]` - for each event category the event belongs to. * * `eo-event-[future|past|running]` - depending on occurrence * * Applies filter {@see `eventorganiser_event_classes`} so you can add/remove classes. * * @since 1.6 * @param int $post_id The event (post) ID. Uses current event if empty. * @param int $occurrence_id The occurrence ID. Uses current event if empty. * @return array Array of classes */ function eo_get_event_classes($post_id = 0, $occurrence_id = 0) { global $post; $post_id = (int) (empty($post_id) ? get_the_ID() : $post_id); $occurrence_id = (int) (empty($occurrence_id) && isset($post->occurrence_id) ? $post->occurrence_id : $occurrence_id); $event_classes = array(); //Add venue class if ($venue_slug = eo_get_venue_slug($post_id)) { $event_classes[] = 'eo-event-venue-' . $venue_slug; } //Add category classes $cats = get_the_terms($post_id, 'event-category'); if ($cats && !is_wp_error($cats)) { foreach ($cats as $cat) { $event_classes[] = 'eo-event-cat-' . $cat->slug; } } //Event tags if (eventorganiser_get_option('eventtag')) { $terms = get_the_terms($post_id, 'event-tag'); if ($terms && !is_wp_error($terms)) { foreach ($terms as $term) { $event_classes[] = 'eo-event-tag-' . $term->slug; } } } //Add 'time' class $start = eo_get_the_start(DATETIMEOBJ, $post_id, null, $occurrence_id); $end = eo_get_the_end(DATETIMEOBJ, $post_id, null, $occurrence_id); $now = new DateTime('now', eo_get_blog_timezone()); if ($start > $now) { $event_classes[] = 'eo-event-future'; } elseif ($end < $now) { $event_classes[] = 'eo-event-past'; } else { $event_classes[] = 'eo-event-running'; } //Add class if event starts and ends on different days if ($start instanceof DateTime && $end instanceof DateTime) { if ($start->format('Y-m-d') != $end->format('Y-m-d')) { $event_classes[] = 'eo-multi-day'; } } if (eo_is_all_day($post_id)) { $event_classes[] = 'eo-all-day'; } /** * Filters an array of classes for specified event (occurrence) * * @param array $event_classes An array of class pertaining to this occurrence * @param int $post_id The ID of the event * @param into $occurrence_id The ID of the occurrence */ $event_classes = apply_filters('eventorganiser_event_classes', $event_classes, $post_id, $occurrence_id); $event_classes = array_unique($event_classes); $event_classes = array_map('sanitize_html_class', $event_classes); $event_classes = array_filter($event_classes); return $event_classes; }
/** * Queues up the javascript / style scripts for Events custom page type * Hooked onto admin_enqueue_scripts * * @since 1.0.0 * @ignore * @access private */ function eventorganiser_add_admin_scripts($hook) { global $post, $current_screen, $wp_locale; if ($hook == 'post-new.php' || $hook == 'post.php') { if ($post->post_type == 'event') { wp_enqueue_script('eo-edit-event-controller'); wp_localize_script('eo_event', 'EO_Ajax_Event', array('ajaxurl' => admin_url('admin-ajax.php'), 'wpversion' => get_bloginfo('version'), 'startday' => intval(get_option('start_of_week')), 'format' => eventorganiser_php2jquerydate(eventorganiser_get_option('dateformat')), 'current_user_can' => array('manage_venues' => current_user_can('manage_venues')), 'is24hour' => eventorganiser_blog_is_24(), 'location' => get_option('timezone_string'), 'locale' => array('isrtl' => $wp_locale->is_rtl(), 'monthNames' => array_values($wp_locale->month), 'monthAbbrev' => array_values($wp_locale->month_abbrev), 'dayAbbrev' => array_values($wp_locale->weekday_abbrev), 'showDates' => __('Show dates', 'eventorganiser'), 'hideDates' => __('Hide dates', 'eventorganiser'), 'weekDay' => $wp_locale->weekday, 'meridian' => array($wp_locale->get_meridiem('am'), $wp_locale->get_meridiem('pm')), 'hour' => __('Hour', 'eventorganiser'), 'minute' => __('Minute', 'eventorganiser'), 'day' => __('day', 'eventorganiser'), 'days' => __('days', 'eventorganiser'), 'week' => __('week', 'eventorganiser'), 'weeks' => __('weeks', 'eventorganiser'), 'month' => __('month', 'eventorganiser'), 'months' => __('months', 'eventorganiser'), 'year' => __('year', 'eventorganiser'), 'years' => __('years', 'eventorganiser'), 'daySingle' => __('every day', 'eventorganiser'), 'dayPlural' => __('every %d days', 'eventorganiser'), 'weekSingle' => __('every week on', 'eventorganiser'), 'weekPlural' => __('every %d weeks on', 'eventorganiser'), 'monthSingle' => __('every month on the', 'eventorganiser'), 'monthPlural' => __('every %d months on the', 'eventorganiser'), 'yearSingle' => __('every year on the', 'eventorganiser'), 'yearPlural' => __('every %d years on the', 'eventorganiser'), 'summary' => __('This event will repeat', 'eventorganiser'), 'until' => __('until', 'eventorganiser'), 'occurrence' => array(__('first', 'eventorganiser'), __('second', 'eventorganiser'), __('third', 'eventorganiser'), __('fourth', 'eventorganiser'), __('last', 'eventorganiser'))))); wp_enqueue_script('eo_venue'); wp_enqueue_style('eventorganiser-style'); } } elseif ($current_screen->id == 'edit-event') { wp_enqueue_style('eventorganiser-style'); } }
function widget($args, $instance) { global $wp_locale; wp_enqueue_script('eo_front'); if (!eventorganiser_get_option('disable_css')) { wp_enqueue_style('eo_front'); } extract($args, EXTR_SKIP); add_action('wp_footer', array(__CLASS__, 'add_options_to_script')); $id = esc_attr($args['widget_id']) . '_container'; self::$agendas[$id] = array('id' => esc_attr($args['widget_id']), 'number' => $this->number, 'mode' => isset($instance['mode']) ? $instance['mode'] : 'day', 'add_to_google' => $instance['add_to_google']); //Echo widget echo $before_widget; $widget_title = apply_filters('widget_title', $instance['title'], $instance, $this->id_base); if ($widget_title) { echo $before_title . esc_html($widget_title) . $after_title; } echo "<div style='width:100%' id='{$id}' class='eo-agenda-widget'>"; ?> <div class='agenda-nav'> <span class="next button ui-button ui-widget ui-state-default ui-corner-all ui-button-icon-only" role="button" title=""> <span class="ui-button-icon-primary ui-icon ui-icon-carat-1-e"></span><span class="ui-button-text"></span> </span> <span class="prev button ui-button ui-widget ui-state-default ui-corner-all ui-button-icon-only" role="button" title=""> <span class="ui-button-icon-primary ui-icon ui-icon-carat-1-w"></span><span class="ui-button-text"></span> </span> </div> <?php echo "<ul class='dates'>"; echo '</ul>'; //End dates echo "</div>"; echo $after_widget; }
function menu_option() { $menus = get_terms('nav_menu'); ?> <select name="eventorganiser_options[addtomenu]"> <option <?php selected(0, eventorganiser_get_option('addtomenu')); ?> value="0"><?php _e('Do not add to menu', 'eventorganiser'); ?> </option> <?php foreach ($menus as $menu) { ?> <option <?php selected($menu->slug, eventorganiser_get_option('addtomenu')); ?> value="<?php echo $menu->slug; ?> "><?php echo $menu->name; ?> </option> <?php } ?> <option <?php selected(1, eventorganiser_get_option('addtomenu')); ?> value="1"><?php _e('Page list (fallback)', 'eventorganiser'); ?> </option> </select> <?php printf('<input type="hidden" name ="eventorganiser_options[menu_item_db_id]" value="%d" />', eventorganiser_get_option('menu_item_db_id')); ?> <?php printf('<input type="text" name="eventorganiser_options[navtitle]" value="%s" />', eventorganiser_get_option('navtitle')); }
/** * Checks to see if appropriate templates are present in active template directory. * Otherwises uses templates present in plugin's template directory. * Hooked onto template_include' * * @ignore * @since 1.0.0 * @param string $template Absolute path to template * @return string Absolute path to template */ function eventorganiser_set_template($template) { //Has EO template handling been turned off? if (!eventorganiser_get_option('templates') || get_theme_support('event-organiser')) { return $template; } //If WordPress couldn't find an 'event' template use plug-in instead: if (is_post_type_archive('event') && !eventorganiser_is_event_template($template, 'archive')) { $template = EVENT_ORGANISER_DIR . 'templates/archive-event.php'; } if ((is_tax('event-venue') || eo_is_venue()) && !eventorganiser_is_event_template($template, 'event-venue')) { $template = EVENT_ORGANISER_DIR . 'templates/taxonomy-event-venue.php'; } if (is_tax('event-category') && !eventorganiser_is_event_template($template, 'event-category')) { $template = EVENT_ORGANISER_DIR . 'templates/taxonomy-event-category.php'; } if (is_tax('event-tag') && eventorganiser_get_option('eventtag') && !eventorganiser_is_event_template($template, 'event-tag')) { $template = EVENT_ORGANISER_DIR . 'templates/taxonomy-event-tag.php'; } /* * In view of theme compatibility, if an event template isn't found * rather than using our own single-event.php, we use ordinary single.php and * add content in via the_content */ if (is_singular('event') && !eventorganiser_is_event_template($template, 'event')) { //Viewing a single event //Hide next/previous post link add_filter("next_post_link", '__return_false'); add_filter("previous_post_link", '__return_false'); //Prepend our event details add_filter('the_content', '_eventorganiser_single_event_content'); } return $template; }
static function print_script() { if (!self::$add_script) { return; } $terms = get_terms('event-category', array('hide_empty' => 0)); $fullcal = empty(self::$calendars) ? array() : array('firstDay' => intval(get_option('start_of_week')), 'venues' => get_terms('event-venue', array('hide_empty' => 0)), 'categories' => $terms, 'tags' => get_terms('event-tag', array('hide_empty' => 1))); eo_localize_script('eo_front', array('ajaxurl' => admin_url('admin-ajax.php'), 'calendars' => self::$calendars, 'widget_calendars' => self::$widget_calendars, 'fullcal' => $fullcal, 'map' => self::$map)); if (!empty(self::$calendars) || !empty(self::$map) || !empty(self::$widget_calendars)) { wp_enqueue_script('eo_qtip2'); wp_enqueue_script('eo_front'); if (!eventorganiser_get_option('disable_css')) { wp_enqueue_style('eo_front'); wp_enqueue_style('eo_calendar-style'); } } if (!empty(self::$map)) { wp_enqueue_script('eo_GoogleMap'); } }