8889841cadmin-welcome-message.php000064400000020631150514203270011421 0ustar00
<?php esc_attr_e( 'Shapes and lines for visual interest', 'the-events-calendar' ); ?> <?php esc_attr_e( 'Shapes and lines for visual interest', 'the-events-calendar' ); ?>

<?php esc_attr_e( 'illustration of a book with The Events Calendar logo', 'the-events-calendar' ); ?>
<?php esc_attr_e( 'illustration of a thought lightbulb coming from a book', 'the-events-calendar' ); ?>
<?php esc_attr_e( 'illustration of characters being translated', 'the-events-calendar' ); ?>
<?php esc_attr_e( 'illustration of a phone screen with a person\'s face', 'the-events-calendar' ); ?>
<?php esc_attr_e( 'illustration of an event moving from one calendar to another', 'the-events-calendar' ); ?>
<?php esc_attr_e( 'book with The Events Calendar logo', 'the-events-calendar' ); ?>
tribe-options-network.php000064400000002006150514203270011537 0ustar00 10, 'network_admin' => true, 'fields' => apply_filters( 'tribe_network_settings_tab_fields', [ 'info-start' => [ 'type' => 'html', 'html' => '
', ], 'info-box-title' => [ 'type' => 'html', 'html' => '

' . esc_html__( 'Network Settings', 'tribe-common' ) . '

', ], 'info-box-description' => [ 'type' => 'html', 'html' => '

' . esc_html__( 'This is where all of the global network settings for The Events Calendar can be modified.', 'tribe-common' ) . '

', ], 'info-end' => [ 'type' => 'html', 'html' => '
', ], 'hideSettingsTabs' => [ 'type' => 'checkbox_list', 'label' => esc_html__( 'Hide the following settings tabs on every site:', 'tribe-common' ), 'default' => false, 'options' => $allTabs, 'can_be_empty' => true, ], ] ), ]; tribe-options-general.php000064400000045447150514203270011503 0ustar00 [ 'type' => 'html', 'html' => '
', ], 'upsell-heading' => [ 'type' => 'heading', 'label' => $tec_events_general_heading_text, ], 'tec-setup-guide' => [ 'type' => 'html', 'html' => '

'. esc_html__( 'Looking for additional functionality including recurring events, custom meta, community events, ticket sales and more?', 'the-events-calendar' ) ], 'tec-add-ons-link' => [ 'type' => 'html', 'html' => sprintf( '
%2$s

', esc_url( 'edit.php?post_type=tribe_events&page=tribe-app-shop' ), esc_html_x( 'Check out the available add-ons.', 'Text for link to the add-ons page.', 'the-events-calendar') ), ], 'tec-links-section-start' => [ 'type' => 'html', 'html' => '', ], 'ical-info' => [ 'type' => 'html', 'display_callback' => '', 'conditional' => function_exists( 'tribe_get_ical_link' ), // @TODO: this never loads. ], 'info-end' => [ 'type' => 'html', 'html' => '
', ], ]; // Add the TOC $tec_events_general_toc = [ 'tec-settings-general-toc-nav-start' => [ 'type' => 'html', 'html' => '
', ], 'tec-settings-general-toc-start' => [ 'type' => 'html', 'html' => '', ], 'tec-settings-general-toc-nav-end' => [ 'type' => 'html', 'html' => '
', ], ]; $general_tab_fields += $tec_events_general_toc; // Start the form content wrapper. $tec_events_general_form_end = [ 'tribe-form-content-start' => [ 'type' => 'html', 'html' => '
', ], ]; $general_tab_fields += $tec_events_general_form_end; // Add the "Viewing" section. $tec_events_general_viewing = [ 'tec-events-settings-general-viewing-title' => [ 'type' => 'html', 'html' => '

' . esc_html_x( 'Viewing', 'Title for the viewing section of the general settings.', 'the-events-calendar' ) . '

', ], 'unpretty-permalinks-url' => [ 'type' => 'wrapped_html', 'label' => esc_html__( 'Events URL slug', 'the-events-calendar' ), 'html' => '

' . sprintf( __( 'The current URL for your events page is %1$s.

You cannot edit the slug for your events page as you do not have pretty permalinks enabled. In order to edit the slug here, enable pretty permalinks.', 'the-events-calendar' ), sprintf ( '%2$s', esc_url( $tec->getLink( 'home' ) ), esc_url( $tec->getLink( 'home' ) ) ), esc_url( trailingslashit( get_admin_url() ) . 'options-permalink.php' ) ) . '

', 'conditional' => ( '' == get_option( 'permalink_structure' ) ), ], 'eventsSlug' => [ 'type' => 'text', 'label' => esc_html__( 'Events URL slug', 'the-events-calendar' ), 'default' => 'events', 'validation_type' => 'slug', 'conditional' => ( '' !== get_option( 'permalink_structure' ) ), ], 'current-events-slug' => [ 'type' => 'html', 'html' => '

' . esc_html__( 'The slug used for building the events URL.', 'the-events-calendar' ) . ' ' . sprintf( esc_html__( 'Your current events URL is: %s', 'the-events-calendar' ), '' . urldecode( tribe_get_events_link() ) . '' ) . '

', 'conditional' => ( '' !== get_option( 'permalink_structure' ) ), ], 'singleEventSlug' => [ 'type' => 'text', 'label' => esc_html__( 'Single event URL slug', 'the-events-calendar' ), 'default' => 'event', 'validation_type' => 'slug', 'conditional' => ( '' != get_option( 'permalink_structure' ) ), ], 'current-single-event-slug' => [ 'type' => 'html', 'html' => '

' . sprintf( __( 'The above should ideally be plural, and this singular.
Your single event URL is: %s', 'the-events-calendar' ), '' . trailingslashit( home_url() ) . urldecode( tribe_get_option( 'singleEventSlug', 'event' ) ) . '/single-post-name/' ) . '

', 'conditional' => ( '' != get_option( 'permalink_structure' ) ), ], 'showEventsInMainLoop' => [ 'type' => 'checkbox_bool', 'label' => esc_html__( 'Include events in main blog loop', 'the-events-calendar' ), 'tooltip' => esc_html__( 'Show events with the site\'s other posts. When this box is checked, events will also continue to appear on the default events page.', 'the-events-calendar' ), 'default' => false, 'validation_type' => 'boolean', ], 'enable_month_view_cache' => [ 'type' => 'checkbox_bool', 'label' => __( 'Enable the Month View Cache', 'the-events-calendar' ), 'tooltip' => sprintf( __( 'Check this to cache your month view HTML in transients, which can help improve calendar speed on sites with many events. Read more.', 'the-events-calendar' ), 'https://evnt.is/18di' ), 'default' => true, 'validation_type' => 'boolean', ], ]; $general_tab_fields += $tec_events_general_viewing; $is_missing_aggregator_license_key = '' === get_option( 'pue_install_key_event_aggregator' ); $should_hide_upsell = tec_should_hide_upsell(); // Add the "Editing" section. $tec_events_general_editing = [ 'tec-events-settings-general-editing-title' => [ 'type' => 'html', 'html' => '

' . esc_html_x( 'Editing', 'Title for the editing section of the general settings.', 'the-events-calendar' ) . '

', ], 'tec-aggregator-infobox-start' => [ 'type' => 'html', 'html' => '
', 'conditional' => $is_missing_aggregator_license_key && ! $should_hide_upsell, ], 'tec-aggregator-infobox-logo' => [ 'type' => 'html', 'html' => '', 'conditional' => $is_missing_aggregator_license_key && ! $should_hide_upsell, ], 'tec-aggregator-infobox-title' => [ 'type' => 'html', 'html' => '

' . __( 'Import events with Event Aggregator', 'the-events-calendar' ) . '

', 'conditional' => $is_missing_aggregator_license_key && ! $should_hide_upsell, ], 'tec-aggregator-infobox-content' => [ 'type' => 'html', 'html' => '

' . __( 'Effortlessly fill your calendar with events from Meetup, Eventbrite, iCal, Google Calendar, and more.', 'the-events-calendar' ) . '

', 'conditional' => $is_missing_aggregator_license_key && ! $should_hide_upsell, ], 'tec-aggregator-infobox-link' => [ 'type' => 'html', 'html' => '' . __( 'Learn more.', 'the-events-calendar' ) . '', 'conditional' => $is_missing_aggregator_license_key && ! $should_hide_upsell, ], 'tec-aggregator-infobox-end' => [ 'type' => 'html', 'html' => '
', 'conditional' => $is_missing_aggregator_license_key && ! $should_hide_upsell, ], 'disable_metabox_custom_fields' => [ 'type' => 'checkbox_bool', 'label' => esc_html__( 'Show Custom Fields metabox', 'the-events-calendar' ), 'tooltip' => esc_html__( 'Enable WordPress Custom Fields on events in the classic editor.', 'the-events-calendar' ), 'default' => true, 'validation_type' => 'boolean', ], ]; $general_tab_fields += $tec_events_general_editing; // Our default tooltip. $trash_tooltip = esc_html__( 'This option allows you to automatically move past events to trash.', 'the-events-calendar' ); // Some adjusted functionality with CT1 activated. if ( tribe()->getVar( 'ct1_fully_activated' ) ) { $trash_tooltip = sprintf( __( 'Trashed events will permanently be deleted in %1$d days, you can change that value using %2$s. Read more.', 'the-events-calendar' ), (int) EMPTY_TRASH_DAYS, 'EMPTY_TRASH_DAYS', 'https://evnt.is/1bcs' ); } // Add the "Maintenance" section. $tec_events_general_maintenance = [ 'tec-events-settings-general-maintenance-title' => [ 'type' => 'html', 'html' => '

' . esc_html_x( 'Maintenance', 'Title for the maintenance section of the general settings.', 'the-events-calendar' ) . '

', ], $event_cleaner->key_trash_events => [ 'type' => 'dropdown', 'label' => esc_html__( 'Move to trash events older than', 'the-events-calendar' ), 'tooltip' => $trash_tooltip, 'validation_type' => 'options', 'size' => 'small', 'default' => null, 'options' => [ null => esc_html__( 'Disabled', 'the-events-calendar' ), 1 => esc_html__( '1 month', 'the-events-calendar' ), 3 => esc_html__( '3 months', 'the-events-calendar' ), 6 => esc_html__( '6 months', 'the-events-calendar' ), 9 => esc_html__( '9 months', 'the-events-calendar' ), 12 => esc_html__( '1 year', 'the-events-calendar' ), 24 => esc_html__( '2 years', 'the-events-calendar' ), 36 => esc_html__( '3 years', 'the-events-calendar' ), ], ], $event_cleaner->key_delete_events => [ 'type' => 'dropdown', 'label' => esc_html__( 'Permanently delete events older than', 'the-events-calendar' ), 'tooltip' => esc_html__( 'This option allows you to bulk delete past events. Be careful and backup your database before removing your events as there is no way to reverse the changes.', 'the-events-calendar' ), 'validation_type' => 'options', 'size' => 'small', 'default' => null, 'options' => [ null => esc_html__( 'Disabled', 'the-events-calendar' ), 1 => esc_html__( '1 month', 'the-events-calendar' ), 3 => esc_html__( '3 months', 'the-events-calendar' ), 6 => esc_html__( '6 months', 'the-events-calendar' ), 9 => esc_html__( '9 months', 'the-events-calendar' ), 12 => esc_html__( '1 year', 'the-events-calendar' ), 24 => esc_html__( '2 years', 'the-events-calendar' ), 36 => esc_html__( '3 years', 'the-events-calendar' ), ], ], 'amalgamate-duplicates' => [ 'type' => 'html', 'html' => '
' . esc_html__( 'Merge duplicate Venues & Organizers', 'the-events-calendar' ) . '
' . Tribe__Events__Amalgamator::migration_button( esc_html__( 'Merge Duplicates', 'the-events-calendar' ) ) . '

' . esc_html__( 'Click this button to automatically merge identical venues and organizers.', 'the-events-calendar' ) . '

', ], ]; $general_tab_fields += $tec_events_general_maintenance; // Add the "Debugging" section. $tec_events_general_debugging = [ 'tec-events-settings-general-debugging-title' => [ 'type' => 'html', 'html' => '

' . esc_html_x( 'Debugging', 'Title for the debugging section of the general settings.', 'the-events-calendar' ) . '

', ], 'tec-troubleshooting-infobox-start' => [ 'type' => 'html', 'html' => '
' ], 'tec-troubleshooting-infobox-logo' => [ 'type' => 'html', 'html' => '', ], 'tec-troubleshooting-infobox-title' => [ 'type' => 'html', 'html' => '

' . __( 'There is a solution for every problem', 'the-events-calendar' ) . '

', ], 'tec-troubleshooting-infobox-content' => [ 'type' => 'html', 'html' => sprintf( /* Translators: %1$s - opening paragraph tag, %2$s - opening anchor tag, %3$s - closing anchor tag, %4$s - closing paragraph tag */ __( '%1$sSometimes things just don’t work as expected. The %2$stroubleshooting page%3$s has a wealth of resources to get you back on track.%4$s', 'the-events-calendar' ), '

', '', '', '

', ), ], 'tec-troubleshooting-infobox-end' => [ 'type' => 'html', 'html' => '
', ], 'debugEvents' => [ 'type' => 'checkbox_bool', 'label' => esc_html__( 'Debug mode', 'the-event-calendar' ), 'tooltip' => sprintf( esc_html__( 'Enable this option to log debug information. By default this will log to your server PHP error log. If you\'d like to see the log messages in your browser, then we recommend that you install the %s and look for the "Tribe" tab in the debug output.', 'the-event-calendar' ), '' . esc_html__( 'Debug Bar Plugin', 'the-event-calendar' ) . '' ), 'default' => false, 'validation_type' => 'boolean', 'conditional' => is_super_admin() ], ]; $general_tab_fields += $tec_events_general_debugging; // Close the form content wrapper. $general_tab_fields += [ 'tribe-form-content-end' => [ 'type' => 'html', 'html' => '
', ] ]; $general_tab = [ 'priority' => 0, 'fields' => apply_filters( 'tribe_general_settings_tab_fields', $general_tab_fields ), ]; filter_bar/upsell.php000064400000002522150514203270010672 0ustar00
<?php esc_attr_e( 'Filter Bar Icon', 'the-events-calendar' ); ?>

<?php esc_attr_e( 'Filter Bar Banner Icon', 'the-events-calendar' ); ?>
tribe-options-upgrade.php000064400000011666150514203270011511 0ustar00
Upgrade * * @since 4.9.12 */ do_action( 'tribe_upgrade_complete_before' ); ?>

<?php esc_attr_e( 'screenshot of updated calendar views', 'the-events-calendar' ); ?>
Upgrade * * @since 4.9.12 */ do_action( 'tribe_upgrade_complete_after' ); ?>
Upgrade * * @since 4.9.12 */ do_action( 'tribe_upgrade_step1_before' ); ?>

<?php esc_attr_e( 'screenshot of updated calendar views', 'the-events-calendar' ); ?>
Upgrade * * @since 4.9.12 */ do_action( 'tribe_upgrade_step1_after' ); ?>
events-meta-box.php000064400000026234150514203270010301 0ustar00
ID the event currently being edited, will be 0 if creating a new event * @param boolean */ do_action( 'tribe_events_post_errors', $event->ID, true ); ?>
ID the event currently being edited, will be 0 if creating a new event * @param boolean */ do_action( 'tribe_events_detail_top', $event->ID, true ); wp_nonce_field( Tribe__Events__Main::POSTTYPE, 'ecp_nonce' ); /** * Fires after the nonce field inside The Events Calendar meta box * * @param int $event->ID the event currently being edited, will be 0 if creating a new event * @param boolean */ do_action( 'tribe_events_eventform_top', $event->ID ); ?>

it's important to avoid * recurrence meta changing it's width when the Description changes */ ?> ) that contains 2 cells (
data-step="" data-round="" value="is_auto_draft() ? $start_timepicker_default : $EventStartTime ) ?>" /> data-step="" data-round="" value="is_auto_draft() ? $end_timepicker_default : $EventEndTime ); ?>" />

/>

s) * * @param int $event->ID the event currently being edited, will be 0 if creating a new event * @param boolean */ do_action( 'tribe_events_date_display', $event->ID, true ); ?>
render_meta_box_sections( $event ); ?> ) that contains 2 cells (

' placeholder='example.com' />
s) * * @param int $event->ID the event currently being edited, will be 0 if creating a new event * @param boolean */ do_action( 'tribe_events_url_table', $event->ID, true ); ?>
ID the event currently being edited, will be 0 if creating a new event * @param boolean */ do_action( 'tribe_events_details_table_bottom', $event->ID, true ); ?> ) that contains 2 cells (

' class='alignleft' />
' class='alignleft' />
' />
s) * * @param int $event->ID the event currently being edited, will be 0 if creating a new event * @param boolean */ do_action( 'tribe_events_cost_table', $event->ID, true ); ?>
ID the event currently being edited, will be 0 if creating a new event * @param boolean */ do_action( 'tribe_events_above_donate', $event->ID, true ); /** * Fires at the bottom of The Events Calendar meta box * * @param int $event->ID the event currently being edited, will be 0 if creating a new event * @param boolean */ do_action( 'tribe_events_details_bottom', $event->ID, true ); linked-post-section.php000064400000003544150514203270011155 0ustar00 ) that contains 2 cells (render(); ?>

s) * * @param int $event->ID the event currently being edited, will be 0 if creating a new event */ if ( Tribe__Events__Organizer::POSTTYPE === $linked_post_type ) { do_action( 'tribe_organizer_table_top', $event->ID ); } elseif ( Tribe__Events__Venue::POSTTYPE === $linked_post_type ) { do_action( 'tribe_location_table_top', $event->ID ); } do_action( 'tribe_linked_post_table_top', $event->ID, $linked_post_type ); ?>
) that contains 2 cells (s) * * @param int $event->ID the event currently being edited, will be 0 if creating a new event */ if ( Tribe__Events__Organizer::POSTTYPE === $linked_post_type ) { do_action( 'tribe_after_organizer_details', $event->ID ); } elseif ( Tribe__Events__Venue::POSTTYPE === $linked_post_type ) { do_action( 'tribe_after_location_details', $event->ID ); } do_action( 'tribe_after_linked_post_details', $event->ID, $linked_post_type ); notices/install-event-tickets.php000064400000002253150514203270013153 0ustar00
<?php esc_attr_e( 'Event Tickets', 'the-events-calendar' ); ?>

render_plugin_button( 'event-tickets', $action, $button_label, $redirect_url ); ?>
notices/update-6-0-0.php000064400000002267150514203270010646 0ustar00

alert icon

notices/legacy-views-updated.php000064400000002605150514203270012746 0ustar00%2$s', esc_url( 'https://theeventscalendar.com/knowledgebase/k/v1-deprecation-faqs/' ), esc_html_x( 'read the FAQs', 'Read more about deprecation of legacy views.', 'the-events-calendar' ) ); $link_two = sprintf( '%2$s', esc_url( 'https://theeventscalendar.com/support/' ), esc_html_x( 'contact support', 'Our support page for TEC', 'the-events-calendar' ) ); $links = sprintf( '%2$s', tribe_events_get_url(), esc_html__( 'View your calendar', 'the-events-calendar' ) ); ?>

your calendar was automatically upgraded to the new designs.', 'the-events-calendar' ) ?>

Check out your calendar to see the improved designs live on your site. If you have a question or need help, %1$s or %2$s.', 'the-events-calendar' ), $link_one, $link_two ); ?>

venue-meta-box.php000064400000016601150514203270010114 0ustar00ID ) || get_post_status( $event->ID ) == 'auto-draft' ) ? true : false; $google_map_link_toggle = ( get_post_status( $event->ID ) == 'auto-draft' || get_post_meta( $event->ID, '_VenueShowMapLink', true ) !== 'false' ) ? true : false; /** * Action to insert content before the venue metabox. * * @since 4.2 * * @param WP_Post $post The global $post we're editing (could be venue or event). */ do_action( 'tribe_events_venue_before_metabox', $post ); ?> ' /> ' /> ID ); if ( isset( $_VenueCountry ) && $_VenueCountry ) { $current = $_VenueCountry; } else { $current = null; } if ( is_array( $current ) && isset( $current[1] ) ) { $current = $current[1]; } ?> ' /> ' /> ' /> /> /> create-organizer-fields.php000064400000002123150514203270011757 0ustar00

aggregator/settings.php000064400000074210150514203270011242 0ustar00 false, 'hide_empty' => false, 'orderby' => 'post_title', 'taxonomy' => Tribe__Events__Main::TAXONOMY, ] ); preg_match_all( '!\]*\>(.*)\!m', $category_dropdown, $matches ); $categories = [ '-1' => __( 'No default category', 'the-events-calendar' ), ]; $events_aggregator_is_active = tribe( 'events-aggregator.main' )->is_service_active(); $origin_post_statuses = $events_aggregator_is_active ? [ '-1' => $use_global_settings_phrase ] + $post_statuses : $post_statuses; $origin_categories = [ '-1' => $events_aggregator_is_active ? $use_global_settings_phrase : esc_html__( 'None', 'the-events-calendar' ), ]; foreach ( $matches[1] as $key => $match ) { $categories[ $match ] = $matches[2][ $key ]; $origin_categories[ $match ] = $matches[2][ $key ]; } $yes_no_options = [ 'no' => __( 'No', 'the-events-calendar' ), 'yes' => __( 'Yes', 'the-events-calendar' ), ]; $origin_show_map_options = [ '-1' => $use_global_settings_phrase ] + $yes_no_options; $change_authority = [ 'import-defaults-update_authority' => [ 'type' => 'html', 'html' => '

' . esc_html__( 'Event Update Authority', 'the-events-calendar' ) . '

', 'priority' => 1.1, ], 'info-update_authority' => [ 'type' => 'html', 'html' => '

' . esc_html__( 'You can make changes to imported events via The Events Calendar and see those changes reflected on your site’s calendar. The owner of the original event source (e.g. the iCalendar feed or Meetup group) might also make changes to their event. If you choose to re-import an altered event (manually or via a scheduled import), any changes made at the source or on your calendar will need to be addressed.', 'the-events-calendar' ) . '

', 'priority' => 1.2, ], 'tribe_aggregator_default_update_authority' => [ 'type' => 'radio', 'label' => esc_html__( 'Event Update Authority', 'the-events-calendar' ), 'validation_type' => 'options', 'default' => Tribe__Events__Aggregator__Settings::$default_update_authority, 'parent_option' => Tribe__Events__Main::OPTIONNAME, 'options' => [ 'overwrite' => __( 'Overwrite my event with any changes from the original source.', 'the-events-calendar' ), 'retain' => __( 'Do not re-import events. Changes made locally will be preserved.', 'the-events-calendar' ), 'preserve_changes' => __( 'Import events but preserve local changes to event fields.', 'the-events-calendar' ), ], 'priority' => 1.3, ], ]; $csv = [ 'csv-defaults' => [ 'type' => 'html', 'html' => '

' . esc_html__( 'CSV Import Settings', 'the-events-calendar' ) . '

', 'priority' => 10.1, ], 'tribe_aggregator_default_csv_post_status' => [ 'type' => 'dropdown', 'label' => esc_html__( 'Default Status', 'the-events-calendar' ), 'tooltip' => esc_html__( 'The default post status for events imported via CSV', 'the-events-calendar' ), 'size' => 'medium', 'validation_type' => 'options', 'default' => $events_aggregator_is_active ? '' : 'publish', 'can_be_empty' => true, 'parent_option' => Tribe__Events__Main::OPTIONNAME, 'options' => $origin_post_statuses, 'priority' => 10.2, ], 'tribe_aggregator_default_csv_category' => [ 'type' => 'dropdown', 'label' => esc_html__( 'Default Event Category', 'the-events-calendar' ), 'tooltip' => esc_html__( 'The default event category for events imported via CSV', 'the-events-calendar' ), 'size' => 'medium', 'validation_type' => 'options', 'default' => $events_aggregator_is_active ? '' : '', 'can_be_empty' => true, 'parent_option' => Tribe__Events__Main::OPTIONNAME, 'options' => $origin_categories, 'priority' => 10.3, ], ]; $ea_disable = [ 'tribe_aggregator_disable_header' => [ 'type' => 'html', 'html' => '

' . esc_html__( 'Event Aggregator Control', 'the-events-calendar' ) . '

', 'priority' => 50.1, ], 'tribe_aggregator_disable' => [ 'type' => 'checkbox_bool', 'label' => __( 'Disable Event Aggregator imports', 'the-events-calendar' ), 'tooltip' => __( 'Stop all Event Aggregator imports from running. Existing imported events will not be affected. Imports via CSV file will still be available.', 'the-events-calendar' ), 'default' => false, 'parent_option' => Tribe__Events__Main::OPTIONNAME, 'validation_type' => 'boolean', 'priority' => 50.2, ], ]; $global = $ical = $ics = $gcal = $meetup = $url = $eb_fields = []; // if there's an Event Aggregator license key, add the Global settings, iCal, and Meetup fields if ( Tribe__Events__Aggregator::is_service_active() ) { $stop_running_processes_message = sprintf( __( 'If you want to stop and clear current asynchronous import processes %1$s.', 'the-events-calendar' ), sprintf( '%2$s', esc_url( add_query_arg( [ Tribe__Events__Aggregator__Processes__Queue_Control::CLEAR_PROCESSES => 1 ] ) ), esc_html__( 'click here', 'the-events-calendar' ) ) ); $global = [ 'import-defaults' => [ 'type' => 'html', 'html' => '

' . esc_html__( 'Global Import Settings', 'the-events-calendar' ) . '

', 'priority' => 5.1, ], 'tribe_aggregator_default_post_status' => [ 'type' => 'dropdown', 'label' => esc_html__( 'Default Status', 'the-events-calendar' ), 'tooltip' => esc_html__( 'The default post status for events', 'the-events-calendar' ), 'size' => 'medium', 'validation_type' => 'options', 'default' => 'publish', 'can_be_empty' => true, 'parent_option' => Tribe__Events__Main::OPTIONNAME, 'options' => $post_statuses, 'priority' => 5.2, ], 'tribe_aggregator_default_category' => [ 'type' => 'dropdown', 'label' => esc_html__( 'Default Event Category', 'the-events-calendar' ), 'tooltip' => esc_html__( 'The default event category for events', 'the-events-calendar' ), 'size' => 'medium', 'validation_type' => 'options', 'default' => '', 'can_be_empty' => true, 'parent_option' => Tribe__Events__Main::OPTIONNAME, 'options' => $categories, 'priority' => 5.3, ], 'tribe_aggregator_default_show_map' => [ 'type' => 'dropdown', 'label' => esc_html__( 'Show Map', 'the-events-calendar' ), 'tooltip' => esc_html__( 'Show map by default on imported event and venues', 'the-events-calendar' ), 'size' => 'medium', 'validation_type' => 'options', 'default' => 'no', 'can_be_empty' => false, 'parent_option' => Tribe__Events__Main::OPTIONNAME, 'options' => $yes_no_options, 'priority' => 5.4, ], 'tribe_aggregator_default_import_limit_type' => [ 'type' => 'dropdown', 'label' => esc_html__( 'Import Limit Type', 'the-events-calendar' ), 'tooltip' => esc_html__( 'Limit the number of imported events by number, date range, or not at all; on slower websites this may impact the success of imports. Selecting a shorter time period or a smaller number of events may improve results.', 'the-events-calendar' ), 'size' => 'medium', 'validation_type' => 'options', 'default' => 'count', 'can_be_empty' => false, 'parent_option' => Tribe__Events__Main::OPTIONNAME, 'options' => tribe( 'events-aggregator.settings' )->get_import_limit_type_options(), 'priority' => 5.5, ], 'tribe_aggregator_default_import_limit_range' => [ 'type' => 'dropdown', 'label' => esc_html__( 'Import Date Range Limit', 'the-events-calendar' ), 'tooltip' => esc_html__( 'When importing from an event source, this is how far into the future the events will be fetched; on slower websites a larger date range may impact the success of imports. Selecting a shorter time period may improve results.', 'the-events-calendar' ), 'size' => 'medium', 'validation_type' => 'options', 'default' => tribe( 'events-aggregator.settings' )->get_import_range_default( true ), 'can_be_empty' => true, 'parent_option' => Tribe__Events__Main::OPTIONNAME, 'options' => tribe( 'events-aggregator.settings' )->get_import_range_options( true ), 'class' => 'tribe-dependent', 'fieldset_attributes' => [ 'data-depends' => '#tribe_aggregator_default_import_limit_type-select', 'data-condition' => 'range', ], 'priority' => 5.6, ], 'tribe_aggregator_default_import_limit_number' => [ 'type' => 'dropdown', 'label' => esc_html__( 'Import Quantity Limit', 'the-events-calendar' ), 'tooltip' => esc_html__( 'When importing from an event source, this is the maximum number of events that will be imported; on slower websites this may impact the success of imports. Setting this to a smaller number may improve results.', 'the-events-calendar' ), 'size' => 'medium', 'validation_type' => 'options', 'default' => tribe( 'events-aggregator.settings' )->get_import_limit_count_default(), 'can_be_empty' => true, 'parent_option' => Tribe__Events__Main::OPTIONNAME, 'options' => tribe( 'events-aggregator.settings' )->get_import_limit_count_options(), 'class' => 'tribe-dependent', 'fieldset_attributes' => [ 'data-depends' => '#tribe_aggregator_default_import_limit_type-select', 'data-condition' => 'count', ], 'priority' => 5.7, ], 'tribe_aggregator_import_process_system' => [ 'type' => 'dropdown', 'label' => esc_html__( 'Import Process System', 'the-events-calendar' ), 'tooltip' => esc_html__( 'The Asynchronous import process is faster and does not rely on WordPress Cron but might not work correctly in all WordPress installations, try switching to the Cron-based process for maximum compatibility.', 'the-events-calendar' ), 'size' => 'medium', 'validation_type' => 'options', 'default' => tribe( 'events-aggregator.settings' )->get_import_process_default( false ), 'can_be_empty' => false, 'parent_option' => Tribe__Events__Main::OPTIONNAME, 'options' => tribe( 'events-aggregator.settings' )->get_import_process_options( true ), 'priority' => 5.8, ], 'tribe_aggregator_import_process_control' => [ 'type' => 'wrapped_html', 'label' => esc_html__( 'Stop current processes', 'the-events-calendar' ), 'html' => $stop_running_processes_message, 'priority' => 5.9, ], ]; $ical = [ 'ical-defaults' => [ 'type' => 'html', 'html' => '

' . esc_html__( 'iCalendar Import Settings', 'the-events-calendar' ) . '

', 'priority' => 20.1, ], 'tribe_aggregator_default_ical_post_status' => [ 'type' => 'dropdown', 'label' => esc_html__( 'Default Status', 'the-events-calendar' ), 'tooltip' => esc_html__( 'The default post status for events imported via iCalendar', 'the-events-calendar' ), 'size' => 'medium', 'validation_type' => 'options', 'default' => '', 'can_be_empty' => true, 'parent_option' => Tribe__Events__Main::OPTIONNAME, 'options' => $origin_post_statuses, 'priority' => 20.2, ], 'tribe_aggregator_default_ical_category' => [ 'type' => 'dropdown', 'label' => esc_html__( 'Default Event Category', 'the-events-calendar' ), 'tooltip' => esc_html__( 'The default event category for events imported via iCalendar', 'the-events-calendar' ), 'size' => 'medium', 'validation_type' => 'options', 'default' => '', 'can_be_empty' => true, 'parent_option' => Tribe__Events__Main::OPTIONNAME, 'options' => $origin_categories, 'priority' => 20.3, ], 'tribe_aggregator_default_ical_show_map' => [ 'type' => 'dropdown', 'label' => esc_html__( 'Show Map', 'the-events-calendar' ), 'tooltip' => esc_html__( 'Show map by default on imported event and venues', 'the-events-calendar' ), 'size' => 'medium', 'validation_type' => 'options', 'default' => '', 'can_be_empty' => true, 'parent_option' => Tribe__Events__Main::OPTIONNAME, 'options' => $origin_show_map_options, 'priority' => 20.4, ], ]; $ics = [ 'ics-defaults' => [ 'type' => 'html', 'html' => '

' . esc_html__( 'ICS File Import Settings', 'the-events-calendar' ) . '

', 'priority' => 25.1, ], 'tribe_aggregator_default_ics_post_status' => [ 'type' => 'dropdown', 'label' => esc_html__( 'Default Status', 'the-events-calendar' ), 'tooltip' => esc_html__( 'The default post status for events imported via .ics files', 'the-events-calendar' ), 'size' => 'medium', 'validation_type' => 'options', 'default' => '', 'can_be_empty' => true, 'parent_option' => Tribe__Events__Main::OPTIONNAME, 'options' => $origin_post_statuses, 'priority' => 25.2, ], 'tribe_aggregator_default_ics_category' => [ 'type' => 'dropdown', 'label' => esc_html__( 'Default Event Category', 'the-events-calendar' ), 'tooltip' => esc_html__( 'The default event category for events imported via .ics files', 'the-events-calendar' ), 'size' => 'medium', 'validation_type' => 'options', 'default' => '', 'can_be_empty' => true, 'parent_option' => Tribe__Events__Main::OPTIONNAME, 'options' => $origin_categories, 'priority' => 25.3, ], 'tribe_aggregator_default_ics_show_map' => [ 'type' => 'dropdown', 'label' => esc_html__( 'Show Map', 'the-events-calendar' ), 'tooltip' => esc_html__( 'Show map by default on imported event and venues', 'the-events-calendar' ), 'size' => 'medium', 'validation_type' => 'options', 'default' => '', 'can_be_empty' => true, 'parent_option' => Tribe__Events__Main::OPTIONNAME, 'options' => $origin_show_map_options, 'priority' => 25.4, ], ]; $gcal = [ 'gcal-defaults' => [ 'type' => 'html', 'html' => '

' . esc_html__( 'Google Calendar Import Settings', 'the-events-calendar' ) . '

', 'priority' => 35.1, ], 'tribe_aggregator_default_gcal_post_status' => [ 'type' => 'dropdown', 'label' => esc_html__( 'Default Status', 'the-events-calendar' ), 'tooltip' => esc_html__( 'The default post status for events imported via Google Calendar', 'the-events-calendar' ), 'size' => 'medium', 'validation_type' => 'options', 'default' => '', 'can_be_empty' => true, 'parent_option' => Tribe__Events__Main::OPTIONNAME, 'options' => $origin_post_statuses, 'priority' => 35.2, ], 'tribe_aggregator_default_gcal_category' => [ 'type' => 'dropdown', 'label' => esc_html__( 'Default Event Category', 'the-events-calendar' ), 'tooltip' => esc_html__( 'The default event category for events imported via Google Calendar', 'the-events-calendar' ), 'size' => 'medium', 'validation_type' => 'options', 'default' => '', 'can_be_empty' => true, 'parent_option' => Tribe__Events__Main::OPTIONNAME, 'options' => $origin_categories, 'priority' => 35.3, ], 'tribe_aggregator_default_gcal_show_map' => [ 'type' => 'dropdown', 'label' => esc_html__( 'Show Map', 'the-events-calendar' ), 'tooltip' => esc_html__( 'Show map by default on imported event and venues', 'the-events-calendar' ), 'size' => 'medium', 'validation_type' => 'options', 'default' => '', 'can_be_empty' => true, 'parent_option' => Tribe__Events__Main::OPTIONNAME, 'options' => $origin_show_map_options, 'priority' => 35.4, ], ]; $meetup = [ 'meetup-defaults' => [ 'type' => 'html', 'html' => '

' . esc_html__( 'Meetup Import Settings', 'the-events-calendar' ) . '

', 'priority' => 40.1, ], 'meetup-defaults-info' => [ 'type' => 'html', 'html' => '

' . sprintf( esc_html__( 'To import Meetup events, please be sure to add your Meetup API key on %1$sEvents > Settings > Integrations%2$s', 'the-events-calendar' ), '', '' ). '

', 'priority' => 40.2, ], 'tribe_aggregator_default_meetup_post_status' => [ 'type' => 'dropdown', 'label' => esc_html__( 'Default Status', 'the-events-calendar' ), 'tooltip' => esc_html__( 'The default post status for events imported via Meetup', 'the-events-calendar' ), 'size' => 'medium', 'validation_type' => 'options', 'default' => '', 'can_be_empty' => true, 'parent_option' => Tribe__Events__Main::OPTIONNAME, 'options' => $origin_post_statuses, 'priority' => 40.3, ], 'tribe_aggregator_default_meetup_category' => [ 'type' => 'dropdown', 'label' => esc_html__( 'Default Event Category', 'the-events-calendar' ), 'tooltip' => esc_html__( 'The default event category for events imported via Meetup', 'the-events-calendar' ), 'size' => 'medium', 'validation_type' => 'options', 'default' => '', 'can_be_empty' => true, 'parent_option' => Tribe__Events__Main::OPTIONNAME, 'options' => $origin_categories, 'priority' => 40.4, ], 'tribe_aggregator_default_meetup_show_map' => [ 'type' => 'dropdown', 'label' => esc_html__( 'Show Map', 'the-events-calendar' ), 'tooltip' => esc_html__( 'Show map by default on imported event and venues', 'the-events-calendar' ), 'size' => 'medium', 'validation_type' => 'options', 'default' => '', 'can_be_empty' => true, 'parent_option' => Tribe__Events__Main::OPTIONNAME, 'options' => $origin_show_map_options, 'priority' => 40.5, ], ]; $url = [ 'url-defaults' => [ 'type' => 'html', 'html' => '

' . esc_html__( 'Other URL Import Settings', 'the-events-calendar' ) . '

', 'priority' => 45.1, ], 'tribe_aggregator_default_url_post_status' => [ 'type' => 'dropdown', 'label' => esc_html__( 'Default Status', 'the-events-calendar' ), 'tooltip' => esc_html__( 'The default post status for events imported via other URLs', 'the-events-calendar' ), 'size' => 'medium', 'validation_type' => 'options', 'default' => '', 'can_be_empty' => true, 'parent_option' => Tribe__Events__Main::OPTIONNAME, 'options' => $origin_post_statuses, 'priority' => 45.2, ], 'tribe_aggregator_default_url_category' => [ 'type' => 'dropdown', 'label' => esc_html__( 'Default Event Category', 'the-events-calendar' ), 'tooltip' => esc_html__( 'The default event category for events imported via other URLs', 'the-events-calendar' ), 'size' => 'medium', 'validation_type' => 'options', 'default' => '', 'can_be_empty' => true, 'parent_option' => Tribe__Events__Main::OPTIONNAME, 'options' => $origin_categories, 'priority' => 45.3, ], 'tribe_aggregator_default_url_show_map' => [ 'type' => 'dropdown', 'label' => esc_html__( 'Show Map', 'the-events-calendar' ), 'tooltip' => esc_html__( 'Show map by default on imported event and venues', 'the-events-calendar' ), 'size' => 'medium', 'validation_type' => 'options', 'default' => '', 'can_be_empty' => true, 'parent_option' => Tribe__Events__Main::OPTIONNAME, 'options' => $origin_show_map_options, 'priority' => 45.4, ], 'tribe_aggregator_default_url_import_range' => [ 'type' => 'dropdown', 'label' => esc_html__( 'Import Date Range Limit', 'the-events-calendar' ), 'tooltip' => esc_html__( 'When importing from a website that uses The Events Calendar, the REST API will attempt to fetch events this far in the future. That website\'s hosting resources may impact the success of imports. Selecting a shorter time period may improve results.', 'the-events-calendar' ) . ' ' . sprintf( '%2$s', esc_attr( 'https://theeventscalendar.com/knowledgebase/url-import-errors-event-aggregator/' ), esc_html( 'Learn more.' ) ), 'size' => 'medium', 'validation_type' => 'options', 'default' => tribe( 'events-aggregator.settings' )->get_import_range_default(), 'can_be_empty' => false, 'parent_option' => Tribe__Events__Main::OPTIONNAME, 'options' => tribe( 'events-aggregator.settings' )->get_url_import_range_options( true ), 'priority' => 45.5, ], 'tribe_aggregator_default_url_import_event_settings' => [ 'type' => 'dropdown', 'label' => esc_html__( 'Import Event Settings', 'the-events-calendar' ), 'tooltip' => esc_html__( "Fetch source event's settings (e.g. Show Maps Link or Sticky in Month View) when importing from another site using The Events Calendar.", 'the-events-calendar' ), 'size' => 'medium', 'validation_type' => 'options', 'default' => 'no', 'can_be_empty' => true, 'parent_option' => Tribe__Events__Main::OPTIONNAME, 'options' => $yes_no_options, 'priority' => 45.6, ], ]; // Ensure that "(do not override)" is set up for Eventbrite import statuses, and "Published" is not. $eventbrite_origin_post_statuses = [ 'do_not_override' => esc_html__( '(do not override)', 'the-events-calendar' ) ]; $eventbrite_origin_post_statuses = $eventbrite_origin_post_statuses + $origin_post_statuses; unset( $eventbrite_origin_post_statuses['publish'] ); // Unset EA's "Use global import settings" option if it's there. if ( $events_aggregator_is_active ) { unset( $eventbrite_origin_post_statuses['-1'] ); } $eb_fields = [ 'eventbrite-defaults' => [ 'type' => 'html', 'html' => '

' . esc_html__( 'Eventbrite Import Settings', 'the-events-calendar' ) . '

', 'priority' => 17.1, ], 'tribe_aggregator_default_eventbrite_post_status' => [ 'type' => 'dropdown', 'label' => esc_html__( 'Default Status', 'the-events-calendar' ), 'tooltip' => esc_html__( 'The default post status for events imported via Eventbrite', 'the-events-calendar' ), 'size' => 'medium', 'validation_type' => 'options', 'default' => '', 'can_be_empty' => true, 'parent_option' => Tribe__Events__Main::OPTIONNAME, 'options' => $eventbrite_origin_post_statuses, 'priority' => 17.2, ], 'tribe_aggregator_default_eventbrite_category' => [ 'type' => 'dropdown', 'label' => esc_html__( 'Default Event Category', 'the-events-calendar' ), 'tooltip' => esc_html__( 'The default event category for events imported via Eventbrite', 'the-events-calendar' ), 'size' => 'medium', 'validation_type' => 'options', 'default' => '', 'can_be_empty' => true, 'parent_option' => Tribe__Events__Main::OPTIONNAME, 'options' => $origin_categories, 'priority' => 17.3, ], 'tribe_aggregator_default_eventbrite_show_map' => [ 'type' => 'dropdown', 'label' => esc_html__( 'Show Map', 'the-events-calendar' ), 'tooltip' => esc_html__( 'Show map by default on imported event and venues', 'the-events-calendar' ), 'size' => 'medium', 'validation_type' => 'options', 'default' => 'no', 'can_be_empty' => true, 'parent_option' => Tribe__Events__Main::OPTIONNAME, 'options' => $origin_show_map_options, 'priority' => 17.4, ], ]; } $internal = array_merge( $change_authority, $global, $csv, $ical, $ics, $gcal, $meetup, $url, $eb_fields, $ea_disable ); /** * If Eventbrite Tickets is enabled and Event Aggregator is disabled, display the correct import settings */ if ( class_exists( 'Tribe__Events__Tickets__Eventbrite__Main' ) && ! tribe( 'events-aggregator.main' )->has_license_key() ) { $internal = array_merge( $change_authority, $global, $csv, $eb_fields, $ea_disable ); } /** * Filter the Aggregator Setting Fields. * * @since TDB * * @param array $internal List of aggregator fields. * @param array $origin_post_statuses List of post statuses. * @param array $origin_categories List of event categories. * @param array $origin_show_map_options List of show map options. */ $internal = apply_filters( 'tribe_aggregator_fields', $internal, $origin_post_statuses, $origin_categories, $origin_show_map_options ); /** * Sort Fields by Priority */ if ( get_bloginfo( 'version' ) >= 4.7 ) { $internal = wp_list_sort( $internal, 'priority', 'ASC', true ); } if ( tribe( 'events-aggregator.main' )->is_service_active() ) { $import_setting_links = [ 'update-authority' => [ 'name' => __( 'Update Authority', 'the-events-calendar' ), 'priority' => 5, ], 'global-settings' => [ 'name' => __( 'Global', 'the-events-calendar' ), 'priority' => 10, ], 'csv-settings' => [ 'name' => __( 'CSV', 'the-events-calendar' ), 'priority' => 15, ], 'ical-settings' => [ 'name' => __( 'iCalendar', 'the-events-calendar' ), 'priority' => 20, ], 'ics-settings' => [ 'name' => __( 'ICS File', 'the-events-calendar' ), 'priority' => 25, ], 'google-settings' => [ 'name' => __( 'Google Calendar', 'the-events-calendar' ), 'priority' => 35, ], 'meetup-settings' => [ 'name' => __( 'Meetup', 'the-events-calendar' ), 'priority' => 40, ], 'url-settings' => [ 'name' => __( 'Other URLs', 'the-events-calendar' ), 'priority' => 45, ], 'eventbrite-settings' => [ 'name' => __( 'Eventbrite', 'the-events-calendar' ), 'priority' => 17, ], ]; /** * If Eventbrite Tickets is enabled and Event Aggregator is disabled, display the correct import links */ if ( class_exists( 'Tribe__Events__Tickets__Eventbrite__Main' ) && ! tribe( 'events-aggregator.main' )->has_license_key() ) { $ea_keys = [ 'ical-settings', 'ics-settings', 'google-settings', 'meetup-settings', 'url-settings', ]; foreach ( $ea_keys as $key ) { unset( $import_setting_links[ $key ] ); } } /** * Filter the Import Setting Links on the Import Tab * * @since TDB * * @param $import_setting_links array an array of import setting anchor links */ $import_setting_links = apply_filters( 'tribe_aggregator_setting_links', $import_setting_links ); /** * Sort Header List Order */ if ( get_bloginfo( 'version' ) >= 4.7 ) { $import_setting_links = wp_list_sort( $import_setting_links, 'priority', 'ASC', true ); } ob_start(); ?>

settings()->get_url( [ 'page' => 'tec-troubleshooting' ] ) ) . '#tribe-events-admin__ea-status">' . esc_html__( 'Troubleshooting Page', 'the-events-calendar' ) . '' ); ?>

$information ) { $separator = ''; if ( $information !== end( $import_setting_links ) ) { $separator = ' | '; } echo '' . esc_attr( $information['name'] ) . '' . esc_attr( $separator ); } ?>

[ 'type' => 'html', 'html' => '
', ], 'import-box-title' => [ 'type' => 'html', 'html' => '

' . esc_html__( 'Imports', 'the-events-calendar' ) . '

', ], 'import-box-description' => [ 'type' => 'html', 'html' => '

' . $import_instructions . '

', ], 'import-box-end' => [ 'type' => 'html', 'html' => '
', ], 'import-form-content-start' => [ 'type' => 'html', 'html' => '
', ], ], $internal, [ 'addons-form-content-end' => [ 'type' => 'html', 'html' => '
', ], ] ); /** * Allow developer to fully filter the Imports Tab contents * Following the structure of the arguments for a Tribe__Settings_Tab instance * * @var array */ $import = apply_filters( 'tribe_aggregator_tab', [ 'priority' => 50, 'fields' => $fields, ] ); // Only create the Add-ons Tab if there is any if ( ! empty( $internal ) ) { new Tribe__Settings_Tab( 'imports', esc_html__( 'Imports', 'the-events-calendar' ), $import ); } aggregator/banners/eventbrite-upsell.php000064400000001476150514203270014507 0ustar00
aggregator/tab.php000064400000000340150514203270010141 0ustar00tabs->get_active(); ?>
render(); ?>
aggregator/header.php000064400000000712150514203270010626 0ustar00

get_page_title() ); ?>

aggregator/meta-box.php000064400000004414150514203270011115 0ustar00

is_service_active() ) { $message = __( 'If this event is re-imported, event fields will be overwritten with any changes from the source.', 'the-events-calendar' ); } echo esc_html( $message ); // CSVs can be imported when EA isn't active, so only mention the Event Authority when appropriate. if ( 'CSV File' !== $origin || tribe( 'events-aggregator.main' )->is_service_active() ) : ?>

aggregator/tabs/new.php000064400000000155150514203270011121 0ustar00is_service_active(); $hide_upsell = tec_should_hide_upsell(); if ( 'edit' === $aggregator_action ) { $default_post_status = get_post_meta( $record->post->ID, Tribe__Events__Aggregator__Record__Abstract::$meta_key_prefix . 'post_status', true ); $default_category = get_post_meta( $record->post->ID, Tribe__Events__Aggregator__Record__Abstract::$meta_key_prefix . 'category', true ); } // Set up the generic default post statuses and category. $default_post_status = empty( $default_post_status ) ? tribe_get_option( 'tribe_aggregator_default_post_status', 'draft' ) : $default_post_status; $default_category = empty( $default_category ) ? tribe_get_option( 'tribe_aggregator_default_category', '' ) : $default_category; $post_statuses = get_post_statuses(); // Ensure the "(do not override)" status is set up for Eventbrite imports, and "Published" is removed. $do_not_override_status = [ 'do_not_override' => esc_html__( '(do not override)', 'the-events-calendar' ) ]; $eventbrite_post_statuses = $do_not_override_status + $post_statuses; unset( $eventbrite_post_statuses['publish'] ); $category_placeholder = esc_attr__( 'No Additional Categories', 'the-events-calendar' ); $category_dropdown = wp_dropdown_categories( [ 'echo' => false, 'name' => 'aggregator[category]', 'id' => 'tribe-ea-field-category', 'hide_empty' => false, 'class' => 'tribe-ea-field tribe-ea-dropdown tribe-ea-size-large', 'orderby' => 'post_title', 'taxonomy' => Tribe__Events__Main::TAXONOMY, ] ); $category_dropdown = preg_replace( '!\]*\>)!', '$1', $category_dropdown ); $category_dropdown = preg_replace( '!(value="' . $default_category . '")!', '$1 selected', $category_dropdown ); wp_nonce_field( 'tribe-aggregator-save-import', 'tribe_aggregator_nonce' ); ?> source = 'origins'; $field->label = esc_html__( 'Import Origin:', 'the-events-calendar' ); $field->placeholder = esc_attr__( 'Select Origin', 'the-events-calendar' ); $field->help = esc_attr__( 'Choose where you are importing from.', 'the-events-calendar' ); $field->options = tribe( 'events-aggregator.main' )->api( 'origins' )->get(); $field->upsell_options = []; foreach ( $field->options as $key => $option ) { $option->disabled = isset( $option->disabled ) ? $option->disabled : null; $option->upsell = isset( $option->upsell ) ? $option->upsell : false; $option->is_selected = false; if ( // Used on the EA Authorization tribe_get_request_var( 'ea-auth', false ) === $option->id // Used to Select a given origin when the page loads || tribe_get_request_var( 'ea-origin', false ) === $option->id ) { $option->is_selected = true; } // If this is an upsell option we move it to that optgroup if ( $option->disabled && $option->upsell && ! $has_license_key ) { $field->upsell_options[] = $option; unset( $field->options[ $key ] ); } } ?> $record, 'aggregator_action' => $aggregator_action, ]; if ( 'edit' === $aggregator_action ) { $this->template( 'origins/' . $record->meta['origin'], $form_args ); } else { $this->template( 'origins/limit', $form_args ); $this->template( 'origins/csv', $form_args ); $this->template( 'origins/ics', $form_args ); $this->template( 'origins/ical', $form_args ); $this->template( 'origins/gcal', $form_args ); $this->template( 'origins/meetup', $form_args ); $this->template( 'origins/eventbrite', $form_args ); $this->template( 'origins/url', $form_args ); } /** * Fires below the origin template output. * * HTML outputted here should be wrapped in a table row () that contains one
api( 'origins' )->get_name( $record->meta['origin'] ) ); ?>
and one . * * @since 4.6.24 * * @param string $aggregator_action Aggregator action (new or edit). * @param array $form_args Form arguments. */ do_action( 'tribe_events_aggregator_import_form', $aggregator_action, $form_args ); ?>
help = esc_html__( 'Choose a status for the event(s) to be imported with and/or define an Event Category to automatically assign. An assigned category will be added to the event in addition to any Event Categories from the import source.', 'the-events-calendar' ); $default_settings->help_scheduled = $default_settings->help . ' ' . esc_html__( 'These settings will also apply to events imported in the future via this scheduled import.', 'the-events-calendar' ); $csv_help = esc_html__( 'Select the Event Field that best matches your CSV file column. The contents of that column will then be mapped to the specified event field when the event is created.', 'the-events-calendar' ); $scheduled_save_help = esc_html__( 'When you save this scheduled import, the events above will begin importing.', 'the-events-calendar' ); ?>

get_url() ) . '#tribe-field-tribe_events_timezone_mode">', esc_html__( 'timezone settings', 'the-events-calendar' ), '', esc_html__( 'to change how the actual time is displayed on your calendar.', 'the-events-calendar' ) ); ?>

get_url( [ 'tab' => 'imports#tribe-field-tribe_aggregator_default_import_limit_type' ] ) ) . '#tribe-field-tribe_events_timezone_mode">', '' ); ?>

get_url() ) . '#tribe-field-tribe_events_timezone_mode">', esc_html__( 'Settings > General', 'the-events-calendar' ), ' ).' ); ?>

maybe_display_eventbrite_upsell(); ?>
maybe_display_aggregator_upsell(); $csv_record = Tribe__Events__Aggregator__Records::instance()->get_by_origin( 'csv' ); $post_types = $csv_record->get_import_post_types(); foreach ( $post_types as $post_type ) : $type = str_replace( 'tribe_', '', $post_type->name ); ?> prepare_items(); ?> views(); ?>
display(); ?>
aggregator/tabs/edit.php000064400000000677150514203270011266 0ustar00get_by_post_id( (int) $_GET['id'] ); if ( ! tribe_is_error( $get_record ) ) { $record = $get_record; } } $aggregator_action = 'edit'; ?> prepare_items(); ?> maybe_display_aggregator_missing_license_key_message(); ?> views(); ?>
nonce(); $table->search_box( 'Search', 'search_ea_scheduled' ); $table->display(); ?>
aggregator/page.php000064400000000765150514203270010322 0ustar00is_service_active() ) { $state_class = 'tribe-aggregator-active'; } ?>
template( 'header' ); ?>
template( 'tab' ); ?>
aggregator/status.php000064400000022443150514203270010726 0ustar00 'marker', 'warning' => 'warning', 'bad' => 'dismiss', ]; $show_third_party_accounts = ! is_network_admin(); ?> is_service_active() ) { $indicator = 'good'; $text = __( 'Your license is valid', 'the-events-calendar' ); $ea_active = true; } else { $service_status = tribe( 'events-aggregator.service' )->api()->get_error_code(); $indicator = 'bad'; if ( 'core:aggregator:invalid-service-key' == $service_status ) { $text = __( 'You do not have a license', 'the-events-calendar' ); $notes = ''; $notes .= esc_html__( 'Buy Event Aggregator to access more event sources and automatic imports!', 'the-events-calendar' ); $notes .= ''; } else { $text = __( 'Your license is invalid', 'the-events-calendar' ); $notes = '' . esc_html__( 'Check your license key', 'the-events-calendar' ) . ''; } } ?>
'; return ob_get_clean(); } $service = tribe( 'events-aggregator.service' ); $import_limit = $service->get_limit( 'import' ); $import_available = $service->get_limit_remaining(); $import_count = $service->get_limit_usage(); $indicator = 'good'; $notes = ' '; if ( 0 === $import_limit || $import_count >= $import_limit ) { $indicator = 'bad'; $notes = esc_html__( 'You have reached your daily import limit. Scheduled imports will be paused until tomorrow.', 'the-events-calendar' ); } elseif ( $import_count / $import_limit >= 0.8 ) { $indicator = 'warning'; $notes = esc_html__( 'You are approaching your daily import limit. You may want to adjust your Scheduled Import frequencies.', 'the-events-calendar' ); } $text = sprintf( // import count and limit _n( '%1$d import used out of %2$d available today', '%1$d imports used out of %2$d available today', $import_count, 'the-events-calendar' ), intval( $import_count ), intval( $import_limit ) ); ?> api()->domain; $up = tribe( 'events-aggregator.service' )->get( 'status/up' ); if ( ! $up || is_wp_error( $up ) ) { $indicator = 'bad'; /* translators: %s: Event Aggregator Server URL */ $text = sprintf( __( 'Not connected to %s', 'the-events-calendar' ), $ea_server ); $notes = esc_html__( 'The server is not currently responding', 'the-events-calendar' ); } elseif ( is_object( $up ) && is_object( $up->data ) && isset( $up->data->status ) && 400 <= $up->data->status ) { // this is a rare condition that should never happen // An example case: the route is not defined on the EA server $indicator = 'warning'; /* translators: %s: Event Aggregator Server URL */ $text = sprintf( __( 'Not connected to %s', 'the-events-calendar' ), $ea_server ); $notes = __( 'The server is responding with an error:', 'the-events-calendar' ); $notes .= '
';
			$notes .= esc_html( $up->message );
			$notes .= '
'; } else { /* translators: %s: Event Aggregator Server URL */ $text = sprintf( __( 'Connected to %s', 'the-events-calendar' ), $ea_server ); } // @todo [BTRIA-611]: Link $text to the status page. ?>
api( 'origins' )->is_oauth_enabled( 'eventbrite' ) ) { if ( ! tribe( 'events-aggregator.settings' )->has_eb_security_key() ) { $indicator = 'warning'; $text = __( 'You have not connected Event Aggregator to Eventbrite', 'the-events-calendar' ); $eventbrite_auth_url = Tribe__Events__Aggregator__Record__Eventbrite::get_auth_url( [ 'back' => 'settings' ] ); $notes = '' . esc_html_x( 'Connect to Eventbrite', 'link for connecting eventbrite', 'the-events-calendar' ) . ''; } } else { $indicator = 'warning'; $text = __( 'Limited connectivity with Eventbrite', 'the-events-calendar' ); $notes = esc_html__( 'The service has disabled oAuth. Some types of events may not import.', 'the-events-calendar' ); } ?> api( 'origins' )->is_oauth_enabled( 'meetup' ) ) { if ( ! tribe( 'events-aggregator.settings' )->has_meetup_security_key() ) { $indicator = 'warning'; $text = __( 'You have not connected Event Aggregator to Meetup', 'the-events-calendar' ); $meetup_auth_url = Tribe__Events__Aggregator__Record__Meetup::get_auth_url( [ 'back' => 'settings' ] ); $notes = '' . esc_html_x( 'Connect to Meetup', 'link for connecting meetup', 'the-events-calendar' ) . ''; } } else { $indicator = 'warning'; $text = __( 'Limited connectivity with Meetup', 'the-events-calendar' ); $notes = esc_html__( 'The service has disabled oAuth. Some types of events may not import.', 'the-events-calendar' ); } ?> ) that contains 2 cells (
s). * * @since 4.6.24 * * @param array $indicator_icons List of indicator icons. */ do_action( 'tribe_events_status_third_party', $indicator_icons ); ?>
aggregator/origins/eventbrite.php000064400000022045150514203270013222 0ustar00tabs->get_active(); $service = tribe( 'events-aggregator.service' ); $origin_slug = 'eventbrite'; $field = (object) []; $field->label = __( 'Import Type:', 'the-events-calendar' ); $field->placeholder = __( 'Select Import Type', 'the-events-calendar' ); $field->help = __( 'One-time imports include all currently listed events, while scheduled imports automatically grab new events and updates from Eventbrite on a set schedule. Single events can be added via a one-time import.', 'the-events-calendar' ); $field->source = 'eventbrite_import_type'; $frequency = (object) []; $frequency->placeholder = __( 'Import from Eventbrite', 'the-events-calendar' ); if ( ! empty( $service->api()->licenses['tribe-eventbrite'] ) ) { $frequency->placeholder = __( 'Import from your Eventbrite account', 'the-events-calendar' ); } $frequency->help = __( 'Select how often you would like events to be automatically imported.', 'the-events-calendar' ); $frequency->source = 'eventbrite_import_frequency'; $cron = Tribe__Events__Aggregator__Cron::instance(); $frequencies = $cron->get_frequency(); $missing_eventbrite_credentials = ! tribe( 'events-aggregator.settings' )->is_ea_authorized_for_eb(); $data_depends = '#tribe-ea-field-origin'; $data_condition = 'eventbrite'; if ( $missing_eventbrite_credentials ) : $data_depends = '#tribe-has-eventbrite-credentials'; $data_condition = '1'; ?>

get_slug() ) { $this->template( 'fields/schedule', [ 'record' => $record, 'origin' => $origin_slug, 'aggregator_action' => $aggregator_action ] ); } ?> label = __( 'Import Source', 'the-events-calendar' ); $field->placeholder = __( 'Select Source', 'the-events-calendar' ); if ( ! class_exists( 'Tribe__Events__Tickets__Eventbrite__Main' ) ) { $field->help = esc_html__( 'Import events directly from a public Eventbrite.com URL. Please note that only Live events (i.e. published events) can be imported via URL.', 'the-events-calendar' ); } else { $field->help = esc_html__( 'Import events directly from your connected Eventbrite.com account or from a public Eventbrite.com URL.', 'the-events-calendar' ); } $default_eb_source = 'source_type_url'; if ( ! empty( $service->api()->licenses['tribe-eventbrite'] ) ) { $field->options[] = [ 'id' => 'https://www.eventbrite.com/me', 'text' => __( 'Import from your Eventbrite account', 'the-events-calendar' ), 'selected' => false, ]; $default_eb_source = 'https://www.eventbrite.com/me'; } $field->options[] = [ 'id' => 'source_type_url', 'text' => __( 'Import from Eventbrite URL', 'the-events-calendar' ), 'selected' => false, ]; $field->options[0]['selected'] = true; ?> label = __( 'URL:', 'the-events-calendar' ); $field->placeholder = __( 'eventbrite.com/e/example-12345', 'the-events-calendar' ); $field->help = __( 'Enter an Eventbrite event URL, e.g. https://www.eventbrite.com/e/example-12345', 'the-events-calendar' ); ?> aggregator/origins/limit.php000064400000003506150514203270012172 0ustar00get_import_limit_count_options(); $global_limit_option = tribe_get_option( 'tribe_aggregator_default_import_limit_number', $settings->get_import_limit_count_default() ); $global_limit_message = esc_html( sprintf( __( 'Event Aggregator will try to fetch %s events starting from the current date or the specified date;', 'the-events-calendar' ), $global_limit_strings[ $global_limit_option ] ) ); if ( 'range' === $global_limit_type ) { $global_limit_strings = $settings->get_import_range_options( false ); $global_limit_option = tribe_get_option( 'tribe_aggregator_default_import_limit_range', $settings->get_import_range_default() ); $global_limit_message = esc_html( sprintf( __( 'Event Aggregator will try to fetch events starting within the next %s from the current date or the specified date;', 'the-events-calendar' ), $global_limit_strings[ $global_limit_option ] ) ); } $import_limit_link = esc_url( tribe( Plugin_Settings::class )->get_url( [ 'tab' => 'imports#tribe-field-tribe_aggregator_default_import_limit_type' ] ) ); $import_limit_message = $global_limit_message . ' ' . sprintf( '%s ', $import_limit_link, esc_html__( 'you can modify this setting here.', 'the-events-calendar' ) ); ?>

aggregator/origins/meetup.php000064400000014614150514203270012355 0ustar00tabs->get_active(); $origin_slug = 'meetup'; $field = (object) []; $field->label = __( 'Import Type:', 'the-events-calendar' ); $field->placeholder = __( 'Select Import Type', 'the-events-calendar' ); $field->help = __( 'One-time imports include all currently listed events, while scheduled imports automatically grab new events and updates from Meetup on a set schedule. Single events can be added via a one-time import.', 'the-events-calendar' ); $field->source = 'meetup_import_type'; $frequency = (object) []; $frequency->placeholder = __( 'Select Frequency', 'the-events-calendar' ); $frequency->help = __( 'Select how often you would like events to be automatically imported.', 'the-events-calendar' ); $frequency->source = 'meetup_import_frequency'; $cron = Tribe__Events__Aggregator__Cron::instance(); $frequencies = $cron->get_frequency(); $missing_meetup_credentials = ! tribe( 'events-aggregator.settings' )->is_ea_authorized_for_meetup(); $data_depends = '#tribe-ea-field-origin'; $data_condition = 'meetup'; if ( $missing_meetup_credentials ) : $data_depends = '#tribe-has-meetup-credentials'; $data_condition = '1'; $meetup_auth_url = Tribe__Events__Aggregator__Record__Meetup::get_auth_url(); ?> get_slug() ) { $this->template( 'fields/schedule', [ 'record' => $record, 'origin' => $origin_slug, 'aggregator_action' => $aggregator_action ] ); } ?> label = __( 'URL:', 'the-events-calendar' ); $field->placeholder = __( 'meetup.com/example', 'the-events-calendar' ); $field->help = __( 'Enter the url for a Meetup group, page, or individual. You can also enter the url of a single Meetup event.', 'the-events-calendar' ); ?> aggregator/origins/url.php000064400000013771150514203270011663 0ustar00tabs->get_active(); $origin_slug = 'url'; $field = (object) []; $field->label = __( 'Import Type:', 'the-events-calendar' ); $field->placeholder = __( 'Select Import Type', 'the-events-calendar' ); $field->help = __( 'One-time imports include currently listed upcoming events, while scheduled imports automatically grab new events and updates from this url on a set schedule.', 'the-events-calendar' ); $field->source = 'url_import_type'; $frequency = (object) []; $frequency->placeholder = __( 'Select Frequency', 'the-events-calendar' ); $frequency->help = __( 'Select how often you would like events to be automatically imported.', 'the-events-calendar' ); $frequency->source = 'url_import_frequency'; $cron = Tribe__Events__Aggregator__Cron::instance(); $frequencies = $cron->get_frequency(); ?> get_slug() ) { $this->template( 'fields/schedule', [ 'record' => $record, 'origin' => $origin_slug, 'aggregator_action' => $aggregator_action, ] ); } ?> label = __( 'URL:', 'the-events-calendar' ); $field->placeholder = __( 'example.com/', 'the-events-calendar' ); $field->help = __( 'Enter the url for the calendar, website, or event you would like to import. Event Aggregator will attempt to import events at that location.', 'the-events-calendar' ); $range_option = tribe_get_option( 'tribe_aggregator_default_url_import_range', 30 * DAY_IN_SECONDS ); $range_strings = tribe( 'events-aggregator.settings' )->get_url_import_range_options( false ); $range_string = $range_strings[ $range_option ]; $range_message = esc_html( sprintf( __( 'Event Aggregator will try to fetch events starting within the next %s from the current date or the specified date;', 'the-events-calendar' ), $range_string ) ); $link = esc_attr( tribe( Plugin_Settings::class )->get_url( [ 'tab' => 'imports#tribe-field-tribe_aggregator_default_url_import_range' ] ) ); $field->range_message = $range_message . ' ' . sprintf( '%s ', $link, esc_html__( 'you can modify this setting here.', 'the-events-calendar' ) ); ?>

range_message; ?>

aggregator/origins/ics.php000064400000005332150514203270011631 0ustar00tabs->get_active(); $origin_slug = 'ics'; $field = (object) []; $field->label = __( 'Choose File:', 'the-events-calendar' ); $field->placeholder = __( 'Choose File', 'the-events-calendar' ); $field->help = __( 'Select your ICS file from the WordPress media library. You may need to first upload the file from your computer to the library.', 'the-events-calendar' ); $field->source = 'ics_files'; $field->button = __( 'Upload', 'the-events-calendar' ); $field->media_title = __( 'Upload an ICS File', 'the-events-calendar' ); ?> get_slug() ) { $this->template( 'fields/schedule', [ 'record' => $record, 'origin' => $origin_slug, 'aggregator_action' => $aggregator_action, ] ); } ?>
aggregator/origins/csv.php000064400000011512150514203270011643 0ustar00label = __( 'Content Type:', 'the-events-calendar' ); $field->placeholder = __( 'Select Content Type', 'the-events-calendar' ); $field->help = __( 'Specify the type of content you wish to import, e.g. events.', 'the-events-calendar' ); $field->help .= '
'; $field->help .= __( 'For the best results, import venue and organizer files before importing event files.', 'the-events-calendar' ); $field->source = 'csv_content_type'; $csv_record = Tribe__Events__Aggregator__Records::instance()->get_by_origin( 'csv' ); $post_types = $csv_record->get_import_post_types(); $main = Tribe__Events__Main::instance(); ?> label = __( 'Choose File:', 'the-events-calendar' ); $field->placeholder = __( 'Choose a CSV file', 'the-events-calendar' ); $field->help = __( 'Select your .CSV file from the WordPress media library. You may need to first upload the file from your computer to the library.', 'the-events-calendar' ); $field->button = __( 'Upload', 'the-events-calendar' ); $field->media_title = __( 'Upload a CSV File', 'the-events-calendar' ); ?> aggregator/origins/ical.php000064400000011756150514203270011772 0ustar00tabs->get_active(); $origin_slug = 'ical'; $field = (object) []; $field->label = __( 'Import Type:', 'the-events-calendar' ); $field->placeholder = __( 'Select Import Type', 'the-events-calendar' ); $field->help = __( 'One-time imports include all events in the current feed, while scheduled imports automatically grab new events and updates from the feed on a set schedule.', 'the-events-calendar' ); $field->source = 'ical_import_type'; $frequency = (object) []; $frequency->placeholder = __( 'Select Frequency', 'the-events-calendar' ); $frequency->help = __( 'Select how often you would like events to be automatically imported.', 'the-events-calendar' ); $frequency->source = 'ical_import_frequency'; $cron = Tribe__Events__Aggregator__Cron::instance(); $frequencies = $cron->get_frequency(); ?> get_slug() ) { $this->template( 'fields/schedule', [ 'record' => $record, 'origin' => $origin_slug, 'aggregator_action' => $aggregator_action ] ); } ?> label = __( 'URL:', 'the-events-calendar' ); $field->placeholder = __( 'example.com/url.ics', 'the-events-calendar' ); $field->help = __( 'Enter the url for the iCalendar feed you wish to import, e.g. https://central.wordcamp.org/calendar.ics', 'the-events-calendar' ); ?> aggregator/origins/gcal.php000064400000013373150514203270011765 0ustar00tabs->get_active(); $origin_slug = 'gcal'; $field = (object) []; $field->label = __( 'Import Type:', 'the-events-calendar' ); $field->placeholder = __( 'Select Import Type', 'the-events-calendar' ); $field->help = __( 'One-time imports include all events in the current feed, while scheduled imports automatically grab new events and updates from the feed on a set schedule.', 'the-events-calendar' ); $field->source = 'gcal_import_type'; $frequency = (object) []; $frequency->placeholder = __( 'Select Frequency', 'the-events-calendar' ); $frequency->help = __( 'Select how often you would like events to be automatically imported.', 'the-events-calendar' ); $frequency->source = 'gcal_import_frequency'; $cron = Tribe__Events__Aggregator__Cron::instance(); $frequencies = $cron->get_frequency(); ?> get_slug() ) { $this->template( 'fields/schedule', [ 'record' => $record, 'origin' => $origin_slug, 'aggregator_action' => $aggregator_action ] ); } ?> label = __( 'URL:', 'the-events-calendar' ); $field->placeholder = __( 'https://calendar.google.com/calendar/ical/example/basic.ics', 'the-events-calendar' ); $field->help = __( 'Enter the url for the Google Calendar feed you wish to import.', 'the-events-calendar' ); $field->help .= '

'; $field->help .= __( 'You can find the url you need in your Google Calendar settings.', 'the-events-calendar' ); $field->help .= '
    '; $field->help .= '
  1. ' . __( 'Go to Settings > Calendars and select the calendar you wish to import.', 'the-events-calendar' ) . '
  2. '; $field->help .= '
  3. ' . __( 'Scroll down to Calendar Address and click the iCal button (note: if your calendar is private, you\'ll need to click the iCal button next to the Private Address header instead).', 'the-events-calendar' ) . '
  4. '; $field->help .= '
  5. ' . __( 'Copy the provided url into this field to import the events into your WordPress site.', 'the-events-calendar' ) . '
  6. '; $field->help .= '
'; ?> aggregator/origins/refine.php000064400000014514150514203270012325 0ustar00placeholder = __( 'Keyword(s)', 'the-events-calendar' ); $location = new stdClass; $location->placeholder = __( 'Location', 'the-events-calendar' ); $start_date = new stdClass; $start_date->placeholder = __( 'Date', 'the-events-calendar' ); $radius = new stdClass; $radius->placeholder = sprintf( _x( 'Radius (%s)', 'Radius with abbreviation', 'the-events-calendar' ), Tribe__Events__Utils__Radius::get_abbreviation() ); $depends_condition = 'data-condition-not-empty'; $location_depends = '#tribe-ea-field-origin'; $keyword_depends = '#tribe-ea-field-origin'; $keyword_exclusions = [ 'facebook' ]; $location_exclusions = [ 'url', 'facebook' ]; switch ( $origin_slug ) { case 'ics': $depends = "#tribe-ea-field-{$origin_slug}_file"; $radius->help = __( 'Use the filters to narrow down which events are fetched from your ICS file.', 'the-events-calendar' ); break; case 'gcal': $depends = "#tribe-ea-field-{$origin_slug}_import_type"; $radius->help = __( 'Use the filters to narrow down which events are fetched from this Google Calendar.', 'the-events-calendar' ); break; case 'url': $depends = "#tribe-ea-field-{$origin_slug}_import_type"; $radius->help = __( 'Use the filters to narrow down which events are fetched from this site.', 'the-events-calendar' ); break; case 'eventbrite': $depends = '#tribe-ea-field-eventbrite_import_source'; $radius->help = __( 'Use the filters to narrow down which events are fetched from Eventbrite.', 'the-events-calendar' ); $location_depends = '#tribe-ea-field-eventbrite_import_source'; $keyword_depends = '#tribe-ea-field-eventbrite_import_source'; $location_exclusions[] = 'https://www.eventbrite.com/me'; $keyword_exclusions[] = 'https://www.eventbrite.com/me'; // Only new events if ( empty( $record->meta['start'] ) ) { $record->meta['start'] = date_i18n( 'Y-m-d' ); } break; case 'ical': default: $depends = "#tribe-ea-field-{$origin_slug}_import_type"; $radius->help = __( 'Use the filters to narrow down which events are fetched from this iCalendar feed.', 'the-events-calendar' ); break; } /** * Allow filtering of origins excluded from refining EA results by keyword. * * @since 4.6.24 * * @param array $keyword_exclusions List of origins excluded. */ $keyword_exclusions = json_encode( apply_filters( 'tribe_events_aggregator_refine_keyword_exclusions', $keyword_exclusions ) ); /** * Allow filtering of origins excluded from refining EA results by location. * * @since 4.6.24 * * @param array $location_exclusions List of origins excluded. */ $location_exclusions = json_encode( apply_filters( 'tribe_events_aggregator_refine_location_exclusions', $location_exclusions ) ); ?> >
meta['start'] ) ? '' : $record->meta['start']; if ( is_numeric( $start ) ) { $start = date( Tribe__Date_Utils::DATEONLYFORMAT, $start ); } ?> data-validation-is-required data-validation-error="" >
aggregator/fields/schedule.php000064400000007055150514203270012447 0ustar00label = __( 'Schedule:', 'the-events-calendar' ); $week_days = []; for ( $i = 1; $i <= 7; $i++ ) { $week_days[] = [ 'id' => $i, 'text' => (string) date_i18n( 'l', strtotime( '31-12-2016 +' . $i . " day" ) ), ]; } $month_days = []; for ( $i = 1; $i <= 31; $i++ ) { $month_days[] = [ 'id' => $i, 'text' => (string) $i, ]; } ?> value="meta['schedule_time'] ) ? Tribe__Date_Utils::time_only( strtotime( $record->post->post_modified ) ) : $record->meta['schedule_time'] ); ?>" /> metabox/components/dropdown.php000064400000003010150514203270012726 0ustar00 $options Associative array of options for the dropdown. * @var array $attrs Associative array of attributes of the dropdown. */ ?>
metabox/compatibility/events-control-extension/mark-online.php000064400000004331150514203270020775 0ustar00 $fields Array of field values for marked online. * @var Tribe\Extensions\EventsControl\Metabox $metabox_id The metabox instance, as passed by the extension.. */ ?>

" data-condition-checked >

" name="" value="" type="url" class="components-text-control__input" >

metabox/event-status.php000064400000005174150514203270011364 0ustar00event_status ) ? '' : $event->event_status; /** * Allow filtering of the event statuses. * * @since 5.11.0 * * @param array An array of event statuses. * @param string $current_status The current event status for the event or empty string if none. */ $statuses = (array) apply_filters( 'tec_event_statuses', [], $current_status ); ?>
template( 'metabox/components/dropdown', [ 'label' => _x( 'Set status:', 'The label of the event status select.', 'the-events-calendar' ), 'id' => "{$metabox::$id}-status", 'name' => "{$metabox::$id}[status]", 'class' => 'tribe-events-status__status-select', 'options' => $statuses, 'selected' => $current_status, 'attrs' => [ 'data-placeholder' => _x( 'Select an Event Status', 'The placeholder for the event status select.', 'the-events-calendar' ), 'data-hide-search' => true, 'data-prevent-clear' => true, 'data-options' => json_encode( $statuses ), 'data-selected' => $current_status, ] ] ); ?>
" data-condition='["canceled", "postponed"]' >
tribe-options-addons-api.php000064400000013457150514203270012101 0ustar00settings()->get_url( [ 'tab' => 'addons' ] ); // if there's an Event Aggregator license key, add the Meetup.com API fields if ( get_option( 'pue_install_key_event_aggregator' ) ) { $missing_meetup_credentials = ! tribe( 'events-aggregator.settings' )->is_ea_authorized_for_meetup(); ob_start(); ?>
' . esc_html__( 'You need to connect to Meetup for Event Aggregator to work properly', 'the-events-calendar' ) . '

'; $meetup_button_label = __( 'Connect to Meetup', 'the-events-calendar' ); } else { $meetup_button_label = __( 'Refresh your connection to Meetup', 'the-events-calendar' ); $meetup_disconnect_label = __( 'Disconnect', 'the-events-calendar' ); $meetup_disconnect_url = tribe( 'events-aggregator.settings' )->build_disconnect_meetup_url( $current_url ); } ?>
[ 'type' => 'html', 'html' => '

' . esc_html__( 'Meetup', 'the-events-calendar' ) . '

', ], 'meetup-info-box' => [ 'type' => 'html', 'html' => '

' . esc_html__( 'You need to connect Event Aggregator to Meetup to import your events from Meetup.', 'the-events-calendar' ) . '

', ], 'meetup_token_button' => [ 'type' => 'html', 'html' => $meetup_token_html, ], ]; $internal = array_merge( $internal, $internal_meetup ); } /** * Show Eventbrite API Connection only if Eventbrite Plugin is Active or Event Aggregator license key has a license key */ if ( class_exists( 'Tribe__Events__Tickets__Eventbrite__Main' ) || get_option( 'pue_install_key_event_aggregator' ) ) { $missing_eb_credentials = ! tribe( 'events-aggregator.settings' )->is_ea_authorized_for_eb(); ob_start(); ?>
' . esc_html__( 'You need to connect to Eventbrite for Event Aggregator to work properly', 'the-events-calendar' ) . '

'; $eventbrite_button_label = __( 'Connect to Eventbrite', 'the-events-calendar' ); } else { $eventbrite_button_label = __( 'Refresh your connection to Eventbrite', 'the-events-calendar' ); $eventbrite_disconnect_label = __( 'Disconnect', 'the-events-calendar' ); $eventbrite_disconnect_url = tribe( 'events-aggregator.settings' )->build_disconnect_eventbrite_url( $current_url ); } ?>
[ 'type' => 'html', 'html' => '

' . esc_html__( 'Eventbrite', 'the-events-calendar' ) . '

', ], 'eb-info-box' => [ 'type' => 'html', 'html' => '

' . esc_html__( 'You need to connect Event Aggregator to Eventbrite to import your events from Eventbrite.', 'the-events-calendar' ) . '

', ], 'eb_token_button' => [ 'type' => 'html', 'html' => $eventbrite_token_html, ], ]; $internal = array_merge( $internal, $internal2 ); } $internal = apply_filters( 'tribe_addons_tab_fields', $internal ); $fields = array_merge( [ 'addons-box-start' => [ 'type' => 'html', 'html' => '
', ], 'addons-box-title' => [ 'type' => 'html', 'html' => '

' . esc_html__( 'Integrations', 'the-events-calendar' ) . '

', ], 'addons-box-description' => [ 'type' => 'html', 'html' => '

' . __( 'The Events Calendar and its add-ons integrate with other online tools and services to bring you additional features. Use the settings below to connect to third-party APIs and manage your integrations.', 'the-events-calendar' ) . '

', ], 'addons-box-end' => [ 'type' => 'html', 'html' => '
', ], 'addons-form-content-start' => [ 'type' => 'html', 'html' => '
', ], ], $internal, [ 'addons-form-content-end' => [ 'type' => 'html', 'html' => '
', ], ] ); /** * Allow developer to fully filter the Addons Tab contents * Following the structure of the arguments for a Tribe__Settings_Tab instance * * @var array */ $addons = apply_filters( 'tribe_addons_tab', [ 'priority' => 50, 'fields' => $fields, ] ); // Only create the Add-ons Tab if there is any if ( ! empty( $internal ) ) { new Tribe__Settings_Tab( 'addons', esc_html__( 'Integrations', 'the-events-calendar' ), $addons ); } widgets/events-list.php000064400000000714150514203270011201 0ustar00template( 'widgets/components/form' ); create-venue-fields.php000064400000023237150514203270011112 0ustar00defaults(); $_VenuePhone = $defaults->phone(); $_VenueURL = strip_tags( $defaults->url() ); $_VenueAddress = $defaults->address(); $_VenueCity = $defaults->city(); $_VenueProvince = $defaults->province(); $_VenueState = $defaults->state(); $_VenueCountry = $defaults->country(); $_VenueZip = $defaults->zip(); } else { $_VenuePhone = tribe_get_phone(); $_VenueURL = tribe_get_venue_website_url(); $_VenueAddress = tribe_get_address(); $_VenueCity = tribe_get_city(); $_VenueProvince = tribe_get_province(); $_VenueState = tribe_get_state(); $_VenueCountry = tribe_get_country(); $_VenueZip = tribe_get_zip(); } $google_map_link_toggle = get_post_meta( $post_id, '_EventShowMapLink', true ); $google_map_toggle = tribe_embed_google_map( $post_id ); //If we just saved use those values from $_POST } elseif ( ! empty( $_POST ) ) { // Special compatibility for array values of these fields, which happens on Community Events submission form. if ( isset( $_POST['community-event'] ) && ! empty( $_POST['community-event'] ) ) { $venue_name = isset( $_POST['venue']['Venue'] ) ? esc_attr( $_POST['venue']['Venue'][0] ) : ''; $_VenuePhone = isset( $_POST['venue']['Phone'] ) ? esc_attr( $_POST['venue']['Phone'][0] ) : ''; $_VenueURL = isset( $_POST['venue']['URL'] ) ? esc_attr( $_POST['venue']['URL'][0] ) : ''; $_VenueAddress = isset( $_POST['venue']['Address'] ) ? esc_attr( $_POST['venue']['Address'][0] ) : ''; $_VenueCity = isset( $_POST['venue']['City'] ) ? esc_attr( $_POST['venue']['City'][0] ) : ''; $_VenueProvince = isset( $_POST['venue']['Province'] ) ? esc_attr( $_POST['venue']['Province'][0] ) : ''; $_VenueCountry = isset( $_POST['venue']['Country'] ) ? esc_attr( $_POST['venue']['Country'][0] ) : ''; $_VenueZip = isset( $_POST['venue']['Zip'] ) ? esc_attr( $_POST['venue']['Zip'][0] ) : ''; // "Normal" case, when not on Community Events submission form, in which case these fields are strings. } else { $venue_name = isset( $_POST['venue']['Venue'] ) ? esc_attr( $_POST['venue']['Venue'] ) : ''; $_VenuePhone = isset( $_POST['venue']['Phone'] ) ? esc_attr( $_POST['venue']['Phone'] ) : ''; $_VenueURL = isset( $_POST['venue']['URL'] ) ? esc_attr( $_POST['venue']['URL'] ) : ''; $_VenueAddress = isset( $_POST['venue']['Address'] ) ? esc_attr( $_POST['venue']['Address'] ) : ''; $_VenueCity = isset( $_POST['venue']['City'] ) ? esc_attr( $_POST['venue']['City'] ) : ''; $_VenueProvince = isset( $_POST['venue']['Province'] ) ? esc_attr( $_POST['venue']['Province'] ) : ''; $_VenueCountry = isset( $_POST['venue']['Country'] ) ? esc_attr( $_POST['venue']['Country'] ) : ''; $_VenueZip = isset( $_POST['venue']['Zip'] ) ? esc_attr( $_POST['venue']['Zip'] ) : ''; } $_VenueState = isset( $_POST['venue']['State'] ) ? esc_attr( $_POST['venue']['State'] ) : ''; $google_map_link_toggle = isset( $_POST['EventShowMapLink'] ) ? esc_attr( $_POST['EventShowMapLink'] ) : ''; $google_map_toggle = isset( $_POST['EventShowMap'] ) ? esc_attr( $_POST['EventShowMap'] ) : ''; } ?> ' aria-label="" /> ' aria-label="" /> ID ); if ( isset( $_VenueCountry ) && $_VenueCountry ) { $current = $_VenueCountry; } else { $current = null; } if ( is_array( $current ) && isset( $current[1] ) ) { $current = $current[1]; } ?> ' aria-label="" /> ' aria-label="" /> ' aria-label="" /> ' aria-label="" /> ID ) || get_post_status( $post->ID ) == 'auto-draft' ) ? true : false; $google_map_link_toggle = ( get_post_status( $post->ID ) == 'auto-draft' && $google_map_toggle ) ? true : get_post_meta( $post->ID, '_EventShowMapLink', true ); // Only show if embed option selected. if ( tribe_get_option( 'embedGoogleMaps', true ) ) : ?> aria-label="" /> aria-label="" /> ) that contains 2 cells (s) * * @param WP_Post $post if editing an event, the event currently being edited; * if editing an organizer, the organizer currently being edited */ do_action( 'tribe_events_organizer_before_metabox', $post ); ?> ' /> ' /> ' /> ' /> ) that contains 2 cells (s) * * @param WP_Post $post if editing an event, the event currently being edited; * if editing an organizer, the organizer currently being edited */ do_action( 'tribe_events_organizer_after_metabox', $post ); ?> admin-update-message.php000064400000006331150514203270011251 0ustar00

get_changelog() as $section => $messages ): if ( empty( $messages ) ) { continue; } ?>

', '' ); ?>

', '' ); ?>




tribe-options-timezones.php000064400000004073150514203270012071 0ustar00settings()->get_url() ), 'timezone-settings' ) ); $enable_button_text = esc_html__( 'Update Time Zone Data', 'the-events-calendar' ); $enable_button_help = sprintf( __( 'Click this button to update your database and take advantage of additional time zone capabilities. Please configure WordPress to use the correct time zone before clicking this button!', 'the-events-calendar' ), esc_url( get_admin_url( null, 'options-general.php' ) ) ); $enable_button_html = << $enable_button_label
$enable_button_text

$enable_button_help

HTML; return [ 'tribe_events_enable_timezones' => [ 'type' => 'html', 'html' => $enable_button_html, ], 'tribe_events_timezones_show_zone' => [ 'type' => 'checkbox_bool', 'label' => esc_html__( 'Show time zone', 'the-events-calendar' ), 'tooltip' => esc_html__( 'Appends the time zone to the end of event scheduling information – this can be useful when you have events in numerous different time zones.', 'the-events-calendar' ), 'default' => false, 'validation_type' => 'boolean', ], 'tribe_events_timezone_mode' => [ 'type' => 'dropdown', 'label' => esc_html__( 'Time zone mode', 'the-events-calendar' ), 'validation_type' => 'options', 'size' => 'large', 'options' => [ 'event' => esc_html__( 'Use manual time zones for each event', 'the-events-calendar' ), 'site' => esc_html__( 'Use the site-wide time zone everywhere', 'the-events-calendar' ), ], ], ]; no-comments.php000064400000000050150514203270007506 0ustar00

">

tribe-options-display.php000064400000053126150514203270011524 0ustar00 esc_html__( 'Default Events Template', 'the-events-calendar' ), 'default' => esc_html__( 'Default Page Template', 'the-events-calendar' ), ]; $templates = get_page_templates(); ksort( $templates ); foreach ( array_keys( $templates ) as $template ) { $template_options[ $templates[ $template ] ] = $template; } $tribe_enable_views_tooltip = esc_html__( 'You must select at least one view.', 'the-events-calendar' ); if ( $ecp && tribe_is_using_basic_gmaps_api() ) { $tribe_enable_views_tooltip .= ' ' . sprintf( __( 'Please note that you are using The Events Calendar\'s default Google Maps API key, which will limit the Map View\'s functionality. Visit the Integrations Settings page to learn more and add your own Google Maps API key.', 'the-events-calendar' ), Tribe__Events__Main::POSTTYPE ); } $posts_per_page_tooltip = ! class_exists( 'Tribe__Events__Pro__Main', false ) ? esc_html__( 'The number of events per page on the List View. Does not affect other views.', 'the-events-calendar' ) : esc_html__( 'The number of events per page on the List, Photo, and Map Views. Does not affect other views.', 'the-events-calendar' ); // Begin Settings content - header section. $tec_events_display_fields = [ 'info-start' => [ 'type' => 'html', 'html' => '
', ], 'info-box-title' => [ 'type' => 'html', 'html' => '

' . __( 'Display Settings', 'Display settings tab header', 'the-events-calendar' ) . '

', ], 'info-box-description' => [ 'type' => 'html', 'html' => '

' . __( 'The settings below control the display of your calendar. If things don\'t look right, try switching between the two style sheet options or pick a page template from your theme (not available on block themes). ', 'the-events-calendar' ) . sprintf( /* Translators: %s: URL to knowledgebase. Please continue to use % for % to avoid PHP warnings. */ __( ' Check out our customization guide for instructions on template modifications.', 'the-events-calendar' ), esc_url( 'https://evnt.is/1bbs' ) ) . '

', ], 'info-end' => [ 'type' => 'html', 'html' => '
', ], ]; // Add the TOC $tec_events_general_toc = [ 'tec-events-settings-display-toc-nav-start' => [ 'type' => 'html', 'html' => '
', ], 'tec-events-settings-display-toc-start' => [ 'type' => 'html', 'html' => '', ], 'tec-events-settings-display-toc-nav-end' => [ 'type' => 'html', 'html' => '
', ], ]; $tec_events_display_fields += $tec_events_general_toc; // Start the form content wrapper. $tec_events_general_form_end = [ 'tribe-form-content-start' => [ 'type' => 'html', 'html' => '
', ], ]; $tec_events_display_fields += $tec_events_general_form_end; // Insert Basic Template settings. $tec_events_display_template = [ 'tribe-events-calendar-display-title' => [ 'type' => 'html', 'html' => '

' . __( 'Calendar Display', 'Calendar display settings section header', 'the-events-calendar' ) . '

', ], 'stylesheetOption' => [ 'type' => 'html'], 'stylesheet_mode' => [ 'type' => 'radio', 'label' => __( 'Default stylesheet used for events templates', 'the-events-calendar' ), 'default' => 'tribe', 'options' => [ 'skeleton' => __( 'Skeleton Styles', 'the-events-calendar' ) . '

' . __( 'Only includes enough css to achieve complex layouts like calendar and week view.', 'the-events-calendar' ) .'

', 'tribe' => __( 'Default Styles', 'the-events-calendar' ) . '

' . __( 'A fully designed and styled theme for your events pages.', 'the-events-calendar' ) . '

', ], 'validation_type' => 'options', ], 'tribeEventsTemplate' => [ 'type' => 'dropdown', 'label' => __( 'Events template', 'the-events-calendar' ), 'tooltip' => __( 'Choose a page template to control the appearance of your calendar and event content.', 'the-events-calendar' ), 'validation_type' => 'options', 'size' => 'small', 'default' => 'default', 'options' => $template_options, 'conditional' => ( ! tec_is_full_site_editor() ), ], 'tribeEnableViews' => [ 'type' => 'checkbox_list', 'label' => __( 'Enable event views', 'the-events-calendar' ), 'tooltip' => $tribe_enable_views_tooltip, 'default' => array_keys( tribe( Manager::class )->get_publicly_visible_views() ), 'options' => array_map( static function( $view ) { return tribe( Manager::class )->get_view_label_by_class( $view ); }, tribe( Manager::class )->get_publicly_visible_views( false ) ), 'validation_type' => 'options_multi', ], 'viewOption' => [ 'type' => 'dropdown', 'label' => __( 'Default view', 'the-events-calendar' ), 'validation_type' => 'not_empty', 'size' => 'small', 'default' => 'month', 'options' => array_map( static function( $view ) { return tribe( Manager::class )->get_view_label_by_class( $view ); }, tribe( Manager::class )->get_publicly_visible_views() ), ], 'monthEventAmount' => [ 'type' => 'text', 'label' => __( 'Month view events per day', 'the-events-calendar' ), 'tooltip' => sprintf( __( 'Change the default 3 events per day in month view. To impose no limit, you may specify -1. Please note there may be performance issues if you allow too many events per day. Read more.', 'the-events-calendar' ), 'https://evnt.is/rh' ), 'validation_type' => 'int', 'size' => 'small', 'default' => '3', ], 'postsPerPage' => [ 'type' => 'text', 'label' => esc_html__( 'Number of events to show per page', 'the-events-calendar' ), 'tooltip' => $posts_per_page_tooltip, 'size' => 'small', 'default' => tribe_events_views_v2_is_enabled() ? 12 : get_option( 'posts_per_page' ), 'validation_type' => 'positive_int', ], 'showComments' => [ 'type' => 'checkbox_bool', 'label' => esc_html__( 'Show comments', 'the-events-calendar' ), 'tooltip' => esc_html__( 'Enable comments on event pages.', 'the-events-calendar' ), 'default' => false, 'validation_type' => 'boolean', ], 'tribeDisableTribeBar' => [ 'type' => 'checkbox_bool', 'label' => __( 'Disable the event search bar', 'the-events-calendar' ), 'tooltip' => __( 'Hide the search field on all views.', 'the-events-calendar' ), 'default' => false, 'validation_type' => 'boolean', ], ]; $tec_events_display_fields += $tec_events_display_template; $sample_date = strtotime( 'January 15 ' . date( 'Y' ) ); // Date Format Settings. $tec_events_date_fields = [ 'tribeEventsDateFormatSettingsTitle' => [ 'type' => 'html', 'html' => '

' . esc_html__( 'Date & Time', 'Date and Time settings section header', 'tribe-common' ) . '

', ], 'tribeEventsDateFormatExplanation' => [ 'type' => 'html', 'html' => '

' . sprintf( __( 'The following three fields accept the date format options available to the PHP %1$s function. Learn how to make your own date format here.', 'tribe-common' ), 'date()', 'https://wordpress.org/support/article/formatting-date-and-time/' ) . '

', ], 'dateWithYearFormat' => [ 'type' => 'text', 'label' => esc_html__( 'Date with year format', 'the-events-calendar' ), 'tooltip' => sprintf( esc_html__( 'Enter the format to use for displaying dates with the year. Used when showing an event from a future year. Example: %1$s', 'the-events-calendar' ), date( tribe_get_option( 'dateWithYearFormat', get_option( 'date_format', 'F j, Y' ) ), $sample_date ) ), 'default' => get_option( 'date_format' ), 'size' => 'medium', 'validation_type' => 'not_empty', ], 'dateWithoutYearFormat' => [ 'type' => 'text', 'label' => esc_html__( 'Date without year format', 'the-events-calendar' ), 'tooltip' => sprintf( esc_html__( 'Enter the format to use for displaying dates without a year. Used when showing an event from the current year. Example: %1$s', 'the-events-calendar' ), date( tribe_get_option( 'dateWithoutYearFormat', 'F j' ), $sample_date ) ), 'default' => 'F j', 'size' => 'medium', 'validation_type' => 'not_empty', ], 'monthAndYearFormat' => [ 'type' => 'text', 'label' => esc_html__( 'Month and year format', 'the-events-calendar' ), 'tooltip' => sprintf( esc_html__( 'Enter the format to use for dates that show a month and year only. Used on month view. Example: %1$s', 'the-events-calendar' ), date( tribe_get_option( 'monthAndYearFormat', 'F Y' ), $sample_date ) ), 'default' => 'F Y', 'size' => 'medium', 'validation_type' => 'not_empty', ], 'datepickerFormat' => [ 'type' => 'dropdown', 'label' => esc_html__( 'Compact date format', 'tribe-common' ), 'tooltip' => esc_html__( 'Select the date format used for elements with minimal space, such as in datepickers.', 'tribe-common' ), 'default' => 1, 'options' => [ '0' => date( 'Y-m-d', $sample_date ), '1' => date( 'n/j/Y', $sample_date ), '2' => date( 'm/d/Y', $sample_date ), '3' => date( 'j/n/Y', $sample_date ), '4' => date( 'd/m/Y', $sample_date ), '5' => date( 'n-j-Y', $sample_date ), '6' => date( 'm-d-Y', $sample_date ), '7' => date( 'j-n-Y', $sample_date ), '8' => date( 'd-m-Y', $sample_date ), '9' => date( 'Y.m.d', $sample_date ), '10' => date( 'm.d.Y', $sample_date ), '11' => date( 'd.m.Y', $sample_date ), ], 'validation_type' => 'options', ], 'dateTimeSeparator' => [ 'type' => 'text', 'label' => esc_html__( 'Date time separator', 'the-events-calendar' ), 'tooltip' => esc_html__( 'Enter the separator that will be placed between the date and time, when both are shown.', 'the-events-calendar' ), 'default' => ' @ ', 'size' => 'small', 'validation_type' => 'html', ], 'timeRangeSeparator' => [ 'type' => 'text', 'label' => esc_html__( 'Time range separator', 'the-events-calendar' ), 'tooltip' => esc_html__( 'Enter the separator that will be used between the start and end time of an event.', 'the-events-calendar' ), 'default' => ' - ', 'size' => 'small', 'validation_type' => 'html', ], 'multiDayCutoff' => [ 'type' => 'dropdown', 'label' => esc_html__( 'End of day cutoff', 'the-events-calendar' ), 'tooltip' => __( "Have an event that runs past midnight? Select a time after that event's end to avoid showing the event on the next day's calendar.", 'the-events-calendar' ), 'validation_type' => 'options', 'size' => 'small', 'default' => date_i18n( $site_time_format, strtotime( '12:00 am' ) ), 'options' => [ '00:00' => date_i18n( $site_time_format, strtotime( '12:00 am' ) ), '01:00' => date_i18n( $site_time_format, strtotime( '01:00 am' ) ), '02:00' => date_i18n( $site_time_format, strtotime( '02:00 am' ) ), '03:00' => date_i18n( $site_time_format, strtotime( '03:00 am' ) ), '04:00' => date_i18n( $site_time_format, strtotime( '04:00 am' ) ), '05:00' => date_i18n( $site_time_format, strtotime( '05:00 am' ) ), '06:00' => date_i18n( $site_time_format, strtotime( '06:00 am' ) ), '07:00' => date_i18n( $site_time_format, strtotime( '07:00 am' ) ), '08:00' => date_i18n( $site_time_format, strtotime( '08:00 am' ) ), '09:00' => date_i18n( $site_time_format, strtotime( '09:00 am' ) ), '10:00' => date_i18n( $site_time_format, strtotime( '10:00 am' ) ), '11:00' => date_i18n( $site_time_format, strtotime( '11:00 am' ) ), ], ], ]; $tec_events_display_fields += $tec_events_date_fields; $is_missing_event_tickets_plus = ! defined( 'EVENT_TICKETS_PLUS_FILE' ); $should_hide_upsell = tec_should_hide_upsell(); // Insert Currency settings. $tec_events_display_currency = [ 'tribe-events-currency-title' => [ 'type' => 'html', 'html' => '

' . esc_html__( 'Currency', 'Currency settings section header', 'the-events-calendar' ) . '

', ], 'tec-tickets-infobox-start' => [ 'type' => 'html', 'html' => '
', 'conditional' => $is_missing_event_tickets_plus && ! $should_hide_upsell, ], 'tec-tickets-infobox-logo' => [ 'type' => 'html', 'html' => '', 'conditional' => $is_missing_event_tickets_plus && ! $should_hide_upsell, ], 'tec-tickets-infobox-title' => [ 'type' => 'html', 'html' => '

' . __( 'Start selling tickets to your events', 'the-events-calendar' ) . '

', 'conditional' => $is_missing_event_tickets_plus && ! $should_hide_upsell, ], /* @TODO: This is placeholder text! */ 'tec-tickets-infobox-content' => [ 'type' => 'html', 'html' => '

' . __( 'Get Event Tickets to manage attendee registration and ticket sales to your events, for free.', 'the-events-calendar' ) . '

', 'conditional' => $is_missing_event_tickets_plus && ! $should_hide_upsell, ], 'tec-tickets-infobox-link' => [ 'type' => 'html', 'html' => '' . __( 'Learn more.', 'the-events-calendar' ) . '', 'conditional' => $is_missing_event_tickets_plus && ! $should_hide_upsell, ], 'tec-tickets-infobox-end' => [ 'type' => 'html', 'html' => '
', 'conditional' => $is_missing_event_tickets_plus && ! $should_hide_upsell, ], 'defaultCurrencySymbol' => [ 'type' => 'text', 'label' => esc_html__( 'Default currency symbol', 'the-events-calendar' ), 'tooltip' => esc_html__( 'Set the default currency symbol for event costs. Note that this only impacts future events, and changes made will not apply retroactively.', 'the-events-calendar' ), 'validation_type' => 'textarea', 'size' => 'small', 'default' => '$', ], 'defaultCurrencyCode' => [ 'type' => 'text', 'label' => esc_html__( 'Default currency code', 'the-events-calendar' ), 'tooltip' => esc_html__( 'Set the default currency ISO-4217 code for event costs. This is a three-letter code and is mainly used for data/SEO purposes.', 'the-events-calendar' ), 'validation_type' => 'textarea', 'size' => 'small', 'default' => 'USD', 'attributes' => [ 'minlength' => 3, 'maxlength' => 3, 'placeholder' => __( 'USD', 'the-events-calendar' ), ], ], 'reverseCurrencyPosition' => [ 'type' => 'checkbox_bool', 'label' => esc_html__( 'Currency symbol follows value', 'the-events-calendar' ), 'tooltip' => esc_html__( 'The currency symbol normally precedes the value. Enabling this option positions the symbol after the value.', 'the-events-calendar' ), 'default' => false, 'validation_type' => 'boolean', ], ]; $tec_events_display_fields += $tec_events_display_currency; // Insert Map settings. $tec_events_display_maps = [ 'tribe-google-maps-settings-title' => [ 'type' => 'html', 'html' => '

' . esc_html__( 'Maps', 'Map settings section header', 'the-events-calendar' ) . '

', ], 'tec-maps-infobox-start' => [ 'type' => 'html', 'html' => '
' ], 'tec-maps-infobox-title' => [ 'type' => 'html', 'html' => '

' . __( 'Advanced Google Maps functionality', 'the-events-calendar' ) . '

', ], /* @TODO: The link i this and the next section should probably be different. */ 'tec-maps-infobox-content' => [ 'type' => 'html', 'html' => sprintf( /* Translators: %1$s - opening paragraph tag, %2$s - opening anchor tag, %3$s - closing anchor tag, %4$s - closing paragraph tag */ __( '%1$sThe Events Calendar comes with a default API key for basic maps functionality. If you’d like to use more advanced features like custom map pins or dynamic map loads, you’ll need to get your own %2$sGoogle Maps API key%3$s.%4$s', 'the-events-calendar' ), '

', '', '', '

' ), ], 'tec-maps-infobox-end' => [ 'type' => 'html', 'html' => '
' ], 'embedGoogleMaps' => [ 'type' => 'checkbox_bool', 'label' => esc_html__( 'Enable Maps', 'the-events-calendar' ), 'tooltip' => esc_html__( 'Check to enable maps for events and venues.', 'the-events-calendar' ), 'default' => true, 'class' => 'google-embed-size', 'validation_type' => 'boolean', ], 'embedGoogleMapsZoom' => [ 'type' => 'text', 'label' => esc_html__( 'Google Maps default zoom level', 'the-events-calendar' ), 'tooltip' => esc_html__( '0 = zoomed out; 21 = zoomed in.', 'the-events-calendar' ), 'size' => 'small', 'default' => 10, 'class' => 'google-embed-field', 'validation_type' => 'number_or_percent', ], ]; $tec_events_display_fields += $tec_events_display_maps; // Insert Advanced Template settings. $tec_events_display_advanced = [ 'tribe-events-advanced-settings-title' => [ 'type' => 'html', 'html' => '

' . esc_html__( 'Additional Content', 'Additional content settings section header', 'the-events-calendar' ) . '

', ], 'tribeEventsBeforeHTML' => [ 'type' => 'wysiwyg', 'label' => esc_html__( 'Add HTML before event content', 'the-events-calendar' ), 'tooltip' => esc_html__( 'If you are familiar with HTML, you can add additional code before the event template. Some themes may require this to help with styling or layout.', 'the-events-calendar' ), 'validation_type' => 'html', ], 'tribeEventsAfterHTML' => [ 'type' => 'wysiwyg', 'label' => esc_html__( 'Add HTML after event content', 'the-events-calendar' ), 'tooltip' => esc_html__( 'If you are familiar with HTML, you can add additional code after the event template. Some themes may require this to help with styling or layout.', 'the-events-calendar' ), 'validation_type' => 'html', ], ]; $tec_events_display_fields += $tec_events_display_advanced; // Close the form content wrapper. $tec_events_display_fields += [ 'tribe-form-content-end' => [ 'type' => 'html', 'html' => '
', ] ]; /** * Filter the fields available on the display settings tab * * @param array $fields a nested associative array of fields & field info passed to Tribe__Field * * @see Tribe__Field */ $tec_events_display_fields = apply_filters( 'tec_events_display_settings_tab_fields', $tec_events_display_fields ); $tec_events_display_tab = [ 'priority' => 10, 'fields' => $tec_events_display_fields, ]; privacy.php000064400000013266150514203270006741 0ustar00

linked-post-meta-box.php000064400000004156150514203270011225 0ustar00post_type ); $linked_post_name = tribe_get_linked_post_name_field_index( $this->post_type ); $linked_post_name_field = "{$linked_post_container}[{$linked_post_name}][]"; ?> updates/6.0.0.php000064400000021515150514203270007366 0ustar00get_url(); ?>
<?php esc_attr_e( 'Shapes and lines for visual interest', 'the-events-calendar' ); ?>

render( 'events-legacy-views-updated', tribe( Tribe\Events\Admin\Notice\Legacy_Views_Updated::class )->notice() ); echo $notices->render( 'event-update-6-0', tribe( 'tec.admin.notice.update' )->notice() ); ?>

release notes to learn more.', 'the-events-calendar' ), [ 'a' => [ 'href' => [] ] ] ), esc_url( 'https://theeventscalendar.com/category/release-notes/' ) ); ?>

migrate to the new data storage system so you can take advantage of the improved performance.', 'the-events-calendar' ), [ 'a' => [ 'href' => [] ] ] ), esc_url( 'https://evnt.is/1b79' ) ); ?>

<?php esc_attr_e( 'Lightening bolt icon', 'the-events-calendar' ); ?>

<?php esc_attr_e( 'Event series graphic', 'the-events-calendar' ); ?>
<?php esc_attr_e( 'Event series graphic', 'the-events-calendar' ); ?>

<?php esc_attr_e( 'Event series graphic', 'the-events-calendar' ); ?>

<?php esc_attr_e( 'Event series graphic', 'the-events-calendar' ); ?>

Events Calendar Pro to unlock these features.', 'the-events-calendar' ), [ 'a' => [ 'href' => [] ] ] ), esc_url( 'https://theeventscalendar.com/products/wordpress-events-calendar/' ) ); ?>

<?php esc_attr_e( 'Light bulb icon', 'the-events-calendar' ); ?>