The Events Calendar - Version 4.5.1

Version Description

= [4.3] =

Please see the changelog for the complete list of changes in this release. Remember to always make a backup of your database and files before updating!

Download this release

Release Info

Developer barry.hughes
Plugin Icon The Events Calendar
Version 4.5.1
Comparing to
See all releases

Code changes from version 4.5.0.2 to 4.5.1

common/src/Tribe/Autoloader.php CHANGED
@@ -59,6 +59,13 @@
59
  */
60
  protected $prefixes;
61
 
 
 
 
 
 
 
 
62
  /**
63
  * The string acting as a directory separator in a class name.
64
  *
@@ -109,14 +116,19 @@
109
  * @param string $prefix A class prefix, e.g. `Tribe__Admin__`
110
  * @param string $root_dir The absolute path to the dir containing
111
  * the prefixed classes.
 
112
  */
113
- public function register_prefix( $prefix, $root_dir ) {
114
  $root_dir = $this->normalize_root_dir( $root_dir );
115
 
116
  if ( ! isset( $this->prefixes[ $prefix ] ) ) {
117
  $this->prefixes[ $prefix ] = array();
118
  }
119
  $this->prefixes[ $prefix ][] = $root_dir;
 
 
 
 
120
  }
121
 
122
  /**
@@ -209,6 +221,24 @@
209
  return $fallback_path ? $fallback_path : '';
210
  }
211
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
212
  /**
213
  * Adds a folder to search for classes that were not found among
214
  * the prefixed ones.
59
  */
60
  protected $prefixes;
61
 
62
+ /**
63
+ * An array of registered prefixes with unique slugs.
64
+ *
65
+ * @var string[]
66
+ */
67
+ protected $prefix_slugs;
68
+
69
  /**
70
  * The string acting as a directory separator in a class name.
71
  *
116
  * @param string $prefix A class prefix, e.g. `Tribe__Admin__`
117
  * @param string $root_dir The absolute path to the dir containing
118
  * the prefixed classes.
119
+ * @param string $slug An optional unique slug to associate to the prefix.
120
  */
121
+ public function register_prefix( $prefix, $root_dir, $slug = '' ) {
122
  $root_dir = $this->normalize_root_dir( $root_dir );
123
 
124
  if ( ! isset( $this->prefixes[ $prefix ] ) ) {
125
  $this->prefixes[ $prefix ] = array();
126
  }
127
  $this->prefixes[ $prefix ][] = $root_dir;
128
+
129
+ if ( $slug ) {
130
+ $this->prefix_slugs[ $slug ] = $prefix;
131
+ }
132
  }
133
 
134
  /**
221
  return $fallback_path ? $fallback_path : '';
222
  }
223
 
224
+ /**
225
+ * Get the registered prefix by slug
226
+ *
227
+ * @param string $slug Unique slug for registered prefix.
228
+ *
229
+ * @return false|string Either the prefix registered to the
230
+ * unique slug or false if not found.
231
+ */
232
+ public function get_prefix_by_slug( $slug ) {
233
+ $prefix = false;
234
+
235
+ if ( isset( $this->prefix_slugs[ $slug ] ) ) {
236
+ $prefix = $this->prefix_slugs[ $slug ];
237
+ }
238
+
239
+ return $prefix;
240
+ }
241
+
242
  /**
243
  * Adds a folder to search for classes that were not found among
244
  * the prefixed ones.
common/src/Tribe/Log/File_Logger.php CHANGED
@@ -64,6 +64,11 @@ class Tribe__Log__File_Logger implements Tribe__Log__Logger {
64
  touch( $this->log_file );
65
  }
66
 
 
 
 
 
 
67
  if ( is_readable( $this->log_file ) ) {
68
  $this->handle = fopen( $this->log_file, $this->context );
69
  }
64
  touch( $this->log_file );
65
  }
66
 
67
+ // Bail if we're attempting to write but don't have permission.
68
+ if ( 'r' !== $this->context && ! is_writable( $this->log_file ) ) {
69
+ return;
70
+ }
71
+
72
  if ( is_readable( $this->log_file ) ) {
73
  $this->handle = fopen( $this->log_file, $this->context );
74
  }
common/src/Tribe/Main.php CHANGED
@@ -17,7 +17,7 @@ class Tribe__Main {
17
  const OPTIONNAME = 'tribe_events_calendar_options';
18
  const OPTIONNAMENETWORK = 'tribe_events_calendar_network_options';
19
 
20
- const VERSION = '4.5.0.1';
21
  const FEED_URL = 'https://theeventscalendar.com/feed/';
22
 
23
  protected $plugin_context;
17
  const OPTIONNAME = 'tribe_events_calendar_options';
18
  const OPTIONNAMENETWORK = 'tribe_events_calendar_network_options';
19
 
20
+ const VERSION = '4.5.1';
21
  const FEED_URL = 'https://theeventscalendar.com/feed/';
22
 
23
  protected $plugin_context;
common/src/Tribe/PUE/Checker.php CHANGED
@@ -21,13 +21,6 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
21
  */
22
  class Tribe__PUE__Checker {
23
 
24
- /**
25
- * The URL of the plugin's metadata file.
26
- *
27
- * @var string
28
- */
29
- private $pue_update_url = '';
30
-
31
  /**
32
  * Plugin filename relative to the plugins directory.
33
  *
@@ -56,6 +49,13 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
56
  */
57
  private $slug = '';
58
 
 
 
 
 
 
 
 
59
  /**
60
  * Used to hold the query variables for download checks
61
  *
@@ -87,13 +87,6 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
87
  */
88
  public $pue_option_name = '';
89
 
90
- /**
91
- * used to hold the user API. If not set then nothing will work!
92
- *
93
- * @var string
94
- */
95
- public $api_secret_key = '';
96
-
97
  /**
98
  * used to hold the install_key if set (included here for addons that will extend PUE to use install key checks)
99
  *
@@ -140,10 +133,24 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
140
  */
141
  public $plugin_notice;
142
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
143
  /**
144
  * Class constructor.
145
  *
146
- * @param string $pue_update_url The URL of the plugin's metadata file.
147
  * @param string $slug The plugin's 'slug'.
148
  * @param array $options {
149
  * Contains any options that need to be set in the class initialization for construct.
@@ -160,7 +167,6 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
160
  */
161
  public function __construct( $pue_update_url, $slug = '', $options = array(), $plugin_file = '' ) {
162
  $this->set_slug( $slug );
163
- $this->set_pue_update_url( $pue_update_url );
164
  $this->set_plugin_file( $plugin_file );
165
  $this->set_options( $options );
166
  $this->hooks();
@@ -178,7 +184,7 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
178
  // Check for updates when the WP updates are checked and inject our update if needed.
179
  // Only add filter if the TRIBE_DISABLE_PUE constant is not set as true and where
180
  // the context is not 'service'
181
- if ( ( ! defined( 'TRIBE_DISABLE_PUE' ) || TRIBE_DISABLE_PUE !== true ) && 'service' !== $this->context ) {
182
  add_filter( 'pre_set_site_transient_update_plugins', array( $this, 'check_for_updates' ) );
183
  }
184
 
@@ -187,10 +193,9 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
187
  add_action( 'tribe_settings_after_content_tab_licenses', array( $this, 'do_license_key_javascript' ) );
188
  add_action( 'tribe_settings_success_message', array( $this, 'do_license_key_success_message' ), 10, 2 );
189
  add_action( 'load-plugins.php', array( $this, 'remove_default_inline_update_msg' ), 50 );
190
- add_action( 'update_option_' . $this->pue_install_key, array( $this, 'check_for_api_key_error' ), 10, 2 );
191
- add_action( 'update_site_option_' . $this->pue_install_key, array( $this, 'check_for_api_key_error' ), 10, 2 );
192
 
193
  // Key validation
 
194
  add_action( 'wp_ajax_pue-validate-key_' . $this->get_slug(), array( $this, 'ajax_validate_key' ) );
195
  add_filter( 'tribe-pue-install-keys', array( $this, 'return_install_key' ) );
196
  add_action( 'admin_enqueue_scripts', array( $this, 'maybe_display_json_error_on_plugins_page' ), 1 );
@@ -229,18 +234,17 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
229
  * @return string
230
  */
231
  public function get_pue_update_url() {
232
- return apply_filters( 'pue_get_update_url', $this->pue_update_url, $this->get_slug() );
233
- }
234
 
235
- /**
236
- * Set the PUE update URL
237
- *
238
- * This can be overridden using the global constant 'PUE_UPDATE_URL'
239
- *
240
- * @param string $pue_update_url
241
- */
242
- private function set_pue_update_url( $pue_update_url ) {
243
- $this->pue_update_url = ( defined( 'PUE_UPDATE_URL' ) ) ? trailingslashit( PUE_UPDATE_URL ) : trailingslashit( $pue_update_url );
244
  }
245
 
246
  /**
@@ -286,7 +290,7 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
286
  }
287
 
288
  // Prevents get_plugins from throwing a weird notice
289
- if ( ! file_exists( WP_PLUGIN_DIR . '/' . $this->get_plugin_file() ) ) {
290
  return;
291
  }
292
 
@@ -320,7 +324,6 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
320
  $options, array(
321
  'pue_option_name' => 'external_updates-' . $this->get_slug(),
322
  'apikey' => '',
323
- 'installkey' => false,
324
  'check_period' => 12,
325
  'context' => 'component',
326
  )
@@ -328,15 +331,8 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
328
 
329
  $this->pue_option_name = $options['pue_option_name'];
330
  $this->check_period = (int) $options['check_period'];
331
- $this->api_secret_key = $options['apikey'];
332
  $this->context = $options['context'];
333
 
334
- if ( isset( $options['installkey'] ) && $options['installkey'] ) {
335
- $this->install_key = trim( $options['installkey'] );
336
- } else {
337
- $this->install_key = trim( $this->get_option( $this->pue_install_key ) );
338
- }
339
-
340
  }
341
 
342
  /**
@@ -352,22 +348,26 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
352
  return;
353
  }
354
 
355
- //download query flag
356
- $this->download_query['pu_get_download'] = 1;
357
 
358
- //include current version
359
- if ( $version = $this->get_installed_version() ) {
360
- $this->download_query['pue_active_version'] = $version;
361
- }
362
 
363
- //the following is for install key inclusion (will apply later with PUE addons.)
364
- if ( isset( $this->install_key ) ) {
365
- $this->download_query['pu_install_key'] = $this->install_key;
366
- }
367
 
368
- if ( ! empty( $this->api_secret_key ) ) {
369
- $this->download_query['pu_plugin_api'] = $this->api_secret_key;
370
- }
 
 
 
 
 
 
 
 
 
371
 
372
  }
373
 
@@ -384,6 +384,79 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
384
  return apply_filters( 'pue_get_download_query', $this->download_query, $this->get_slug() );
385
  }
386
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
387
 
388
  /********************** General Functions **********************/
389
 
@@ -432,6 +505,7 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
432
  'size' => 'large',
433
  'validation_type' => 'license_key',
434
  'label' => sprintf( esc_attr__( 'License Key', 'tribe-common' ) ),
 
435
  'tooltip' => $no_license_tooltip,
436
  'parent_option' => false,
437
  'network_option' => true,
@@ -442,12 +516,13 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
442
  'size' => 'large',
443
  'validation_type' => 'license_key',
444
  'label' => sprintf( esc_attr__( 'License Key', 'tribe-common' ) ),
 
445
  'tooltip' => $no_license_tooltip,
446
  'parent_option' => false,
447
  'network_option' => false,
448
  );
449
  } elseif ( $this->should_show_overrideable_license() ) {
450
- $to_insert[ $this->pue_install_key. '-state' ] = array(
451
  'type' => 'html',
452
  'label' => sprintf( esc_attr__( 'License Key Status:', 'tribe-common' ) ),
453
  'label_attributes' => array( 'style' => 'width:auto;' ),
@@ -481,13 +556,13 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
481
  ),
482
  );
483
  } else {
484
- $to_insert[ $this->pue_install_key. '-state' ] = array(
485
  'type' => 'html',
486
  'label' => sprintf( esc_attr__( 'License Key Status:', 'tribe-common' ) ),
487
  'label_attributes' => array( 'style' => 'width:auto;' ),
488
  'html' => sprintf( '<p>%s</p>', $this->get_network_license_state_string() ),
489
  );
490
- }
491
 
492
  $fields = self::array_insert_after_key( 'tribe-form-content-start', $fields, $to_insert );
493
 
@@ -512,14 +587,14 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
512
  }
513
  } );
514
 
515
- $('#tribe-field-<?php echo esc_attr( $this->pue_install_key ) ?>').change(function () {
516
- <?php echo esc_attr( $this->pue_install_key ) ?>_validateKey();
517
  });
518
- <?php echo esc_attr( $this->pue_install_key ) ?>_validateKey();
519
  });
520
 
521
- function <?php echo esc_attr( $this->pue_install_key ) ?>_validateKey() {
522
- var this_id = '#tribe-field-<?php echo esc_attr( $this->pue_install_key ) ?>';
523
  var $validity_msg = jQuery(this_id + ' .key-validity');
524
 
525
  if (jQuery(this_id + ' input').val() != '') {
@@ -529,10 +604,14 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
529
  $validity_msg.hide();
530
 
531
  // Strip whitespace from key
532
- var <?php echo esc_attr( $this->pue_install_key ) ?>_license_key = jQuery(this_id + ' input').val().replace(/^\s+|\s+$/g, "");
533
- jQuery(this_id + ' input').val(<?php echo esc_attr( $this->pue_install_key ) ?>_license_key);
534
-
535
- var data = { action: 'pue-validate-key_<?php echo esc_attr( $this->get_slug() ); ?>', key: <?php echo esc_attr( $this->pue_install_key ) ?>_license_key };
 
 
 
 
536
  jQuery.post(ajaxurl, data, function (response) {
537
  var data = jQuery.parseJSON(response);
538
 
@@ -562,7 +641,7 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
562
  */
563
  public function do_license_key_success_message( $message, $tab ) {
564
 
565
- if ( $tab != 'licenses' ) {
566
  return $message;
567
  }
568
 
@@ -570,6 +649,227 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
570
 
571
  }
572
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
573
  /**
574
  * Checks for the license key status with MT servers.
575
  *
@@ -587,90 +887,68 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
587
  return $response;
588
  }
589
 
590
- $queryArgs = array(
591
- 'pu_install_key' => trim( $key ),
592
- 'pu_checking_for_updates' => '1',
593
- );
594
-
595
- //include version info
596
- $queryArgs['pue_active_version'] = $this->get_installed_version();
597
-
598
- global $wp_version;
599
- $queryArgs['wp_version'] = $wp_version;
600
 
601
- // For multisite, return the network-level siteurl ... in
602
- // all other cases return the actual URL being serviced
603
- $queryArgs['domain'] = is_multisite() ? $this->get_network_domain() : $_SERVER['SERVER_NAME'];
604
-
605
- if ( is_multisite() ) {
606
- $queryArgs['multisite'] = 1;
607
- $queryArgs['network_activated'] = is_plugin_active_for_network( $this->get_plugin_file() );
608
- global $wpdb;
609
- $queryArgs['active_sites'] = $wpdb->get_var( "SELECT count(blog_id) FROM $wpdb->blogs WHERE public = '1' AND archived = '0' AND spam = '0' AND deleted = '0'" );
610
- } else {
611
- $queryArgs['multisite'] = 0;
612
- $queryArgs['network_activated'] = 0;
613
- $queryArgs['active_sites'] = 1;
614
- }
615
 
616
  // This method is primarily used during when validating keys by ajax, before they are
617
  // formally committed or saved by the user: for that reason we call request_info()
618
  // rather than license_key_status() as at this stage invalid or missing keys should
619
  // not result in admin notices being generated
620
- $plugin_info = $this->request_info( $queryArgs );
621
- $expiration = isset( $plugin_info->expiration ) ? $plugin_info->expiration : esc_html__( 'unknown date', 'tribe-common' );
622
 
623
  $pue_notices = Tribe__Main::instance()->pue_notices();
624
  $plugin_name = $this->get_plugin_name();
625
 
626
  if ( empty( $plugin_info ) ) {
627
- $response['message'] = esc_html__( 'Sorry, key validation server is not available.', 'tribe-common' );
628
- } elseif ( isset( $plugin_info->api_expired ) && $plugin_info->api_expired == 1 ) {
629
  $response['message'] = $this->get_license_expired_message();
630
  $response['api_expired'] = true;
631
- } elseif ( isset( $plugin_info->api_upgrade ) && $plugin_info->api_upgrade == 1 ) {
632
  $response['message'] = $this->get_api_message( $plugin_info );
633
  $response['api_upgrade'] = true;
634
- } elseif ( isset( $plugin_info->api_invalid ) && $plugin_info->api_invalid == 1 ) {
635
  $response['message'] = $this->get_api_message( $plugin_info );
636
  $response['api_invalid'] = true;
637
  } else {
638
- if ( $network && is_multisite() ) {
639
- $api_secret_key = get_network_option( null, $this->pue_install_key );
640
- } else {
641
- $api_secret_key = get_option( $this->pue_install_key );
642
  }
643
 
644
- if ( $api_secret_key && $api_secret_key === $queryArgs['pu_install_key'] ){
645
- $default_success_msg = sprintf( esc_html__( 'Valid Key! Expires on %s', 'tribe-common' ), $expiration );
 
 
646
  } else {
647
  // Set the key
648
- if ( $network && is_multisite() ) {
649
- update_network_option( null, $this->pue_install_key, $queryArgs['pu_install_key'] );
650
- } else {
651
- update_option( $this->pue_install_key, $queryArgs['pu_install_key'] );
652
- }
653
 
654
- $default_success_msg = sprintf( esc_html__( 'Thanks for setting up a valid key. It will expire on %s', 'tribe-common' ), $expiration );
655
 
656
  //Set SysInfo Key on Tec.com After Successful Validation of License
657
  $optin_key = get_option( 'tribe_systeminfo_optin' );
658
  if ( $optin_key ) {
659
- Tribe__Support::send_sysinfo_key( $optin_key, $queryArgs['domain'], false, true );
660
  }
661
  }
662
 
663
  $pue_notices->clear_notices( $plugin_name );
664
 
665
  $response['status'] = isset( $plugin_info->api_message ) ? 2 : 1;
666
- $response['message'] = isset( $plugin_info->api_message ) ? wp_kses( $plugin_info->api_message, 'data' ) : $default_success_msg;
667
- $response['expiration'] = $expiration;
668
 
669
  if ( isset( $plugin_info->daily_limit ) ) {
670
  $response['daily_limit'] = intval( $plugin_info->daily_limit );
671
  }
672
  }
673
 
 
 
674
  return $response;
675
  }
676
 
@@ -686,12 +964,22 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
686
  * Echo JSON results for key validation
687
  */
688
  public function ajax_validate_key() {
689
- $key = isset( $_POST['key'] ) ? $_POST['key'] : null;
690
 
691
- $response = $this->validate_key( $key );
 
 
 
 
 
 
 
 
 
 
692
 
693
  echo json_encode( $response );
694
  exit;
 
695
  }
696
 
697
  /**
@@ -716,7 +1004,7 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
716
 
717
  $message = str_replace( '%plugin_name%', $this->get_plugin_name(), $message );
718
  $message = str_replace( '%plugin_slug%', $this->get_slug(), $message );
719
- $message = str_replace( '%update_url%', $this->get_pue_update_url(), $message );
720
  $message = str_replace( '%version%', $info->version, $message );
721
  $message = str_replace( '%changelog%', '<a class="thickbox" title="' . $this->get_plugin_name() . '" href="plugin-install.php?tab=plugin-information&plugin=' . $this->get_slug() . '&TB_iframe=true&width=640&height=808">what\'s new</a>', $message );
722
 
@@ -729,23 +1017,24 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
729
  * @return bool
730
  */
731
  public function is_network_licensed() {
732
- if ( is_multisite()
733
- && ! is_network_admin()
734
- && is_plugin_active_for_network( $this->get_real_plugin_file( $this->plugin_file ) )
735
- ) {
736
- $network_key = get_network_option( null, $this->pue_install_key );
737
- $local_key = get_option( $this->pue_install_key );
738
 
 
 
 
739
 
740
- return ! ( ! empty( $local_key ) && ( empty( $network_key ) || (string) $network_key != (string) $local_key ) );
 
 
 
741
  }
742
 
743
- return false;
744
  }
745
 
746
  /**
747
- * Returns tet name of the option that stores the license key.
748
- *
749
  * @return string
750
  */
751
  public function get_license_option_key() {
@@ -779,7 +1068,7 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
779
  return;
780
  }
781
 
782
- $state = $this->get_option( $this->pue_option_name, false, false );
783
 
784
  if ( empty( $state->update->license_error ) ) {
785
  return;
@@ -830,29 +1119,28 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
830
  return $plugin_info;
831
  }
832
 
 
 
833
  // Check for expired keys
834
  if ( ! empty( $plugin_info->api_expired ) ) {
835
  $pue_notices->add_notice( Tribe__PUE__Notices::EXPIRED_KEY, $plugin_name );
836
- }
837
- // Check for keys that are out of installs (*must* happen before the api_invalid test)
838
- elseif ( ! empty( $plugin_info->api_upgrade ) ) {
839
  $pue_notices->add_notice( Tribe__PUE__Notices::UPGRADE_KEY, $plugin_name );
840
- }
841
- // Check for invalid keys last of all (upgrades/empty keys will be flagged as invalid)
842
- elseif (
843
  ! empty( $plugin_info->api_invalid )
844
  && (
845
  'component' === $this->context
846
  || (
847
  'service' === $this->context
848
- && $this->install_key
849
  )
850
  )
851
  ) {
852
  $pue_notices->add_notice( Tribe__PUE__Notices::INVALID_KEY, $plugin_name );
853
- }
854
- // If none of the above were satisfied we can assume the key is valid
855
- else {
856
  $pue_notices->clear_notices( $plugin_name );
857
  }
858
 
@@ -871,7 +1159,9 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
871
  Tribe__Main::instance()->pue_notices()->register_name( $plugin_name );
872
 
873
  // Detect and setup notices for missing keys
874
- if ( empty( $this->install_key ) && 'service' !== $this->context ) {
 
 
875
  Tribe__Main::instance()->pue_notices()->add_notice( Tribe__PUE__Notices::INVALID_KEY, $plugin_name );
876
  }
877
  }
@@ -887,48 +1177,34 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
887
  * @uses wp_remote_get()
888
  * @see Tribe__PUE__Checker::license_key_status()
889
  *
890
- * @param array $queryArgs Additional query arguments to append to the request. Optional.
891
  *
892
  * @return string $plugin_info
893
  */
894
- public function request_info( $queryArgs = array() ) {
895
- //Query args to append to the URL. Plugins can add their own by using a filter callback (see add_query_arg_filter()).
896
- $queryArgs['installed_version'] = $this->get_installed_version();
897
- $queryArgs['pu_request_plugin'] = $this->get_slug();
898
-
899
- if ( empty( $queryArgs['pu_plugin_api'] ) && ! empty( $this->api_secret_key ) ) {
900
- $queryArgs['pu_plugin_api'] = $this->api_secret_key;
901
- }
902
 
903
- if ( empty( $queryArgs['pu_install_key'] ) && ! empty( $this->install_key ) ) {
904
- $queryArgs['pu_install_key'] = $this->install_key;
905
- }
906
 
907
- //include version info
908
- $queryArgs['pue_active_version'] = $this->get_installed_version();
909
 
910
- global $wp_version;
911
- $queryArgs['wp_version'] = $wp_version;
912
 
913
- //include domain and multisite stats
914
- $queryArgs['domain'] = is_multisite() ? $this->get_network_domain() : $this->get_site_domain();
915
 
916
- if ( is_multisite() ) {
917
- $queryArgs['multisite'] = 1;
918
- $queryArgs['network_activated'] = is_plugin_active_for_network( $this->get_plugin_file() );
919
- global $wpdb;
920
- $queryArgs['active_sites'] = $wpdb->get_var( "SELECT count(blog_id) FROM $wpdb->blogs WHERE public = '1' AND archived = '0' AND spam = '0' AND deleted = '0'" );
921
 
922
- } else {
923
- $queryArgs['multisite'] = 0;
924
- $queryArgs['network_activated'] = 0;
925
- $queryArgs['active_sites'] = 1;
926
  }
927
 
928
- $queryArgs = apply_filters( 'tribe_puc_request_info_query_args-' . $this->get_slug(), $queryArgs );
929
-
930
  //Various options for the wp_remote_get() call. Plugins can filter these, too.
931
  $options = array(
 
932
  'timeout' => 15, //seconds
933
  'headers' => array(
934
  'Accept' => 'application/json',
@@ -936,26 +1212,16 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
936
  );
937
  $options = apply_filters( 'tribe_puc_request_info_options-' . $this->get_slug(), $options );
938
 
939
- $url = $this->get_pue_update_url();
940
- if ( ! empty( $queryArgs ) ) {
941
- $url = esc_url_raw( add_query_arg( $queryArgs, $url ) );
942
- }
943
-
944
- // Cache the API call so it only needs to be made once per plugin per page load.
945
- static $plugin_info_cache;
946
- $key = crc32( implode( '', $queryArgs ) );
947
- if ( isset( $plugin_info_cache[ $key ] ) ) {
948
- return $plugin_info_cache[ $key ];
949
- }
950
 
951
- $result = wp_remote_get(
952
  $url,
953
  $options
954
  );
955
 
956
- //Try to parse the response
957
  $plugin_info = null;
958
- if ( ! is_wp_error( $result ) && isset( $result['response']['code'] ) && ( $result['response']['code'] == 200 ) && ! empty( $result['body'] ) ) {
959
  $plugin_info = Tribe__PUE__Plugin_Info::from_json( $result['body'] );
960
  }
961
  $plugin_info = apply_filters( 'tribe_puc_request_info_result-' . $this->get_slug(), $plugin_info, $result );
@@ -971,7 +1237,7 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
971
  * @return string
972
  */
973
  public function get_network_domain() {
974
- $site_url = parse_url( get_site_option( 'siteurl' ) );
975
  if ( ! $site_url || ! isset( $site_url['host'] ) ) {
976
  return '';
977
  } else {
@@ -989,17 +1255,15 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
989
  public function request_update() {
990
  // For the sake of simplicity, this function just calls request_info()
991
  // and transforms the result accordingly.
992
- $args = array(
993
- 'pu_checking_for_updates' => 1,
994
- );
995
 
996
  if ( ! empty( $_POST['key'] ) ) {
997
- $args['pu_install_key'] = $_POST['key'];
998
  } elseif ( ! empty( $_POST[ $this->pue_install_key ] ) ) {
999
- $args['pu_install_key'] = $_POST[ $this->pue_install_key ];
1000
  }
1001
 
1002
- $this->plugin_info = $plugin_info = $this->license_key_status( $args );
1003
 
1004
  if ( null === $plugin_info ) {
1005
  return null;
@@ -1012,13 +1276,13 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
1012
  return $plugin_info;
1013
  }
1014
 
1015
- if ( isset( $plugin_info->new_install_key ) ) {
1016
- $this->update_option( $this->pue_install_key, $plugin_info->new_install_key );
1017
  }
1018
 
1019
  //need to correct the download url so it contains the custom user data (i.e. api and any other paramaters)
1020
-
1021
  $download_query = $this->get_download_query();
 
1022
  if ( ! empty( $download_query ) ) {
1023
  $plugin_info->download_url = esc_url_raw( add_query_arg( $download_query, $plugin_info->download_url ) );
1024
  }
@@ -1043,34 +1307,48 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
1043
  */
1044
  public function get_installed_version() {
1045
  if ( function_exists( 'get_plugins' ) ) {
1046
- $allPlugins = get_plugins();
1047
- if ( array_key_exists( $this->get_plugin_file(), $allPlugins ) && array_key_exists( 'Version', $allPlugins[ $this->get_plugin_file() ] ) ) {
1048
- return $allPlugins[ $this->get_plugin_file() ]['Version'];
1049
  }
1050
  }
1051
  }
1052
 
1053
  /**
1054
- * Get MU compatible options.
1055
  *
1056
- * @param string $option_key
1057
- * @param bool|mixed $default
1058
- * @param bool $use_cache
1059
  *
1060
- * @return null|mixed
1061
  */
1062
- public function get_option( $option_key, $default = false, $use_cache = true ) {
1063
- return get_site_option( $option_key, $default, $use_cache );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1064
  }
1065
 
1066
  /**
1067
- * Update MU compatible options.
1068
  *
1069
- * @param mixed $option_key
1070
- * @param mixed $value
1071
  */
1072
- public function update_option( $option_key, $value ) {
1073
- update_site_option( $option_key, $value );
 
 
1074
  }
1075
 
1076
  /**
@@ -1078,71 +1356,90 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
1078
  *
1079
  * The results are stored in the DB option specified in $pue_option_name.
1080
  *
1081
- * @param array $updates
 
1082
  *
 
1083
  */
1084
- public function check_for_updates( $updates = array() ) {
1085
- $state = $this->get_option( $this->pue_option_name, false, false );
1086
- if ( empty( $state ) ) {
1087
- $state = new StdClass;
1088
- $state->lastCheck = 0;
1089
- $state->checkedVersion = '';
1090
- $state->update = null;
1091
- }
1092
 
1093
  $state->lastCheck = time();
1094
  $state->checkedVersion = $this->get_installed_version();
1095
- $this->update_option( $this->pue_option_name, $state ); //Save before checking in case something goes wrong
 
 
1096
 
1097
  $state->update = $this->request_update();
1098
 
1099
  // If a null update was returned, skip the end of the function.
1100
- if ( $state->update == null ) {
1101
- $this->update_option( $this->pue_option_name, $state );
1102
- return $updates;
1103
- }
 
 
1104
 
1105
- //Is there an update to insert?
1106
- if ( version_compare( $state->update->version, $this->get_installed_version(), '>' ) ) {
1107
- if ( empty( $updates ) ) {
1108
- $updates = (object) array( 'response' => array() );
1109
- }
1110
- $updates->response[ $this->get_plugin_file() ] = $state->update->to_wp_format();
1111
 
1112
- // If the key has expired we should register an appropriate admin notice
1113
- if ( $this->plugin_info->api_expired ) {
1114
- Tribe__Main::instance()->pue_notices()->add_notice( Tribe__PUE__Notices::EXPIRED_KEY, $this->plugin_name );
 
1115
  }
1116
  }
1117
 
1118
- $this->update_option( $this->pue_option_name, $state );
1119
 
1120
  return $updates;
1121
  }
1122
 
1123
  /**
1124
  * Clears out the site external site option and re-checks the license key
 
 
 
 
 
 
1125
  */
1126
- public function check_for_api_key_error( $old_value, $value ) {
 
 
 
 
 
 
1127
  if ( 'service' !== $this->context ) {
1128
- delete_site_option( $this->pue_option_name );
1129
- $this->check_for_updates();
1130
  }
1131
 
1132
- // are we saving THIS PUE key to the options table?
1133
- if ( empty( $_POST[ $this->pue_install_key ] ) || $value !== $_POST[ $this->pue_install_key ] ) {
1134
- return;
 
 
 
 
 
 
 
1135
  }
1136
 
 
 
1137
  // if we are saving this PUE key, we need to make sure we update the license key notices
1138
  // appropriately. Otherwise, we could have an invalid license key in place but the notices
1139
  // aren't being thrown globally
1140
- $args = array(
1141
- 'pu_checking_for_updates' => 1,
1142
- 'pu_install_key' => $_POST[ $this->pue_install_key ],
1143
- );
1144
 
1145
- $this->license_key_status( $args );
 
 
 
 
 
 
 
1146
  }
1147
 
1148
  /**
@@ -1158,12 +1455,15 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
1158
  * @return mixed
1159
  */
1160
  public function inject_info( $result, $action = null, $args = null ) {
1161
- $relevant = ( $action == 'plugin_information' ) && isset( $args->slug ) && ( $args->slug == $this->slug );
1162
  if ( ! $relevant ) {
1163
  return $result;
1164
  }
1165
 
1166
- $plugin_info = $this->license_key_status( array( 'pu_checking_for_updates' => '1' ) );
 
 
 
1167
  if ( $plugin_info ) {
1168
  return $plugin_info->to_wp_format();
1169
  }
@@ -1233,7 +1533,7 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
1233
  */
1234
  public static function array_insert_after_key( $key, $source_array, $insert_array ) {
1235
  if ( array_key_exists( $key, $source_array ) ) {
1236
- $position = array_search( $key, array_keys( $source_array ) ) + 1;
1237
  $source_array = array_slice( $source_array, 0, $position, true ) + $insert_array + array_slice( $source_array, $position, null, true );
1238
  } else {
1239
  // If no key is found, then add it to the end of the array.
@@ -1252,8 +1552,10 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
1252
  *
1253
  */
1254
  public function return_install_key( $keys = array() ) {
1255
- if ( ! empty( $this->install_key ) ) {
1256
- $keys[ $this->get_slug() ] = $this->install_key;
 
 
1257
  }
1258
 
1259
  return $keys;
@@ -1281,7 +1583,7 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
1281
  if ( isset( $_SERVER['SERVER_NAME'] ) ) {
1282
  return $_SERVER['SERVER_NAME'];
1283
  }
1284
- $site_url = parse_url( get_option( 'siteurl' ) );
1285
  if ( ! $site_url || ! isset( $site_url['host'] ) ) {
1286
  return '';
1287
  } else {
@@ -1290,18 +1592,28 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
1290
  }
1291
 
1292
  /**
1293
- * Returns the plugin file to use when checking for the licensed component or plugin.
1294
  *
1295
- * @param string $plugin_file The component or plugin file in the `<dir>/<file>.php` format.
1296
- *
1297
- * @return string A component or plugins file in the `<dir>/<file>.php` format.
1298
  */
1299
- protected function get_real_plugin_file( $plugin_file ) {
 
 
 
 
 
1300
  $map = array(
1301
  'event-aggregator/event-aggregator.php' => 'the-events-calendar/the-events-calendar.php',
1302
  );
1303
 
1304
- return isset( $map[ $plugin_file ] ) ? $map[ $plugin_file ] : $plugin_file;
 
 
 
 
 
 
 
1305
  }
1306
 
1307
  /**
@@ -1316,11 +1628,11 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
1316
  'expired' => esc_html__( 'Expired license. Consult your network administrator.', 'tribe-common' ),
1317
  );
1318
 
1319
- $response = $this->validate_key( get_network_option( null, $this->pue_install_key ), true );
1320
 
1321
- if ( isset( $response['status'] ) && $response['status'] === 1 ) {
1322
  $state = 'licensed';
1323
- } elseif ( isset( $response['api_expired'] ) && $response['api_expired'] == true ) {
1324
  $state = 'expired';
1325
  } else {
1326
  $state = 'not-licensed';
@@ -1346,7 +1658,7 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
1346
  return false;
1347
  }
1348
 
1349
- if ( is_plugin_active_for_network( $this->get_real_plugin_file( $this->plugin_file ) ) && ! is_super_admin() ) {
1350
  return false;
1351
  }
1352
 
@@ -1370,7 +1682,7 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
1370
  return false;
1371
  }
1372
 
1373
- if ( ! is_plugin_active_for_network( $this->get_real_plugin_file( $this->plugin_file ) ) ) {
1374
  return false;
1375
  }
1376
 
21
  */
22
  class Tribe__PUE__Checker {
23
 
 
 
 
 
 
 
 
24
  /**
25
  * Plugin filename relative to the plugins directory.
26
  *
49
  */
50
  private $slug = '';
51
 
52
+ /**
53
+ * Current domain.
54
+ *
55
+ * @var string
56
+ */
57
+ private static $domain = '';
58
+
59
  /**
60
  * Used to hold the query variables for download checks
61
  *
87
  */
88
  public $pue_option_name = '';
89
 
 
 
 
 
 
 
 
90
  /**
91
  * used to hold the install_key if set (included here for addons that will extend PUE to use install key checks)
92
  *
133
  */
134
  public $plugin_notice;
135
 
136
+ /**
137
+ * Stats
138
+ *
139
+ * @var array
140
+ */
141
+ private static $stats = array();
142
+
143
+ /**
144
+ * Full Stats
145
+ *
146
+ * @var array
147
+ */
148
+ private static $stats_full = array();
149
+
150
  /**
151
  * Class constructor.
152
  *
153
+ * @param string $pue_update_url Deprecated. The URL of the plugin's metadata file.
154
  * @param string $slug The plugin's 'slug'.
155
  * @param array $options {
156
  * Contains any options that need to be set in the class initialization for construct.
167
  */
168
  public function __construct( $pue_update_url, $slug = '', $options = array(), $plugin_file = '' ) {
169
  $this->set_slug( $slug );
 
170
  $this->set_plugin_file( $plugin_file );
171
  $this->set_options( $options );
172
  $this->hooks();
184
  // Check for updates when the WP updates are checked and inject our update if needed.
185
  // Only add filter if the TRIBE_DISABLE_PUE constant is not set as true and where
186
  // the context is not 'service'
187
+ if ( ( ! defined( 'TRIBE_DISABLE_PUE' ) || true !== TRIBE_DISABLE_PUE ) && 'service' !== $this->context ) {
188
  add_filter( 'pre_set_site_transient_update_plugins', array( $this, 'check_for_updates' ) );
189
  }
190
 
193
  add_action( 'tribe_settings_after_content_tab_licenses', array( $this, 'do_license_key_javascript' ) );
194
  add_action( 'tribe_settings_success_message', array( $this, 'do_license_key_success_message' ), 10, 2 );
195
  add_action( 'load-plugins.php', array( $this, 'remove_default_inline_update_msg' ), 50 );
 
 
196
 
197
  // Key validation
198
+ add_filter( 'tribe_settings_save_field_value', array( $this, 'check_for_api_key_error' ), 10, 3 );
199
  add_action( 'wp_ajax_pue-validate-key_' . $this->get_slug(), array( $this, 'ajax_validate_key' ) );
200
  add_filter( 'tribe-pue-install-keys', array( $this, 'return_install_key' ) );
201
  add_action( 'admin_enqueue_scripts', array( $this, 'maybe_display_json_error_on_plugins_page' ), 1 );
234
  * @return string
235
  */
236
  public function get_pue_update_url() {
237
+ $pue_update_url = 'https://pue.tri.be';
 
238
 
239
+ if ( defined( 'PUE_UPDATE_URL' ) ) {
240
+ $pue_update_url = PUE_UPDATE_URL;
241
+ }
242
+
243
+ $pue_update_url = apply_filters( 'pue_get_update_url', $pue_update_url, $this->get_slug() );
244
+
245
+ $pue_update_url = untrailingslashit( $pue_update_url );
246
+
247
+ return $pue_update_url;
248
  }
249
 
250
  /**
290
  }
291
 
292
  // Prevents get_plugins from throwing a weird notice
293
+ if ( ! file_exists( WP_PLUGIN_DIR . '/' . $this->get_plugin_file() ) ) {
294
  return;
295
  }
296
 
324
  $options, array(
325
  'pue_option_name' => 'external_updates-' . $this->get_slug(),
326
  'apikey' => '',
 
327
  'check_period' => 12,
328
  'context' => 'component',
329
  )
331
 
332
  $this->pue_option_name = $options['pue_option_name'];
333
  $this->check_period = (int) $options['check_period'];
 
334
  $this->context = $options['context'];
335
 
 
 
 
 
 
 
336
  }
337
 
338
  /**
348
  return;
349
  }
350
 
351
+ // plugin slug
352
+ $this->download_query['plugin'] = sanitize_text_field( $this->get_slug() );
353
 
354
+ // include current version
355
+ $this->download_query['installed_version'] = sanitize_text_field( $this->get_installed_version() );
 
 
356
 
357
+ $this->download_query['domain'] = sanitize_text_field( $this->get_domain() );
 
 
 
358
 
359
+ // get general stats
360
+ $stats = $this->get_stats();
361
+
362
+ $this->download_query['multisite'] = $stats['network']['multisite'];
363
+ $this->download_query['network_activated'] = $stats['network']['network_activated'];
364
+ $this->download_query['active_sites'] = $stats['network']['active_sites'];
365
+ $this->download_query['wp_version'] = $stats['versions']['wp'];
366
+
367
+ // the following is for install key inclusion (will apply later with PUE addons.)
368
+ $this->download_query['key'] = sanitize_text_field( $this->get_key() );
369
+ $this->download_query['dk'] = sanitize_text_field( $this->get_key( 'default' ) );
370
+ $this->download_query['o'] = sanitize_text_field( $this->get_key( 'any', 'origin' ) );
371
 
372
  }
373
 
384
  return apply_filters( 'pue_get_download_query', $this->download_query, $this->get_slug() );
385
  }
386
 
387
+ /**
388
+ * Set all the validate query array
389
+ *
390
+ * @param array $validate_query
391
+ */
392
+ private function set_validate_query( $validate_query = array() ) {
393
+
394
+ if ( ! empty( $validate_query ) ) {
395
+ $this->validate_query = $validate_query;
396
+
397
+ return;
398
+ }
399
+
400
+ // the following is for install key inclusion (will apply later with PUE addons.)
401
+ $this->validate_query['key'] = sanitize_text_field( $this->get_key() );
402
+
403
+ // include default key
404
+ $this->validate_query['default_key'] = sanitize_text_field( $this->get_key( 'default' ) );
405
+
406
+ // include license origin
407
+ $this->validate_query['license_origin'] = sanitize_text_field( $this->get_key( 'any', 'origin' ) );
408
+
409
+ // plugin slug
410
+ $this->validate_query['plugin'] = sanitize_text_field( $this->get_slug() );
411
+
412
+ // include current version
413
+ $this->validate_query['version'] = sanitize_text_field( $this->get_installed_version() );
414
+
415
+ // include current domain
416
+ $this->validate_query['domain'] = sanitize_text_field( $this->get_domain() );
417
+
418
+ // include plugin stats
419
+ $this->validate_query['stats'] = $this->get_stats();
420
+
421
+ }
422
+
423
+ /**
424
+ * Get the validate_query args
425
+ *
426
+ * @return array
427
+ */
428
+ public function get_validate_query() {
429
+ if ( empty( $this->validate_query ) ) {
430
+ $this->set_validate_query();
431
+ }
432
+
433
+ return apply_filters( 'pue_get_validate_query', $this->validate_query, $this->get_slug() );
434
+ }
435
+
436
+ /**
437
+ * Get current domain
438
+ *
439
+ * @return string
440
+ */
441
+ public function get_domain() {
442
+
443
+ $domain = self::$domain;
444
+
445
+ if ( empty( $domain ) ) {
446
+ $domain = $_SERVER['SERVER_NAME'];
447
+
448
+ if ( is_multisite() ) {
449
+ // For multisite, return the network-level siteurl
450
+ $domain = $this->get_network_domain();
451
+ }
452
+
453
+ self::$domain = $domain;
454
+ }
455
+
456
+ return $domain;
457
+
458
+ }
459
+
460
 
461
  /********************** General Functions **********************/
462
 
505
  'size' => 'large',
506
  'validation_type' => 'license_key',
507
  'label' => sprintf( esc_attr__( 'License Key', 'tribe-common' ) ),
508
+ 'default' => $this->get_key( 'default' ),
509
  'tooltip' => $no_license_tooltip,
510
  'parent_option' => false,
511
  'network_option' => true,
516
  'size' => 'large',
517
  'validation_type' => 'license_key',
518
  'label' => sprintf( esc_attr__( 'License Key', 'tribe-common' ) ),
519
+ 'default' => $this->get_key( 'default' ),
520
  'tooltip' => $no_license_tooltip,
521
  'parent_option' => false,
522
  'network_option' => false,
523
  );
524
  } elseif ( $this->should_show_overrideable_license() ) {
525
+ $to_insert[ $this->pue_install_key . '-state' ] = array(
526
  'type' => 'html',
527
  'label' => sprintf( esc_attr__( 'License Key Status:', 'tribe-common' ) ),
528
  'label_attributes' => array( 'style' => 'width:auto;' ),
556
  ),
557
  );
558
  } else {
559
+ $to_insert[ $this->pue_install_key . '-state' ] = array(
560
  'type' => 'html',
561
  'label' => sprintf( esc_attr__( 'License Key Status:', 'tribe-common' ) ),
562
  'label_attributes' => array( 'style' => 'width:auto;' ),
563
  'html' => sprintf( '<p>%s</p>', $this->get_network_license_state_string() ),
564
  );
565
+ }
566
 
567
  $fields = self::array_insert_after_key( 'tribe-form-content-start', $fields, $to_insert );
568
 
587
  }
588
  } );
589
 
590
+ $('#tribe-field-<?php echo esc_attr( $this->pue_install_key ); ?>').change(function () {
591
+ <?php echo sanitize_html_class( $this->pue_install_key ); ?>_validateKey();
592
  });
593
+ <?php echo sanitize_html_class( $this->pue_install_key ); ?>_validateKey();
594
  });
595
 
596
+ function <?php echo sanitize_html_class( $this->pue_install_key ); ?>_validateKey() {
597
+ var this_id = '#tribe-field-<?php echo esc_attr( $this->pue_install_key ); ?>';
598
  var $validity_msg = jQuery(this_id + ' .key-validity');
599
 
600
  if (jQuery(this_id + ' input').val() != '') {
604
  $validity_msg.hide();
605
 
606
  // Strip whitespace from key
607
+ var <?php echo sanitize_html_class( $this->pue_install_key ); ?>_license_key = jQuery(this_id + ' input').val().replace(/^\s+|\s+$/g, "");
608
+ jQuery(this_id + ' input').val(<?php echo sanitize_html_class( $this->pue_install_key ); ?>_license_key);
609
+
610
+ var data = {
611
+ action: 'pue-validate-key_<?php echo esc_attr( $this->get_slug() ); ?>',
612
+ key: <?php echo sanitize_html_class( $this->pue_install_key ); ?>_license_key,
613
+ _wpnonce: '<?php echo esc_attr( wp_create_nonce( 'pue-validate-key_' . $this->get_slug() ) ); ?>'
614
+ };
615
  jQuery.post(ajaxurl, data, function (response) {
616
  var data = jQuery.parseJSON(response);
617
 
641
  */
642
  public function do_license_key_success_message( $message, $tab ) {
643
 
644
+ if ( 'licenses' !== $tab ) {
645
  return $message;
646
  }
647
 
649
 
650
  }
651
 
652
+ /**
653
+ * Build stats for endpoints
654
+ *
655
+ * @return array
656
+ */
657
+ public function build_stats() {
658
+
659
+ global $wpdb;
660
+
661
+ $stats = array(
662
+ 'versions' => array(
663
+ 'wp' => sanitize_text_field( $GLOBALS['wp_version'] ),
664
+ ),
665
+ 'network' => array(
666
+ 'multisite' => 0,
667
+ 'network_activated' => 0,
668
+ 'active_sites' => 1,
669
+ ),
670
+ );
671
+
672
+ if ( is_multisite() ) {
673
+ $sql_count = "
674
+ SELECT COUNT( `blog_id` )
675
+ FROM `{$wpdb->blogs}`
676
+ WHERE
677
+ `public` = '1'
678
+ AND `archived` = '0'
679
+ AND `spam` = '0'
680
+ AND `deleted` = '0'
681
+ ";
682
+
683
+ $stats['multisite'] = 1;
684
+ $stats['network_activated'] = (int) $this->is_plugin_active_for_network();
685
+ $stats['active_sites'] = (int) $wpdb->get_var( $sql_count );
686
+ }
687
+
688
+ self::$stats = $stats;
689
+
690
+ return $stats;
691
+
692
+ }
693
+
694
+ /**
695
+ * Build full stats for endpoints
696
+ *
697
+ * @param array $stats Initial stats
698
+ *
699
+ * @return array
700
+ */
701
+ public function build_full_stats( $stats ) {
702
+
703
+ global $wpdb;
704
+
705
+ $theme = wp_get_theme();
706
+
707
+ $current_offset = (int) get_option( 'gmt_offset', 0 );
708
+ $tzstring = get_option( 'timezone_string' );
709
+
710
+ // Remove old Etc mappings. Fallback to gmt_offset.
711
+ if ( false !== strpos( $tzstring, 'Etc/GMT' ) ) {
712
+ $timezone = '';
713
+ }
714
+
715
+ // Create a UTC+- zone if no timezone string exists
716
+ if ( empty( $tzstring ) ) {
717
+ if ( 0 === $current_offset ) {
718
+ $timezone = 'UTC+0';
719
+ } elseif ( $current_offset < 0 ) {
720
+ $timezone = 'UTC' . $current_offset;
721
+ } else {
722
+ $timezone = 'UTC+' . $current_offset;
723
+ }
724
+ }
725
+
726
+ $stats['versions'] = array(
727
+ 'wp' => sanitize_text_field( $GLOBALS['wp_version'] ),
728
+ 'php' => sanitize_text_field( phpversion() ),
729
+ 'mysql' => sanitize_text_field( $wpdb->db_version() ),
730
+ );
731
+
732
+ $stats['theme'] = array(
733
+ 'name' => sanitize_text_field( $theme->get( 'Name' ) ),
734
+ 'version' => sanitize_text_field( $theme->get( 'Version' ) ),
735
+ 'stylesheet' => sanitize_text_field( $theme->get_stylesheet() ),
736
+ 'template' => sanitize_text_field( $theme->get_template() ),
737
+ );
738
+
739
+ $stats['site_language'] = sanitize_text_field( get_locale() );
740
+ $stats['user_language'] = sanitize_text_field( get_user_locale() );
741
+ $stats['is_public'] = (int) get_option( 'blog_public', 0 );
742
+ $stats['wp_debug'] = (int) ( defined( 'WP_DEBUG' ) && WP_DEBUG );
743
+ $stats['site_timezone'] = sanitize_text_field( $timezone );
744
+
745
+ $stats['totals'] = array(
746
+ 'all_post_types' => (int) $wpdb->get_var( "SELECT COUNT(*) FROM `{$wpdb->posts}`" ),
747
+ 'events' => (int) $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM `{$wpdb->posts}` WHERE post_type = %s", 'tribe_events' ) ),
748
+ 'venues' => (int) $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM `{$wpdb->posts}` WHERE post_type = %s", 'tribe_venue' ) ),
749
+ 'organizers' => (int) $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM `{$wpdb->posts}` WHERE post_type = %s", 'tribe_organizer' ) ),
750
+ 'event_categories' => (int) $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM `{$wpdb->term_taxonomy}` WHERE taxonomy = %s", 'tribe_events_cat' ) ),
751
+ );
752
+
753
+ self::$stats_full = $stats;
754
+
755
+ return $stats;
756
+
757
+ }
758
+
759
+ /**
760
+ * Build and get the stats
761
+ *
762
+ * @return array
763
+ */
764
+ public function get_stats() {
765
+
766
+ $stats = self::$stats;
767
+
768
+ if ( empty( $stats ) ) {
769
+ $stats = $this->build_stats();
770
+ }
771
+
772
+ /**
773
+ * Allow full stats data to be built and sent.
774
+ *
775
+ * @param boolean $use_full_stats Whether to send full stats
776
+ *
777
+ * @since 4.5.1
778
+ */
779
+ $use_full_stats = apply_filters( 'pue_use_full_stats', false );
780
+
781
+ if ( $use_full_stats ) {
782
+ $stats_full = self::$stats_full;
783
+
784
+ if ( empty( $stats_full ) ) {
785
+ $stats = $this->build_full_stats( $stats );
786
+ }
787
+ }
788
+
789
+ /**
790
+ * Filter stats and allow plugins to add their own stats
791
+ * for tracking specific points of data.
792
+ *
793
+ * @param array $stats Stats gathered by PUE Checker class
794
+ * @param boolean $use_full_stats Whether to send full stats
795
+ * @param \Tribe__PUE__Checker $checker PUE Checker class object
796
+ *
797
+ * @since 4.5.1
798
+ */
799
+ $stats = apply_filters( 'pue_stats', $stats, $use_full_stats, $this );
800
+
801
+ return $stats;
802
+ }
803
+
804
+ /**
805
+ * Get current license key, optionally of a specific type.
806
+ *
807
+ * @param string $type The type of key to get (any, network, local, default)
808
+ * @param string $return_type The type of data to return (key, origin)
809
+ *
810
+ * @return string
811
+ */
812
+ public function get_key( $type = 'any', $return_type = 'key' ) {
813
+
814
+ $license_key = '';
815
+ $license_origin = 'm';
816
+
817
+ if ( ( 'network' === $type || 'any' === $type ) && is_multisite() ) {
818
+ $license_key = get_network_option( null, $this->pue_install_key, '' );
819
+ }
820
+
821
+ if ( empty( $license_key ) && ( 'local' === $type || 'any' === $type ) ) {
822
+ $license_key = get_option( $this->pue_install_key, '' );
823
+ }
824
+
825
+ if ( empty( $license_key ) && ( 'default' === $type || 'any' === $type ) ) {
826
+ $autoloader = Tribe__Autoloader::instance();
827
+
828
+ $class_name = $autoloader->get_prefix_by_slug( $this->get_slug() );
829
+
830
+ if ( $class_name ) {
831
+ $class_name .= 'PUE__Helper';
832
+
833
+ if ( constant( $class_name . '::DATA' ) ) {
834
+ $license_key = constant( $class_name . '::DATA' );
835
+
836
+ $license_origin = 'e';
837
+ }
838
+ }
839
+ }
840
+
841
+ if ( 'origin' === $return_type ) {
842
+ if ( 'm' === $license_origin ) {
843
+ $default_key = $this->get_key( 'default' );
844
+
845
+ if ( $license_key !== $default_key ) {
846
+ $license_origin = 'o';
847
+ }
848
+ }
849
+
850
+ return $license_origin;
851
+ }
852
+
853
+ return $license_key;
854
+
855
+ }
856
+
857
+ /**
858
+ * Update license key for specific type of license.
859
+ *
860
+ * @param string $license_key The new license key value
861
+ * @param string $type The type of key to update (network or local)
862
+ */
863
+ public function update_key( $license_key, $type = 'local' ) {
864
+
865
+ if ( 'network' === $type && is_multisite() ) {
866
+ update_network_option( null, $this->pue_install_key, sanitize_text_field( $license_key ) );
867
+ } elseif ( 'local' === $type ) {
868
+ update_option( $this->pue_install_key, sanitize_text_field( $license_key ) );
869
+ }
870
+
871
+ }
872
+
873
  /**
874
  * Checks for the license key status with MT servers.
875
  *
887
  return $response;
888
  }
889
 
890
+ $query_args = $this->get_validate_query();
 
 
 
 
 
 
 
 
 
891
 
892
+ $query_args['key'] = sanitize_text_field( $key );
 
 
 
 
 
 
 
 
 
 
 
 
 
893
 
894
  // This method is primarily used during when validating keys by ajax, before they are
895
  // formally committed or saved by the user: for that reason we call request_info()
896
  // rather than license_key_status() as at this stage invalid or missing keys should
897
  // not result in admin notices being generated
898
+ $plugin_info = $this->request_info( $query_args );
899
+ $expiration = isset( $plugin_info->expiration ) ? $plugin_info->expiration : __( 'unknown date', 'tribe-common' );
900
 
901
  $pue_notices = Tribe__Main::instance()->pue_notices();
902
  $plugin_name = $this->get_plugin_name();
903
 
904
  if ( empty( $plugin_info ) ) {
905
+ $response['message'] = __( 'Sorry, key validation server is not available.', 'tribe-common' );
906
+ } elseif ( isset( $plugin_info->api_expired ) && 1 === (int) $plugin_info->api_expired ) {
907
  $response['message'] = $this->get_license_expired_message();
908
  $response['api_expired'] = true;
909
+ } elseif ( isset( $plugin_info->api_upgrade ) && 1 === (int) $plugin_info->api_upgrade ) {
910
  $response['message'] = $this->get_api_message( $plugin_info );
911
  $response['api_upgrade'] = true;
912
+ } elseif ( isset( $plugin_info->api_invalid ) && 1 === (int) $plugin_info->api_invalid ) {
913
  $response['message'] = $this->get_api_message( $plugin_info );
914
  $response['api_invalid'] = true;
915
  } else {
916
+ $key_type = 'site';
917
+
918
+ if ( $network ) {
919
+ $key_type = 'network';
920
  }
921
 
922
+ $current_install_key = $this->get_key( $key_type );
923
+
924
+ if ( $current_install_key && $current_install_key === $query_args['key'] ) {
925
+ $default_success_msg = esc_html( sprintf( __( 'Valid Key! Expires on %s', 'tribe-common' ), $expiration ) );
926
  } else {
927
  // Set the key
928
+ $this->update_key( $query_args['key'], $key_type );
 
 
 
 
929
 
930
+ $default_success_msg = esc_html( sprintf( __( 'Thanks for setting up a valid key. It will expire on %s', 'tribe-common' ), $expiration ) );
931
 
932
  //Set SysInfo Key on Tec.com After Successful Validation of License
933
  $optin_key = get_option( 'tribe_systeminfo_optin' );
934
  if ( $optin_key ) {
935
+ Tribe__Support::send_sysinfo_key( $optin_key, $query_args['domain'], false, true );
936
  }
937
  }
938
 
939
  $pue_notices->clear_notices( $plugin_name );
940
 
941
  $response['status'] = isset( $plugin_info->api_message ) ? 2 : 1;
942
+ $response['message'] = isset( $plugin_info->api_message ) ? $plugin_info->api_message : $default_success_msg;
943
+ $response['expiration'] = esc_html( $expiration );
944
 
945
  if ( isset( $plugin_info->daily_limit ) ) {
946
  $response['daily_limit'] = intval( $plugin_info->daily_limit );
947
  }
948
  }
949
 
950
+ $response['message'] = wp_kses( $response['message'], 'data' );
951
+
952
  return $response;
953
  }
954
 
964
  * Echo JSON results for key validation
965
  */
966
  public function ajax_validate_key() {
 
967
 
968
+ $key = isset( $_POST['key'] ) ? wp_unslash( $_POST['key'] ) : null;
969
+ $nonce = isset( $_POST['_wpnonce'] ) ? wp_unslash( $_POST['_wpnonce'] ) : null;
970
+
971
+ if ( empty( $nonce ) || false === wp_verify_nonce( $nonce, 'pue-validate-key_' . $this->get_slug() ) ) {
972
+ $response = array(
973
+ 'status' => 0,
974
+ 'message' => __( 'Please refresh the page and try your request again.', 'tribe-common' ),
975
+ );
976
+ } else {
977
+ $response = $this->validate_key( $key );
978
+ }
979
 
980
  echo json_encode( $response );
981
  exit;
982
+
983
  }
984
 
985
  /**
1004
 
1005
  $message = str_replace( '%plugin_name%', $this->get_plugin_name(), $message );
1006
  $message = str_replace( '%plugin_slug%', $this->get_slug(), $message );
1007
+ $message = str_replace( '%update_url%', $this->get_pue_update_url() . '/', $message );
1008
  $message = str_replace( '%version%', $info->version, $message );
1009
  $message = str_replace( '%changelog%', '<a class="thickbox" title="' . $this->get_plugin_name() . '" href="plugin-install.php?tab=plugin-information&plugin=' . $this->get_slug() . '&TB_iframe=true&width=640&height=808">what\'s new</a>', $message );
1010
 
1017
  * @return bool
1018
  */
1019
  public function is_network_licensed() {
1020
+ $is_network_licensed = false;
 
 
 
 
 
1021
 
1022
+ if ( ! is_network_admin() && $this->is_plugin_active_for_network() ) {
1023
+ $network_key = $this->get_key( 'network' );
1024
+ $local_key = $this->get_key( 'local' );
1025
 
1026
+ // Check whether the network is licensed and NOT overridden by local license
1027
+ if ( $network_key && ( empty( $local_key ) || $local_key === $network_key ) ) {
1028
+ $is_network_licensed = true;
1029
+ }
1030
  }
1031
 
1032
+ return $is_network_licensed;
1033
  }
1034
 
1035
  /**
1036
+ * Returns tet name of the option that stores the license key.
1037
+ *
1038
  * @return string
1039
  */
1040
  public function get_license_option_key() {
1068
  return;
1069
  }
1070
 
1071
+ $state = $this->get_state();
1072
 
1073
  if ( empty( $state->update->license_error ) ) {
1074
  return;
1119
  return $plugin_info;
1120
  }
1121
 
1122
+ $install_key = $this->get_key();
1123
+
1124
  // Check for expired keys
1125
  if ( ! empty( $plugin_info->api_expired ) ) {
1126
  $pue_notices->add_notice( Tribe__PUE__Notices::EXPIRED_KEY, $plugin_name );
1127
+ } elseif ( ! empty( $plugin_info->api_upgrade ) ) {
1128
+ // Check for keys that are out of installs (*must* happen before the api_invalid test)
 
1129
  $pue_notices->add_notice( Tribe__PUE__Notices::UPGRADE_KEY, $plugin_name );
1130
+ } elseif (
1131
+ // Check for invalid keys last of all (upgrades/empty keys will be flagged as invalid)
 
1132
  ! empty( $plugin_info->api_invalid )
1133
  && (
1134
  'component' === $this->context
1135
  || (
1136
  'service' === $this->context
1137
+ && $install_key
1138
  )
1139
  )
1140
  ) {
1141
  $pue_notices->add_notice( Tribe__PUE__Notices::INVALID_KEY, $plugin_name );
1142
+ } else {
1143
+ // If none of the above were satisfied we can assume the key is valid
 
1144
  $pue_notices->clear_notices( $plugin_name );
1145
  }
1146
 
1159
  Tribe__Main::instance()->pue_notices()->register_name( $plugin_name );
1160
 
1161
  // Detect and setup notices for missing keys
1162
+ $install_key = $this->get_key();
1163
+
1164
+ if ( empty( $install_key ) && 'service' !== $this->context ) {
1165
  Tribe__Main::instance()->pue_notices()->add_notice( Tribe__PUE__Notices::INVALID_KEY, $plugin_name );
1166
  }
1167
  }
1177
  * @uses wp_remote_get()
1178
  * @see Tribe__PUE__Checker::license_key_status()
1179
  *
1180
+ * @param array $query_args Additional query arguments to append to the request. Optional.
1181
  *
1182
  * @return string $plugin_info
1183
  */
1184
+ public function request_info( $query_args = array() ) {
1185
+ $query_args = apply_filters( 'tribe_puc_request_info_query_args-' . $this->get_slug(), $query_args );
 
 
 
 
 
 
1186
 
1187
+ // Cache the API call so it only needs to be made once per plugin per page load.
1188
+ static $plugin_info_cache;
 
1189
 
1190
+ // Sort parameter keys
1191
+ $hash_data = $query_args;
1192
 
1193
+ ksort( $hash_data );
 
1194
 
1195
+ // Flatten hashed data
1196
+ $hash_data = json_encode( $hash_data );
1197
 
1198
+ // Generate unique hash
1199
+ $key = hash( 'sha256', $hash_data );
 
 
 
1200
 
1201
+ if ( isset( $plugin_info_cache[ $key ] ) ) {
1202
+ return $plugin_info_cache[ $key ];
 
 
1203
  }
1204
 
 
 
1205
  //Various options for the wp_remote_get() call. Plugins can filter these, too.
1206
  $options = array(
1207
+ 'body' => $query_args,
1208
  'timeout' => 15, //seconds
1209
  'headers' => array(
1210
  'Accept' => 'application/json',
1212
  );
1213
  $options = apply_filters( 'tribe_puc_request_info_options-' . $this->get_slug(), $options );
1214
 
1215
+ $url = sprintf( '%s/api/plugins/v2/license/validate', $this->get_pue_update_url() );
 
 
 
 
 
 
 
 
 
 
1216
 
1217
+ $result = wp_remote_post(
1218
  $url,
1219
  $options
1220
  );
1221
 
1222
+ // Try to parse the response
1223
  $plugin_info = null;
1224
+ if ( ! is_wp_error( $result ) && isset( $result['response']['code'] ) && ( 200 === (int) $result['response']['code'] ) && ! empty( $result['body'] ) ) {
1225
  $plugin_info = Tribe__PUE__Plugin_Info::from_json( $result['body'] );
1226
  }
1227
  $plugin_info = apply_filters( 'tribe_puc_request_info_result-' . $this->get_slug(), $plugin_info, $result );
1237
  * @return string
1238
  */
1239
  public function get_network_domain() {
1240
+ $site_url = wp_parse_url( get_site_option( 'siteurl' ) );
1241
  if ( ! $site_url || ! isset( $site_url['host'] ) ) {
1242
  return '';
1243
  } else {
1255
  public function request_update() {
1256
  // For the sake of simplicity, this function just calls request_info()
1257
  // and transforms the result accordingly.
1258
+ $query_args = $this->get_validate_query();
 
 
1259
 
1260
  if ( ! empty( $_POST['key'] ) ) {
1261
+ $query_args['key'] = sanitize_text_field( $_POST['key'] );
1262
  } elseif ( ! empty( $_POST[ $this->pue_install_key ] ) ) {
1263
+ $query_args['key'] = sanitize_text_field( $_POST[ $this->pue_install_key ] );
1264
  }
1265
 
1266
+ $this->plugin_info = $plugin_info = $this->license_key_status( $query_args );
1267
 
1268
  if ( null === $plugin_info ) {
1269
  return null;
1276
  return $plugin_info;
1277
  }
1278
 
1279
+ if ( ! empty( $plugin_info->new_install_key ) ) {
1280
+ $this->update_key( $plugin_info->new_install_key );
1281
  }
1282
 
1283
  //need to correct the download url so it contains the custom user data (i.e. api and any other paramaters)
 
1284
  $download_query = $this->get_download_query();
1285
+
1286
  if ( ! empty( $download_query ) ) {
1287
  $plugin_info->download_url = esc_url_raw( add_query_arg( $download_query, $plugin_info->download_url ) );
1288
  }
1307
  */
1308
  public function get_installed_version() {
1309
  if ( function_exists( 'get_plugins' ) ) {
1310
+ $all_plugins = get_plugins();
1311
+ if ( array_key_exists( $this->get_plugin_file(), $all_plugins ) && array_key_exists( 'Version', $all_plugins[ $this->get_plugin_file() ] ) ) {
1312
+ return $all_plugins[ $this->get_plugin_file() ]['Version'];
1313
  }
1314
  }
1315
  }
1316
 
1317
  /**
1318
+ * Get plugin update state
1319
  *
1320
+ * @param boolean $force_recheck
 
 
1321
  *
1322
+ * @return object
1323
  */
1324
+ public function get_state( $force_recheck = false ) {
1325
+
1326
+ $state = null;
1327
+
1328
+ if ( ! $force_recheck ) {
1329
+ $state = get_site_option( $this->pue_option_name, false, false );
1330
+ }
1331
+
1332
+ if ( empty( $state ) ) {
1333
+ $state = new stdClass;
1334
+ $state->lastCheck = 0;
1335
+ $state->checkedVersion = '';
1336
+ $state->update = null;
1337
+ }
1338
+
1339
+ return $state;
1340
+
1341
  }
1342
 
1343
  /**
1344
+ * Update plugin update state
1345
  *
1346
+ * @param object $value
 
1347
  */
1348
+ public function update_state( $value ) {
1349
+
1350
+ update_site_option( $this->pue_option_name, $value );
1351
+
1352
  }
1353
 
1354
  /**
1356
  *
1357
  * The results are stored in the DB option specified in $pue_option_name.
1358
  *
1359
+ * @param array $updates
1360
+ * @param boolean $force_recheck
1361
  *
1362
+ * @return array
1363
  */
1364
+ public function check_for_updates( $updates = array(), $force_recheck = false ) {
1365
+ $state = $this->get_state( $force_recheck );
 
 
 
 
 
 
1366
 
1367
  $state->lastCheck = time();
1368
  $state->checkedVersion = $this->get_installed_version();
1369
+
1370
+ // Save before checking in case something goes wrong
1371
+ $this->update_state( $state );
1372
 
1373
  $state->update = $this->request_update();
1374
 
1375
  // If a null update was returned, skip the end of the function.
1376
+ if ( null !== $state->update ) {
1377
+ //Is there an update to insert?
1378
+ if ( version_compare( $state->update->version, $this->get_installed_version(), '>' ) ) {
1379
+ if ( empty( $updates ) ) {
1380
+ $updates = (object) array( 'response' => array() );
1381
+ }
1382
 
1383
+ $updates->response[ $this->get_plugin_file() ] = $state->update->to_wp_format();
 
 
 
 
 
1384
 
1385
+ // If the key has expired we should register an appropriate admin notice
1386
+ if ( $this->plugin_info->api_expired ) {
1387
+ Tribe__Main::instance()->pue_notices()->add_notice( Tribe__PUE__Notices::EXPIRED_KEY, $this->plugin_name );
1388
+ }
1389
  }
1390
  }
1391
 
1392
+ $this->update_state( $state );
1393
 
1394
  return $updates;
1395
  }
1396
 
1397
  /**
1398
  * Clears out the site external site option and re-checks the license key
1399
+ *
1400
+ * @param string $value
1401
+ * @param string $field_id
1402
+ * @param string $validated_field
1403
+ *
1404
+ * @return string
1405
  */
1406
+ public function check_for_api_key_error( $value, $field_id, $validated_field ) {
1407
+
1408
+ // Only hook into our option
1409
+ if ( $this->pue_install_key !== $field_id ) {
1410
+ return $value;
1411
+ }
1412
+
1413
  if ( 'service' !== $this->context ) {
1414
+ $this->check_for_updates( array(), true );
 
1415
  }
1416
 
1417
+ $network_option = false;
1418
+
1419
+ if ( ! empty( $validated_field->field['network_option'] ) ) {
1420
+ $network_option = (boolean) $validated_field->field['network_option'];
1421
+ }
1422
+
1423
+ $key_type = 'site';
1424
+
1425
+ if ( $network_option ) {
1426
+ $key_type = 'network';
1427
  }
1428
 
1429
+ $current_key = $this->get_key( $key_type );
1430
+
1431
  // if we are saving this PUE key, we need to make sure we update the license key notices
1432
  // appropriately. Otherwise, we could have an invalid license key in place but the notices
1433
  // aren't being thrown globally
 
 
 
 
1434
 
1435
+ $query_args = $this->get_validate_query();
1436
+
1437
+ $query_args['key'] = sanitize_text_field( $value );
1438
+
1439
+ $this->license_key_status( $query_args );
1440
+
1441
+ return $value;
1442
+
1443
  }
1444
 
1445
  /**
1455
  * @return mixed
1456
  */
1457
  public function inject_info( $result, $action = null, $args = null ) {
1458
+ $relevant = ( 'plugin_information' === $action ) && isset( $args->slug ) && ( $args->slug === $this->slug );
1459
  if ( ! $relevant ) {
1460
  return $result;
1461
  }
1462
 
1463
+ $query_args = $this->get_validate_query();
1464
+
1465
+ $plugin_info = $this->license_key_status( $query_args );
1466
+
1467
  if ( $plugin_info ) {
1468
  return $plugin_info->to_wp_format();
1469
  }
1533
  */
1534
  public static function array_insert_after_key( $key, $source_array, $insert_array ) {
1535
  if ( array_key_exists( $key, $source_array ) ) {
1536
+ $position = array_search( $key, array_keys( $source_array ), true ) + 1;
1537
  $source_array = array_slice( $source_array, 0, $position, true ) + $insert_array + array_slice( $source_array, $position, null, true );
1538
  } else {
1539
  // If no key is found, then add it to the end of the array.
1552
  *
1553
  */
1554
  public function return_install_key( $keys = array() ) {
1555
+ $key = $this->get_key();
1556
+
1557
+ if ( ! empty( $key ) ) {
1558
+ $keys[ $this->get_slug() ] = $key;
1559
  }
1560
 
1561
  return $keys;
1583
  if ( isset( $_SERVER['SERVER_NAME'] ) ) {
1584
  return $_SERVER['SERVER_NAME'];
1585
  }
1586
+ $site_url = wp_parse_url( get_option( 'siteurl' ) );
1587
  if ( ! $site_url || ! isset( $site_url['host'] ) ) {
1588
  return '';
1589
  } else {
1592
  }
1593
 
1594
  /**
1595
+ * Check whether the current plugin is active for the network or not.
1596
  *
1597
+ * @return boolean Whether the plugin is network activated
 
 
1598
  */
1599
+ protected function is_plugin_active_for_network() {
1600
+
1601
+ if ( ! is_multisite() ) {
1602
+ return false;
1603
+ }
1604
+
1605
  $map = array(
1606
  'event-aggregator/event-aggregator.php' => 'the-events-calendar/the-events-calendar.php',
1607
  );
1608
 
1609
+ $plugin_file = $this->get_plugin_file();
1610
+
1611
+ if ( isset( $map[ $this->plugin_file ] ) ) {
1612
+ $plugin_file = $map[ $this->plugin_file ];
1613
+ }
1614
+
1615
+ return is_plugin_active_for_network( $plugin_file );
1616
+
1617
  }
1618
 
1619
  /**
1628
  'expired' => esc_html__( 'Expired license. Consult your network administrator.', 'tribe-common' ),
1629
  );
1630
 
1631
+ $response = $this->validate_key( $this->get_key( 'network' ), true );
1632
 
1633
+ if ( isset( $response['status'] ) && 1 === (int) $response['status'] ) {
1634
  $state = 'licensed';
1635
+ } elseif ( isset( $response['api_expired'] ) && true === (boolean) $response['api_expired'] ) {
1636
  $state = 'expired';
1637
  } else {
1638
  $state = 'not-licensed';
1658
  return false;
1659
  }
1660
 
1661
+ if ( $this->is_plugin_active_for_network() && ! is_super_admin() ) {
1662
  return false;
1663
  }
1664
 
1682
  return false;
1683
  }
1684
 
1685
+ if ( ! $this->is_plugin_active_for_network() ) {
1686
  return false;
1687
  }
1688
 
common/src/Tribe/PUE/Notices.php CHANGED
@@ -219,17 +219,29 @@ class Tribe__PUE__Notices {
219
  }
220
 
221
  $prompt = sprintf( _n(
222
- "It looks like you're using %s, but the license key you supplied does not appear to be valid or is missing. Please review and fix so that you can always have access to our latest versions!",
223
- "It looks like you're using %s, but the license keys you supplied do not appear to be valid or are missing. Please review and fix so that you can always have access to our latest versions!",
224
  count( $this->notices[ self::INVALID_KEY ] ),
225
  'tribe-common'
226
  ),
227
- $plugin_names
 
 
228
  );
229
 
230
- $action_steps = $this->find_your_key_text();
 
 
 
 
 
 
 
 
 
 
231
 
232
- $this->render_notice( 'pue_key-' . self::INVALID_KEY, "<p>$prompt</p> <p>$action_steps</p>" );
233
  }
234
 
235
  /**
@@ -284,8 +296,8 @@ class Tribe__PUE__Notices {
284
  }
285
 
286
  $prompt = sprintf( _n(
287
- 'You have entered a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to to manage your installs, upgrade your license, or purchase a new one.',
288
- 'You have entered license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to to manage your installs, upgrade your licenses, or purchase new ones.', count( $this->notices[ self::UPGRADE_KEY ] ),
289
  'tribe-common'
290
  ),
291
  $plugin_names,
@@ -321,10 +333,9 @@ class Tribe__PUE__Notices {
321
  */
322
  protected function find_your_key_text() {
323
  return sprintf(
324
- __( 'You can find your license keys by logging in to %1$syour account on theeventscalendar.com%2$s and you can enter them over on the %3$ssettings page%2$s.', 'tribe-common' ),
325
  '<a href="http://m.tri.be/195d" target="_blank">',
326
- '</a>',
327
- '<a href="' . admin_url( 'edit.php?page=tribe-common&tab=licenses&post_type=tribe_events' ) . '">'
328
  );
329
  }
330
 
219
  }
220
 
221
  $prompt = sprintf( _n(
222
+ "It looks like you're using %1\$s, but the license key is invalid. Please download the latest version %2\$sfrom your account%3\$s.",
223
+ "It looks like you're using %1\$s, but the license keys are invalid. Please download the latest versions %2\$sfrom your account%3\$s.",
224
  count( $this->notices[ self::INVALID_KEY ] ),
225
  'tribe-common'
226
  ),
227
+ $plugin_names,
228
+ '<a href="http://m.tri.be/19n4" target="_blank">',
229
+ '</a>'
230
  );
231
 
232
+ /**
233
+ * Filters the actions that can be taken if an invalid key is present
234
+ *
235
+ * @param string $actions Actions
236
+ * @param array $plugin_names Plugin names the message applies to
237
+ */
238
+ $action_steps = apply_filters( 'tribe_notice_invalid_key_actions', $this->find_your_key_text(), $plugin_names );
239
+
240
+ if ( $action_steps ) {
241
+ $action_steps = "<p>{$action_steps}</p>";
242
+ }
243
 
244
+ $this->render_notice( 'pue_key-' . self::INVALID_KEY, "<p>{$prompt}</p> {$action_steps}" );
245
  }
246
 
247
  /**
296
  }
297
 
298
  $prompt = sprintf( _n(
299
+ 'You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to to manage your installs, upgrade your license, or purchase a new one.',
300
+ 'You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to to manage your installs, upgrade your licenses, or purchase new ones.', count( $this->notices[ self::UPGRADE_KEY ] ),
301
  'tribe-common'
302
  ),
303
  $plugin_names,
333
  */
334
  protected function find_your_key_text() {
335
  return sprintf(
336
+ __( 'You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s.', 'tribe-common' ),
337
  '<a href="http://m.tri.be/195d" target="_blank">',
338
+ '</a>'
 
339
  );
340
  }
341
 
common/src/Tribe/PUE/Plugin_Info.php CHANGED
@@ -57,6 +57,12 @@ if ( ! class_exists( 'Tribe__PUE__Plugin_Info' ) ) {
57
  */
58
  public static function from_json( $json ) {
59
  $apiResponse = json_decode( $json );
 
 
 
 
 
 
60
  if ( empty( $apiResponse ) || ! is_object( $apiResponse ) ) {
61
  return null;
62
  }
57
  */
58
  public static function from_json( $json ) {
59
  $apiResponse = json_decode( $json );
60
+
61
+ // Get first item of the response array
62
+ if ( $apiResponse && ! empty( $apiResponse->results ) ) {
63
+ $apiResponse = current( $apiResponse->results );
64
+ }
65
+
66
  if ( empty( $apiResponse ) || ! is_object( $apiResponse ) ) {
67
  return null;
68
  }
common/tribe-common.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /*
3
  Description: An event settings framework for managing shared options
4
- Version: 4.5.0.1
5
  Author: Modern Tribe, Inc.
6
  Author URI: http://m.tri.be/1x
7
  Text Domain: tribe-common
1
  <?php
2
  /*
3
  Description: An event settings framework for managing shared options
4
+ Version: 4.5.1
5
  Author: Modern Tribe, Inc.
6
  Author URI: http://m.tri.be/1x
7
  Text Domain: tribe-common
lang/the-events-calendar-fr_FR.mo CHANGED
Binary file
lang/the-events-calendar-fr_FR.po CHANGED
@@ -2,7 +2,7 @@
2
  # This file is distributed under the same license as the Plugins - The Events Calendar - Stable (latest release) package.
3
  msgid ""
4
  msgstr ""
5
- "PO-Revision-Date: 2017-04-30 11:24:27+0000\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
@@ -13,15 +13,15 @@ msgstr ""
13
 
14
  #: src/admin-views/aggregator/settings.php:460
15
  msgid "Other URLs"
16
- msgstr ""
17
 
18
  #: src/admin-views/aggregator/settings.php:411
19
  msgid "Fetch source event's settings (e.g. Show Google Maps Link or Sticky in Month View) when importing from another site using The Events Calendar."
20
- msgstr ""
21
 
22
  #: src/admin-views/aggregator/settings.php:410
23
  msgid "Import Event Settings"
24
- msgstr ""
25
 
26
  #: src/admin-views/aggregator/settings.php:400
27
  msgid "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."
@@ -29,7 +29,7 @@ msgstr ""
29
 
30
  #: src/admin-views/aggregator/origins/url.php:84
31
  msgid "Enter the url for the calendar, website, or event you would like to import. Event Aggregator will attempt to import events at that location."
32
- msgstr ""
33
 
34
  #: src/Tribe/REST/V1/Messages.php:23
35
  msgid "The 'categories' parameter contains invalid category slugs or IDs"
@@ -37,47 +37,47 @@ msgstr ""
37
 
38
  #: src/Tribe/REST/V1/Messages.php:14
39
  msgid "The requested post ID does not exist or is not an event"
40
- msgstr ""
41
 
42
  #: src/Tribe/REST/V1/Messages.php:13
43
  msgid "The event ID is missing from the request"
44
- msgstr ""
45
 
46
  #: src/Tribe/REST/V1/Messages.php:15
47
  msgid "The event does not have a venue assigned"
48
- msgstr ""
49
 
50
  #: src/admin-views/aggregator/settings.php:398
51
  msgid "Import date range"
52
- msgstr ""
53
 
54
  #: src/Tribe/REST/V1/Endpoints/Single_Event.php:97
55
  msgid "Returns the data of the event with the specified post ID"
56
- msgstr ""
57
 
58
  #: src/Tribe/REST/V1/Messages.php:27
59
  msgid "The requested post ID does not exist or is not an organizer"
60
- msgstr ""
61
 
62
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:52
63
  msgid "The event last modification date in UTC time"
64
- msgstr ""
65
 
66
  #: src/Tribe/REST/V1/Endpoints/Archive_Event.php:449
67
  msgid "Events should start after the specified date"
68
- msgstr ""
69
 
70
  #: src/Tribe/REST/V1/Endpoints/Archive_Event.php:457
71
  msgid "Events should start before the specified date"
72
- msgstr ""
73
 
74
  #: src/Tribe/REST/V1/Endpoints/Single_Event.php:109
75
  msgid "An event with the specified event does not exist."
76
- msgstr ""
77
 
78
  #: src/Tribe/REST/V1/Endpoints/Swagger_Documentation.php:89
79
  msgid "The Events Calendar REST API"
80
- msgstr ""
81
 
82
  #: src/Tribe/REST/V1/Endpoints/Swagger_Documentation.php:90
83
  msgid "The Events Calendar REST API allows accessing upcoming events information easily and conveniently."
@@ -85,23 +85,23 @@ msgstr ""
85
 
86
  #: src/Tribe/REST/V1/Messages.php:16
87
  msgid "The event does not have an organizer assigned"
88
- msgstr ""
89
 
90
  #: src/Tribe/REST/V1/Messages.php:17
91
  msgid "The requested event is not accessible"
92
- msgstr ""
93
 
94
  #: src/Tribe/REST/V1/Messages.php:18
95
  msgid "The 'page' parameter must be a positive integer greater than 1"
96
- msgstr ""
97
 
98
  #: src/Tribe/REST/V1/Messages.php:22
99
  msgid "The 'search' parameter must be a string"
100
- msgstr ""
101
 
102
  #: src/Tribe/REST/V1/Endpoints/Single_Event.php:90
103
  msgid "the event post ID"
104
- msgstr ""
105
 
106
  #: src/Tribe/REST/V1/Endpoints/Archive_Event.php:465
107
  msgid "Events should contain the specified string in the title or description"
@@ -113,12 +113,12 @@ msgstr ""
113
 
114
  #: src/Tribe/REST/V1/Messages.php:25
115
  msgid "The requested event archive page does not exist"
116
- msgstr ""
117
 
118
  #: src/admin-views/aggregator/fields/schedule.php:50
119
  #: src/admin-views/aggregator/fields/schedule.php:68
120
  msgid "at approximately"
121
- msgstr ""
122
 
123
  #: src/admin-views/aggregator/origins/url.php:89
124
  msgid "Event Aggregator will try to fetch events starting in %s from the current date or the specified date;"
@@ -126,41 +126,41 @@ msgstr ""
126
 
127
  #: src/admin-views/aggregator/origins/url.php:83
128
  msgid "example.com/"
129
- msgstr ""
130
 
131
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:40
132
  msgid "The event creation date in the site timezone"
133
- msgstr ""
134
 
135
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:56
136
  msgid "The URL to the event page"
137
- msgstr ""
138
 
139
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:64
140
  msgid "The event name"
141
- msgstr ""
142
 
143
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:68
144
  msgid "The event long description"
145
- msgstr ""
146
 
147
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:72
148
  msgid "The event short description"
149
- msgstr ""
150
 
151
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:76
152
  #: src/Tribe/REST/V1/Documentation/Organizer_Definition_Provider.php:72
153
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:72
154
  msgid "The event featured image details if set"
155
- msgstr ""
156
 
157
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:81
158
  msgid "Whether or not this event is an all day Event"
159
- msgstr ""
160
 
161
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:85
162
  msgid "The event start date in the event or site timezone"
163
- msgstr ""
164
 
165
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:89
166
  msgid "An array of each component of the event start date"
@@ -168,7 +168,7 @@ msgstr ""
168
 
169
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:94
170
  msgid "The event end date in the event or site timezone"
171
- msgstr ""
172
 
173
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:98
174
  msgid "An array of each component of the event end date"
@@ -176,7 +176,7 @@ msgstr ""
176
 
177
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:103
178
  msgid "The event start date in UTC time"
179
- msgstr ""
180
 
181
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:107
182
  msgid "An array of each component of the event start date in UTC time"
@@ -184,7 +184,7 @@ msgstr ""
184
 
185
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:112
186
  msgid "The event end date in UTC time"
187
- msgstr ""
188
 
189
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:116
190
  msgid "An array of each component of the event end date in UTC time"
@@ -196,27 +196,27 @@ msgstr ""
196
 
197
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:129
198
  msgid "The event cost including the currency symbol"
199
- msgstr ""
200
 
201
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:133
202
  msgid "The event cost details"
203
- msgstr ""
204
 
205
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:138
206
  msgid "The event website URL"
207
- msgstr ""
208
 
209
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:142
210
  msgid "Whether the map should be shown for the event or not"
211
- msgstr ""
212
 
213
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:146
214
  msgid "Whether the map link should be shown for the event or not"
215
- msgstr ""
216
 
217
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:150
218
  msgid "Whether an event should be hidden from the calendar view or not"
219
- msgstr ""
220
 
221
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:154
222
  msgid "Whether an event is sticky in the calendar view or not"
@@ -224,27 +224,27 @@ msgstr ""
224
 
225
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:158
226
  msgid "Whethere the event is featured in the calendar or not"
227
- msgstr ""
228
 
229
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:162
230
  msgid "The event categories"
231
- msgstr ""
232
 
233
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:167
234
  msgid "The event tags"
235
- msgstr ""
236
 
237
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:172
238
  msgid "The event venue"
239
- msgstr ""
240
 
241
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:177
242
  msgid "The event organizers"
243
- msgstr ""
244
 
245
  #: src/Tribe/REST/V1/Documentation/Organizer_Definition_Provider.php:24
246
  msgid "The organizer WordPress post ID"
247
- msgstr ""
248
 
249
  #: src/Tribe/REST/V1/Documentation/Organizer_Definition_Provider.php:32
250
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:32
@@ -257,107 +257,107 @@ msgstr ""
257
 
258
  #: src/Tribe/REST/V1/Documentation/Organizer_Definition_Provider.php:40
259
  msgid "The organizer creation date in the site timezone"
260
- msgstr ""
261
 
262
  #: src/Tribe/REST/V1/Documentation/Organizer_Definition_Provider.php:44
263
  msgid "The organizer creation date in UTC time"
264
- msgstr ""
265
 
266
  #: src/Tribe/REST/V1/Documentation/Organizer_Definition_Provider.php:48
267
  msgid "The organizer last modification date in the site timezone"
268
- msgstr ""
269
 
270
  #: src/Tribe/REST/V1/Documentation/Organizer_Definition_Provider.php:56
271
  msgid "The URL to the organizer page"
272
- msgstr ""
273
 
274
  #: src/Tribe/REST/V1/Documentation/Organizer_Definition_Provider.php:60
275
  msgid "The organizer name"
276
- msgstr ""
277
 
278
  #: src/Tribe/REST/V1/Documentation/Organizer_Definition_Provider.php:64
279
  msgid "The organizer long description"
280
- msgstr ""
281
 
282
  #: src/Tribe/REST/V1/Documentation/Organizer_Definition_Provider.php:68
283
  msgid "The organizer short description"
284
- msgstr ""
285
 
286
  #: src/Tribe/REST/V1/Documentation/Organizer_Definition_Provider.php:77
287
  msgid "The organizer phone number"
288
- msgstr ""
289
 
290
  #: src/Tribe/REST/V1/Documentation/Organizer_Definition_Provider.php:81
291
  msgid "The organizer website"
292
- msgstr ""
293
 
294
  #: src/Tribe/REST/V1/Documentation/Organizer_Definition_Provider.php:85
295
  msgid "The organizer email address"
296
- msgstr ""
297
 
298
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:28
299
  msgid "The venue ID used to globally identify in Event Aggregator"
300
- msgstr ""
301
 
302
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:40
303
  msgid "The venue creation date in the site timezone"
304
- msgstr ""
305
 
306
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:44
307
  msgid "The venue creation date in UTC time"
308
- msgstr ""
309
 
310
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:48
311
  msgid "The venue last modification date in the site timezone"
312
- msgstr ""
313
 
314
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:56
315
  msgid "The URL to the venue page"
316
- msgstr ""
317
 
318
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:60
319
  msgid "The venue name"
320
- msgstr ""
321
 
322
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:68
323
  msgid "The venue short description"
324
- msgstr ""
325
 
326
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:75
327
  msgid "Whether the map should be shown for the venue or not"
328
- msgstr ""
329
 
330
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:79
331
  msgid "Whether the map link should be shown for the venue or not"
332
- msgstr ""
333
 
334
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:83
335
  msgid "The venue address"
336
- msgstr ""
337
 
338
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:87
339
  msgid "The venue city"
340
- msgstr ""
341
 
342
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:91
343
  msgid "The venue country"
344
- msgstr ""
345
 
346
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:107
347
  msgid "The venue phone number"
348
- msgstr ""
349
 
350
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:111
351
  msgid "The venue website URL"
352
- msgstr ""
353
 
354
  #: src/Tribe/REST/V1/EA_Messages.php:9
355
  msgid "Event Aggregator cannot import events from this site."
356
- msgstr ""
357
 
358
  #: src/Tribe/REST/V1/EA_Messages.php:11
359
  msgid "The Events Calendar is API is not providing the site origin correctly."
360
- msgstr ""
361
 
362
  #: src/Tribe/REST/V1/EA_Messages.php:14
363
  msgid "Events could not be imported. The URL provided could be reached and has The Events Calendar REST API enabled, but returned malformed data."
@@ -385,7 +385,7 @@ msgstr ""
385
 
386
  #: src/Tribe/REST/V1/EA_Messages.php:22
387
  msgid "The requested URL does not have any upcoming and published events matching the search criteria."
388
- msgstr ""
389
 
390
  #: src/Tribe/REST/V1/Endpoints/Archive_Event.php:433
391
  msgid "The archive page to return"
@@ -393,7 +393,7 @@ msgstr ""
393
 
394
  #: src/Tribe/REST/V1/Endpoints/Archive_Event.php:441
395
  msgid "The number of events to return on each page"
396
- msgstr ""
397
 
398
  #: src/Tribe/REST/V1/Endpoints/Archive_Event.php:473
399
  msgid "Events should be assigned one of the specified categories slugs or IDs"
@@ -405,15 +405,15 @@ msgstr ""
405
 
406
  #: src/Tribe/REST/V1/Endpoints/Archive_Event.php:489
407
  msgid "Returns all the upcoming events matching the search criteria"
408
- msgstr ""
409
 
410
  #: src/Tribe/REST/V1/Endpoints/Archive_Event.php:497
411
  msgid "One or more of the specified query variables has a bad format"
412
- msgstr ""
413
 
414
  #: src/Tribe/REST/V1/Endpoints/Single_Event.php:106
415
  msgid "The event with the specified ID is not accesible."
416
- msgstr ""
417
 
418
  #: src/Tribe/REST/V1/Endpoints/Swagger_Documentation.php:124
419
  msgid "Returns the documentation for The Events Calendar REST API in Swagger consumable format."
@@ -421,39 +421,39 @@ msgstr ""
421
 
422
  #: src/Tribe/REST/V1/Messages.php:26
423
  msgid "The requested post ID does not exist or is not an venue"
424
- msgstr ""
425
 
426
  #: src/admin-views/aggregator/fields/schedule.php:3
427
  msgid "Schedule:"
428
- msgstr ""
429
 
430
  #: src/admin-views/aggregator/fields/schedule.php:32
431
  msgid "Import runs daily at approximately"
432
- msgstr ""
433
 
434
  #: src/admin-views/aggregator/fields/schedule.php:38
435
  msgid "Import runs weekly on"
436
- msgstr ""
437
 
438
  #: src/admin-views/aggregator/fields/schedule.php:56
439
  msgid "Import runs monthly on day"
440
- msgstr ""
441
 
442
  #: src/admin-views/aggregator/origins/refine.php:22
443
  msgid "Use the filters to narrow down which events are fetched from this site."
444
- msgstr ""
445
 
446
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:44
447
  msgid "The event creation date in UTC time"
448
- msgstr ""
449
 
450
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:48
451
  msgid "The event last modification date in the site timezone"
452
- msgstr ""
453
 
454
  #: src/Tribe/REST/V1/EA_Messages.php:39
455
  msgid "Learn more."
456
- msgstr ""
457
 
458
  #: src/Tribe/REST/V1/Messages.php:19
459
  msgid "The 'per_page' parameter must be a positive integer greater than 1"
@@ -465,7 +465,7 @@ msgstr ""
465
 
466
  #: src/admin-views/aggregator/settings.php:377
467
  msgid "The default event category for events imported via other URLs"
468
- msgstr ""
469
 
470
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:60
471
  msgid "The TEC REST API link to fetc this event"
@@ -477,11 +477,11 @@ msgstr ""
477
 
478
  #: src/Tribe/REST/V1/Documentation/Organizer_Definition_Provider.php:28
479
  msgid "The organizer ID used to globally identify in Event Aggregator"
480
- msgstr ""
481
 
482
  #: src/Tribe/REST/V1/Documentation/Organizer_Definition_Provider.php:52
483
  msgid "The organizer last modification date in UTC time"
484
- msgstr ""
485
 
486
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:36
487
  msgid "The venue author WordPress post ID"
@@ -489,35 +489,35 @@ msgstr ""
489
 
490
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:52
491
  msgid "The venue last modification date in UTC time"
492
- msgstr ""
493
 
494
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:64
495
  msgid "The venue long description"
496
- msgstr ""
497
 
498
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:95
499
  msgid "The venue province"
500
- msgstr ""
501
 
502
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:99
503
  msgid "The venue state"
504
- msgstr ""
505
 
506
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:103
507
  msgid "The venue ZIP code"
508
- msgstr ""
509
 
510
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:115
511
  msgid "The venue state or province"
512
- msgstr ""
513
 
514
  #: src/Tribe/REST/V1/EA_Messages.php:10
515
  msgid "Event Aggregator cannot import events because this site is running an outdated version of The Events Calendar."
516
- msgstr ""
517
 
518
  #: src/Tribe/REST/V1/EA_Messages.php:12
519
  msgid "Events could not be imported. Event Aggregator does not yet support events from that URL. We have noted your request and will review it for support in the future."
520
- msgstr ""
521
 
522
  #: src/Tribe/REST/V1/EA_Messages.php:13
523
  msgid "Events could not be imported. The Events Calendar REST API is disabled on the requested URL."
@@ -533,15 +533,15 @@ msgstr ""
533
 
534
  #: src/Tribe/REST/V1/EA_Messages.php:58
535
  msgid "Try to adjust your import settings and try again."
536
- msgstr ""
537
 
538
  #: src/Tribe/REST/V1/Endpoints/Archive_Event.php:500
539
  msgid "No events match the query or the requested page was not found."
540
- msgstr ""
541
 
542
  #: src/Tribe/REST/V1/Endpoints/Single_Event.php:103
543
  msgid "The event post ID is missing."
544
- msgstr ""
545
 
546
  #: src/Tribe/REST/V1/Messages.php:21
547
  msgid "The 'end_date' parameter must be in a supported format"
@@ -549,97 +549,97 @@ msgstr ""
549
 
550
  #: src/admin-views/aggregator/origins/url.php:7
551
  msgid "One-time imports include currently listed upcoming events, while scheduled imports automatically grab new events and updates from this url on a set schedule."
552
- msgstr ""
553
 
554
  #: src/admin-views/aggregator/settings.php:366
555
  msgid "The default post status for events imported via other URLs"
556
- msgstr ""
557
 
558
  #: src/admin-views/aggregator/settings.php:361
559
  msgid "Other URL Import Settings"
560
- msgstr ""
561
 
562
  #: src/admin-views/aggregator/origins/url.php:91
563
  msgid "you can modify this setting here."
564
- msgstr ""
565
 
566
  #: src/Tribe/Aggregator/Service.php:517
567
  msgid "Events could not be imported. The URL provided could not be reached."
568
- msgstr ""
569
 
570
  #: src/Tribe/Aggregator/API/Origins.php:61
571
  msgid "Other URL (beta)"
572
- msgstr ""
573
 
574
  #: src/Tribe/Aggregator/Settings.php:273 src/Tribe/Aggregator/Settings.php:274
575
  msgid "24 hours"
576
- msgstr ""
577
 
578
  #: src/Tribe/Aggregator/Settings.php:277 src/Tribe/Aggregator/Settings.php:278
579
  msgid "72 hours"
580
- msgstr ""
581
 
582
  #: src/Tribe/Aggregator/Settings.php:281
583
  msgid "One week"
584
- msgstr ""
585
 
586
  #: src/Tribe/Aggregator/Service.php:518
587
  msgid "The requested source does not have any upcoming and published events matching the search criteria."
588
- msgstr ""
589
 
590
  #: src/Tribe/Aggregator/Settings.php:282
591
  msgid "a week"
592
- msgstr ""
593
 
594
  #: src/Tribe/Aggregator/Settings.php:285
595
  msgid "Two weeks"
596
- msgstr ""
597
 
598
  #: src/Tribe/Aggregator/Settings.php:286
599
  msgid "two weeks"
600
- msgstr ""
601
 
602
  #: src/Tribe/Aggregator/Settings.php:289
603
  msgid "Three weeks"
604
- msgstr ""
605
 
606
  #: src/Tribe/Aggregator/Settings.php:293
607
  msgid "One month"
608
- msgstr ""
609
 
610
  #: src/Tribe/Aggregator/Settings.php:294
611
  msgid "a month"
612
- msgstr ""
613
 
614
  #: src/Tribe/Aggregator/Settings.php:297
615
  msgid "Two months"
616
- msgstr ""
617
 
618
  #: src/Tribe/Aggregator/Settings.php:298
619
  msgid "two months"
620
- msgstr ""
621
 
622
  #: src/Tribe/Aggregator/Settings.php:301
623
  msgid "Three months"
624
- msgstr ""
625
 
626
  #: src/Tribe/Aggregator/Settings.php:302
627
  msgid "three months"
628
- msgstr ""
629
 
630
  #: src/Tribe/Aggregator/Tabs/New.php:364
631
  msgid "%1$d new event tag was created."
632
  msgid_plural "%1$d new event tags were created."
633
- msgstr[0] ""
634
- msgstr[1] ""
635
 
636
  #: src/Tribe/Aggregator/Tabs/New.php:368
637
  msgid "View your event tags"
638
- msgstr ""
639
 
640
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:28
641
  msgid "The event ID used to globally identify in Event Aggregator"
642
- msgstr ""
643
 
644
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:32
645
  msgid "An Array containing the lineage of where this event comes from, this should not change after the event is created."
@@ -651,19 +651,19 @@ msgstr ""
651
 
652
  #: src/Tribe/Aggregator/Record/Url.php:17
653
  msgid "Other URL"
654
- msgstr ""
655
 
656
  #: src/Tribe/Aggregator/Service.php:497
657
  msgid "Events could not be imported. The import parameters were invalid."
658
- msgstr ""
659
 
660
  #: src/Tribe/Aggregator/Settings.php:290
661
  msgid "three weeks"
662
- msgstr ""
663
 
664
  #: src/Tribe/Aggregator/Service.php:504
665
  msgid "Events could not be imported. The URL provided did not have events in the proper format."
666
- msgstr ""
667
 
668
  #: src/Tribe/Venue.php:201
669
  msgctxt "Metabox title"
@@ -690,7 +690,7 @@ msgstr "%1$s en %2$s"
690
 
691
  #: src/admin-views/tribe-options-display.php:185
692
  msgid "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. <a href=\"%s\">Read more</a>."
693
- msgstr "Modifie les 3 évènements par jour par défaut dans la vue mensuelle. Pour n’imposer aucune limite, vous pouvez spécifier -1. Veuillez noter qu’il peut y avoir des problèmes de performances si vous permettez trop d’évènements par jour. <a href=\"%s\">En savoir plus</a>."
694
 
695
  #: src/Tribe/Main.php:708
696
  msgctxt "all events slug"
@@ -703,23 +703,23 @@ msgstr "%s doit être un nombre entier."
703
 
704
  #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:52
705
  msgid "The URL to the term archive page"
706
- msgstr ""
707
 
708
  #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:48
709
  msgid "The number of posts associated with the term"
710
- msgstr ""
711
 
712
  #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:44
713
  msgid "The term parent term if any"
714
- msgstr ""
715
 
716
  #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:40
717
  msgid "The term description"
718
- msgstr ""
719
 
720
  #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:36
721
  msgid "The taxonomy the term belongs to"
722
- msgstr ""
723
 
724
  #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:32
725
  msgid "The term slug"
@@ -727,11 +727,11 @@ msgstr ""
727
 
728
  #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:28
729
  msgid "The term name"
730
- msgstr ""
731
 
732
  #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:24
733
  msgid "The WordPress term ID"
734
- msgstr ""
735
 
736
  #: common/src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php:36
737
  msgid "The link to the image in the specified size on the site"
@@ -743,59 +743,59 @@ msgstr ""
743
 
744
  #: common/src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php:28
745
  msgid "The image height in pixels in the specified size"
746
- msgstr ""
747
 
748
  #: common/src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php:24
749
  msgid "The image width in pixels in the specified size"
750
- msgstr ""
751
 
752
  #: common/src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:44
753
  msgid "The details about each size available for the image"
754
- msgstr ""
755
 
756
  #: common/src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:40
757
  msgid "The image natura height in pixels"
758
- msgstr ""
759
 
760
  #: common/src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:36
761
  msgid "The image natural width in pixels"
762
- msgstr ""
763
 
764
  #: common/src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:32
765
  msgid "The image file extension"
766
- msgstr ""
767
 
768
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:24
769
  msgid "The venue WordPress post ID"
770
- msgstr ""
771
 
772
  #: common/src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:24
773
  msgid "The URL to the full size version of the image"
774
- msgstr ""
775
 
776
  #: common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:44
777
  msgid "The date seconds"
778
- msgstr ""
779
 
780
  #: common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:40
781
  msgid "The date minutes"
782
- msgstr ""
783
 
784
  #: common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:36
785
  msgid "The date hour"
786
- msgstr ""
787
 
788
  #: common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:32
789
  msgid "The date day"
790
- msgstr ""
791
 
792
  #: common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:28
793
  msgid "The date month"
794
- msgstr ""
795
 
796
  #: common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:24
797
  msgid "The date year"
798
- msgstr ""
799
 
800
  #: common/src/Tribe/Documentation/Swagger/Cost_Details_Definition_Provider.php:33
801
  msgid "An sorted array of all the numeric values for the cost"
@@ -807,7 +807,7 @@ msgstr ""
807
 
808
  #: common/src/Tribe/Documentation/Swagger/Cost_Details_Definition_Provider.php:24
809
  msgid "The cost currency symbol"
810
- msgstr ""
811
 
812
  #: src/Tribe/Main.php:4090
813
  msgid "Keyword"
@@ -821,7 +821,7 @@ msgstr "%s mis en avant"
821
  #: src/admin-views/widget-admin-list.php:35
822
  msgctxt "events list widget setting"
823
  msgid "Limit to featured events only"
824
- msgstr "N’afficher que les évènements mis en avant"
825
 
826
  #: src/admin-views/events-meta-box.php:99
827
  msgctxt "Start Date Time \"to\" End Date Time"
@@ -2350,8 +2350,8 @@ msgstr "Voir vos catégories d’évènements"
2350
  #: src/Tribe/Aggregator/Tabs/New.php:352
2351
  msgid "%1$d new event category was created."
2352
  msgid_plural "%1$d new event categories were created."
2353
- msgstr[0] ""
2354
- msgstr[1] ""
2355
 
2356
  #: src/Tribe/Aggregator/Tabs/New.php:343
2357
  msgid "View your event organizers"
@@ -2402,8 +2402,8 @@ msgstr[1] "%1$d existe %2$s ont été mis à jour."
2402
  #: src/Tribe/Aggregator/Tabs/New.php:270
2403
  msgid "%1$d new %2$s was imported."
2404
  msgid_plural "%1$d new %2$s were imported."
2405
- msgstr[0] ""
2406
- msgstr[1] ""
2407
 
2408
  #: src/Tribe/Aggregator/Tabs/New.php:206
2409
  msgid "1 import was scheduled."
2
  # This file is distributed under the same license as the Plugins - The Events Calendar - Stable (latest release) package.
3
  msgid ""
4
  msgstr ""
5
+ "PO-Revision-Date: 2017-05-03 16:38:38+0000\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
13
 
14
  #: src/admin-views/aggregator/settings.php:460
15
  msgid "Other URLs"
16
+ msgstr "Autres URL"
17
 
18
  #: src/admin-views/aggregator/settings.php:411
19
  msgid "Fetch source event's settings (e.g. Show Google Maps Link or Sticky in Month View) when importing from another site using The Events Calendar."
20
+ msgstr "Récupérez la configuration des évènements d'une autre source (ex. Show Google Maps Link ou Sticky in Month View) lors d'import d'un autre site en utilisant The Events Calendar."
21
 
22
  #: src/admin-views/aggregator/settings.php:410
23
  msgid "Import Event Settings"
24
+ msgstr "Import des paramètres des évènements"
25
 
26
  #: src/admin-views/aggregator/settings.php:400
27
  msgid "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."
29
 
30
  #: src/admin-views/aggregator/origins/url.php:84
31
  msgid "Enter the url for the calendar, website, or event you would like to import. Event Aggregator will attempt to import events at that location."
32
+ msgstr "Entrez l'URL de l'agenda, du site web ou de l'évènement que vous désirez importer. Event Aggregator essayera d'importer les événement à cet emplacement."
33
 
34
  #: src/Tribe/REST/V1/Messages.php:23
35
  msgid "The 'categories' parameter contains invalid category slugs or IDs"
37
 
38
  #: src/Tribe/REST/V1/Messages.php:14
39
  msgid "The requested post ID does not exist or is not an event"
40
+ msgstr "L'identifiant du post demandé n'existe pas ou n'est pas un évènement"
41
 
42
  #: src/Tribe/REST/V1/Messages.php:13
43
  msgid "The event ID is missing from the request"
44
+ msgstr "L’identifiant de l'évènement manque à la requête"
45
 
46
  #: src/Tribe/REST/V1/Messages.php:15
47
  msgid "The event does not have a venue assigned"
48
+ msgstr "L’évènement n'a pas de lieu attribué"
49
 
50
  #: src/admin-views/aggregator/settings.php:398
51
  msgid "Import date range"
52
+ msgstr "Importer la période"
53
 
54
  #: src/Tribe/REST/V1/Endpoints/Single_Event.php:97
55
  msgid "Returns the data of the event with the specified post ID"
56
+ msgstr "Retourne la date de l'évènement avec l'identifiant du post spécifié"
57
 
58
  #: src/Tribe/REST/V1/Messages.php:27
59
  msgid "The requested post ID does not exist or is not an organizer"
60
+ msgstr "L'identifiant du post demandé n'existe par ou n'est pas un organisateur"
61
 
62
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:52
63
  msgid "The event last modification date in UTC time"
64
+ msgstr "Date de la dernière modification de l’évènement en heure UTC"
65
 
66
  #: src/Tribe/REST/V1/Endpoints/Archive_Event.php:449
67
  msgid "Events should start after the specified date"
68
+ msgstr "Les évènements doivent démarrer après la date spécifiée"
69
 
70
  #: src/Tribe/REST/V1/Endpoints/Archive_Event.php:457
71
  msgid "Events should start before the specified date"
72
+ msgstr "Les évènements doivent démarrer avant la date spécifiée"
73
 
74
  #: src/Tribe/REST/V1/Endpoints/Single_Event.php:109
75
  msgid "An event with the specified event does not exist."
76
+ msgstr "Aucun événement avec l’événement spécifié n'existe."
77
 
78
  #: src/Tribe/REST/V1/Endpoints/Swagger_Documentation.php:89
79
  msgid "The Events Calendar REST API"
80
+ msgstr "The Events Calendar REST API"
81
 
82
  #: src/Tribe/REST/V1/Endpoints/Swagger_Documentation.php:90
83
  msgid "The Events Calendar REST API allows accessing upcoming events information easily and conveniently."
85
 
86
  #: src/Tribe/REST/V1/Messages.php:16
87
  msgid "The event does not have an organizer assigned"
88
+ msgstr "Aucun organisateur n'a été attribué à l'événement"
89
 
90
  #: src/Tribe/REST/V1/Messages.php:17
91
  msgid "The requested event is not accessible"
92
+ msgstr "L'événement demandé n'est pas accessible"
93
 
94
  #: src/Tribe/REST/V1/Messages.php:18
95
  msgid "The 'page' parameter must be a positive integer greater than 1"
96
+ msgstr "Le paramètre 'page' doit être un entier supérieur à 1"
97
 
98
  #: src/Tribe/REST/V1/Messages.php:22
99
  msgid "The 'search' parameter must be a string"
100
+ msgstr "Le paramètre de 'recherche' doit être un string"
101
 
102
  #: src/Tribe/REST/V1/Endpoints/Single_Event.php:90
103
  msgid "the event post ID"
104
+ msgstr "Identifiant du post de l'événement"
105
 
106
  #: src/Tribe/REST/V1/Endpoints/Archive_Event.php:465
107
  msgid "Events should contain the specified string in the title or description"
113
 
114
  #: src/Tribe/REST/V1/Messages.php:25
115
  msgid "The requested event archive page does not exist"
116
+ msgstr "La page demandée d'archive de l'événement n'existe pas"
117
 
118
  #: src/admin-views/aggregator/fields/schedule.php:50
119
  #: src/admin-views/aggregator/fields/schedule.php:68
120
  msgid "at approximately"
121
+ msgstr "environ"
122
 
123
  #: src/admin-views/aggregator/origins/url.php:89
124
  msgid "Event Aggregator will try to fetch events starting in %s from the current date or the specified date;"
126
 
127
  #: src/admin-views/aggregator/origins/url.php:83
128
  msgid "example.com/"
129
+ msgstr "example.com/"
130
 
131
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:40
132
  msgid "The event creation date in the site timezone"
133
+ msgstr "Date de création de l'événement dans le fuseau horaire du site"
134
 
135
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:56
136
  msgid "The URL to the event page"
137
+ msgstr "URL de la page évènement"
138
 
139
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:64
140
  msgid "The event name"
141
+ msgstr "Nom de l’évènement"
142
 
143
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:68
144
  msgid "The event long description"
145
+ msgstr "Description longue de l’évènement"
146
 
147
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:72
148
  msgid "The event short description"
149
+ msgstr "Description courte de l'évènement"
150
 
151
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:76
152
  #: src/Tribe/REST/V1/Documentation/Organizer_Definition_Provider.php:72
153
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:72
154
  msgid "The event featured image details if set"
155
+ msgstr "Image de présentation détaillée de l’évènement si fonction activée"
156
 
157
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:81
158
  msgid "Whether or not this event is an all day Event"
159
+ msgstr "Si cet évènement est sur toute la journée ou non"
160
 
161
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:85
162
  msgid "The event start date in the event or site timezone"
163
+ msgstr "Date de début de l'événement dans le fuseau horaire du site ou de l'événement"
164
 
165
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:89
166
  msgid "An array of each component of the event start date"
168
 
169
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:94
170
  msgid "The event end date in the event or site timezone"
171
+ msgstr "Date de fin de l'évènement dans le fuseau horaire du site ou de l'événement"
172
 
173
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:98
174
  msgid "An array of each component of the event end date"
176
 
177
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:103
178
  msgid "The event start date in UTC time"
179
+ msgstr "Date de début de l’évènement en heure UTC"
180
 
181
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:107
182
  msgid "An array of each component of the event start date in UTC time"
184
 
185
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:112
186
  msgid "The event end date in UTC time"
187
+ msgstr "Date de fin de l’évènement en heure UTC"
188
 
189
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:116
190
  msgid "An array of each component of the event end date in UTC time"
196
 
197
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:129
198
  msgid "The event cost including the currency symbol"
199
+ msgstr "Coût de l'évènement incluant le symbole monétaire"
200
 
201
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:133
202
  msgid "The event cost details"
203
+ msgstr "Détails du coût de l’évènement"
204
 
205
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:138
206
  msgid "The event website URL"
207
+ msgstr "URL du site web de l’évènement"
208
 
209
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:142
210
  msgid "Whether the map should be shown for the event or not"
211
+ msgstr "Si la carte doit être affichée pour l’évènement ou non"
212
 
213
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:146
214
  msgid "Whether the map link should be shown for the event or not"
215
+ msgstr "Si le lien de la carte doit être affichée pour l’évènement ou non"
216
 
217
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:150
218
  msgid "Whether an event should be hidden from the calendar view or not"
219
+ msgstr "Si un évènement doit être caché de la vue agenda ou non"
220
 
221
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:154
222
  msgid "Whether an event is sticky in the calendar view or not"
224
 
225
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:158
226
  msgid "Whethere the event is featured in the calendar or not"
227
+ msgstr "Si l’évènement est mis en avant dans l’agenda ou non"
228
 
229
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:162
230
  msgid "The event categories"
231
+ msgstr "Catégories d’évènements"
232
 
233
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:167
234
  msgid "The event tags"
235
+ msgstr "Étiquettes d’évènement"
236
 
237
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:172
238
  msgid "The event venue"
239
+ msgstr "Lieu d’évènement"
240
 
241
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:177
242
  msgid "The event organizers"
243
+ msgstr "Organisateurs d’évènement"
244
 
245
  #: src/Tribe/REST/V1/Documentation/Organizer_Definition_Provider.php:24
246
  msgid "The organizer WordPress post ID"
247
+ msgstr "Identifiant post WordPress de l'organisateur"
248
 
249
  #: src/Tribe/REST/V1/Documentation/Organizer_Definition_Provider.php:32
250
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:32
257
 
258
  #: src/Tribe/REST/V1/Documentation/Organizer_Definition_Provider.php:40
259
  msgid "The organizer creation date in the site timezone"
260
+ msgstr "Date de création de l’organisateur dans le fuseau horaire du site"
261
 
262
  #: src/Tribe/REST/V1/Documentation/Organizer_Definition_Provider.php:44
263
  msgid "The organizer creation date in UTC time"
264
+ msgstr "Date de création de l’organisateur en horaire UTC"
265
 
266
  #: src/Tribe/REST/V1/Documentation/Organizer_Definition_Provider.php:48
267
  msgid "The organizer last modification date in the site timezone"
268
+ msgstr "Date de la dernière modification de l’organisateur dans le fuseau horaire du site"
269
 
270
  #: src/Tribe/REST/V1/Documentation/Organizer_Definition_Provider.php:56
271
  msgid "The URL to the organizer page"
272
+ msgstr "URL vers la page de l’organisateur"
273
 
274
  #: src/Tribe/REST/V1/Documentation/Organizer_Definition_Provider.php:60
275
  msgid "The organizer name"
276
+ msgstr "Nom de l’organisateur"
277
 
278
  #: src/Tribe/REST/V1/Documentation/Organizer_Definition_Provider.php:64
279
  msgid "The organizer long description"
280
+ msgstr "Description longue de l’organisateur"
281
 
282
  #: src/Tribe/REST/V1/Documentation/Organizer_Definition_Provider.php:68
283
  msgid "The organizer short description"
284
+ msgstr "Description courte de l’organisateur"
285
 
286
  #: src/Tribe/REST/V1/Documentation/Organizer_Definition_Provider.php:77
287
  msgid "The organizer phone number"
288
+ msgstr "Téléphone de l’organisateur"
289
 
290
  #: src/Tribe/REST/V1/Documentation/Organizer_Definition_Provider.php:81
291
  msgid "The organizer website"
292
+ msgstr "Site web de l'organisateur"
293
 
294
  #: src/Tribe/REST/V1/Documentation/Organizer_Definition_Provider.php:85
295
  msgid "The organizer email address"
296
+ msgstr "Adresse de messagerie de l’organisateur"
297
 
298
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:28
299
  msgid "The venue ID used to globally identify in Event Aggregator"
300
+ msgstr "L’identifiant du lieu pour identifier globalement dans Event Aggregator"
301
 
302
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:40
303
  msgid "The venue creation date in the site timezone"
304
+ msgstr "Date de création du lieu dans le fuseau horaire du site"
305
 
306
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:44
307
  msgid "The venue creation date in UTC time"
308
+ msgstr "Date de création du lieu en horaire UTC"
309
 
310
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:48
311
  msgid "The venue last modification date in the site timezone"
312
+ msgstr "Date de la dernière modification du lieu dans le fuseau horaire du site"
313
 
314
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:56
315
  msgid "The URL to the venue page"
316
+ msgstr "URL de la page du lieu"
317
 
318
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:60
319
  msgid "The venue name"
320
+ msgstr "Nom du lieu"
321
 
322
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:68
323
  msgid "The venue short description"
324
+ msgstr "Description courte du lieu"
325
 
326
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:75
327
  msgid "Whether the map should be shown for the venue or not"
328
+ msgstr "Si la carte pour le lieu doit être affichée ou non"
329
 
330
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:79
331
  msgid "Whether the map link should be shown for the venue or not"
332
+ msgstr "Si le lien de la carte pour le lieu doit être affichée ou non"
333
 
334
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:83
335
  msgid "The venue address"
336
+ msgstr "Adresse du lieu"
337
 
338
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:87
339
  msgid "The venue city"
340
+ msgstr "Ville du lieu"
341
 
342
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:91
343
  msgid "The venue country"
344
+ msgstr "Pays du lieu"
345
 
346
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:107
347
  msgid "The venue phone number"
348
+ msgstr "Téléphone du lieu"
349
 
350
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:111
351
  msgid "The venue website URL"
352
+ msgstr "URL du site web du lieu"
353
 
354
  #: src/Tribe/REST/V1/EA_Messages.php:9
355
  msgid "Event Aggregator cannot import events from this site."
356
+ msgstr "Event Aggregator ne peut pas importer des événement depuis ce site"
357
 
358
  #: src/Tribe/REST/V1/EA_Messages.php:11
359
  msgid "The Events Calendar is API is not providing the site origin correctly."
360
+ msgstr "L'API de The Events Calendar ne fournit par le site d'origine correctement."
361
 
362
  #: src/Tribe/REST/V1/EA_Messages.php:14
363
  msgid "Events could not be imported. The URL provided could be reached and has The Events Calendar REST API enabled, but returned malformed data."
385
 
386
  #: src/Tribe/REST/V1/EA_Messages.php:22
387
  msgid "The requested URL does not have any upcoming and published events matching the search criteria."
388
+ msgstr "L'URL demandée ne présente aucun prochain évènement publié correspondant au critère de recherche."
389
 
390
  #: src/Tribe/REST/V1/Endpoints/Archive_Event.php:433
391
  msgid "The archive page to return"
393
 
394
  #: src/Tribe/REST/V1/Endpoints/Archive_Event.php:441
395
  msgid "The number of events to return on each page"
396
+ msgstr "Le nombre d'évènements à renvoyer sur chaque page."
397
 
398
  #: src/Tribe/REST/V1/Endpoints/Archive_Event.php:473
399
  msgid "Events should be assigned one of the specified categories slugs or IDs"
405
 
406
  #: src/Tribe/REST/V1/Endpoints/Archive_Event.php:489
407
  msgid "Returns all the upcoming events matching the search criteria"
408
+ msgstr "Renvoie tous les prochains événements correspondants au critère de recherche"
409
 
410
  #: src/Tribe/REST/V1/Endpoints/Archive_Event.php:497
411
  msgid "One or more of the specified query variables has a bad format"
412
+ msgstr "Une ou plusieurs variables des requêtes spécifiées ont un mauvais format"
413
 
414
  #: src/Tribe/REST/V1/Endpoints/Single_Event.php:106
415
  msgid "The event with the specified ID is not accesible."
416
+ msgstr "L'événement avec l'identifiant spécifié n'est pas accessible"
417
 
418
  #: src/Tribe/REST/V1/Endpoints/Swagger_Documentation.php:124
419
  msgid "Returns the documentation for The Events Calendar REST API in Swagger consumable format."
421
 
422
  #: src/Tribe/REST/V1/Messages.php:26
423
  msgid "The requested post ID does not exist or is not an venue"
424
+ msgstr "L'identifiant de l’article demandé n'existe pas ou n'est pas un lieu"
425
 
426
  #: src/admin-views/aggregator/fields/schedule.php:3
427
  msgid "Schedule:"
428
+ msgstr "Plannifier:"
429
 
430
  #: src/admin-views/aggregator/fields/schedule.php:32
431
  msgid "Import runs daily at approximately"
432
+ msgstr "Effectuer des imports quotidiennement à environ"
433
 
434
  #: src/admin-views/aggregator/fields/schedule.php:38
435
  msgid "Import runs weekly on"
436
+ msgstr "Effectuer des imports hebdomadaire le"
437
 
438
  #: src/admin-views/aggregator/fields/schedule.php:56
439
  msgid "Import runs monthly on day"
440
+ msgstr "Effectuer des imports mensuels le jour dit"
441
 
442
  #: src/admin-views/aggregator/origins/refine.php:22
443
  msgid "Use the filters to narrow down which events are fetched from this site."
444
+ msgstr "Utilisez les filtres pour restreindre les évènements qui doivent être récupérés depuis ce site."
445
 
446
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:44
447
  msgid "The event creation date in UTC time"
448
+ msgstr "Date de création de l'évènement en horaire UTC"
449
 
450
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:48
451
  msgid "The event last modification date in the site timezone"
452
+ msgstr "Date de la dernière modification de l'évènement dans le fuseau horaire du site"
453
 
454
  #: src/Tribe/REST/V1/EA_Messages.php:39
455
  msgid "Learn more."
456
+ msgstr "En savoir plus."
457
 
458
  #: src/Tribe/REST/V1/Messages.php:19
459
  msgid "The 'per_page' parameter must be a positive integer greater than 1"
465
 
466
  #: src/admin-views/aggregator/settings.php:377
467
  msgid "The default event category for events imported via other URLs"
468
+ msgstr "Catégorie d'évènement par défaut pour les évènements importés via d'autres URL"
469
 
470
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:60
471
  msgid "The TEC REST API link to fetc this event"
477
 
478
  #: src/Tribe/REST/V1/Documentation/Organizer_Definition_Provider.php:28
479
  msgid "The organizer ID used to globally identify in Event Aggregator"
480
+ msgstr "L'identifiant de l'organisateur utilisé pour globalement identifier dans Event Aggregator"
481
 
482
  #: src/Tribe/REST/V1/Documentation/Organizer_Definition_Provider.php:52
483
  msgid "The organizer last modification date in UTC time"
484
+ msgstr "Date de la dernière modification de l'organisateur en horaire UTC"
485
 
486
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:36
487
  msgid "The venue author WordPress post ID"
489
 
490
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:52
491
  msgid "The venue last modification date in UTC time"
492
+ msgstr "Date de la dernière modification du lieu en horaire UTC"
493
 
494
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:64
495
  msgid "The venue long description"
496
+ msgstr "Description longue du lieu"
497
 
498
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:95
499
  msgid "The venue province"
500
+ msgstr "Région du lieu"
501
 
502
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:99
503
  msgid "The venue state"
504
+ msgstr "Département du lieu"
505
 
506
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:103
507
  msgid "The venue ZIP code"
508
+ msgstr "Code postal du lieu"
509
 
510
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:115
511
  msgid "The venue state or province"
512
+ msgstr "Région ou département du lieu"
513
 
514
  #: src/Tribe/REST/V1/EA_Messages.php:10
515
  msgid "Event Aggregator cannot import events because this site is running an outdated version of The Events Calendar."
516
+ msgstr "Event Aggregator ne peut pas importer les évènements car ce site tourne avec une version périmée de The Events Calendar."
517
 
518
  #: src/Tribe/REST/V1/EA_Messages.php:12
519
  msgid "Events could not be imported. Event Aggregator does not yet support events from that URL. We have noted your request and will review it for support in the future."
520
+ msgstr "Les évènements n'ont pas pu être importés. Event Aggregator ne supporte pas encore les évènements de cet URL. Nous avons pris note de votre demande et l'examinerons afin de pouvoir le faire dans le futur."
521
 
522
  #: src/Tribe/REST/V1/EA_Messages.php:13
523
  msgid "Events could not be imported. The Events Calendar REST API is disabled on the requested URL."
533
 
534
  #: src/Tribe/REST/V1/EA_Messages.php:58
535
  msgid "Try to adjust your import settings and try again."
536
+ msgstr "Essayez d'ajuster vos paramètres d'import et essayez de nouveau"
537
 
538
  #: src/Tribe/REST/V1/Endpoints/Archive_Event.php:500
539
  msgid "No events match the query or the requested page was not found."
540
+ msgstr "Aucun évènement ne correspond à la requête ou la page demandée n'a pas été trouvée."
541
 
542
  #: src/Tribe/REST/V1/Endpoints/Single_Event.php:103
543
  msgid "The event post ID is missing."
544
+ msgstr "L'identifiant du post de l'évènement est manquant."
545
 
546
  #: src/Tribe/REST/V1/Messages.php:21
547
  msgid "The 'end_date' parameter must be in a supported format"
549
 
550
  #: src/admin-views/aggregator/origins/url.php:7
551
  msgid "One-time imports include currently listed upcoming events, while scheduled imports automatically grab new events and updates from this url on a set schedule."
552
+ msgstr "Les imports unitaires incluent les prochains évènements listés actuellement, tandis que les imports programmés saisissent automatiquement les nouveaux évènements et les mises à jour depuis cet URL selon un échéancier établi."
553
 
554
  #: src/admin-views/aggregator/settings.php:366
555
  msgid "The default post status for events imported via other URLs"
556
+ msgstr "Statut des articles par défaut pour les évènements importés via d'autres URL"
557
 
558
  #: src/admin-views/aggregator/settings.php:361
559
  msgid "Other URL Import Settings"
560
+ msgstr "Paramètres d'import d'autres URL"
561
 
562
  #: src/admin-views/aggregator/origins/url.php:91
563
  msgid "you can modify this setting here."
564
+ msgstr "vous pouvez modifier ce paramètre ici."
565
 
566
  #: src/Tribe/Aggregator/Service.php:517
567
  msgid "Events could not be imported. The URL provided could not be reached."
568
+ msgstr "Les événements n'ont pas pu être importés. L'URL fournie n'a pas pu être atteinte."
569
 
570
  #: src/Tribe/Aggregator/API/Origins.php:61
571
  msgid "Other URL (beta)"
572
+ msgstr "Autre URL (beta)"
573
 
574
  #: src/Tribe/Aggregator/Settings.php:273 src/Tribe/Aggregator/Settings.php:274
575
  msgid "24 hours"
576
+ msgstr "24 heures"
577
 
578
  #: src/Tribe/Aggregator/Settings.php:277 src/Tribe/Aggregator/Settings.php:278
579
  msgid "72 hours"
580
+ msgstr "72 heures"
581
 
582
  #: src/Tribe/Aggregator/Settings.php:281
583
  msgid "One week"
584
+ msgstr "Une semaine"
585
 
586
  #: src/Tribe/Aggregator/Service.php:518
587
  msgid "The requested source does not have any upcoming and published events matching the search criteria."
588
+ msgstr "La source demandée ne présente aucun prochain événement publié correspondant au critère de recherche"
589
 
590
  #: src/Tribe/Aggregator/Settings.php:282
591
  msgid "a week"
592
+ msgstr "une semaine"
593
 
594
  #: src/Tribe/Aggregator/Settings.php:285
595
  msgid "Two weeks"
596
+ msgstr "Deux semaines"
597
 
598
  #: src/Tribe/Aggregator/Settings.php:286
599
  msgid "two weeks"
600
+ msgstr "deux semaines"
601
 
602
  #: src/Tribe/Aggregator/Settings.php:289
603
  msgid "Three weeks"
604
+ msgstr "Trois semaines"
605
 
606
  #: src/Tribe/Aggregator/Settings.php:293
607
  msgid "One month"
608
+ msgstr "Un mois"
609
 
610
  #: src/Tribe/Aggregator/Settings.php:294
611
  msgid "a month"
612
+ msgstr "un mois"
613
 
614
  #: src/Tribe/Aggregator/Settings.php:297
615
  msgid "Two months"
616
+ msgstr "Deux mois"
617
 
618
  #: src/Tribe/Aggregator/Settings.php:298
619
  msgid "two months"
620
+ msgstr "deux mois"
621
 
622
  #: src/Tribe/Aggregator/Settings.php:301
623
  msgid "Three months"
624
+ msgstr "Trois mois"
625
 
626
  #: src/Tribe/Aggregator/Settings.php:302
627
  msgid "three months"
628
+ msgstr "trois mois"
629
 
630
  #: src/Tribe/Aggregator/Tabs/New.php:364
631
  msgid "%1$d new event tag was created."
632
  msgid_plural "%1$d new event tags were created."
633
+ msgstr[0] "%1$d nouvelle étiquette a été créée."
634
+ msgstr[1] "%1$d nouvelles étiquettes ont été créées."
635
 
636
  #: src/Tribe/Aggregator/Tabs/New.php:368
637
  msgid "View your event tags"
638
+ msgstr "Visionnez les étiquettes de votre évènement"
639
 
640
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:28
641
  msgid "The event ID used to globally identify in Event Aggregator"
642
+ msgstr "L’identifiant de l’évènement utilisé pour globalement identifier dans Event Aggregator"
643
 
644
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:32
645
  msgid "An Array containing the lineage of where this event comes from, this should not change after the event is created."
651
 
652
  #: src/Tribe/Aggregator/Record/Url.php:17
653
  msgid "Other URL"
654
+ msgstr "Autre URL"
655
 
656
  #: src/Tribe/Aggregator/Service.php:497
657
  msgid "Events could not be imported. The import parameters were invalid."
658
+ msgstr "Les évènements n'ont pas pu être importés. Les paramètres d'import étaient invalides."
659
 
660
  #: src/Tribe/Aggregator/Settings.php:290
661
  msgid "three weeks"
662
+ msgstr "trois semaines"
663
 
664
  #: src/Tribe/Aggregator/Service.php:504
665
  msgid "Events could not be imported. The URL provided did not have events in the proper format."
666
+ msgstr "Les évènements n'ont pas pu être importés. L'URL fournie ne présente aucun évènement au format approprié."
667
 
668
  #: src/Tribe/Venue.php:201
669
  msgctxt "Metabox title"
690
 
691
  #: src/admin-views/tribe-options-display.php:185
692
  msgid "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. <a href=\"%s\">Read more</a>."
693
+ msgstr "Modifie les 3 événements par jour par défaut dans la vue mensuelle. Pour n’imposer aucune limite, vous pouvez spécifier -1. Veuillez noter qu’il peut y avoir des problèmes de performances si vous permettez trop événements par jour. <a href=\"%s\">En savoir plus</a>."
694
 
695
  #: src/Tribe/Main.php:708
696
  msgctxt "all events slug"
703
 
704
  #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:52
705
  msgid "The URL to the term archive page"
706
+ msgstr "URL de la page d’archive du terme"
707
 
708
  #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:48
709
  msgid "The number of posts associated with the term"
710
+ msgstr "Le nombre d’articles associés avec le terme"
711
 
712
  #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:44
713
  msgid "The term parent term if any"
714
+ msgstr "Le terme parent du terme le cas échéant"
715
 
716
  #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:40
717
  msgid "The term description"
718
+ msgstr "Description de terme"
719
 
720
  #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:36
721
  msgid "The taxonomy the term belongs to"
722
+ msgstr "La taxonomie du terme appartient à"
723
 
724
  #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:32
725
  msgid "The term slug"
727
 
728
  #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:28
729
  msgid "The term name"
730
+ msgstr "Nom du terme"
731
 
732
  #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:24
733
  msgid "The WordPress term ID"
734
+ msgstr "Identifiant WordPress du terme"
735
 
736
  #: common/src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php:36
737
  msgid "The link to the image in the specified size on the site"
743
 
744
  #: common/src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php:28
745
  msgid "The image height in pixels in the specified size"
746
+ msgstr "Hauteur de l'image en pixels dans la taille spécifée"
747
 
748
  #: common/src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php:24
749
  msgid "The image width in pixels in the specified size"
750
+ msgstr "Largeur de l'image en pixels dans la taille spécifée"
751
 
752
  #: common/src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:44
753
  msgid "The details about each size available for the image"
754
+ msgstr "Les détails à propos de chaque taille disponible pour l'image"
755
 
756
  #: common/src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:40
757
  msgid "The image natura height in pixels"
758
+ msgstr "Hauteur naturelle de l'image en pixels"
759
 
760
  #: common/src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:36
761
  msgid "The image natural width in pixels"
762
+ msgstr "Largeur naturelle de l'image en pixels"
763
 
764
  #: common/src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:32
765
  msgid "The image file extension"
766
+ msgstr "Extension du fichier de l'image"
767
 
768
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:24
769
  msgid "The venue WordPress post ID"
770
+ msgstr "L'identifiant du post WordPress du lieu"
771
 
772
  #: common/src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:24
773
  msgid "The URL to the full size version of the image"
774
+ msgstr "URL vers la version taille réelle de l'image"
775
 
776
  #: common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:44
777
  msgid "The date seconds"
778
+ msgstr "Secondes de la date"
779
 
780
  #: common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:40
781
  msgid "The date minutes"
782
+ msgstr "Minutes de la date"
783
 
784
  #: common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:36
785
  msgid "The date hour"
786
+ msgstr "Heure de la date"
787
 
788
  #: common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:32
789
  msgid "The date day"
790
+ msgstr "Jour de la date"
791
 
792
  #: common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:28
793
  msgid "The date month"
794
+ msgstr "Mois de la date"
795
 
796
  #: common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:24
797
  msgid "The date year"
798
+ msgstr "Année de la date"
799
 
800
  #: common/src/Tribe/Documentation/Swagger/Cost_Details_Definition_Provider.php:33
801
  msgid "An sorted array of all the numeric values for the cost"
807
 
808
  #: common/src/Tribe/Documentation/Swagger/Cost_Details_Definition_Provider.php:24
809
  msgid "The cost currency symbol"
810
+ msgstr "Symbole monétaire du coût"
811
 
812
  #: src/Tribe/Main.php:4090
813
  msgid "Keyword"
821
  #: src/admin-views/widget-admin-list.php:35
822
  msgctxt "events list widget setting"
823
  msgid "Limit to featured events only"
824
+ msgstr "N’afficher que les événements mis en avant"
825
 
826
  #: src/admin-views/events-meta-box.php:99
827
  msgctxt "Start Date Time \"to\" End Date Time"
2350
  #: src/Tribe/Aggregator/Tabs/New.php:352
2351
  msgid "%1$d new event category was created."
2352
  msgid_plural "%1$d new event categories were created."
2353
+ msgstr[0] "%1$d nouvelle catégorie d'évènement a été créée."
2354
+ msgstr[1] "%1$d nouvelles catégories d'évènement ont été créées."
2355
 
2356
  #: src/Tribe/Aggregator/Tabs/New.php:343
2357
  msgid "View your event organizers"
2402
  #: src/Tribe/Aggregator/Tabs/New.php:270
2403
  msgid "%1$d new %2$s was imported."
2404
  msgid_plural "%1$d new %2$s were imported."
2405
+ msgstr[0] "%1$d nouveau %2$s a été importé."
2406
+ msgstr[1] "%1$d nouveaux %2$s ont été importés."
2407
 
2408
  #: src/Tribe/Aggregator/Tabs/New.php:206
2409
  msgid "1 import was scheduled."
lang/the-events-calendar-ja.mo CHANGED
Binary file
lang/the-events-calendar-ja.po CHANGED
@@ -2,7 +2,7 @@
2
  # This file is distributed under the same license as the Plugins - The Events Calendar - Stable (latest release) package.
3
  msgid ""
4
  msgstr ""
5
- "PO-Revision-Date: 2017-01-06 05:25:19+0000\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
@@ -4276,7 +4276,7 @@ msgstr "表示: "
4276
 
4277
  #: src/admin-views/widget-admin-list.php:13
4278
  msgid "Title:"
4279
- msgstr "タイトル:"
4280
 
4281
  #: src/admin-views/create-venue-fields.php:193
4282
  #: src/admin-views/create-venue-fields.php:230
2
  # This file is distributed under the same license as the Plugins - The Events Calendar - Stable (latest release) package.
3
  msgid ""
4
  msgstr ""
5
+ "PO-Revision-Date: 2017-05-03 21:30:15+0000\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
4276
 
4277
  #: src/admin-views/widget-admin-list.php:13
4278
  msgid "Title:"
4279
+ msgstr "タイトル: "
4280
 
4281
  #: src/admin-views/create-venue-fields.php:193
4282
  #: src/admin-views/create-venue-fields.php:230
lang/the-events-calendar.pot CHANGED
@@ -2,13 +2,14 @@
2
  # This file is distributed under the same license as the The Events Calendar package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: The Events Calendar 4.5rc1\n"
6
- "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/the-events-calendar\n"
7
- "POT-Creation-Date: 2017-05-01 15:03:49+00:00\n"
 
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
11
- "PO-Revision-Date: 2017-05-01 15:03\n"
12
  "Last-Translator: \n"
13
  "Language-Team: \n"
14
 
@@ -16,7 +17,7 @@ msgstr ""
16
  msgid "%s"
17
  msgstr ""
18
 
19
- #: src/Tribe/Admin/Bar/Default_Configurator.php:45 src/Tribe/Main.php:3963
20
  msgid "View Calendar"
21
  msgstr ""
22
 
@@ -26,7 +27,7 @@ msgstr ""
26
 
27
  #: src/Tribe/Admin/Bar/Default_Configurator.php:62
28
  #: src/Tribe/Linked_Posts/Chooser_Meta_Box.php:188 src/Tribe/Main.php:1664
29
- #: src/Tribe/Main.php:4450 src/Tribe/Main.php:4497 src/Tribe/Organizer.php:73
30
  #: src/Tribe/Venue.php:79
31
  msgid "Edit %s"
32
  msgstr ""
@@ -37,7 +38,7 @@ msgstr ""
37
  msgid "Import"
38
  msgstr ""
39
 
40
- #: src/Tribe/Admin/Bar/Default_Configurator.php:89 src/Tribe/Main.php:4012
41
  msgid "Settings"
42
  msgstr ""
43
 
@@ -55,7 +56,8 @@ msgid "Please wait while timezone data is added to your events."
55
  msgstr ""
56
 
57
  #: src/Tribe/Admin/Timezone_Updater.php:78
58
- msgid "Update complete: timezone data has been added to all events in the database."
 
59
  msgstr ""
60
 
61
  #: src/Tribe/Admin/Timezone_Updater.php:87
@@ -66,7 +68,9 @@ msgid "%d%% complete"
66
  msgstr ""
67
 
68
  #: src/Tribe/Admin/Timezone_Updater.php:105
69
- msgid "A problem stopped the timezone update process from completing. Please refresh and try again."
 
 
70
  msgstr ""
71
 
72
  #: src/Tribe/Admin_List.php:246 src/Tribe/Main.php:1678
@@ -128,8 +132,7 @@ msgid "Meetup"
128
  msgstr ""
129
 
130
  #: src/Tribe/Aggregator/API/Origins.php:61
131
- #: src/Tribe/Aggregator/Record/Url.php:17
132
- msgid "Other URL"
133
  msgstr ""
134
 
135
  #: src/Tribe/Aggregator/API/Origins.php:197 src/Tribe/Aggregator.php:222
@@ -172,11 +175,14 @@ msgid "Every 15 minutes"
172
  msgstr ""
173
 
174
  #: src/Tribe/Aggregator/Errors.php:45
175
- msgid "The image associated with your event could not be attached to the event."
 
176
  msgstr ""
177
 
178
  #: src/Tribe/Aggregator/Errors.php:46 src/Tribe/Aggregator/Service.php:508
179
- msgid "The daily limit of %d import requests to the Event Aggregator service has been reached. Please try again later."
 
 
180
  msgstr ""
181
 
182
  #: src/Tribe/Aggregator/Errors.php:47
@@ -188,11 +194,14 @@ msgid "You do not have permission to delete this record."
188
  msgstr ""
189
 
190
  #: src/Tribe/Aggregator/Errors.php:49
191
- msgid "During scheduled import, the limit of HTTP requests was reached and the import was rescheduled."
 
 
192
  msgstr ""
193
 
194
  #: src/Tribe/Aggregator/Errors.php:51
195
- msgid "An invalid import type was used when trying to create this import record."
 
196
  msgstr ""
197
 
198
  #: src/Tribe/Aggregator/Errors.php:52
@@ -212,7 +221,9 @@ msgid "Unable to find an event with the ID of %s."
212
  msgstr ""
213
 
214
  #: src/Tribe/Aggregator/Errors.php:56
215
- msgid "The Event Aggregator API responded with bad data. Please <a href=\"https://theeventscalendar.com/support/post/\" target=\"_blank\">contact support</a>."
 
 
216
  msgstr ""
217
 
218
  #: src/Tribe/Aggregator/Errors.php:57
@@ -228,7 +239,8 @@ msgid "Unable to attach an image to the event"
228
  msgstr ""
229
 
230
  #: src/Tribe/Aggregator/Errors.php:60
231
- msgid "An invalid frequency was used when trying to create this scheduled import."
 
232
  msgstr ""
233
 
234
  #: src/Tribe/Aggregator/Errors.php:61
@@ -244,15 +256,21 @@ msgid "Unable to get a post of the correct type."
244
  msgstr ""
245
 
246
  #: src/Tribe/Aggregator/Errors.php:64
247
- msgid "You must enter an Event Aggregator license key in Events > Settings > Licenses before using this service."
 
 
248
  msgstr ""
249
 
250
  #: src/Tribe/Aggregator/Errors.php:65 src/Tribe/Aggregator/Service.php:173
251
- msgid "There may be an issue with the Event Aggregator server. Please try your import again later."
 
 
252
  msgstr ""
253
 
254
  #: src/Tribe/Aggregator/Errors.php:67
255
- msgid "You must map columns from the CSV file to specific fields in order to perform a CSV import."
 
 
256
  msgstr ""
257
 
258
  #: src/Tribe/Aggregator/Errors.php:68
@@ -272,7 +290,9 @@ msgid "Unable to save scheduled import. Please try again."
272
  msgstr ""
273
 
274
  #: src/Tribe/Aggregator/Errors.php:72
275
- msgid "The records you were attempting to import were still not available when this queue was processed. Please try again."
 
 
276
  msgstr ""
277
 
278
  #: src/Tribe/Aggregator/Meta_Box.php:38
@@ -280,7 +300,10 @@ msgid "Imported Event"
280
  msgstr ""
281
 
282
  #: src/Tribe/Aggregator/Migrate.php:73
283
- msgid "Thanks for activating Event Aggregator! It looks like you have some settings and imports configured on our legacy importer plugins. To complete your transition, we need to transfer those options to our new system."
 
 
 
284
  msgstr ""
285
 
286
  #: src/Tribe/Aggregator/Migrate.php:76
@@ -292,11 +315,15 @@ msgid "Migrate iCal Importer settings"
292
  msgstr ""
293
 
294
  #: src/Tribe/Aggregator/Migrate.php:280
295
- msgid "Error: we were not able to migrate your Facebook Events settings to Event Aggregator. Please try again later."
 
 
296
  msgstr ""
297
 
298
  #: src/Tribe/Aggregator/Migrate.php:287
299
- msgid "You do not have permission to migrate Facebook Events settings to Event Aggregator"
 
 
300
  msgstr ""
301
 
302
  #: src/Tribe/Aggregator/Migrate.php:294
@@ -304,15 +331,21 @@ msgid "We did not find any Facebook Events settings to migrate."
304
  msgstr ""
305
 
306
  #: src/Tribe/Aggregator/Migrate.php:348
307
- msgid "Success! The settings from Facebook Events have been migrated to Event Aggregator. You can view your migrated imports on the Scheduled Imports tab."
 
 
308
  msgstr ""
309
 
310
  #: src/Tribe/Aggregator/Migrate.php:365
311
- msgid "Error: we were not able to migrate your iCal Importer settings to Event Aggregator. Please try again later."
 
 
312
  msgstr ""
313
 
314
  #: src/Tribe/Aggregator/Migrate.php:372
315
- msgid "You do not have permission to migrate iCal Importer settings to Event Aggregator"
 
 
316
  msgstr ""
317
 
318
  #: src/Tribe/Aggregator/Migrate.php:379
@@ -320,7 +353,9 @@ msgid "We did not find any iCal Importer settings to migrate."
320
  msgstr ""
321
 
322
  #: src/Tribe/Aggregator/Migrate.php:435
323
- msgid "Success! The settings from iCal Importer have been migrated to Event Aggregator. You can view your migrated imports on the Scheduled Imports tab."
 
 
324
  msgstr ""
325
 
326
  #: src/Tribe/Aggregator/Page.php:79 src/Tribe/Template/Day.php:108
@@ -339,7 +374,8 @@ msgid "PM"
339
  msgstr ""
340
 
341
  #: src/Tribe/Aggregator/Page.php:82
342
- msgid "The preview is taking longer than expected. Please try again in a moment."
 
343
  msgstr ""
344
 
345
  #: src/Tribe/Aggregator/Page.php:83
@@ -375,11 +411,13 @@ msgid "Your preview doesn't have any records to import."
375
  msgstr ""
376
 
377
  #: src/Tribe/Aggregator/Page.php:91
378
- msgid "Removing this scheduled import will stop automatic imports from the source. No events will be deleted."
 
 
379
  msgstr ""
380
 
381
  #: src/Tribe/Aggregator/Page.php:92
382
- #: src/Tribe/Aggregator/Record/List_Table.php:469
383
  msgid "View Filters"
384
  msgstr ""
385
 
@@ -396,11 +434,14 @@ msgid "Please continue to wait while your preview is generated."
396
  msgstr ""
397
 
398
  #: src/Tribe/Aggregator/Page.php:97
399
- msgid "If all goes according to plan, you will have your preview in a few moments."
 
400
  msgstr ""
401
 
402
  #: src/Tribe/Aggregator/Page.php:98
403
- msgid "Your preview is taking a bit longer than expected, but it <i>is</i> still being generated."
 
 
404
  msgstr ""
405
 
406
  #: src/Tribe/Aggregator/Page.php:255
@@ -416,8 +457,16 @@ msgid "iCal Importer"
416
  msgstr ""
417
 
418
  #: src/Tribe/Aggregator/Page.php:392
419
- msgid "It looks like you are using our legacy plugin, %1$s, along with our new Event Aggregator service. Event Aggregator includes all the features of the legacy plugin plus enhanced functionality. For best results, please deactivate %1$s."
420
- msgid_plural "It looks like you are using our legacy plugins, %1$s and %2$s, along with our new Event Aggregator service. Event Aggregator includes all the features of the legacy plugins plus enhanced functionality. For best results, please deactivate %1$s and %2$s."
 
 
 
 
 
 
 
 
421
  msgstr[0] ""
422
  msgstr[1] ""
423
 
@@ -438,7 +487,9 @@ msgid " (opens in a new window)"
438
  msgstr ""
439
 
440
  #: src/Tribe/Aggregator/Record/Abstract.php:927
441
- msgid "When this import was last scheduled to run, the daily limit for your Event Aggregator license had already been reached."
 
 
442
  msgstr ""
443
 
444
  #: src/Tribe/Aggregator/Record/CSV.php:74 src/Tribe/Importer/Admin_Page.php:238
@@ -489,145 +540,145 @@ msgid_plural "All <span class=\"count\">(%s)</span>"
489
  msgstr[0] ""
490
  msgstr[1] ""
491
 
492
- #: src/Tribe/Aggregator/Record/List_Table.php:313
493
- #: src/Tribe/Aggregator/Record/List_Table.php:319
494
  msgctxt "column name"
495
  msgid "Source"
496
  msgstr ""
497
 
498
- #: src/Tribe/Aggregator/Record/List_Table.php:314
499
  msgctxt "column name"
500
  msgid "Frequency"
501
  msgstr ""
502
 
503
- #: src/Tribe/Aggregator/Record/List_Table.php:315
504
  msgctxt "column name"
505
  msgid "Last Import"
506
  msgstr ""
507
 
508
- #: src/Tribe/Aggregator/Record/List_Table.php:320
509
  msgctxt "column name"
510
  msgid "Type"
511
  msgstr ""
512
 
513
- #: src/Tribe/Aggregator/Record/List_Table.php:321
514
  msgctxt "column name"
515
  msgid "When"
516
  msgstr ""
517
 
518
- #: src/Tribe/Aggregator/Record/List_Table.php:324
519
  msgctxt "column name"
520
  msgid "# Imported"
521
  msgstr ""
522
 
523
- #: src/Tribe/Aggregator/Record/List_Table.php:357
524
  msgid "Edit"
525
  msgstr ""
526
 
527
- #: src/Tribe/Aggregator/Record/List_Table.php:369
528
  msgid "Start an import from this source now, regardless of schedule."
529
  msgstr ""
530
 
531
- #: src/Tribe/Aggregator/Record/List_Table.php:370
532
  msgid "Run Import"
533
  msgstr ""
534
 
535
- #: src/Tribe/Aggregator/Record/List_Table.php:378
536
  msgid "Delete"
537
  msgstr ""
538
 
539
- #: src/Tribe/Aggregator/Record/List_Table.php:400
540
  msgid "Import completed"
541
  msgstr ""
542
 
543
- #: src/Tribe/Aggregator/Record/List_Table.php:404
544
  msgid "Import failed"
545
  msgstr ""
546
 
547
- #: src/Tribe/Aggregator/Record/List_Table.php:416
548
  msgid "Import schedule"
549
  msgstr ""
550
 
551
- #: src/Tribe/Aggregator/Record/List_Table.php:420
552
  msgid "Import pending"
553
  msgstr ""
554
 
555
- #: src/Tribe/Aggregator/Record/List_Table.php:424
556
  msgid "Import preview"
557
  msgstr ""
558
 
559
- #: src/Tribe/Aggregator/Record/List_Table.php:460
560
  #: src/Tribe/Ignored_Events.php:329
561
  msgctxt "record via origin"
562
  msgid "via "
563
  msgstr ""
564
 
565
- #: src/Tribe/Aggregator/Record/List_Table.php:473
566
  msgid "Keywords:"
567
  msgstr ""
568
 
569
- #: src/Tribe/Aggregator/Record/List_Table.php:482
570
  #: src/deprecated/Tribe__Events__Advanced_Functions__Register_Meta.php:48
571
  #: src/deprecated/Tribe__Events__Advanced_Functions__Register_Meta.php:80
572
  #: src/views/modules/meta/details.php:65 src/views/modules/meta/details.php:90
573
  msgid "Start:"
574
  msgstr ""
575
 
576
- #: src/Tribe/Aggregator/Record/List_Table.php:486
577
  msgid "Location:"
578
  msgstr ""
579
 
580
- #: src/Tribe/Aggregator/Record/List_Table.php:490
581
  msgid "Radius:"
582
  msgstr ""
583
 
584
- #: src/Tribe/Aggregator/Record/List_Table.php:513
585
  msgid "Unknown"
586
  msgstr ""
587
 
588
- #: src/Tribe/Aggregator/Record/List_Table.php:528 src/Tribe/Aggregator.php:392
589
  #: src/Tribe/Ignored_Events.php:347
590
  #: src/admin-views/tribe-options-addons-api.php:34
591
  msgctxt "human readable time ago"
592
  msgid "about %s ago"
593
  msgstr ""
594
 
595
- #: src/Tribe/Aggregator/Record/List_Table.php:530 src/Tribe/Aggregator.php:394
596
  #: src/Tribe/Ignored_Events.php:349
597
  #: src/admin-views/tribe-options-addons-api.php:36
598
  msgctxt "in human readable time"
599
  msgid "in about %s"
600
  msgstr ""
601
 
602
- #: src/Tribe/Aggregator/Record/List_Table.php:546
603
  msgid "Invalid Frequency"
604
  msgstr ""
605
 
606
- #: src/Tribe/Aggregator/Record/List_Table.php:549
607
  msgid "One Time"
608
  msgstr ""
609
 
610
- #: src/Tribe/Aggregator/Record/List_Table.php:566
611
  msgid "all time"
612
  msgstr ""
613
 
614
- #: src/Tribe/Aggregator/Record/List_Table.php:568
615
  msgid "Latest Import:"
616
  msgstr ""
617
 
618
- #: src/Tribe/Aggregator/Record/List_Table.php:571
619
- #: src/Tribe/Aggregator/Record/List_Table.php:579
620
- #: src/Tribe/Aggregator/Record/List_Table.php:587
621
  msgid "new"
622
  msgstr ""
623
 
624
- #: src/Tribe/Aggregator/Record/List_Table.php:573
625
  #: src/Tribe/Aggregator/Record/List_Table.php:582
626
- #: src/Tribe/Aggregator/Record/List_Table.php:590
 
627
  msgid "updated"
628
  msgstr ""
629
 
630
- #: src/Tribe/Aggregator/Record/List_Table.php:608
631
  msgid "Select %s"
632
  msgstr ""
633
 
@@ -640,7 +691,9 @@ msgid "Completed!"
640
  msgstr ""
641
 
642
  #: src/Tribe/Aggregator/Record/Queue_Realtime.php:88
643
- msgid "Your import is currently in progress. Don't worry, you can safely navigate away&ndash;the import will continue in the background."
 
 
644
  msgstr ""
645
 
646
  #: src/Tribe/Aggregator/Record/Queue_Realtime.php:92
@@ -656,7 +709,13 @@ msgid "Skipped:"
656
  msgstr ""
657
 
658
  #: src/Tribe/Aggregator/Record/Queue_Realtime.php:173
659
- msgid "Unable to continue inserting data. Please reload this page to continue/try again."
 
 
 
 
 
 
660
  msgstr ""
661
 
662
  #: src/Tribe/Aggregator/Records.php:144
@@ -785,7 +844,10 @@ msgstr[0] ""
785
  msgstr[1] ""
786
 
787
  #: src/Tribe/Aggregator/Service.php:167
788
- msgid "Connection timed out while transferring the feed. If you are dealing with large feeds you may need to customize the tribe_aggregator_connection_timeout filter."
 
 
 
789
  msgstr ""
790
 
791
  #: src/Tribe/Aggregator/Service.php:496
@@ -797,7 +859,13 @@ msgid "Events could not be imported. The import parameters were invalid."
797
  msgstr ""
798
 
799
  #: src/Tribe/Aggregator/Service.php:498
800
- msgid "Events cannot be imported because Facebook has returned an error. This could mean that the event ID does not exist, the event or source is marked as Private, or the event or source has been otherwise restricted by Facebook. You can <a href=\"https://theeventscalendar.com/knowledgebase/import-errors/\" target=\"_blank\">read more about Facebook restrictions in our knowledgebase</a>."
 
 
 
 
 
 
801
  msgstr ""
802
 
803
  #: src/Tribe/Aggregator/Service.php:499
@@ -813,19 +881,26 @@ msgid "The image associated with your event could not be imported."
813
  msgstr ""
814
 
815
  #: src/Tribe/Aggregator/Service.php:502
816
- msgid "The image associated with your event is not accessible with your API key."
 
817
  msgstr ""
818
 
819
  #: src/Tribe/Aggregator/Service.php:503
820
- msgid "The import failed for an unknown reason. Please try again. If the problem persists, please contact support."
 
 
821
  msgstr ""
822
 
823
  #: src/Tribe/Aggregator/Service.php:504
824
- msgid "Events could not be imported. The URL provided did not have events in the proper format."
 
 
825
  msgstr ""
826
 
827
  #: src/Tribe/Aggregator/Service.php:505
828
- msgid "The file provided could not be opened. Please confirm that it is a properly formatted .ics file."
 
 
829
  msgstr ""
830
 
831
  #: src/Tribe/Aggregator/Service.php:506
@@ -833,7 +908,9 @@ msgid "Your Meetup API key is invalid."
833
  msgstr ""
834
 
835
  #: src/Tribe/Aggregator/Service.php:507
836
- msgid "Event Aggregator cannot reach Meetup.com because you exceeded the request limit for your Meetup API key."
 
 
837
  msgstr ""
838
 
839
  #: src/Tribe/Aggregator/Service.php:509
@@ -873,7 +950,9 @@ msgid "Events could not be imported. The URL provided could not be reached."
873
  msgstr ""
874
 
875
  #: src/Tribe/Aggregator/Service.php:518
876
- msgid "The requested source does not have any upcoming and published events matching the search criteria."
 
 
877
  msgstr ""
878
 
879
  #: src/Tribe/Aggregator/Service.php:535
@@ -1111,7 +1190,9 @@ msgid "Import Using Event Aggregator"
1111
  msgstr ""
1112
 
1113
  #: src/Tribe/Aggregator/Tabs/New.php:518
1114
- msgid "With Event Aggregator, you can import events from Facebook, iCalendar, Google, and Meetup.com in a jiffy."
 
 
1115
  msgstr ""
1116
 
1117
  #: src/Tribe/Aggregator/Tabs/New.php:521
@@ -1131,7 +1212,9 @@ msgid "Your Event Aggregator license is expired."
1131
  msgstr ""
1132
 
1133
  #: src/Tribe/Aggregator/Tabs/New.php:549
1134
- msgid "Renew your license in order to import events from Facebook, iCalendar, Google, or Meetup."
 
 
1135
  msgstr ""
1136
 
1137
  #: src/Tribe/Aggregator/Tabs/New.php:552
@@ -1167,11 +1250,15 @@ msgid "Successfully %s %d scheduled import"
1167
  msgstr ""
1168
 
1169
  #: src/Tribe/Aggregator/Tabs/Scheduled.php:356
1170
- msgid "All scheduled imports are currently suspended, and no events will be imported."
 
 
1171
  msgstr ""
1172
 
1173
  #: src/Tribe/Aggregator/Tabs/Scheduled.php:361
1174
- msgid "To continue using scheduled imports, please enter a valid Event Aggregator license key under %1$sEvents > Settings > Licenses%2$s."
 
 
1175
  msgstr ""
1176
 
1177
  #: src/Tribe/Aggregator/Tabs/Scheduled.php:367
@@ -1364,7 +1451,8 @@ msgid "Dec"
1364
  msgstr ""
1365
 
1366
  #: src/Tribe/Asset/Dynamic.php:70
1367
- msgid "This event is from %%starttime%% to %%endtime%% on %%startdatewithyear%%."
 
1368
  msgstr ""
1369
 
1370
  #: src/Tribe/Asset/Dynamic.php:71
@@ -1376,15 +1464,21 @@ msgid "This event is all day on %%startdatewithyear%%."
1376
  msgstr ""
1377
 
1378
  #: src/Tribe/Asset/Dynamic.php:73
1379
- msgid "This event starts at %%starttime%% on %%startdatenoyear%% and ends at %%endtime%% on %%enddatewithyear%%"
 
 
1380
  msgstr ""
1381
 
1382
  #: src/Tribe/Asset/Dynamic.php:74
1383
- msgid "This event starts at %%starttime%% on %%startdatenoyear%% and ends on %%enddatewithyear%%"
 
 
1384
  msgstr ""
1385
 
1386
  #: src/Tribe/Asset/Dynamic.php:75
1387
- msgid "This event is all day starting on %%startdatenoyear%% and ending on %%enddatewithyear%%."
 
 
1388
  msgstr ""
1389
 
1390
  #: src/Tribe/Cost_Utils.php:113
@@ -1393,11 +1487,14 @@ msgid " - "
1393
  msgstr ""
1394
 
1395
  #: src/Tribe/Customizer/Day_List_View.php:72
1396
- msgid "Options selected here will override what was selected in the \"General Theme\" and \"Global Elements\" sections."
 
 
1397
  msgstr ""
1398
 
1399
  #: src/Tribe/Customizer/Day_List_View.php:75
1400
- msgid "These settings impact all list-style views, including List View and Day View."
 
1401
  msgstr ""
1402
 
1403
  #: src/Tribe/Customizer/Day_List_View.php:83
@@ -1425,7 +1522,9 @@ msgid "Featured Events Highlight Color"
1425
  msgstr ""
1426
 
1427
  #: src/Tribe/Customizer/General_Theme.php:271
1428
- msgid "If the Featured Events highlight color is set to Custom, the following color will be used:"
 
 
1429
  msgstr ""
1430
 
1431
  #: src/Tribe/Customizer/General_Theme.php:291
@@ -1469,7 +1568,9 @@ msgid "Global Elements"
1469
  msgstr ""
1470
 
1471
  #: src/Tribe/Customizer/Global_Elements.php:114
1472
- msgid "Options selected here will override what was selected in the \"General Theme\" section"
 
 
1473
  msgstr ""
1474
 
1475
  #: src/Tribe/Customizer/Global_Elements.php:145
@@ -1494,7 +1595,9 @@ msgstr ""
1494
 
1495
  #: src/Tribe/Customizer/Month_Week_View.php:144
1496
  #: src/Tribe/Customizer/Single_Event.php:79 src/Tribe/Customizer/Widget.php:60
1497
- msgid "Options selected here will override what was selected in the \"General Theme\" and \"Global Elements\" sections"
 
 
1498
  msgstr ""
1499
 
1500
  #: src/Tribe/Customizer/Month_Week_View.php:175
@@ -1546,7 +1649,10 @@ msgid "Google Maps API"
1546
  msgstr ""
1547
 
1548
  #: src/Tribe/Google/Maps_API_Key.php:50
1549
- msgid "We highly recommend that you specify a valid %s for The Events Calendar to use. Doing this will help prevent problems with maps, especially for sites that receive a lot of traffic."
 
 
 
1550
  msgstr ""
1551
 
1552
  #: src/Tribe/Google/Maps_API_Key.php:51 src/Tribe/Google/Maps_API_Key.php:57
@@ -1568,7 +1674,9 @@ msgid "Delete Permanently"
1568
  msgstr ""
1569
 
1570
  #: src/Tribe/Ignored_Events.php:36
1571
- msgid "Ignored events that are deleted will be removed permanently. They can be recreated via import."
 
 
1572
  msgstr ""
1573
 
1574
  #: src/Tribe/Ignored_Events.php:39 src/Tribe/Ignored_Events.php:459
@@ -1581,7 +1689,9 @@ msgid "Hide & Ignore"
1581
  msgstr ""
1582
 
1583
  #: src/Tribe/Ignored_Events.php:44
1584
- msgid "Ignored events do not show on the calendar but can be updated with future imports"
 
 
1585
  msgstr ""
1586
 
1587
  #: src/Tribe/Ignored_Events.php:125
@@ -1607,7 +1717,12 @@ msgid "Undo"
1607
  msgstr ""
1608
 
1609
  #: src/Tribe/Ignored_Events.php:163
1610
- msgid "Event Aggregator includes a new, better system for removing unwanted imported events from your calendar. Click the button below to transition previously deleted events. This process will remove unwanted records from your database and include recent or upcoming trashed events in your Ignored archive."
 
 
 
 
 
1611
  msgstr ""
1612
 
1613
  #: src/Tribe/Ignored_Events.php:164
@@ -1651,13 +1766,11 @@ msgid "Source:"
1651
  msgstr ""
1652
 
1653
  #. translators: %s: post title
1654
-
1655
  #: src/Tribe/Ignored_Events.php:388
1656
  msgid "Move &#8220;%s&#8221; to the Trash"
1657
  msgstr ""
1658
 
1659
  #. translators: %s: post title
1660
-
1661
  #: src/Tribe/Ignored_Events.php:417
1662
  msgid "Restore &#8220;%s&#8221; from the Ignored"
1663
  msgstr ""
@@ -1667,7 +1780,6 @@ msgid "Restore"
1667
  msgstr ""
1668
 
1669
  #. translators: %s: post title
1670
-
1671
  #: src/Tribe/Ignored_Events.php:425
1672
  msgid "Delete &#8220;%s&#8221; permanently"
1673
  msgstr ""
@@ -1679,7 +1791,9 @@ msgstr[0] ""
1679
  msgstr[1] ""
1680
 
1681
  #: src/Tribe/Ignored_Events.php:790
1682
- msgid "Error, a unknown bug happened and it was impossible to migrate the Legacy Ignored Events, try again later."
 
 
1683
  msgstr ""
1684
 
1685
  #: src/Tribe/Ignored_Events.php:797
@@ -1691,8 +1805,12 @@ msgid "There were no Legacy Events to be Migrated, you are ready to rock!"
1691
  msgstr ""
1692
 
1693
  #: src/Tribe/Ignored_Events.php:828
1694
- msgid "Migration: %d Legacy Ignored Post was migrated but %d failed. To see the migrated event you will first need to refresh this screen."
1695
- msgid_plural "Migration: %d Legacy Ignored Posts were migrated but %d failed. To see the migrated events you will first need to refresh this screen."
 
 
 
 
1696
  msgstr[0] ""
1697
  msgstr[1] ""
1698
 
@@ -1707,8 +1825,12 @@ msgid "Event %d: %s"
1707
  msgstr ""
1708
 
1709
  #: src/Tribe/Ignored_Events.php:859
1710
- msgid "Migration: %d Legacy Ignored Post was migrated sucessfully. To see the migrated event you will first need to refresh this screen."
1711
- msgid_plural "Migration: %d Legacy Ignored Posts were migrated sucessfully. To see the migrated events you will first need to refresh this screen."
 
 
 
 
1712
  msgstr[0] ""
1713
  msgstr[1] ""
1714
 
@@ -1730,7 +1852,9 @@ msgid "Default encoding for imported csv file"
1730
  msgstr ""
1731
 
1732
  #: src/Tribe/Importer/Admin_Page.php:138
1733
- msgid "This Action has been deprecated, to comply with WordPress Standards we are now using Underscores (_) instead of Dashes (-). From: \"%s\" To: \"%s\""
 
 
1734
  msgstr ""
1735
 
1736
  #: src/Tribe/Importer/Admin_Page.php:164 src/Tribe/Importer/Admin_Page.php:350
@@ -1758,7 +1882,9 @@ msgstr ""
1758
 
1759
  #: src/Tribe/Importer/Admin_Page.php:249 src/Tribe/Importer/Options.php:24
1760
  #: src/Tribe/Importer/Options.php:84
1761
- msgid "This Filter has been deprecated, to comply with WordPress Standards we are now using Underscores (_) instead of Dashes (-). From: \"%s\" To: \"%s\""
 
 
1762
  msgstr ""
1763
 
1764
  #: src/Tribe/Importer/Admin_Page.php:316
@@ -1994,8 +2120,8 @@ msgstr ""
1994
  msgid "Create New %s"
1995
  msgstr ""
1996
 
1997
- #: src/Tribe/Linked_Posts/Chooser_Meta_Box.php:151 src/Tribe/Main.php:4434
1998
- #: src/Tribe/Main.php:4491
1999
  msgid "Use Saved %s:"
2000
  msgstr ""
2001
 
@@ -2051,6 +2177,8 @@ msgstr ""
2051
  msgid "Upcoming Events"
2052
  msgstr ""
2053
 
 
 
2054
  #: src/Tribe/Main.php:694 src/Tribe/Main.php:1029
2055
  msgid "The Events Calendar"
2056
  msgstr ""
@@ -2099,7 +2227,9 @@ msgid "Welcome to The Events Calendar"
2099
  msgstr ""
2100
 
2101
  #: src/Tribe/Main.php:919
2102
- msgid "The %3$s \"%1$s\" uses the \"/%2$s\" slug: the Events Calendar plugin will show its calendar in place of the page."
 
 
2103
  msgstr ""
2104
 
2105
  #: src/Tribe/Main.php:922
@@ -2127,7 +2257,10 @@ msgid "New User Primer"
2127
  msgstr ""
2128
 
2129
  #: src/Tribe/Main.php:991
2130
- msgid "We are committed to helping make your calendar spectacular and have a wealth of resources available, including a handy %s to get your calendar up and running."
 
 
 
2131
  msgstr ""
2132
 
2133
  #: src/Tribe/Main.php:1002
@@ -2135,7 +2268,9 @@ msgid "Support for The Events Calendar"
2135
  msgstr ""
2136
 
2137
  #: src/Tribe/Main.php:1005
2138
- msgid "%s: A thorough walkthrough of The Events Calendar and the settings that are available to you."
 
 
2139
  msgstr ""
2140
 
2141
  #: src/Tribe/Main.php:1005
@@ -2143,7 +2278,9 @@ msgid "Settings overview"
2143
  msgstr ""
2144
 
2145
  #: src/Tribe/Main.php:1007
2146
- msgid "%s: A complete look at the features you can expect to see right out of the box as well as how to use them."
 
 
2147
  msgstr ""
2148
 
2149
  #: src/Tribe/Main.php:1007
@@ -2151,7 +2288,9 @@ msgid "Features overview"
2151
  msgstr ""
2152
 
2153
  #: src/Tribe/Main.php:1009
2154
- msgid "%s: Our most comprehensive outline for customizing the calendar to suit your needs, including custom layouts and styles."
 
 
2155
  msgstr ""
2156
 
2157
  #: src/Tribe/Main.php:1009
@@ -2159,7 +2298,9 @@ msgid "Themer’s Guide"
2159
  msgstr ""
2160
 
2161
  #: src/Tribe/Main.php:1011
2162
- msgid "%s: An overview of the default templates and styles that are included in the plugin, as well as how to change them."
 
 
2163
  msgstr ""
2164
 
2165
  #: src/Tribe/Main.php:1011
@@ -2167,7 +2308,9 @@ msgid "Using stylesheets and page templates"
2167
  msgstr ""
2168
 
2169
  #: src/Tribe/Main.php:1013
2170
- msgid "%s: Do you see an issue with your calendar? Go here first to find where it’s coming from and how to fix it."
 
 
2171
  msgstr ""
2172
 
2173
  #: src/Tribe/Main.php:1013
@@ -2175,7 +2318,9 @@ msgid "Troubleshooting common problems"
2175
  msgstr ""
2176
 
2177
  #: src/Tribe/Main.php:1015
2178
- msgid "%s: Code and guides for customizing your calendar in useful and interesting ways."
 
 
2179
  msgstr ""
2180
 
2181
  #: src/Tribe/Main.php:1015
@@ -2187,7 +2332,10 @@ msgid "Events Tickets"
2187
  msgstr ""
2188
 
2189
  #: src/Tribe/Main.php:1031
2190
- msgid "If you have tried the above steps and are still having trouble, you can post a new thread to our WordPress.org forums for %1$s or %2$s. Our support staff monitors these forums once a week and would be happy to assist you there. "
 
 
 
2191
  msgstr ""
2192
 
2193
  #: src/Tribe/Main.php:1033 src/Tribe/Main.php:1041
@@ -2195,7 +2343,10 @@ msgid "premium support on our website"
2195
  msgstr ""
2196
 
2197
  #: src/Tribe/Main.php:1034
2198
- msgid "<strong>Looking for more immediate support?</strong> We offer %s with the purchase of any of our premium plugins. Pick up a license and you can post there directly and expect a response within 24-48 hours during weekdays"
 
 
 
2199
  msgstr ""
2200
 
2201
  #: src/Tribe/Main.php:1038
@@ -2203,7 +2354,10 @@ msgid "open-source forum on WordPress.org"
2203
  msgstr ""
2204
 
2205
  #: src/Tribe/Main.php:1039
2206
- msgid "If you have tried the above steps and are still having trouble, you can post a new thread to our %s. Our support staff monitors these forums once a week and would be happy to assist you there."
 
 
 
2207
  msgstr ""
2208
 
2209
  #: src/Tribe/Main.php:1042
@@ -2211,7 +2365,11 @@ msgid "Events Calendar PRO"
2211
  msgstr ""
2212
 
2213
  #: src/Tribe/Main.php:1043
2214
- msgid "<strong>Looking for more immediate support?</strong> We offer %1$s with the purchase of any of our premium plugins (like %2$s). Pick up a license and you can post there directly and expect a response within 24-48 hours during weekdays."
 
 
 
 
2215
  msgstr ""
2216
 
2217
  #: src/Tribe/Main.php:1047
@@ -2219,7 +2377,10 @@ msgid "post a thread"
2219
  msgstr ""
2220
 
2221
  #: src/Tribe/Main.php:1048
2222
- msgid "If you have a valid license for one of our paid plugins, you can %s in our premium support forums. Our support team monitors the forums and will respond to your thread within 24-48 hours (during the week)."
 
 
 
2223
  msgstr ""
2224
 
2225
  #: src/Tribe/Main.php:1099 src/admin-views/aggregator/tabs/import-form.php:158
@@ -2229,23 +2390,34 @@ msgid "Event"
2229
  msgstr ""
2230
 
2231
  #: src/Tribe/Main.php:1230
2232
- msgid "Your version of The Events Calendar is not up-to-date with one of your The Events Calendar add-ons. Please %supdate now.%s"
 
 
2233
  msgstr ""
2234
 
2235
  #: src/Tribe/Main.php:1242
2236
- msgid "The following plugins are out of date: %1$s. All add-ons contain dependencies on The Events Calendar and will not function properly unless paired with the right version. %2$sLearn More%3$s."
 
 
 
2237
  msgstr ""
2238
 
2239
  #: src/Tribe/Main.php:1393
2240
- msgid "Sorry, The Events Calendar requires WordPress %s or higher. Please upgrade your WordPress install."
 
 
2241
  msgstr ""
2242
 
2243
  #: src/Tribe/Main.php:1396
2244
- msgid "Sorry, The Events Calendar requires PHP %s or higher. Talk to your Web host about moving you to a newer version of PHP."
 
 
2245
  msgstr ""
2246
 
2247
  #: src/Tribe/Main.php:1408
2248
- msgid "It appears as if the tribe-common libraries cannot be found! The directory should be in the \"common/\" directory in the events calendar plugin."
 
 
2249
  msgstr ""
2250
 
2251
  #: src/Tribe/Main.php:1615 src/Tribe/Main.php:2218
@@ -2339,7 +2511,6 @@ msgid "%s updated."
2339
  msgstr ""
2340
 
2341
  #. translators: %s: date and time of the revision
2342
-
2343
  #: src/Tribe/Main.php:1713 src/Tribe/Main.php:1750
2344
  msgid "%1$s restored to revision from %2$s"
2345
  msgstr ""
@@ -2361,7 +2532,6 @@ msgid "%1$s scheduled for: %2$s. %3$sPreview %4$s"
2361
  msgstr ""
2362
 
2363
  #. translators: Publish box date format, see http://php.net/date
2364
-
2365
  #: src/Tribe/Main.php:1730 src/Tribe/Main.php:1758 src/Tribe/Main.php:1778
2366
  msgid "M j, Y @ G:i"
2367
  msgstr ""
@@ -2387,13 +2557,14 @@ msgid "%s draft updated."
2387
  msgstr ""
2388
 
2389
  #. translators: %s: date and time of the revision
2390
-
2391
  #: src/Tribe/Main.php:1770
2392
  msgid "%s restored to revision from %s"
2393
  msgstr ""
2394
 
2395
  #: src/Tribe/Main.php:1824
2396
- msgid "Without a defined location your event will not display a %sGoogle Rich Snippet%s on the search results."
 
 
2397
  msgstr ""
2398
 
2399
  #: src/Tribe/Main.php:2219
@@ -2416,87 +2587,89 @@ msgstr ""
2416
  msgid " (View Full %1$s Description Here: %2$s)"
2417
  msgstr ""
2418
 
2419
- #: src/Tribe/Main.php:3413 src/Tribe/Main.php:3448
2420
  #: src/functions/template-tags/day.php:157
2421
  #: src/functions/template-tags/day.php:178
2422
  msgid "Date out of range."
2423
  msgstr ""
2424
 
2425
- #: src/Tribe/Main.php:3483
2426
  msgid "%s Options"
2427
  msgstr ""
2428
 
2429
- #: src/Tribe/Main.php:3490 src/Tribe/Main.php:3501
2430
  msgid "%s Information"
2431
  msgstr ""
2432
 
2433
- #: src/Tribe/Main.php:3837
2434
  msgid "Support"
2435
  msgstr ""
2436
 
2437
- #: src/Tribe/Main.php:3840
2438
  msgid "View All Add-Ons"
2439
  msgstr ""
2440
 
2441
- #: src/Tribe/Main.php:3860
2442
  msgid "News from Modern Tribe"
2443
  msgstr ""
2444
 
2445
- #: src/Tribe/Main.php:3905
2446
  msgid "Additional Functionality"
2447
  msgstr ""
2448
 
2449
- #: src/Tribe/Main.php:3910
2450
- msgid "Looking for additional functionality including recurring events, ticket sales, publicly submitted events, new views and more?"
 
 
2451
  msgstr ""
2452
 
2453
- #: src/Tribe/Main.php:3911
2454
  msgid "Check out the %savailable add-ons%s."
2455
  msgstr ""
2456
 
2457
- #: src/Tribe/Main.php:4013
2458
  msgid "Calendar"
2459
  msgstr ""
2460
 
2461
- #: src/Tribe/Main.php:4029
2462
  msgid "List"
2463
  msgstr ""
2464
 
2465
- #: src/Tribe/Main.php:4047
2466
  msgid "Month"
2467
  msgstr ""
2468
 
2469
- #: src/Tribe/Main.php:4064 src/admin-views/aggregator/fields/schedule.php:44
2470
  #: src/admin-views/aggregator/fields/schedule.php:62
2471
  msgid "Day"
2472
  msgstr ""
2473
 
2474
- #: src/Tribe/Main.php:4089
2475
  msgid "Search"
2476
  msgstr ""
2477
 
2478
- #: src/Tribe/Main.php:4090
2479
  msgid "Keyword"
2480
  msgstr ""
2481
 
2482
- #: src/Tribe/Main.php:4114 src/Tribe/Main.php:4130
2483
  #: src/admin-views/aggregator/origins/refine.php:7
2484
  msgid "Date"
2485
  msgstr ""
2486
 
2487
- #: src/Tribe/Main.php:4117
2488
  msgid "%s In"
2489
  msgstr ""
2490
 
2491
- #: src/Tribe/Main.php:4119
2492
  msgid "%s From"
2493
  msgstr ""
2494
 
2495
- #: src/Tribe/Main.php:4121
2496
  msgid "Day Of"
2497
  msgstr ""
2498
 
2499
- #: src/Tribe/Main.php:4194
2500
  msgid "Once Every 30 Mins"
2501
  msgstr ""
2502
 
@@ -2529,7 +2702,9 @@ msgid "The event ID used to globally identify in Event Aggregator"
2529
  msgstr ""
2530
 
2531
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:32
2532
- msgid "An Array containing the lineage of where this event comes from, this should not change after the event is created."
 
 
2533
  msgstr ""
2534
 
2535
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:36
@@ -2680,7 +2855,9 @@ msgstr ""
2680
 
2681
  #: src/Tribe/REST/V1/Documentation/Organizer_Definition_Provider.php:32
2682
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:32
2683
- msgid "An Array containing the lineage of where this organizer comes from, this should not change after the organizer is created."
 
 
2684
  msgstr ""
2685
 
2686
  #: src/Tribe/REST/V1/Documentation/Organizer_Definition_Provider.php:36
@@ -2824,7 +3001,9 @@ msgid "Event Aggregator cannot import events from this site."
2824
  msgstr ""
2825
 
2826
  #: src/Tribe/REST/V1/EA_Messages.php:10
2827
- msgid "Event Aggregator cannot import events because this site is running an outdated version of The Events Calendar."
 
 
2828
  msgstr ""
2829
 
2830
  #: src/Tribe/REST/V1/EA_Messages.php:11
@@ -2832,47 +3011,75 @@ msgid "The Events Calendar is API is not providing the site origin correctly."
2832
  msgstr ""
2833
 
2834
  #: src/Tribe/REST/V1/EA_Messages.php:12
2835
- msgid "Events could not be imported. Event Aggregator does not yet support events from that URL. We have noted your request and will review it for support in the future."
 
 
 
2836
  msgstr ""
2837
 
2838
  #: src/Tribe/REST/V1/EA_Messages.php:13
2839
- msgid "Events could not be imported. The Events Calendar REST API is disabled on the requested URL."
 
 
2840
  msgstr ""
2841
 
2842
  #: src/Tribe/REST/V1/EA_Messages.php:14
2843
- msgid "Events could not be imported. The URL provided could be reached and has The Events Calendar REST API enabled, but returned malformed data."
 
 
2844
  msgstr ""
2845
 
2846
  #: src/Tribe/REST/V1/EA_Messages.php:15
2847
- msgid "Events could not be imported. The URL provided could be reached and has The Events Calendar REST API enabled, but there was an error while fetching the archive control data."
 
 
 
2848
  msgstr ""
2849
 
2850
  #: src/Tribe/REST/V1/EA_Messages.php:16
2851
- msgid "Events could not be imported. The URL provided could be reached and has The Events Calendar REST API enabled, but there was an error while fetching the total number of events."
 
 
 
2852
  msgstr ""
2853
 
2854
  #: src/Tribe/REST/V1/EA_Messages.php:17
2855
- msgid "Events could not be imported. The URL provided could be reached and has The Events Calendar REST API enabled, but returned malformed data in regard to the total number of events."
 
 
 
2856
  msgstr ""
2857
 
2858
  #: src/Tribe/REST/V1/EA_Messages.php:18
2859
- msgid "Events could not be imported. The URL provided could be reached and has The Events Calendar REST API enabled, but there was an error while fetching an archive page."
 
 
 
2860
  msgstr ""
2861
 
2862
  #: src/Tribe/REST/V1/EA_Messages.php:19
2863
- msgid "Events could not be imported. The URL provided could be reached and has The Events Calendar REST API enabled, but returned an empty archive page."
 
 
2864
  msgstr ""
2865
 
2866
  #: src/Tribe/REST/V1/EA_Messages.php:20
2867
- msgid "Events could not be imported. The URL provided could be reached and has The Events Calendar REST API enabled, but there was an error while fetching the event data."
 
 
 
2868
  msgstr ""
2869
 
2870
  #: src/Tribe/REST/V1/EA_Messages.php:21
2871
- msgid "Events could not be imported. The URL provided could be reached and has The Events Calendar REST API enabled, but returned empty event data."
 
 
2872
  msgstr ""
2873
 
2874
  #: src/Tribe/REST/V1/EA_Messages.php:22
2875
- msgid "The requested URL does not have any upcoming and published events matching the search criteria."
 
 
2876
  msgstr ""
2877
 
2878
  #: src/Tribe/REST/V1/EA_Messages.php:39
@@ -2948,11 +3155,15 @@ msgid "The Events Calendar REST API"
2948
  msgstr ""
2949
 
2950
  #: src/Tribe/REST/V1/Endpoints/Swagger_Documentation.php:90
2951
- msgid "The Events Calendar REST API allows accessing upcoming events information easily and conveniently."
 
 
2952
  msgstr ""
2953
 
2954
  #: src/Tribe/REST/V1/Endpoints/Swagger_Documentation.php:124
2955
- msgid "Returns the documentation for The Events Calendar REST API in Swagger consumable format."
 
 
2956
  msgstr ""
2957
 
2958
  #: src/Tribe/REST/V1/Messages.php:13
@@ -3020,7 +3231,9 @@ msgid "Ongoing"
3020
  msgstr ""
3021
 
3022
  #: src/Tribe/Template/Day.php:145
3023
- msgid "No matching %1$s listed under %2$s scheduled for %3$s. Please try another day."
 
 
3024
  msgstr ""
3025
 
3026
  #: src/Tribe/Template/Day.php:147
@@ -3031,20 +3244,25 @@ msgstr ""
3031
  msgid "This %s has passed."
3032
  msgstr ""
3033
 
3034
- #: src/Tribe/Template/Month.php:371
3035
- msgid "There were no results found for %s this month. Try searching next month."
 
3036
  msgstr ""
3037
 
3038
- #: src/Tribe/Template/Month.php:375
3039
- msgid "No matching %1$s listed under %2$s. Please try viewing the full calendar for a complete list of events."
 
 
3040
  msgstr ""
3041
 
3042
- #: src/Tribe/Template/Month.php:377 src/Tribe/Template_Factory.php:306
3043
  msgid "There were no results found."
3044
  msgstr ""
3045
 
3046
- #: src/Tribe/Template/Month.php:817
3047
- msgid "The requested date \"%s\" was not valid &ndash; showing the current month instead"
 
 
3048
  msgstr ""
3049
 
3050
  #: src/Tribe/Template_Factory.php:293
@@ -3056,11 +3274,15 @@ msgid "No results were found for %1$s in or near %2$s."
3056
  msgstr ""
3057
 
3058
  #: src/Tribe/Template_Factory.php:297
3059
- msgid "No upcoming %1$s listed under %2$s. Check out upcoming %3$s for this category or view the full calendar."
 
 
3060
  msgstr ""
3061
 
3062
  #: src/Tribe/Template_Factory.php:299 src/Tribe/Template_Factory.php:304
3063
- msgid "No matching %1$s listed under %2$s. Please try viewing the full calendar for a complete list of %3$s."
 
 
3064
  msgstr ""
3065
 
3066
  #: src/Tribe/Template_Factory.php:301
@@ -3072,7 +3294,9 @@ msgid "Template overrides should be moved to the correct subdirectory: %s"
3072
  msgstr ""
3073
 
3074
  #: src/Tribe/Templates.php:664
3075
- msgid "Template overrides should be moved to the correct subdirectory: tribe_get_template_part('%s')"
 
 
3076
  msgstr ""
3077
 
3078
  #: src/Tribe/Utils/Radius.php:18
@@ -3146,7 +3370,9 @@ msgid "Export Events"
3146
  msgstr ""
3147
 
3148
  #: src/Tribe/iCal.php:109
3149
- msgid "Use this to share calendar data with Google Calendar, Apple iCal and other compatible apps"
 
 
3150
  msgstr ""
3151
 
3152
  #: src/admin-views/admin-update-message.php:9
@@ -3159,7 +3385,10 @@ msgid "Keep the Core Plugin %sFREE%s!"
3159
  msgstr ""
3160
 
3161
  #: src/admin-views/admin-update-message.php:33
3162
- msgid "Every time you rate %s5 stars%s, a fairy is born. Okay maybe not, but more happy users mean more contributions and help on the forums. The community NEEDS your voice."
 
 
 
3163
  msgstr ""
3164
 
3165
  #: src/admin-views/admin-update-message.php:34
@@ -3216,7 +3445,10 @@ msgid "We Need Your Help"
3216
  msgstr ""
3217
 
3218
  #: src/admin-views/admin-welcome-message.php:20
3219
- msgid "Your ratings help us bring The Events Calendar to more users. More happy users mean more support, more features, and more of everything you know and love about The Events Calendar. We couldn't do this without your support."
 
 
 
3220
  msgstr ""
3221
 
3222
  #: src/admin-views/admin-welcome-message.php:21
@@ -3228,7 +3460,9 @@ msgid "Newsletter Signup"
3228
  msgstr ""
3229
 
3230
  #: src/admin-views/admin-welcome-message.php:26
3231
- msgid "Stay in touch with The Events Calendar team. We send out periodic updates, key developer notices, and even the occasional discount."
 
 
3232
  msgstr ""
3233
 
3234
  #: src/admin-views/admin-welcome-message.php:28
@@ -3315,15 +3549,21 @@ msgid "Last Import:"
3315
  msgstr ""
3316
 
3317
  #: src/admin-views/aggregator/meta-box.php:23
3318
- msgid "If this event is re-imported, event fields will be overwritten with any changes from the source."
 
 
3319
  msgstr ""
3320
 
3321
  #: src/admin-views/aggregator/meta-box.php:29
3322
- msgid "If this event is re-imported, event fields that have not been changed locally will be overwritten with any changes from the source."
 
 
3323
  msgstr ""
3324
 
3325
  #: src/admin-views/aggregator/meta-box.php:36
3326
- msgid "This event will not be re-imported and changes made locally will be preserved."
 
 
3327
  msgstr ""
3328
 
3329
  #: src/admin-views/aggregator/meta-box.php:45
@@ -3343,7 +3583,9 @@ msgid "Specify the type of content you wish to import, e.g. events."
3343
  msgstr ""
3344
 
3345
  #: src/admin-views/aggregator/origins/csv.php:8
3346
- msgid "For the best results, import venue and organizer files before importing event files."
 
 
3347
  msgstr ""
3348
 
3349
  #: src/admin-views/aggregator/origins/csv.php:39
@@ -3356,7 +3598,9 @@ msgid "Choose a CSV file"
3356
  msgstr ""
3357
 
3358
  #: src/admin-views/aggregator/origins/csv.php:41
3359
- msgid "Select your .CSV file from the WordPress media library. You may need to first upload the file from your computer to the library."
 
 
3360
  msgstr ""
3361
 
3362
  #: src/admin-views/aggregator/origins/csv.php:42
@@ -3400,7 +3644,9 @@ msgid "Eventbrite URL"
3400
  msgstr ""
3401
 
3402
  #: src/admin-views/aggregator/origins/eventbrite.php:23
3403
- msgid "Enter an Eventbrite event URL, e.g. https://www.eventbrite.com/e/example-12345"
 
 
3404
  msgstr ""
3405
 
3406
  #: src/admin-views/aggregator/origins/facebook.php:5
@@ -3421,7 +3667,10 @@ msgid "Select Import Type"
3421
  msgstr ""
3422
 
3423
  #: src/admin-views/aggregator/origins/facebook.php:7
3424
- msgid "One-time imports include all currently listed events, while scheduled imports automatically grab new events and updates from Facebook on a set schedule. Single events can be added via a one-time import."
 
 
 
3425
  msgstr ""
3426
 
3427
  #: src/admin-views/aggregator/origins/facebook.php:11
@@ -3483,12 +3732,17 @@ msgid "facebook.com/example"
3483
  msgstr ""
3484
 
3485
  #: src/admin-views/aggregator/origins/facebook.php:111
3486
- msgid "Enter the url for a Facebook group or page. You can also enter the url of a single Facebook event."
 
 
3487
  msgstr ""
3488
 
3489
  #: src/admin-views/aggregator/origins/gcal.php:7
3490
  #: src/admin-views/aggregator/origins/ical.php:7
3491
- msgid "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."
 
 
 
3492
  msgstr ""
3493
 
3494
  #: src/admin-views/aggregator/origins/gcal.php:82
@@ -3504,15 +3758,21 @@ msgid "You can find the url you need in your Google Calendar settings."
3504
  msgstr ""
3505
 
3506
  #: src/admin-views/aggregator/origins/gcal.php:87
3507
- msgid "Go to Settings &gt; Calendars and select the calendar you wish to import."
 
3508
  msgstr ""
3509
 
3510
  #: src/admin-views/aggregator/origins/gcal.php:88
3511
- msgid "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)."
 
 
 
3512
  msgstr ""
3513
 
3514
  #: src/admin-views/aggregator/origins/gcal.php:89
3515
- msgid "Copy the provided url into this field to import the events into your WordPress site."
 
 
3516
  msgstr ""
3517
 
3518
  #: src/admin-views/aggregator/origins/gcal.php:117
@@ -3528,7 +3788,9 @@ msgid "example.com/url.ics"
3528
  msgstr ""
3529
 
3530
  #: src/admin-views/aggregator/origins/ical.php:84
3531
- msgid "Enter the url for the iCalendar feed you wish to import, e.g. https://central.wordcamp.org/calendar.ics"
 
 
3532
  msgstr ""
3533
 
3534
  #: src/admin-views/aggregator/origins/ics.php:6
@@ -3536,7 +3798,9 @@ msgid "Choose File"
3536
  msgstr ""
3537
 
3538
  #: src/admin-views/aggregator/origins/ics.php:7
3539
- msgid "Select your ICS file from the WordPress media library. You may need to first upload the file from your computer to the library."
 
 
3540
  msgstr ""
3541
 
3542
  #: src/admin-views/aggregator/origins/ics.php:10
@@ -3544,15 +3808,22 @@ msgid "Upload an ICS File"
3544
  msgstr ""
3545
 
3546
  #: src/admin-views/aggregator/origins/meetup.php:7
3547
- msgid "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."
 
 
 
3548
  msgstr ""
3549
 
3550
  #: src/admin-views/aggregator/origins/meetup.php:32
3551
- msgid "Enter your Meetup API key to import Meetup events. %1$sClick here to get your Meetup API key%2$s. You only need to do this once, it will be saved under %3$sEvents &gt; Settings &gt; APIs%4$s"
 
 
 
3552
  msgstr ""
3553
 
3554
  #: src/admin-views/aggregator/origins/meetup.php:47
3555
- msgid "Your Meetup API key has been saved to %1$sEvents &gt; Settings &gt; APIs%2$s"
 
3556
  msgstr ""
3557
 
3558
  #: src/admin-views/aggregator/origins/meetup.php:59
@@ -3568,7 +3839,9 @@ msgid "meetup.com/example"
3568
  msgstr ""
3569
 
3570
  #: src/admin-views/aggregator/origins/meetup.php:139
3571
- msgid "Enter the url for a Meetup group, page, or individual. You can also enter the url of a single Meetup event."
 
 
3572
  msgstr ""
3573
 
3574
  #: src/admin-views/aggregator/origins/refine.php:3
@@ -3585,11 +3858,14 @@ msgid "Radius (%s)"
3585
  msgstr ""
3586
 
3587
  #: src/admin-views/aggregator/origins/refine.php:14
3588
- msgid "Use the filters to narrow down which events are fetched from your ICS file."
 
3589
  msgstr ""
3590
 
3591
  #: src/admin-views/aggregator/origins/refine.php:18
3592
- msgid "Use the filters to narrow down which events are fetched from this Google Calendar."
 
 
3593
  msgstr ""
3594
 
3595
  #: src/admin-views/aggregator/origins/refine.php:22
@@ -3597,7 +3873,9 @@ msgid "Use the filters to narrow down which events are fetched from this site."
3597
  msgstr ""
3598
 
3599
  #: src/admin-views/aggregator/origins/refine.php:27
3600
- msgid "Use the filters to narrow down which events are fetched from this iCalendar feed."
 
 
3601
  msgstr ""
3602
 
3603
  #: src/admin-views/aggregator/origins/refine.php:33
@@ -3609,7 +3887,10 @@ msgid "Events on or after"
3609
  msgstr ""
3610
 
3611
  #: src/admin-views/aggregator/origins/url.php:7
3612
- msgid "One-time imports include currently listed upcoming events, while scheduled imports automatically grab new events and updates from this url on a set schedule."
 
 
 
3613
  msgstr ""
3614
 
3615
  #: src/admin-views/aggregator/origins/url.php:83
@@ -3617,11 +3898,15 @@ msgid "example.com/"
3617
  msgstr ""
3618
 
3619
  #: src/admin-views/aggregator/origins/url.php:84
3620
- msgid "Enter the url for the calendar, website, or event you would like to import. Event Aggregator will attempt to import events at that location."
 
 
3621
  msgstr ""
3622
 
3623
  #: src/admin-views/aggregator/origins/url.php:89
3624
- msgid "Event Aggregator will try to fetch events starting in %s from the current date or the specified date;"
 
 
3625
  msgstr ""
3626
 
3627
  #: src/admin-views/aggregator/origins/url.php:91
@@ -3650,7 +3935,13 @@ msgid "Event Update Authority"
3650
  msgstr ""
3651
 
3652
  #: src/admin-views/aggregator/settings.php:44
3653
- msgid "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 Facebook 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."
 
 
 
 
 
 
3654
  msgstr ""
3655
 
3656
  #: src/admin-views/aggregator/settings.php:53
@@ -3704,7 +3995,9 @@ msgid "Disable Event Aggregator imports"
3704
  msgstr ""
3705
 
3706
  #: src/admin-views/aggregator/settings.php:97
3707
- msgid "Stop all Event Aggregator imports from running. Existing imported events will not be affected. Imports via CSV file will still be available."
 
 
3708
  msgstr ""
3709
 
3710
  #: src/admin-views/aggregator/settings.php:110
@@ -3792,7 +4085,9 @@ msgid "Meetup Import Settings"
3792
  msgstr ""
3793
 
3794
  #: src/admin-views/aggregator/settings.php:315
3795
- msgid "To import Meetup events, please be sure to add your Meetup API key on %1$sEvents > Settings > APIs%2$s"
 
 
3796
  msgstr ""
3797
 
3798
  #: src/admin-views/aggregator/settings.php:326
@@ -3820,7 +4115,11 @@ msgid "Import date range"
3820
  msgstr ""
3821
 
3822
  #: src/admin-views/aggregator/settings.php:400
3823
- msgid "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."
 
 
 
 
3824
  msgstr ""
3825
 
3826
  #: src/admin-views/aggregator/settings.php:410
@@ -3828,11 +4127,17 @@ msgid "Import Event Settings"
3828
  msgstr ""
3829
 
3830
  #: src/admin-views/aggregator/settings.php:411
3831
- msgid "Fetch source event's settings (e.g. Show Google Maps Link or Sticky in Month View) when importing from another site using The Events Calendar."
 
 
3832
  msgstr ""
3833
 
3834
  #: src/admin-views/aggregator/settings.php:443
3835
- msgid "Use the options below to configure your imports. Global Import Settings apply to all imports, but you can also override the global settings by adjusting the origin-specific options. Check your Event Aggregator Service Status on the %1$s."
 
 
 
 
3836
  msgstr ""
3837
 
3838
  #: src/admin-views/aggregator/settings.php:447
@@ -3852,7 +4157,9 @@ msgid "Other URLs"
3852
  msgstr ""
3853
 
3854
  #: src/admin-views/aggregator/settings.php:467
3855
- msgid "Use the options below to configure your imports. Looking for more ways to import events from other websites?"
 
 
3856
  msgstr ""
3857
 
3858
  #: src/admin-views/aggregator/settings.php:468
@@ -3872,7 +4179,8 @@ msgid "You do not have a license"
3872
  msgstr ""
3873
 
3874
  #: src/admin-views/aggregator/status.php:32
3875
- msgid "Buy Event Aggregator to access more event sources and automatic imports!"
 
3876
  msgstr ""
3877
 
3878
  #: src/admin-views/aggregator/status.php:35
@@ -3888,11 +4196,15 @@ msgid "License Key"
3888
  msgstr ""
3889
 
3890
  #: src/admin-views/aggregator/status.php:63
3891
- msgid "You have reached your daily import limit. Scheduled imports will be paused until tomorrow."
 
 
3892
  msgstr ""
3893
 
3894
  #: src/admin-views/aggregator/status.php:66
3895
- msgid "You are approaching your daily import limit. You may want to adjust your Scheduled Import frequencies."
 
 
3896
  msgstr ""
3897
 
3898
  #: src/admin-views/aggregator/status.php:70
@@ -3910,7 +4222,6 @@ msgid "Import Services"
3910
  msgstr ""
3911
 
3912
  #. translators: %s: Event Aggregator Server URL
3913
-
3914
  #: src/admin-views/aggregator/status.php:102
3915
  #: src/admin-views/aggregator/status.php:110
3916
  msgid "Not connected to %s"
@@ -3925,7 +4236,6 @@ msgid "The server is responding with an error:"
3925
  msgstr ""
3926
 
3927
  #. translators: %s: Event Aggregator Server URL
3928
-
3929
  #: src/admin-views/aggregator/status.php:118
3930
  msgid "Connected to %s"
3931
  msgstr ""
@@ -4008,23 +4318,34 @@ msgid "Access more event sources and automatic imports!"
4008
  msgstr ""
4009
 
4010
  #: src/admin-views/aggregator/tabs/import-form.php:118
4011
- msgid "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."
 
 
 
4012
  msgstr ""
4013
 
4014
  #: src/admin-views/aggregator/tabs/import-form.php:119
4015
- msgid "These settings will also apply to events imported in the future via this scheduled import."
 
 
4016
  msgstr ""
4017
 
4018
  #: src/admin-views/aggregator/tabs/import-form.php:121
4019
- msgid "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."
 
 
 
4020
  msgstr ""
4021
 
4022
  #: src/admin-views/aggregator/tabs/import-form.php:123
4023
- msgid "When you save this scheduled import, the events above will begin importing."
 
4024
  msgstr ""
4025
 
4026
  #: src/admin-views/aggregator/tabs/import-form.php:133
4027
- msgid "This is a preview of the type of content you will be getting in during the import based on what is on the calendar now."
 
 
4028
  msgstr ""
4029
 
4030
  #: src/admin-views/aggregator/tabs/import-form.php:136
@@ -4032,7 +4353,10 @@ msgid "Column Mapping:"
4032
  msgstr ""
4033
 
4034
  #: src/admin-views/aggregator/tabs/import-form.php:142
4035
- msgid "The following preview does not necessarily contain all of the data from your CSV file. The data displayed below is meant as a guide to help you map your CSV file's columns to the appropriate Event fields."
 
 
 
4036
  msgstr ""
4037
 
4038
  #: src/admin-views/aggregator/tabs/import-form.php:152
@@ -4054,7 +4378,10 @@ msgid "Category:"
4054
  msgstr ""
4055
 
4056
  #: src/admin-views/aggregator/tabs/import-form.php:240
4057
- msgid "Events will be imported with the timezone defined by the source. If no time zone is specified, events will be assigned your site's default timezone (see %1$sSettings > General%2$s)."
 
 
 
4058
  msgstr ""
4059
 
4060
  #: src/admin-views/create-organizer-fields.php:2
@@ -4082,7 +4409,9 @@ msgstr ""
4082
 
4083
  #: src/admin-views/create-organizer-fields.php:19
4084
  #: src/admin-views/organizer-meta-box.php:45
4085
- msgid "The e-mail address will be obfuscated on your site to avoid it getting harvested by spammers."
 
 
4086
  msgstr ""
4087
 
4088
  #: src/admin-views/create-venue-fields.php:35
@@ -4159,7 +4488,9 @@ msgid "Sticky in Month View"
4159
  msgstr ""
4160
 
4161
  #: src/admin-views/event-sidebar-options.php:25
4162
- msgid "When events are sticky in month view, they'll display first in the list of events shown within a given day block."
 
 
4163
  msgstr ""
4164
 
4165
  #: src/admin-views/event-sidebar-options.php:31
@@ -4167,7 +4498,9 @@ msgid "Feature Event"
4167
  msgstr ""
4168
 
4169
  #: src/admin-views/event-sidebar-options.php:33
4170
- msgid "Featured events are highlighted on the front end in views, archives, and widgets."
 
 
4171
  msgstr ""
4172
 
4173
  #: src/admin-views/events-meta-box.php:52
@@ -4175,7 +4508,10 @@ msgid "Time &amp; Date"
4175
  msgstr ""
4176
 
4177
  #: src/admin-views/events-meta-box.php:69
4178
- msgid "You have changed the recurrence rules of this %1$s. Saving the %1$s will update all future %2$s. If you did not mean to change all %2$s, then please refresh the page."
 
 
 
4179
  msgstr ""
4180
 
4181
  #: src/admin-views/events-meta-box.php:72
@@ -4267,7 +4603,9 @@ msgid "Disconnect"
4267
  msgstr ""
4268
 
4269
  #: src/admin-views/tribe-options-addons-api.php:82
4270
- msgid "You need to connect Event Aggregator to Facebook to import your events from Facebook."
 
 
4271
  msgstr ""
4272
 
4273
  #: src/admin-views/tribe-options-addons-api.php:94
@@ -4288,7 +4626,10 @@ msgid "APIs"
4288
  msgstr ""
4289
 
4290
  #: src/admin-views/tribe-options-addons-api.php:126
4291
- msgid "Some features and add-ons require you to enter an API key or log into a third-party website so that The Events Calendar can communicate with an outside source."
 
 
 
4292
  msgstr ""
4293
 
4294
  #: src/admin-views/tribe-options-display.php:6
@@ -4304,7 +4645,12 @@ msgid "Display Settings"
4304
  msgstr ""
4305
 
4306
  #: src/admin-views/tribe-options-display.php:49
4307
- msgid "The settings below control the display of your calendar. If things don't look right, try switching between the three style sheet options or pick a page template from your theme.</p><p>There are going to be situations where no out-of-the-box template is 100&#37; perfect. Check out our <a href=\"%s\">our themer's guide</a> for instructions on custom modifications."
 
 
 
 
 
4308
  msgstr ""
4309
 
4310
  #: src/admin-views/tribe-options-display.php:67
@@ -4312,7 +4658,9 @@ msgid "Date with year"
4312
  msgstr ""
4313
 
4314
  #: src/admin-views/tribe-options-display.php:68
4315
- msgid "Enter the format to use for displaying dates with the year. Used when displaying a date in a future year."
 
 
4316
  msgstr ""
4317
 
4318
  #: src/admin-views/tribe-options-display.php:75
@@ -4320,7 +4668,9 @@ msgid "Date time separator"
4320
  msgstr ""
4321
 
4322
  #: src/admin-views/tribe-options-display.php:76
4323
- msgid "Enter the separator that will be placed between the date and time, when both are shown."
 
 
4324
  msgstr ""
4325
 
4326
  #: src/admin-views/tribe-options-display.php:90
@@ -4328,7 +4678,9 @@ msgid "Date without year"
4328
  msgstr ""
4329
 
4330
  #: src/admin-views/tribe-options-display.php:91
4331
- msgid "Enter the format to use for displaying dates without a year. Used when showing an event from the current year."
 
 
4332
  msgstr ""
4333
 
4334
  #: src/admin-views/tribe-options-display.php:98
@@ -4336,7 +4688,9 @@ msgid "Month and year format"
4336
  msgstr ""
4337
 
4338
  #: src/admin-views/tribe-options-display.php:99
4339
- msgid "Enter the format to use for dates that show a month and year only. Used on month view."
 
 
4340
  msgstr ""
4341
 
4342
  #: src/admin-views/tribe-options-display.php:113
@@ -4344,7 +4698,9 @@ msgid "Time range separator"
4344
  msgstr ""
4345
 
4346
  #: src/admin-views/tribe-options-display.php:114
4347
- msgid "Enter the separator that will be used between the start and end time of an event."
 
 
4348
  msgstr ""
4349
 
4350
  #: src/admin-views/tribe-options-display.php:128
@@ -4360,7 +4716,9 @@ msgid "Skeleton Styles"
4360
  msgstr ""
4361
 
4362
  #: src/admin-views/tribe-options-display.php:137
4363
- msgid "Only includes enough css to achieve complex layouts like calendar and week view."
 
 
4364
  msgstr ""
4365
 
4366
  #: src/admin-views/tribe-options-display.php:139
@@ -4384,7 +4742,9 @@ msgid "Events template"
4384
  msgstr ""
4385
 
4386
  #: src/admin-views/tribe-options-display.php:153
4387
- msgid "Choose a page template to control the appearance of your calendar and event content."
 
 
4388
  msgstr ""
4389
 
4390
  #: src/admin-views/tribe-options-display.php:161
@@ -4412,7 +4772,10 @@ msgid "Month view events per day"
4412
  msgstr ""
4413
 
4414
  #: src/admin-views/tribe-options-display.php:185
4415
- msgid "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. <a href=\"%s\">Read more</a>."
 
 
 
4416
  msgstr ""
4417
 
4418
  #: src/admin-views/tribe-options-display.php:192
@@ -4420,7 +4783,10 @@ msgid "Enable the Month View Cache"
4420
  msgstr ""
4421
 
4422
  #: src/admin-views/tribe-options-display.php:193
4423
- msgid "Check this to cache your month view HTML in transients, which can help improve calendar speed on sites with many events. <a href=\"%s\">Read more</a>."
 
 
 
4424
  msgstr ""
4425
 
4426
  #: src/admin-views/tribe-options-display.php:206
@@ -4432,7 +4798,9 @@ msgid "Add HTML before event content"
4432
  msgstr ""
4433
 
4434
  #: src/admin-views/tribe-options-display.php:211
4435
- msgid "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."
 
 
4436
  msgstr ""
4437
 
4438
  #: src/admin-views/tribe-options-display.php:216
@@ -4440,7 +4808,9 @@ msgid "Add HTML after event content"
4440
  msgstr ""
4441
 
4442
  #: src/admin-views/tribe-options-display.php:217
4443
- msgid "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."
 
 
4444
  msgstr ""
4445
 
4446
  #: src/admin-views/tribe-options-general.php:12
@@ -4472,11 +4842,14 @@ msgid "Use Javascript to control date filtering"
4472
  msgstr ""
4473
 
4474
  #: src/admin-views/tribe-options-general.php:45
4475
- msgid "This option is disabled when \"Disable the Event Search Bar\" is checked on the Display settings tab."
 
 
4476
  msgstr ""
4477
 
4478
  #: src/admin-views/tribe-options-general.php:45
4479
- msgid "Enable live ajax for datepicker on front end (User submit not required)."
 
4480
  msgstr ""
4481
 
4482
  #: src/admin-views/tribe-options-general.php:53
@@ -4492,7 +4865,9 @@ msgid "Include events in main blog loop"
4492
  msgstr ""
4493
 
4494
  #: src/admin-views/tribe-options-general.php:61
4495
- msgid "Show events with the site's other posts. When this box is checked, events will also continue to appear on the default events page."
 
 
4496
  msgstr ""
4497
 
4498
  #: src/admin-views/tribe-options-general.php:67
@@ -4501,7 +4876,11 @@ msgid "Events URL slug"
4501
  msgstr ""
4502
 
4503
  #: src/admin-views/tribe-options-general.php:68
4504
- msgid "You cannot edit the slug for your events page as you do not have pretty permalinks enabled. The current URL for your events page is <a href=\"%1$s\">%2$s</a>. In order to edit the slug here, <a href=\"%3$soptions-permalink.php\">enable pretty permalinks</a>."
 
 
 
 
4505
  msgstr ""
4506
 
4507
  #: src/admin-views/tribe-options-general.php:80
@@ -4523,7 +4902,9 @@ msgid "Single event URL slug"
4523
  msgstr ""
4524
 
4525
  #: src/admin-views/tribe-options-general.php:97
4526
- msgid "The above should ideally be plural, and this singular.<br />Your single event URL is: %s"
 
 
4527
  msgstr ""
4528
 
4529
  #: src/admin-views/tribe-options-general.php:102
@@ -4531,7 +4912,9 @@ msgid "End of day cutoff"
4531
  msgstr ""
4532
 
4533
  #: src/admin-views/tribe-options-general.php:123
4534
- msgid "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."
 
 
4535
  msgstr ""
4536
 
4537
  #: src/admin-views/tribe-options-general.php:128
@@ -4539,7 +4922,9 @@ msgid "Default currency symbol"
4539
  msgstr ""
4540
 
4541
  #: src/admin-views/tribe-options-general.php:129
4542
- msgid "Set the default currency symbol for event costs. Note that this only impacts future events, and changes made will not apply retroactively."
 
 
4543
  msgstr ""
4544
 
4545
  #: src/admin-views/tribe-options-general.php:136
@@ -4547,7 +4932,9 @@ msgid "Currency symbol follows value"
4547
  msgstr ""
4548
 
4549
  #: src/admin-views/tribe-options-general.php:137
4550
- msgid "The currency symbol normally precedes the value. Enabling this option positions the symbol after the value."
 
 
4551
  msgstr ""
4552
 
4553
  #: src/admin-views/tribe-options-general.php:143
@@ -4555,7 +4942,10 @@ msgid "Duplicate Venues &amp; Organizers"
4555
  msgstr ""
4556
 
4557
  #: src/admin-views/tribe-options-general.php:143
4558
- msgid "You might find duplicate venues and organizers when updating The Events Calendar from a pre-3.0 version. Click this button to automatically merge identical venues and organizers."
 
 
 
4559
  msgstr ""
4560
 
4561
  #: src/admin-views/tribe-options-general.php:148
@@ -4609,7 +4999,10 @@ msgid "Update Timezone Data"
4609
  msgstr ""
4610
 
4611
  #: src/admin-views/tribe-options-timezones.php:10
4612
- msgid "Click this button to update your database and take advantage of additional timezone capabilities. Please <a href=\"%s\" target=\"_blank\">configure WordPress</a> to use the correct timezone before clicking this button!"
 
 
 
4613
  msgstr ""
4614
 
4615
  #: src/admin-views/tribe-options-timezones.php:30
@@ -4633,7 +5026,9 @@ msgid "Show timezone"
4633
  msgstr ""
4634
 
4635
  #: src/admin-views/tribe-options-timezones.php:49
4636
- msgid "Appends the timezone to the end of event scheduling information &ndash; this can be useful when you have events in numerous different timezones."
 
 
4637
  msgstr ""
4638
 
4639
  #: src/admin-views/venue-meta-box.php:265
@@ -4703,7 +5098,7 @@ msgstr ""
4703
  msgid "Time:"
4704
  msgstr ""
4705
 
4706
- #: src/functions/template-tags/date.php:151
4707
  msgid "The function needs to be passed an $event or used in the loop."
4708
  msgstr ""
4709
 
@@ -4728,7 +5123,6 @@ msgid "Category"
4728
  msgstr ""
4729
 
4730
  #. translators: %s is the singular translation of "Event"
4731
-
4732
  #: src/functions/template-tags/general.php:406
4733
  msgctxt "category list label"
4734
  msgid "%s Category"
@@ -4796,7 +5190,9 @@ msgid "Your current Events URL is %s"
4796
  msgstr ""
4797
 
4798
  #: src/functions/template-tags/options.php:29
4799
- msgid "You %1$scannot%2$s use the same slug as above. The above should ideally be plural, and this singular.%3$sYour single Event URL is like: %4$s"
 
 
4800
  msgstr ""
4801
 
4802
  #: src/functions/template-tags/venue.php:509
@@ -4809,7 +5205,9 @@ msgid "Column Mapping: %s"
4809
  msgstr ""
4810
 
4811
  #: src/io/csv/admin-views/columns.php:27
4812
- msgid "Columns have been mapped based on your last import. Please ensure the selected fields match the columns in your CSV file."
 
 
4813
  msgstr ""
4814
 
4815
  #: src/io/csv/admin-views/columns.php:32
@@ -4829,7 +5227,9 @@ msgid "Instructions"
4829
  msgstr ""
4830
 
4831
  #: src/io/csv/admin-views/general.php:12
4832
- msgid "The settings below will impact events imported from files and other websites. Be sure to save your changes before starting to import events."
 
 
4833
  msgstr ""
4834
 
4835
  #: src/io/csv/admin-views/general.php:54
@@ -4857,15 +5257,21 @@ msgid "Select the appropriate import type."
4857
  msgstr ""
4858
 
4859
  #: src/io/csv/admin-views/import.php:24 src/io/csv/admin-views/import.php:30
4860
- msgid "Upload a CSV file with one record on each line. The first line may contain column names (check the box below)."
 
 
4861
  msgstr ""
4862
 
4863
  #: src/io/csv/admin-views/import.php:25
4864
- msgid "One column in your CSV should have the Organizer/Venue name. All other fields are optional."
 
 
4865
  msgstr ""
4866
 
4867
  #: src/io/csv/admin-views/import.php:26 src/io/csv/admin-views/import.php:32
4868
- msgid "After you upload your file, you'll have the opportunity to indicate how the columns in your CSV map to fields in The Events Calendar."
 
 
4869
  msgstr ""
4870
 
4871
  #: src/io/csv/admin-views/import.php:28
@@ -4873,7 +5279,9 @@ msgid "After importing your Organizers and Venues, import your Events:"
4873
  msgstr ""
4874
 
4875
  #: src/io/csv/admin-views/import.php:31
4876
- msgid "One column in your CSV should have the Event title. Another should have the Event start date. All other fields are optional."
 
 
4877
  msgstr ""
4878
 
4879
  #: src/io/csv/admin-views/import.php:36
@@ -4885,7 +5293,10 @@ msgid "CSV File:"
4885
  msgstr ""
4886
 
4887
  #: src/io/csv/admin-views/import.php:59
4888
- msgid "Upload a properly formatted, UTF-8 encoded CSV file. Not sure if your file is UTF-8 encoded? Make sure to specify the character encoding when you save the file, or pass it through a %sconversion tool%s."
 
 
 
4889
  msgstr ""
4890
 
4891
  #: src/io/csv/admin-views/import.php:67
@@ -4921,7 +5332,12 @@ msgid "The import statistics above have the following meaning:"
4921
  msgstr ""
4922
 
4923
  #: src/io/csv/admin-views/result.php:26
4924
- msgid "%1$s%2$s%3$sInserted:%4$s A new item was inserted successfully. %5$s%2$s%3$sUpdated:%4$s An item was found with the same name and/or start date. The existing item was updated with the new value from the file.%5$s%2$s%3$sSkipped:%4$s A row was found in the CSV file that could not be imported. Please see below for the invalid rows.%5$s%6$s"
 
 
 
 
 
4925
  msgstr ""
4926
 
4927
  #: src/io/csv/admin-views/result.php:29
@@ -4999,12 +5415,11 @@ msgstr ""
4999
  #: src/views/widgets/list-widget.php:101
5000
  msgid "There are no upcoming %s at this time."
5001
  msgstr ""
5002
- #. Plugin Name of the plugin/theme
5003
- msgid "The Events Calendar"
5004
- msgstr ""
5005
 
5006
  #. Description of the plugin/theme
5007
- msgid "The Events Calendar is a carefully crafted, extensible plugin that lets you easily share your events. Beautiful. Solid. Awesome."
 
 
5008
  msgstr ""
5009
 
5010
  #. Author of the plugin/theme
2
  # This file is distributed under the same license as the The Events Calendar package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: The Events Calendar 4.5.1\n"
6
+ "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/the-events-"
7
+ "calendar\n"
8
+ "POT-Creation-Date: 2017-05-03 13:46:11+00:00\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
+ "PO-Revision-Date: 2017-05-03 13:46\n"
13
  "Last-Translator: \n"
14
  "Language-Team: \n"
15
 
17
  msgid "%s"
18
  msgstr ""
19
 
20
+ #: src/Tribe/Admin/Bar/Default_Configurator.php:45 src/Tribe/Main.php:3962
21
  msgid "View Calendar"
22
  msgstr ""
23
 
27
 
28
  #: src/Tribe/Admin/Bar/Default_Configurator.php:62
29
  #: src/Tribe/Linked_Posts/Chooser_Meta_Box.php:188 src/Tribe/Main.php:1664
30
+ #: src/Tribe/Main.php:4449 src/Tribe/Main.php:4496 src/Tribe/Organizer.php:73
31
  #: src/Tribe/Venue.php:79
32
  msgid "Edit %s"
33
  msgstr ""
38
  msgid "Import"
39
  msgstr ""
40
 
41
+ #: src/Tribe/Admin/Bar/Default_Configurator.php:89 src/Tribe/Main.php:4011
42
  msgid "Settings"
43
  msgstr ""
44
 
56
  msgstr ""
57
 
58
  #: src/Tribe/Admin/Timezone_Updater.php:78
59
+ msgid ""
60
+ "Update complete: timezone data has been added to all events in the database."
61
  msgstr ""
62
 
63
  #: src/Tribe/Admin/Timezone_Updater.php:87
68
  msgstr ""
69
 
70
  #: src/Tribe/Admin/Timezone_Updater.php:105
71
+ msgid ""
72
+ "A problem stopped the timezone update process from completing. Please "
73
+ "refresh and try again."
74
  msgstr ""
75
 
76
  #: src/Tribe/Admin_List.php:246 src/Tribe/Main.php:1678
132
  msgstr ""
133
 
134
  #: src/Tribe/Aggregator/API/Origins.php:61
135
+ msgid "Other URL (beta)"
 
136
  msgstr ""
137
 
138
  #: src/Tribe/Aggregator/API/Origins.php:197 src/Tribe/Aggregator.php:222
175
  msgstr ""
176
 
177
  #: src/Tribe/Aggregator/Errors.php:45
178
+ msgid ""
179
+ "The image associated with your event could not be attached to the event."
180
  msgstr ""
181
 
182
  #: src/Tribe/Aggregator/Errors.php:46 src/Tribe/Aggregator/Service.php:508
183
+ msgid ""
184
+ "The daily limit of %d import requests to the Event Aggregator service has "
185
+ "been reached. Please try again later."
186
  msgstr ""
187
 
188
  #: src/Tribe/Aggregator/Errors.php:47
194
  msgstr ""
195
 
196
  #: src/Tribe/Aggregator/Errors.php:49
197
+ msgid ""
198
+ "During scheduled import, the limit of HTTP requests was reached and the "
199
+ "import was rescheduled."
200
  msgstr ""
201
 
202
  #: src/Tribe/Aggregator/Errors.php:51
203
+ msgid ""
204
+ "An invalid import type was used when trying to create this import record."
205
  msgstr ""
206
 
207
  #: src/Tribe/Aggregator/Errors.php:52
221
  msgstr ""
222
 
223
  #: src/Tribe/Aggregator/Errors.php:56
224
+ msgid ""
225
+ "The Event Aggregator API responded with bad data. Please <a href=\"https://"
226
+ "theeventscalendar.com/support/post/\" target=\"_blank\">contact support</a>."
227
  msgstr ""
228
 
229
  #: src/Tribe/Aggregator/Errors.php:57
239
  msgstr ""
240
 
241
  #: src/Tribe/Aggregator/Errors.php:60
242
+ msgid ""
243
+ "An invalid frequency was used when trying to create this scheduled import."
244
  msgstr ""
245
 
246
  #: src/Tribe/Aggregator/Errors.php:61
256
  msgstr ""
257
 
258
  #: src/Tribe/Aggregator/Errors.php:64
259
+ msgid ""
260
+ "You must enter an Event Aggregator license key in Events > Settings > "
261
+ "Licenses before using this service."
262
  msgstr ""
263
 
264
  #: src/Tribe/Aggregator/Errors.php:65 src/Tribe/Aggregator/Service.php:173
265
+ msgid ""
266
+ "There may be an issue with the Event Aggregator server. Please try your "
267
+ "import again later."
268
  msgstr ""
269
 
270
  #: src/Tribe/Aggregator/Errors.php:67
271
+ msgid ""
272
+ "You must map columns from the CSV file to specific fields in order to "
273
+ "perform a CSV import."
274
  msgstr ""
275
 
276
  #: src/Tribe/Aggregator/Errors.php:68
290
  msgstr ""
291
 
292
  #: src/Tribe/Aggregator/Errors.php:72
293
+ msgid ""
294
+ "The records you were attempting to import were still not available when this "
295
+ "queue was processed. Please try again."
296
  msgstr ""
297
 
298
  #: src/Tribe/Aggregator/Meta_Box.php:38
300
  msgstr ""
301
 
302
  #: src/Tribe/Aggregator/Migrate.php:73
303
+ msgid ""
304
+ "Thanks for activating Event Aggregator! It looks like you have some settings "
305
+ "and imports configured on our legacy importer plugins. To complete your "
306
+ "transition, we need to transfer those options to our new system."
307
  msgstr ""
308
 
309
  #: src/Tribe/Aggregator/Migrate.php:76
315
  msgstr ""
316
 
317
  #: src/Tribe/Aggregator/Migrate.php:280
318
+ msgid ""
319
+ "Error: we were not able to migrate your Facebook Events settings to Event "
320
+ "Aggregator. Please try again later."
321
  msgstr ""
322
 
323
  #: src/Tribe/Aggregator/Migrate.php:287
324
+ msgid ""
325
+ "You do not have permission to migrate Facebook Events settings to Event "
326
+ "Aggregator"
327
  msgstr ""
328
 
329
  #: src/Tribe/Aggregator/Migrate.php:294
331
  msgstr ""
332
 
333
  #: src/Tribe/Aggregator/Migrate.php:348
334
+ msgid ""
335
+ "Success! The settings from Facebook Events have been migrated to Event "
336
+ "Aggregator. You can view your migrated imports on the Scheduled Imports tab."
337
  msgstr ""
338
 
339
  #: src/Tribe/Aggregator/Migrate.php:365
340
+ msgid ""
341
+ "Error: we were not able to migrate your iCal Importer settings to Event "
342
+ "Aggregator. Please try again later."
343
  msgstr ""
344
 
345
  #: src/Tribe/Aggregator/Migrate.php:372
346
+ msgid ""
347
+ "You do not have permission to migrate iCal Importer settings to Event "
348
+ "Aggregator"
349
  msgstr ""
350
 
351
  #: src/Tribe/Aggregator/Migrate.php:379
353
  msgstr ""
354
 
355
  #: src/Tribe/Aggregator/Migrate.php:435
356
+ msgid ""
357
+ "Success! The settings from iCal Importer have been migrated to Event "
358
+ "Aggregator. You can view your migrated imports on the Scheduled Imports tab."
359
  msgstr ""
360
 
361
  #: src/Tribe/Aggregator/Page.php:79 src/Tribe/Template/Day.php:108
374
  msgstr ""
375
 
376
  #: src/Tribe/Aggregator/Page.php:82
377
+ msgid ""
378
+ "The preview is taking longer than expected. Please try again in a moment."
379
  msgstr ""
380
 
381
  #: src/Tribe/Aggregator/Page.php:83
411
  msgstr ""
412
 
413
  #: src/Tribe/Aggregator/Page.php:91
414
+ msgid ""
415
+ "Removing this scheduled import will stop automatic imports from the source. "
416
+ "No events will be deleted."
417
  msgstr ""
418
 
419
  #: src/Tribe/Aggregator/Page.php:92
420
+ #: src/Tribe/Aggregator/Record/List_Table.php:478
421
  msgid "View Filters"
422
  msgstr ""
423
 
434
  msgstr ""
435
 
436
  #: src/Tribe/Aggregator/Page.php:97
437
+ msgid ""
438
+ "If all goes according to plan, you will have your preview in a few moments."
439
  msgstr ""
440
 
441
  #: src/Tribe/Aggregator/Page.php:98
442
+ msgid ""
443
+ "Your preview is taking a bit longer than expected, but it <i>is</i> still "
444
+ "being generated."
445
  msgstr ""
446
 
447
  #: src/Tribe/Aggregator/Page.php:255
457
  msgstr ""
458
 
459
  #: src/Tribe/Aggregator/Page.php:392
460
+ msgid ""
461
+ "It looks like you are using our legacy plugin, %1$s, along with our new "
462
+ "Event Aggregator service. Event Aggregator includes all the features of the "
463
+ "legacy plugin plus enhanced functionality. For best results, please "
464
+ "deactivate %1$s."
465
+ msgid_plural ""
466
+ "It looks like you are using our legacy plugins, %1$s and %2$s, along with "
467
+ "our new Event Aggregator service. Event Aggregator includes all the features "
468
+ "of the legacy plugins plus enhanced functionality. For best results, please "
469
+ "deactivate %1$s and %2$s."
470
  msgstr[0] ""
471
  msgstr[1] ""
472
 
487
  msgstr ""
488
 
489
  #: src/Tribe/Aggregator/Record/Abstract.php:927
490
+ msgid ""
491
+ "When this import was last scheduled to run, the daily limit for your Event "
492
+ "Aggregator license had already been reached."
493
  msgstr ""
494
 
495
  #: src/Tribe/Aggregator/Record/CSV.php:74 src/Tribe/Importer/Admin_Page.php:238
540
  msgstr[0] ""
541
  msgstr[1] ""
542
 
543
+ #: src/Tribe/Aggregator/Record/List_Table.php:322
544
+ #: src/Tribe/Aggregator/Record/List_Table.php:328
545
  msgctxt "column name"
546
  msgid "Source"
547
  msgstr ""
548
 
549
+ #: src/Tribe/Aggregator/Record/List_Table.php:323
550
  msgctxt "column name"
551
  msgid "Frequency"
552
  msgstr ""
553
 
554
+ #: src/Tribe/Aggregator/Record/List_Table.php:324
555
  msgctxt "column name"
556
  msgid "Last Import"
557
  msgstr ""
558
 
559
+ #: src/Tribe/Aggregator/Record/List_Table.php:329
560
  msgctxt "column name"
561
  msgid "Type"
562
  msgstr ""
563
 
564
+ #: src/Tribe/Aggregator/Record/List_Table.php:330
565
  msgctxt "column name"
566
  msgid "When"
567
  msgstr ""
568
 
569
+ #: src/Tribe/Aggregator/Record/List_Table.php:333
570
  msgctxt "column name"
571
  msgid "# Imported"
572
  msgstr ""
573
 
574
+ #: src/Tribe/Aggregator/Record/List_Table.php:366
575
  msgid "Edit"
576
  msgstr ""
577
 
578
+ #: src/Tribe/Aggregator/Record/List_Table.php:378
579
  msgid "Start an import from this source now, regardless of schedule."
580
  msgstr ""
581
 
582
+ #: src/Tribe/Aggregator/Record/List_Table.php:379
583
  msgid "Run Import"
584
  msgstr ""
585
 
586
+ #: src/Tribe/Aggregator/Record/List_Table.php:387
587
  msgid "Delete"
588
  msgstr ""
589
 
590
+ #: src/Tribe/Aggregator/Record/List_Table.php:409
591
  msgid "Import completed"
592
  msgstr ""
593
 
594
+ #: src/Tribe/Aggregator/Record/List_Table.php:413
595
  msgid "Import failed"
596
  msgstr ""
597
 
598
+ #: src/Tribe/Aggregator/Record/List_Table.php:425
599
  msgid "Import schedule"
600
  msgstr ""
601
 
602
+ #: src/Tribe/Aggregator/Record/List_Table.php:429
603
  msgid "Import pending"
604
  msgstr ""
605
 
606
+ #: src/Tribe/Aggregator/Record/List_Table.php:433
607
  msgid "Import preview"
608
  msgstr ""
609
 
610
+ #: src/Tribe/Aggregator/Record/List_Table.php:469
611
  #: src/Tribe/Ignored_Events.php:329
612
  msgctxt "record via origin"
613
  msgid "via "
614
  msgstr ""
615
 
616
+ #: src/Tribe/Aggregator/Record/List_Table.php:482
617
  msgid "Keywords:"
618
  msgstr ""
619
 
620
+ #: src/Tribe/Aggregator/Record/List_Table.php:491
621
  #: src/deprecated/Tribe__Events__Advanced_Functions__Register_Meta.php:48
622
  #: src/deprecated/Tribe__Events__Advanced_Functions__Register_Meta.php:80
623
  #: src/views/modules/meta/details.php:65 src/views/modules/meta/details.php:90
624
  msgid "Start:"
625
  msgstr ""
626
 
627
+ #: src/Tribe/Aggregator/Record/List_Table.php:495
628
  msgid "Location:"
629
  msgstr ""
630
 
631
+ #: src/Tribe/Aggregator/Record/List_Table.php:499
632
  msgid "Radius:"
633
  msgstr ""
634
 
635
+ #: src/Tribe/Aggregator/Record/List_Table.php:522
636
  msgid "Unknown"
637
  msgstr ""
638
 
639
+ #: src/Tribe/Aggregator/Record/List_Table.php:537 src/Tribe/Aggregator.php:392
640
  #: src/Tribe/Ignored_Events.php:347
641
  #: src/admin-views/tribe-options-addons-api.php:34
642
  msgctxt "human readable time ago"
643
  msgid "about %s ago"
644
  msgstr ""
645
 
646
+ #: src/Tribe/Aggregator/Record/List_Table.php:539 src/Tribe/Aggregator.php:394
647
  #: src/Tribe/Ignored_Events.php:349
648
  #: src/admin-views/tribe-options-addons-api.php:36
649
  msgctxt "in human readable time"
650
  msgid "in about %s"
651
  msgstr ""
652
 
653
+ #: src/Tribe/Aggregator/Record/List_Table.php:555
654
  msgid "Invalid Frequency"
655
  msgstr ""
656
 
657
+ #: src/Tribe/Aggregator/Record/List_Table.php:558
658
  msgid "One Time"
659
  msgstr ""
660
 
661
+ #: src/Tribe/Aggregator/Record/List_Table.php:575
662
  msgid "all time"
663
  msgstr ""
664
 
665
+ #: src/Tribe/Aggregator/Record/List_Table.php:577
666
  msgid "Latest Import:"
667
  msgstr ""
668
 
669
+ #: src/Tribe/Aggregator/Record/List_Table.php:580
670
+ #: src/Tribe/Aggregator/Record/List_Table.php:588
671
+ #: src/Tribe/Aggregator/Record/List_Table.php:596
672
  msgid "new"
673
  msgstr ""
674
 
 
675
  #: src/Tribe/Aggregator/Record/List_Table.php:582
676
+ #: src/Tribe/Aggregator/Record/List_Table.php:591
677
+ #: src/Tribe/Aggregator/Record/List_Table.php:599
678
  msgid "updated"
679
  msgstr ""
680
 
681
+ #: src/Tribe/Aggregator/Record/List_Table.php:617
682
  msgid "Select %s"
683
  msgstr ""
684
 
691
  msgstr ""
692
 
693
  #: src/Tribe/Aggregator/Record/Queue_Realtime.php:88
694
+ msgid ""
695
+ "Your import is currently in progress. Don't worry, you can safely navigate "
696
+ "away&ndash;the import will continue in the background."
697
  msgstr ""
698
 
699
  #: src/Tribe/Aggregator/Record/Queue_Realtime.php:92
709
  msgstr ""
710
 
711
  #: src/Tribe/Aggregator/Record/Queue_Realtime.php:173
712
+ msgid ""
713
+ "Unable to continue inserting data. Please reload this page to continue/try "
714
+ "again."
715
+ msgstr ""
716
+
717
+ #: src/Tribe/Aggregator/Record/Url.php:17
718
+ msgid "Other URL"
719
  msgstr ""
720
 
721
  #: src/Tribe/Aggregator/Records.php:144
844
  msgstr[1] ""
845
 
846
  #: src/Tribe/Aggregator/Service.php:167
847
+ msgid ""
848
+ "Connection timed out while transferring the feed. If you are dealing with "
849
+ "large feeds you may need to customize the "
850
+ "tribe_aggregator_connection_timeout filter."
851
  msgstr ""
852
 
853
  #: src/Tribe/Aggregator/Service.php:496
859
  msgstr ""
860
 
861
  #: src/Tribe/Aggregator/Service.php:498
862
+ msgid ""
863
+ "Events cannot be imported because Facebook has returned an error. This could "
864
+ "mean that the event ID does not exist, the event or source is marked as "
865
+ "Private, or the event or source has been otherwise restricted by Facebook. "
866
+ "You can <a href=\"https://theeventscalendar.com/knowledgebase/import-errors/"
867
+ "\" target=\"_blank\">read more about Facebook restrictions in our "
868
+ "knowledgebase</a>."
869
  msgstr ""
870
 
871
  #: src/Tribe/Aggregator/Service.php:499
881
  msgstr ""
882
 
883
  #: src/Tribe/Aggregator/Service.php:502
884
+ msgid ""
885
+ "The image associated with your event is not accessible with your API key."
886
  msgstr ""
887
 
888
  #: src/Tribe/Aggregator/Service.php:503
889
+ msgid ""
890
+ "The import failed for an unknown reason. Please try again. If the problem "
891
+ "persists, please contact support."
892
  msgstr ""
893
 
894
  #: src/Tribe/Aggregator/Service.php:504
895
+ msgid ""
896
+ "Events could not be imported. The URL provided did not have events in the "
897
+ "proper format."
898
  msgstr ""
899
 
900
  #: src/Tribe/Aggregator/Service.php:505
901
+ msgid ""
902
+ "The file provided could not be opened. Please confirm that it is a properly "
903
+ "formatted .ics file."
904
  msgstr ""
905
 
906
  #: src/Tribe/Aggregator/Service.php:506
908
  msgstr ""
909
 
910
  #: src/Tribe/Aggregator/Service.php:507
911
+ msgid ""
912
+ "Event Aggregator cannot reach Meetup.com because you exceeded the request "
913
+ "limit for your Meetup API key."
914
  msgstr ""
915
 
916
  #: src/Tribe/Aggregator/Service.php:509
950
  msgstr ""
951
 
952
  #: src/Tribe/Aggregator/Service.php:518
953
+ msgid ""
954
+ "The requested source does not have any upcoming and published events "
955
+ "matching the search criteria."
956
  msgstr ""
957
 
958
  #: src/Tribe/Aggregator/Service.php:535
1190
  msgstr ""
1191
 
1192
  #: src/Tribe/Aggregator/Tabs/New.php:518
1193
+ msgid ""
1194
+ "With Event Aggregator, you can import events from Facebook, iCalendar, "
1195
+ "Google, and Meetup.com in a jiffy."
1196
  msgstr ""
1197
 
1198
  #: src/Tribe/Aggregator/Tabs/New.php:521
1212
  msgstr ""
1213
 
1214
  #: src/Tribe/Aggregator/Tabs/New.php:549
1215
+ msgid ""
1216
+ "Renew your license in order to import events from Facebook, iCalendar, "
1217
+ "Google, or Meetup."
1218
  msgstr ""
1219
 
1220
  #: src/Tribe/Aggregator/Tabs/New.php:552
1250
  msgstr ""
1251
 
1252
  #: src/Tribe/Aggregator/Tabs/Scheduled.php:356
1253
+ msgid ""
1254
+ "All scheduled imports are currently suspended, and no events will be "
1255
+ "imported."
1256
  msgstr ""
1257
 
1258
  #: src/Tribe/Aggregator/Tabs/Scheduled.php:361
1259
+ msgid ""
1260
+ "To continue using scheduled imports, please enter a valid Event Aggregator "
1261
+ "license key under %1$sEvents > Settings > Licenses%2$s."
1262
  msgstr ""
1263
 
1264
  #: src/Tribe/Aggregator/Tabs/Scheduled.php:367
1451
  msgstr ""
1452
 
1453
  #: src/Tribe/Asset/Dynamic.php:70
1454
+ msgid ""
1455
+ "This event is from %%starttime%% to %%endtime%% on %%startdatewithyear%%."
1456
  msgstr ""
1457
 
1458
  #: src/Tribe/Asset/Dynamic.php:71
1464
  msgstr ""
1465
 
1466
  #: src/Tribe/Asset/Dynamic.php:73
1467
+ msgid ""
1468
+ "This event starts at %%starttime%% on %%startdatenoyear%% and ends at %"
1469
+ "%endtime%% on %%enddatewithyear%%"
1470
  msgstr ""
1471
 
1472
  #: src/Tribe/Asset/Dynamic.php:74
1473
+ msgid ""
1474
+ "This event starts at %%starttime%% on %%startdatenoyear%% and ends on %"
1475
+ "%enddatewithyear%%"
1476
  msgstr ""
1477
 
1478
  #: src/Tribe/Asset/Dynamic.php:75
1479
+ msgid ""
1480
+ "This event is all day starting on %%startdatenoyear%% and ending on %"
1481
+ "%enddatewithyear%%."
1482
  msgstr ""
1483
 
1484
  #: src/Tribe/Cost_Utils.php:113
1487
  msgstr ""
1488
 
1489
  #: src/Tribe/Customizer/Day_List_View.php:72
1490
+ msgid ""
1491
+ "Options selected here will override what was selected in the \"General Theme"
1492
+ "\" and \"Global Elements\" sections."
1493
  msgstr ""
1494
 
1495
  #: src/Tribe/Customizer/Day_List_View.php:75
1496
+ msgid ""
1497
+ "These settings impact all list-style views, including List View and Day View."
1498
  msgstr ""
1499
 
1500
  #: src/Tribe/Customizer/Day_List_View.php:83
1522
  msgstr ""
1523
 
1524
  #: src/Tribe/Customizer/General_Theme.php:271
1525
+ msgid ""
1526
+ "If the Featured Events highlight color is set to Custom, the following color "
1527
+ "will be used:"
1528
  msgstr ""
1529
 
1530
  #: src/Tribe/Customizer/General_Theme.php:291
1568
  msgstr ""
1569
 
1570
  #: src/Tribe/Customizer/Global_Elements.php:114
1571
+ msgid ""
1572
+ "Options selected here will override what was selected in the \"General Theme"
1573
+ "\" section"
1574
  msgstr ""
1575
 
1576
  #: src/Tribe/Customizer/Global_Elements.php:145
1595
 
1596
  #: src/Tribe/Customizer/Month_Week_View.php:144
1597
  #: src/Tribe/Customizer/Single_Event.php:79 src/Tribe/Customizer/Widget.php:60
1598
+ msgid ""
1599
+ "Options selected here will override what was selected in the \"General Theme"
1600
+ "\" and \"Global Elements\" sections"
1601
  msgstr ""
1602
 
1603
  #: src/Tribe/Customizer/Month_Week_View.php:175
1649
  msgstr ""
1650
 
1651
  #: src/Tribe/Google/Maps_API_Key.php:50
1652
+ msgid ""
1653
+ "We highly recommend that you specify a valid %s for The Events Calendar to "
1654
+ "use. Doing this will help prevent problems with maps, especially for sites "
1655
+ "that receive a lot of traffic."
1656
  msgstr ""
1657
 
1658
  #: src/Tribe/Google/Maps_API_Key.php:51 src/Tribe/Google/Maps_API_Key.php:57
1674
  msgstr ""
1675
 
1676
  #: src/Tribe/Ignored_Events.php:36
1677
+ msgid ""
1678
+ "Ignored events that are deleted will be removed permanently. They can be "
1679
+ "recreated via import."
1680
  msgstr ""
1681
 
1682
  #: src/Tribe/Ignored_Events.php:39 src/Tribe/Ignored_Events.php:459
1689
  msgstr ""
1690
 
1691
  #: src/Tribe/Ignored_Events.php:44
1692
+ msgid ""
1693
+ "Ignored events do not show on the calendar but can be updated with future "
1694
+ "imports"
1695
  msgstr ""
1696
 
1697
  #: src/Tribe/Ignored_Events.php:125
1717
  msgstr ""
1718
 
1719
  #: src/Tribe/Ignored_Events.php:163
1720
+ msgid ""
1721
+ "Event Aggregator includes a new, better system for removing unwanted "
1722
+ "imported events from your calendar. Click the button below to transition "
1723
+ "previously deleted events. This process will remove unwanted records from "
1724
+ "your database and include recent or upcoming trashed events in your Ignored "
1725
+ "archive."
1726
  msgstr ""
1727
 
1728
  #: src/Tribe/Ignored_Events.php:164
1766
  msgstr ""
1767
 
1768
  #. translators: %s: post title
 
1769
  #: src/Tribe/Ignored_Events.php:388
1770
  msgid "Move &#8220;%s&#8221; to the Trash"
1771
  msgstr ""
1772
 
1773
  #. translators: %s: post title
 
1774
  #: src/Tribe/Ignored_Events.php:417
1775
  msgid "Restore &#8220;%s&#8221; from the Ignored"
1776
  msgstr ""
1780
  msgstr ""
1781
 
1782
  #. translators: %s: post title
 
1783
  #: src/Tribe/Ignored_Events.php:425
1784
  msgid "Delete &#8220;%s&#8221; permanently"
1785
  msgstr ""
1791
  msgstr[1] ""
1792
 
1793
  #: src/Tribe/Ignored_Events.php:790
1794
+ msgid ""
1795
+ "Error, a unknown bug happened and it was impossible to migrate the Legacy "
1796
+ "Ignored Events, try again later."
1797
  msgstr ""
1798
 
1799
  #: src/Tribe/Ignored_Events.php:797
1805
  msgstr ""
1806
 
1807
  #: src/Tribe/Ignored_Events.php:828
1808
+ msgid ""
1809
+ "Migration: %d Legacy Ignored Post was migrated but %d failed. To see the "
1810
+ "migrated event you will first need to refresh this screen."
1811
+ msgid_plural ""
1812
+ "Migration: %d Legacy Ignored Posts were migrated but %d failed. To see the "
1813
+ "migrated events you will first need to refresh this screen."
1814
  msgstr[0] ""
1815
  msgstr[1] ""
1816
 
1825
  msgstr ""
1826
 
1827
  #: src/Tribe/Ignored_Events.php:859
1828
+ msgid ""
1829
+ "Migration: %d Legacy Ignored Post was migrated sucessfully. To see the "
1830
+ "migrated event you will first need to refresh this screen."
1831
+ msgid_plural ""
1832
+ "Migration: %d Legacy Ignored Posts were migrated sucessfully. To see the "
1833
+ "migrated events you will first need to refresh this screen."
1834
  msgstr[0] ""
1835
  msgstr[1] ""
1836
 
1852
  msgstr ""
1853
 
1854
  #: src/Tribe/Importer/Admin_Page.php:138
1855
+ msgid ""
1856
+ "This Action has been deprecated, to comply with WordPress Standards we are "
1857
+ "now using Underscores (_) instead of Dashes (-). From: \"%s\" To: \"%s\""
1858
  msgstr ""
1859
 
1860
  #: src/Tribe/Importer/Admin_Page.php:164 src/Tribe/Importer/Admin_Page.php:350
1882
 
1883
  #: src/Tribe/Importer/Admin_Page.php:249 src/Tribe/Importer/Options.php:24
1884
  #: src/Tribe/Importer/Options.php:84
1885
+ msgid ""
1886
+ "This Filter has been deprecated, to comply with WordPress Standards we are "
1887
+ "now using Underscores (_) instead of Dashes (-). From: \"%s\" To: \"%s\""
1888
  msgstr ""
1889
 
1890
  #: src/Tribe/Importer/Admin_Page.php:316
2120
  msgid "Create New %s"
2121
  msgstr ""
2122
 
2123
+ #: src/Tribe/Linked_Posts/Chooser_Meta_Box.php:151 src/Tribe/Main.php:4433
2124
+ #: src/Tribe/Main.php:4490
2125
  msgid "Use Saved %s:"
2126
  msgstr ""
2127
 
2177
  msgid "Upcoming Events"
2178
  msgstr ""
2179
 
2180
+ #. #-#-#-#-# the-events-calendar.pot (The Events Calendar 4.5.1) #-#-#-#-#
2181
+ #. Plugin Name of the plugin/theme
2182
  #: src/Tribe/Main.php:694 src/Tribe/Main.php:1029
2183
  msgid "The Events Calendar"
2184
  msgstr ""
2227
  msgstr ""
2228
 
2229
  #: src/Tribe/Main.php:919
2230
+ msgid ""
2231
+ "The %3$s \"%1$s\" uses the \"/%2$s\" slug: the Events Calendar plugin will "
2232
+ "show its calendar in place of the page."
2233
  msgstr ""
2234
 
2235
  #: src/Tribe/Main.php:922
2257
  msgstr ""
2258
 
2259
  #: src/Tribe/Main.php:991
2260
+ msgid ""
2261
+ "We are committed to helping make your calendar spectacular and have a wealth "
2262
+ "of resources available, including a handy %s to get your calendar up and "
2263
+ "running."
2264
  msgstr ""
2265
 
2266
  #: src/Tribe/Main.php:1002
2268
  msgstr ""
2269
 
2270
  #: src/Tribe/Main.php:1005
2271
+ msgid ""
2272
+ "%s: A thorough walkthrough of The Events Calendar and the settings that are "
2273
+ "available to you."
2274
  msgstr ""
2275
 
2276
  #: src/Tribe/Main.php:1005
2278
  msgstr ""
2279
 
2280
  #: src/Tribe/Main.php:1007
2281
+ msgid ""
2282
+ "%s: A complete look at the features you can expect to see right out of the "
2283
+ "box as well as how to use them."
2284
  msgstr ""
2285
 
2286
  #: src/Tribe/Main.php:1007
2288
  msgstr ""
2289
 
2290
  #: src/Tribe/Main.php:1009
2291
+ msgid ""
2292
+ "%s: Our most comprehensive outline for customizing the calendar to suit your "
2293
+ "needs, including custom layouts and styles."
2294
  msgstr ""
2295
 
2296
  #: src/Tribe/Main.php:1009
2298
  msgstr ""
2299
 
2300
  #: src/Tribe/Main.php:1011
2301
+ msgid ""
2302
+ "%s: An overview of the default templates and styles that are included in the "
2303
+ "plugin, as well as how to change them."
2304
  msgstr ""
2305
 
2306
  #: src/Tribe/Main.php:1011
2308
  msgstr ""
2309
 
2310
  #: src/Tribe/Main.php:1013
2311
+ msgid ""
2312
+ "%s: Do you see an issue with your calendar? Go here first to find where it’s "
2313
+ "coming from and how to fix it."
2314
  msgstr ""
2315
 
2316
  #: src/Tribe/Main.php:1013
2318
  msgstr ""
2319
 
2320
  #: src/Tribe/Main.php:1015
2321
+ msgid ""
2322
+ "%s: Code and guides for customizing your calendar in useful and interesting "
2323
+ "ways."
2324
  msgstr ""
2325
 
2326
  #: src/Tribe/Main.php:1015
2332
  msgstr ""
2333
 
2334
  #: src/Tribe/Main.php:1031
2335
+ msgid ""
2336
+ "If you have tried the above steps and are still having trouble, you can post "
2337
+ "a new thread to our WordPress.org forums for %1$s or %2$s. Our support staff "
2338
+ "monitors these forums once a week and would be happy to assist you there. "
2339
  msgstr ""
2340
 
2341
  #: src/Tribe/Main.php:1033 src/Tribe/Main.php:1041
2343
  msgstr ""
2344
 
2345
  #: src/Tribe/Main.php:1034
2346
+ msgid ""
2347
+ "<strong>Looking for more immediate support?</strong> We offer %s with the "
2348
+ "purchase of any of our premium plugins. Pick up a license and you can post "
2349
+ "there directly and expect a response within 24-48 hours during weekdays"
2350
  msgstr ""
2351
 
2352
  #: src/Tribe/Main.php:1038
2354
  msgstr ""
2355
 
2356
  #: src/Tribe/Main.php:1039
2357
+ msgid ""
2358
+ "If you have tried the above steps and are still having trouble, you can post "
2359
+ "a new thread to our %s. Our support staff monitors these forums once a week "
2360
+ "and would be happy to assist you there."
2361
  msgstr ""
2362
 
2363
  #: src/Tribe/Main.php:1042
2365
  msgstr ""
2366
 
2367
  #: src/Tribe/Main.php:1043
2368
+ msgid ""
2369
+ "<strong>Looking for more immediate support?</strong> We offer %1$s with the "
2370
+ "purchase of any of our premium plugins (like %2$s). Pick up a license and "
2371
+ "you can post there directly and expect a response within 24-48 hours during "
2372
+ "weekdays."
2373
  msgstr ""
2374
 
2375
  #: src/Tribe/Main.php:1047
2377
  msgstr ""
2378
 
2379
  #: src/Tribe/Main.php:1048
2380
+ msgid ""
2381
+ "If you have a valid license for one of our paid plugins, you can %s in our "
2382
+ "premium support forums. Our support team monitors the forums and will "
2383
+ "respond to your thread within 24-48 hours (during the week)."
2384
  msgstr ""
2385
 
2386
  #: src/Tribe/Main.php:1099 src/admin-views/aggregator/tabs/import-form.php:158
2390
  msgstr ""
2391
 
2392
  #: src/Tribe/Main.php:1230
2393
+ msgid ""
2394
+ "Your version of The Events Calendar is not up-to-date with one of your The "
2395
+ "Events Calendar add-ons. Please %supdate now.%s"
2396
  msgstr ""
2397
 
2398
  #: src/Tribe/Main.php:1242
2399
+ msgid ""
2400
+ "The following plugins are out of date: %1$s. All add-ons contain "
2401
+ "dependencies on The Events Calendar and will not function properly unless "
2402
+ "paired with the right version. %2$sLearn More%3$s."
2403
  msgstr ""
2404
 
2405
  #: src/Tribe/Main.php:1393
2406
+ msgid ""
2407
+ "Sorry, The Events Calendar requires WordPress %s or higher. Please upgrade "
2408
+ "your WordPress install."
2409
  msgstr ""
2410
 
2411
  #: src/Tribe/Main.php:1396
2412
+ msgid ""
2413
+ "Sorry, The Events Calendar requires PHP %s or higher. Talk to your Web host "
2414
+ "about moving you to a newer version of PHP."
2415
  msgstr ""
2416
 
2417
  #: src/Tribe/Main.php:1408
2418
+ msgid ""
2419
+ "It appears as if the tribe-common libraries cannot be found! The directory "
2420
+ "should be in the \"common/\" directory in the events calendar plugin."
2421
  msgstr ""
2422
 
2423
  #: src/Tribe/Main.php:1615 src/Tribe/Main.php:2218
2511
  msgstr ""
2512
 
2513
  #. translators: %s: date and time of the revision
 
2514
  #: src/Tribe/Main.php:1713 src/Tribe/Main.php:1750
2515
  msgid "%1$s restored to revision from %2$s"
2516
  msgstr ""
2532
  msgstr ""
2533
 
2534
  #. translators: Publish box date format, see http://php.net/date
 
2535
  #: src/Tribe/Main.php:1730 src/Tribe/Main.php:1758 src/Tribe/Main.php:1778
2536
  msgid "M j, Y @ G:i"
2537
  msgstr ""
2557
  msgstr ""
2558
 
2559
  #. translators: %s: date and time of the revision
 
2560
  #: src/Tribe/Main.php:1770
2561
  msgid "%s restored to revision from %s"
2562
  msgstr ""
2563
 
2564
  #: src/Tribe/Main.php:1824
2565
+ msgid ""
2566
+ "Without a defined location your event will not display a %sGoogle Rich "
2567
+ "Snippet%s on the search results."
2568
  msgstr ""
2569
 
2570
  #: src/Tribe/Main.php:2219
2587
  msgid " (View Full %1$s Description Here: %2$s)"
2588
  msgstr ""
2589
 
2590
+ #: src/Tribe/Main.php:3412 src/Tribe/Main.php:3447
2591
  #: src/functions/template-tags/day.php:157
2592
  #: src/functions/template-tags/day.php:178
2593
  msgid "Date out of range."
2594
  msgstr ""
2595
 
2596
+ #: src/Tribe/Main.php:3482
2597
  msgid "%s Options"
2598
  msgstr ""
2599
 
2600
+ #: src/Tribe/Main.php:3489 src/Tribe/Main.php:3500
2601
  msgid "%s Information"
2602
  msgstr ""
2603
 
2604
+ #: src/Tribe/Main.php:3836
2605
  msgid "Support"
2606
  msgstr ""
2607
 
2608
+ #: src/Tribe/Main.php:3839
2609
  msgid "View All Add-Ons"
2610
  msgstr ""
2611
 
2612
+ #: src/Tribe/Main.php:3859
2613
  msgid "News from Modern Tribe"
2614
  msgstr ""
2615
 
2616
+ #: src/Tribe/Main.php:3904
2617
  msgid "Additional Functionality"
2618
  msgstr ""
2619
 
2620
+ #: src/Tribe/Main.php:3909
2621
+ msgid ""
2622
+ "Looking for additional functionality including recurring events, ticket "
2623
+ "sales, publicly submitted events, new views and more?"
2624
  msgstr ""
2625
 
2626
+ #: src/Tribe/Main.php:3910
2627
  msgid "Check out the %savailable add-ons%s."
2628
  msgstr ""
2629
 
2630
+ #: src/Tribe/Main.php:4012
2631
  msgid "Calendar"
2632
  msgstr ""
2633
 
2634
+ #: src/Tribe/Main.php:4028
2635
  msgid "List"
2636
  msgstr ""
2637
 
2638
+ #: src/Tribe/Main.php:4046
2639
  msgid "Month"
2640
  msgstr ""
2641
 
2642
+ #: src/Tribe/Main.php:4063 src/admin-views/aggregator/fields/schedule.php:44
2643
  #: src/admin-views/aggregator/fields/schedule.php:62
2644
  msgid "Day"
2645
  msgstr ""
2646
 
2647
+ #: src/Tribe/Main.php:4088
2648
  msgid "Search"
2649
  msgstr ""
2650
 
2651
+ #: src/Tribe/Main.php:4089
2652
  msgid "Keyword"
2653
  msgstr ""
2654
 
2655
+ #: src/Tribe/Main.php:4113 src/Tribe/Main.php:4129
2656
  #: src/admin-views/aggregator/origins/refine.php:7
2657
  msgid "Date"
2658
  msgstr ""
2659
 
2660
+ #: src/Tribe/Main.php:4116
2661
  msgid "%s In"
2662
  msgstr ""
2663
 
2664
+ #: src/Tribe/Main.php:4118
2665
  msgid "%s From"
2666
  msgstr ""
2667
 
2668
+ #: src/Tribe/Main.php:4120
2669
  msgid "Day Of"
2670
  msgstr ""
2671
 
2672
+ #: src/Tribe/Main.php:4193
2673
  msgid "Once Every 30 Mins"
2674
  msgstr ""
2675
 
2702
  msgstr ""
2703
 
2704
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:32
2705
+ msgid ""
2706
+ "An Array containing the lineage of where this event comes from, this should "
2707
+ "not change after the event is created."
2708
  msgstr ""
2709
 
2710
  #: src/Tribe/REST/V1/Documentation/Event_Definition_Provider.php:36
2855
 
2856
  #: src/Tribe/REST/V1/Documentation/Organizer_Definition_Provider.php:32
2857
  #: src/Tribe/REST/V1/Documentation/Venue_Definition_Provider.php:32
2858
+ msgid ""
2859
+ "An Array containing the lineage of where this organizer comes from, this "
2860
+ "should not change after the organizer is created."
2861
  msgstr ""
2862
 
2863
  #: src/Tribe/REST/V1/Documentation/Organizer_Definition_Provider.php:36
3001
  msgstr ""
3002
 
3003
  #: src/Tribe/REST/V1/EA_Messages.php:10
3004
+ msgid ""
3005
+ "Event Aggregator cannot import events because this site is running an "
3006
+ "outdated version of The Events Calendar."
3007
  msgstr ""
3008
 
3009
  #: src/Tribe/REST/V1/EA_Messages.php:11
3011
  msgstr ""
3012
 
3013
  #: src/Tribe/REST/V1/EA_Messages.php:12
3014
+ msgid ""
3015
+ "Events could not be imported. Event Aggregator does not yet support events "
3016
+ "from that URL. We have noted your request and will review it for support in "
3017
+ "the future."
3018
  msgstr ""
3019
 
3020
  #: src/Tribe/REST/V1/EA_Messages.php:13
3021
+ msgid ""
3022
+ "Events could not be imported. The Events Calendar REST API is disabled on "
3023
+ "the requested URL."
3024
  msgstr ""
3025
 
3026
  #: src/Tribe/REST/V1/EA_Messages.php:14
3027
+ msgid ""
3028
+ "Events could not be imported. The URL provided could be reached and has The "
3029
+ "Events Calendar REST API enabled, but returned malformed data."
3030
  msgstr ""
3031
 
3032
  #: src/Tribe/REST/V1/EA_Messages.php:15
3033
+ msgid ""
3034
+ "Events could not be imported. The URL provided could be reached and has The "
3035
+ "Events Calendar REST API enabled, but there was an error while fetching the "
3036
+ "archive control data."
3037
  msgstr ""
3038
 
3039
  #: src/Tribe/REST/V1/EA_Messages.php:16
3040
+ msgid ""
3041
+ "Events could not be imported. The URL provided could be reached and has The "
3042
+ "Events Calendar REST API enabled, but there was an error while fetching the "
3043
+ "total number of events."
3044
  msgstr ""
3045
 
3046
  #: src/Tribe/REST/V1/EA_Messages.php:17
3047
+ msgid ""
3048
+ "Events could not be imported. The URL provided could be reached and has The "
3049
+ "Events Calendar REST API enabled, but returned malformed data in regard to "
3050
+ "the total number of events."
3051
  msgstr ""
3052
 
3053
  #: src/Tribe/REST/V1/EA_Messages.php:18
3054
+ msgid ""
3055
+ "Events could not be imported. The URL provided could be reached and has The "
3056
+ "Events Calendar REST API enabled, but there was an error while fetching an "
3057
+ "archive page."
3058
  msgstr ""
3059
 
3060
  #: src/Tribe/REST/V1/EA_Messages.php:19
3061
+ msgid ""
3062
+ "Events could not be imported. The URL provided could be reached and has The "
3063
+ "Events Calendar REST API enabled, but returned an empty archive page."
3064
  msgstr ""
3065
 
3066
  #: src/Tribe/REST/V1/EA_Messages.php:20
3067
+ msgid ""
3068
+ "Events could not be imported. The URL provided could be reached and has The "
3069
+ "Events Calendar REST API enabled, but there was an error while fetching the "
3070
+ "event data."
3071
  msgstr ""
3072
 
3073
  #: src/Tribe/REST/V1/EA_Messages.php:21
3074
+ msgid ""
3075
+ "Events could not be imported. The URL provided could be reached and has The "
3076
+ "Events Calendar REST API enabled, but returned empty event data."
3077
  msgstr ""
3078
 
3079
  #: src/Tribe/REST/V1/EA_Messages.php:22
3080
+ msgid ""
3081
+ "The requested URL does not have any upcoming and published events matching "
3082
+ "the search criteria."
3083
  msgstr ""
3084
 
3085
  #: src/Tribe/REST/V1/EA_Messages.php:39
3155
  msgstr ""
3156
 
3157
  #: src/Tribe/REST/V1/Endpoints/Swagger_Documentation.php:90
3158
+ msgid ""
3159
+ "The Events Calendar REST API allows accessing upcoming events information "
3160
+ "easily and conveniently."
3161
  msgstr ""
3162
 
3163
  #: src/Tribe/REST/V1/Endpoints/Swagger_Documentation.php:124
3164
+ msgid ""
3165
+ "Returns the documentation for The Events Calendar REST API in Swagger "
3166
+ "consumable format."
3167
  msgstr ""
3168
 
3169
  #: src/Tribe/REST/V1/Messages.php:13
3231
  msgstr ""
3232
 
3233
  #: src/Tribe/Template/Day.php:145
3234
+ msgid ""
3235
+ "No matching %1$s listed under %2$s scheduled for %3$s. Please try another "
3236
+ "day."
3237
  msgstr ""
3238
 
3239
  #: src/Tribe/Template/Day.php:147
3244
  msgid "This %s has passed."
3245
  msgstr ""
3246
 
3247
+ #: src/Tribe/Template/Month.php:412
3248
+ msgid ""
3249
+ "There were no results found for %s this month. Try searching next month."
3250
  msgstr ""
3251
 
3252
+ #: src/Tribe/Template/Month.php:416
3253
+ msgid ""
3254
+ "No matching %1$s listed under %2$s. Please try viewing the full calendar for "
3255
+ "a complete list of events."
3256
  msgstr ""
3257
 
3258
+ #: src/Tribe/Template/Month.php:418 src/Tribe/Template_Factory.php:306
3259
  msgid "There were no results found."
3260
  msgstr ""
3261
 
3262
+ #: src/Tribe/Template/Month.php:881
3263
+ msgid ""
3264
+ "The requested date \"%s\" was not valid &ndash; showing the current month "
3265
+ "instead"
3266
  msgstr ""
3267
 
3268
  #: src/Tribe/Template_Factory.php:293
3274
  msgstr ""
3275
 
3276
  #: src/Tribe/Template_Factory.php:297
3277
+ msgid ""
3278
+ "No upcoming %1$s listed under %2$s. Check out upcoming %3$s for this "
3279
+ "category or view the full calendar."
3280
  msgstr ""
3281
 
3282
  #: src/Tribe/Template_Factory.php:299 src/Tribe/Template_Factory.php:304
3283
+ msgid ""
3284
+ "No matching %1$s listed under %2$s. Please try viewing the full calendar for "
3285
+ "a complete list of %3$s."
3286
  msgstr ""
3287
 
3288
  #: src/Tribe/Template_Factory.php:301
3294
  msgstr ""
3295
 
3296
  #: src/Tribe/Templates.php:664
3297
+ msgid ""
3298
+ "Template overrides should be moved to the correct subdirectory: "
3299
+ "tribe_get_template_part('%s')"
3300
  msgstr ""
3301
 
3302
  #: src/Tribe/Utils/Radius.php:18
3370
  msgstr ""
3371
 
3372
  #: src/Tribe/iCal.php:109
3373
+ msgid ""
3374
+ "Use this to share calendar data with Google Calendar, Apple iCal and other "
3375
+ "compatible apps"
3376
  msgstr ""
3377
 
3378
  #: src/admin-views/admin-update-message.php:9
3385
  msgstr ""
3386
 
3387
  #: src/admin-views/admin-update-message.php:33
3388
+ msgid ""
3389
+ "Every time you rate %s5 stars%s, a fairy is born. Okay maybe not, but more "
3390
+ "happy users mean more contributions and help on the forums. The community "
3391
+ "NEEDS your voice."
3392
  msgstr ""
3393
 
3394
  #: src/admin-views/admin-update-message.php:34
3445
  msgstr ""
3446
 
3447
  #: src/admin-views/admin-welcome-message.php:20
3448
+ msgid ""
3449
+ "Your ratings help us bring The Events Calendar to more users. More happy "
3450
+ "users mean more support, more features, and more of everything you know and "
3451
+ "love about The Events Calendar. We couldn't do this without your support."
3452
  msgstr ""
3453
 
3454
  #: src/admin-views/admin-welcome-message.php:21
3460
  msgstr ""
3461
 
3462
  #: src/admin-views/admin-welcome-message.php:26
3463
+ msgid ""
3464
+ "Stay in touch with The Events Calendar team. We send out periodic updates, "
3465
+ "key developer notices, and even the occasional discount."
3466
  msgstr ""
3467
 
3468
  #: src/admin-views/admin-welcome-message.php:28
3549
  msgstr ""
3550
 
3551
  #: src/admin-views/aggregator/meta-box.php:23
3552
+ msgid ""
3553
+ "If this event is re-imported, event fields will be overwritten with any "
3554
+ "changes from the source."
3555
  msgstr ""
3556
 
3557
  #: src/admin-views/aggregator/meta-box.php:29
3558
+ msgid ""
3559
+ "If this event is re-imported, event fields that have not been changed "
3560
+ "locally will be overwritten with any changes from the source."
3561
  msgstr ""
3562
 
3563
  #: src/admin-views/aggregator/meta-box.php:36
3564
+ msgid ""
3565
+ "This event will not be re-imported and changes made locally will be "
3566
+ "preserved."
3567
  msgstr ""
3568
 
3569
  #: src/admin-views/aggregator/meta-box.php:45
3583
  msgstr ""
3584
 
3585
  #: src/admin-views/aggregator/origins/csv.php:8
3586
+ msgid ""
3587
+ "For the best results, import venue and organizer files before importing "
3588
+ "event files."
3589
  msgstr ""
3590
 
3591
  #: src/admin-views/aggregator/origins/csv.php:39
3598
  msgstr ""
3599
 
3600
  #: src/admin-views/aggregator/origins/csv.php:41
3601
+ msgid ""
3602
+ "Select your .CSV file from the WordPress media library. You may need to "
3603
+ "first upload the file from your computer to the library."
3604
  msgstr ""
3605
 
3606
  #: src/admin-views/aggregator/origins/csv.php:42
3644
  msgstr ""
3645
 
3646
  #: src/admin-views/aggregator/origins/eventbrite.php:23
3647
+ msgid ""
3648
+ "Enter an Eventbrite event URL, e.g. https://www.eventbrite.com/e/"
3649
+ "example-12345"
3650
  msgstr ""
3651
 
3652
  #: src/admin-views/aggregator/origins/facebook.php:5
3667
  msgstr ""
3668
 
3669
  #: src/admin-views/aggregator/origins/facebook.php:7
3670
+ msgid ""
3671
+ "One-time imports include all currently listed events, while scheduled "
3672
+ "imports automatically grab new events and updates from Facebook on a set "
3673
+ "schedule. Single events can be added via a one-time import."
3674
  msgstr ""
3675
 
3676
  #: src/admin-views/aggregator/origins/facebook.php:11
3732
  msgstr ""
3733
 
3734
  #: src/admin-views/aggregator/origins/facebook.php:111
3735
+ msgid ""
3736
+ "Enter the url for a Facebook group or page. You can also enter the url of a "
3737
+ "single Facebook event."
3738
  msgstr ""
3739
 
3740
  #: src/admin-views/aggregator/origins/gcal.php:7
3741
  #: src/admin-views/aggregator/origins/ical.php:7
3742
+ msgid ""
3743
+ "One-time imports include all events in the current feed, while scheduled "
3744
+ "imports automatically grab new events and updates from the feed on a set "
3745
+ "schedule."
3746
  msgstr ""
3747
 
3748
  #: src/admin-views/aggregator/origins/gcal.php:82
3758
  msgstr ""
3759
 
3760
  #: src/admin-views/aggregator/origins/gcal.php:87
3761
+ msgid ""
3762
+ "Go to Settings &gt; Calendars and select the calendar you wish to import."
3763
  msgstr ""
3764
 
3765
  #: src/admin-views/aggregator/origins/gcal.php:88
3766
+ msgid ""
3767
+ "Scroll down to Calendar Address and click the iCal button (note: if your "
3768
+ "calendar is private, you'll need to click the iCal button next to the "
3769
+ "Private Address header instead)."
3770
  msgstr ""
3771
 
3772
  #: src/admin-views/aggregator/origins/gcal.php:89
3773
+ msgid ""
3774
+ "Copy the provided url into this field to import the events into your "
3775
+ "WordPress site."
3776
  msgstr ""
3777
 
3778
  #: src/admin-views/aggregator/origins/gcal.php:117
3788
  msgstr ""
3789
 
3790
  #: src/admin-views/aggregator/origins/ical.php:84
3791
+ msgid ""
3792
+ "Enter the url for the iCalendar feed you wish to import, e.g. https://"
3793
+ "central.wordcamp.org/calendar.ics"
3794
  msgstr ""
3795
 
3796
  #: src/admin-views/aggregator/origins/ics.php:6
3798
  msgstr ""
3799
 
3800
  #: src/admin-views/aggregator/origins/ics.php:7
3801
+ msgid ""
3802
+ "Select your ICS file from the WordPress media library. You may need to first "
3803
+ "upload the file from your computer to the library."
3804
  msgstr ""
3805
 
3806
  #: src/admin-views/aggregator/origins/ics.php:10
3808
  msgstr ""
3809
 
3810
  #: src/admin-views/aggregator/origins/meetup.php:7
3811
+ msgid ""
3812
+ "One-time imports include all currently listed events, while scheduled "
3813
+ "imports automatically grab new events and updates from Meetup on a set "
3814
+ "schedule. Single events can be added via a one-time import."
3815
  msgstr ""
3816
 
3817
  #: src/admin-views/aggregator/origins/meetup.php:32
3818
+ msgid ""
3819
+ "Enter your Meetup API key to import Meetup events. %1$sClick here to get "
3820
+ "your Meetup API key%2$s. You only need to do this once, it will be saved "
3821
+ "under %3$sEvents &gt; Settings &gt; APIs%4$s"
3822
  msgstr ""
3823
 
3824
  #: src/admin-views/aggregator/origins/meetup.php:47
3825
+ msgid ""
3826
+ "Your Meetup API key has been saved to %1$sEvents &gt; Settings &gt; APIs%2$s"
3827
  msgstr ""
3828
 
3829
  #: src/admin-views/aggregator/origins/meetup.php:59
3839
  msgstr ""
3840
 
3841
  #: src/admin-views/aggregator/origins/meetup.php:139
3842
+ msgid ""
3843
+ "Enter the url for a Meetup group, page, or individual. You can also enter "
3844
+ "the url of a single Meetup event."
3845
  msgstr ""
3846
 
3847
  #: src/admin-views/aggregator/origins/refine.php:3
3858
  msgstr ""
3859
 
3860
  #: src/admin-views/aggregator/origins/refine.php:14
3861
+ msgid ""
3862
+ "Use the filters to narrow down which events are fetched from your ICS file."
3863
  msgstr ""
3864
 
3865
  #: src/admin-views/aggregator/origins/refine.php:18
3866
+ msgid ""
3867
+ "Use the filters to narrow down which events are fetched from this Google "
3868
+ "Calendar."
3869
  msgstr ""
3870
 
3871
  #: src/admin-views/aggregator/origins/refine.php:22
3873
  msgstr ""
3874
 
3875
  #: src/admin-views/aggregator/origins/refine.php:27
3876
+ msgid ""
3877
+ "Use the filters to narrow down which events are fetched from this iCalendar "
3878
+ "feed."
3879
  msgstr ""
3880
 
3881
  #: src/admin-views/aggregator/origins/refine.php:33
3887
  msgstr ""
3888
 
3889
  #: src/admin-views/aggregator/origins/url.php:7
3890
+ msgid ""
3891
+ "One-time imports include currently listed upcoming events, while scheduled "
3892
+ "imports automatically grab new events and updates from this url on a set "
3893
+ "schedule."
3894
  msgstr ""
3895
 
3896
  #: src/admin-views/aggregator/origins/url.php:83
3898
  msgstr ""
3899
 
3900
  #: src/admin-views/aggregator/origins/url.php:84
3901
+ msgid ""
3902
+ "Enter the url for the calendar, website, or event you would like to import. "
3903
+ "Event Aggregator will attempt to import events at that location."
3904
  msgstr ""
3905
 
3906
  #: src/admin-views/aggregator/origins/url.php:89
3907
+ msgid ""
3908
+ "Event Aggregator will try to fetch events starting in %s from the current "
3909
+ "date or the specified date;"
3910
  msgstr ""
3911
 
3912
  #: src/admin-views/aggregator/origins/url.php:91
3935
  msgstr ""
3936
 
3937
  #: src/admin-views/aggregator/settings.php:44
3938
+ msgid ""
3939
+ "You can make changes to imported events via The Events Calendar and see "
3940
+ "those changes reflected on your site’s calendar. The owner of the original "
3941
+ "event source (e.g. the iCalendar feed or Facebook group) might also make "
3942
+ "changes to their event. If you choose to re-import an altered event "
3943
+ "(manually or via a scheduled import), any changes made at the source or on "
3944
+ "your calendar will need to be addressed."
3945
  msgstr ""
3946
 
3947
  #: src/admin-views/aggregator/settings.php:53
3995
  msgstr ""
3996
 
3997
  #: src/admin-views/aggregator/settings.php:97
3998
+ msgid ""
3999
+ "Stop all Event Aggregator imports from running. Existing imported events "
4000
+ "will not be affected. Imports via CSV file will still be available."
4001
  msgstr ""
4002
 
4003
  #: src/admin-views/aggregator/settings.php:110
4085
  msgstr ""
4086
 
4087
  #: src/admin-views/aggregator/settings.php:315
4088
+ msgid ""
4089
+ "To import Meetup events, please be sure to add your Meetup API key on "
4090
+ "%1$sEvents > Settings > APIs%2$s"
4091
  msgstr ""
4092
 
4093
  #: src/admin-views/aggregator/settings.php:326
4115
  msgstr ""
4116
 
4117
  #: src/admin-views/aggregator/settings.php:400
4118
+ msgid ""
4119
+ "When importing from a website that uses The Events Calendar, the REST API "
4120
+ "will attempt to fetch events this far in the future. That website's hosting "
4121
+ "resources may impact the success of imports. Selecting a shorter time period "
4122
+ "may improve results."
4123
  msgstr ""
4124
 
4125
  #: src/admin-views/aggregator/settings.php:410
4127
  msgstr ""
4128
 
4129
  #: src/admin-views/aggregator/settings.php:411
4130
+ msgid ""
4131
+ "Fetch source event's settings (e.g. Show Google Maps Link or Sticky in Month "
4132
+ "View) when importing from another site using The Events Calendar."
4133
  msgstr ""
4134
 
4135
  #: src/admin-views/aggregator/settings.php:443
4136
+ msgid ""
4137
+ "Use the options below to configure your imports. Global Import Settings "
4138
+ "apply to all imports, but you can also override the global settings by "
4139
+ "adjusting the origin-specific options. Check your Event Aggregator Service "
4140
+ "Status on the %1$s."
4141
  msgstr ""
4142
 
4143
  #: src/admin-views/aggregator/settings.php:447
4157
  msgstr ""
4158
 
4159
  #: src/admin-views/aggregator/settings.php:467
4160
+ msgid ""
4161
+ "Use the options below to configure your imports. Looking for more ways to "
4162
+ "import events from other websites?"
4163
  msgstr ""
4164
 
4165
  #: src/admin-views/aggregator/settings.php:468
4179
  msgstr ""
4180
 
4181
  #: src/admin-views/aggregator/status.php:32
4182
+ msgid ""
4183
+ "Buy Event Aggregator to access more event sources and automatic imports!"
4184
  msgstr ""
4185
 
4186
  #: src/admin-views/aggregator/status.php:35
4196
  msgstr ""
4197
 
4198
  #: src/admin-views/aggregator/status.php:63
4199
+ msgid ""
4200
+ "You have reached your daily import limit. Scheduled imports will be paused "
4201
+ "until tomorrow."
4202
  msgstr ""
4203
 
4204
  #: src/admin-views/aggregator/status.php:66
4205
+ msgid ""
4206
+ "You are approaching your daily import limit. You may want to adjust your "
4207
+ "Scheduled Import frequencies."
4208
  msgstr ""
4209
 
4210
  #: src/admin-views/aggregator/status.php:70
4222
  msgstr ""
4223
 
4224
  #. translators: %s: Event Aggregator Server URL
 
4225
  #: src/admin-views/aggregator/status.php:102
4226
  #: src/admin-views/aggregator/status.php:110
4227
  msgid "Not connected to %s"
4236
  msgstr ""
4237
 
4238
  #. translators: %s: Event Aggregator Server URL
 
4239
  #: src/admin-views/aggregator/status.php:118
4240
  msgid "Connected to %s"
4241
  msgstr ""
4318
  msgstr ""
4319
 
4320
  #: src/admin-views/aggregator/tabs/import-form.php:118
4321
+ msgid ""
4322
+ "Choose a status for the event(s) to be imported with and/or define an Event "
4323
+ "Category to automatically assign. An assigned category will be added to the "
4324
+ "event in addition to any Event Categories from the import source."
4325
  msgstr ""
4326
 
4327
  #: src/admin-views/aggregator/tabs/import-form.php:119
4328
+ msgid ""
4329
+ "These settings will also apply to events imported in the future via this "
4330
+ "scheduled import."
4331
  msgstr ""
4332
 
4333
  #: src/admin-views/aggregator/tabs/import-form.php:121
4334
+ msgid ""
4335
+ "Select the Event Field that best matches your CSV file column. The contents "
4336
+ "of that column will then be mapped to the specified event field when the "
4337
+ "event is created."
4338
  msgstr ""
4339
 
4340
  #: src/admin-views/aggregator/tabs/import-form.php:123
4341
+ msgid ""
4342
+ "When you save this scheduled import, the events above will begin importing."
4343
  msgstr ""
4344
 
4345
  #: src/admin-views/aggregator/tabs/import-form.php:133
4346
+ msgid ""
4347
+ "This is a preview of the type of content you will be getting in during the "
4348
+ "import based on what is on the calendar now."
4349
  msgstr ""
4350
 
4351
  #: src/admin-views/aggregator/tabs/import-form.php:136
4353
  msgstr ""
4354
 
4355
  #: src/admin-views/aggregator/tabs/import-form.php:142
4356
+ msgid ""
4357
+ "The following preview does not necessarily contain all of the data from your "
4358
+ "CSV file. The data displayed below is meant as a guide to help you map your "
4359
+ "CSV file's columns to the appropriate Event fields."
4360
  msgstr ""
4361
 
4362
  #: src/admin-views/aggregator/tabs/import-form.php:152
4378
  msgstr ""
4379
 
4380
  #: src/admin-views/aggregator/tabs/import-form.php:240
4381
+ msgid ""
4382
+ "Events will be imported with the timezone defined by the source. If no time "
4383
+ "zone is specified, events will be assigned your site's default timezone (see "
4384
+ "%1$sSettings > General%2$s)."
4385
  msgstr ""
4386
 
4387
  #: src/admin-views/create-organizer-fields.php:2
4409
 
4410
  #: src/admin-views/create-organizer-fields.php:19
4411
  #: src/admin-views/organizer-meta-box.php:45
4412
+ msgid ""
4413
+ "The e-mail address will be obfuscated on your site to avoid it getting "
4414
+ "harvested by spammers."
4415
  msgstr ""
4416
 
4417
  #: src/admin-views/create-venue-fields.php:35
4488
  msgstr ""
4489
 
4490
  #: src/admin-views/event-sidebar-options.php:25
4491
+ msgid ""
4492
+ "When events are sticky in month view, they'll display first in the list of "
4493
+ "events shown within a given day block."
4494
  msgstr ""
4495
 
4496
  #: src/admin-views/event-sidebar-options.php:31
4498
  msgstr ""
4499
 
4500
  #: src/admin-views/event-sidebar-options.php:33
4501
+ msgid ""
4502
+ "Featured events are highlighted on the front end in views, archives, and "
4503
+ "widgets."
4504
  msgstr ""
4505
 
4506
  #: src/admin-views/events-meta-box.php:52
4508
  msgstr ""
4509
 
4510
  #: src/admin-views/events-meta-box.php:69
4511
+ msgid ""
4512
+ "You have changed the recurrence rules of this %1$s. Saving the %1$s will "
4513
+ "update all future %2$s. If you did not mean to change all %2$s, then please "
4514
+ "refresh the page."
4515
  msgstr ""
4516
 
4517
  #: src/admin-views/events-meta-box.php:72
4603
  msgstr ""
4604
 
4605
  #: src/admin-views/tribe-options-addons-api.php:82
4606
+ msgid ""
4607
+ "You need to connect Event Aggregator to Facebook to import your events from "
4608
+ "Facebook."
4609
  msgstr ""
4610
 
4611
  #: src/admin-views/tribe-options-addons-api.php:94
4626
  msgstr ""
4627
 
4628
  #: src/admin-views/tribe-options-addons-api.php:126
4629
+ msgid ""
4630
+ "Some features and add-ons require you to enter an API key or log into a "
4631
+ "third-party website so that The Events Calendar can communicate with an "
4632
+ "outside source."
4633
  msgstr ""
4634
 
4635
  #: src/admin-views/tribe-options-display.php:6
4645
  msgstr ""
4646
 
4647
  #: src/admin-views/tribe-options-display.php:49
4648
+ msgid ""
4649
+ "The settings below control the display of your calendar. If things don't "
4650
+ "look right, try switching between the three style sheet options or pick a "
4651
+ "page template from your theme.</p><p>There are going to be situations where "
4652
+ "no out-of-the-box template is 100&#37; perfect. Check out our <a href=\"%s"
4653
+ "\">our themer's guide</a> for instructions on custom modifications."
4654
  msgstr ""
4655
 
4656
  #: src/admin-views/tribe-options-display.php:67
4658
  msgstr ""
4659
 
4660
  #: src/admin-views/tribe-options-display.php:68
4661
+ msgid ""
4662
+ "Enter the format to use for displaying dates with the year. Used when "
4663
+ "displaying a date in a future year."
4664
  msgstr ""
4665
 
4666
  #: src/admin-views/tribe-options-display.php:75
4668
  msgstr ""
4669
 
4670
  #: src/admin-views/tribe-options-display.php:76
4671
+ msgid ""
4672
+ "Enter the separator that will be placed between the date and time, when both "
4673
+ "are shown."
4674
  msgstr ""
4675
 
4676
  #: src/admin-views/tribe-options-display.php:90
4678
  msgstr ""
4679
 
4680
  #: src/admin-views/tribe-options-display.php:91
4681
+ msgid ""
4682
+ "Enter the format to use for displaying dates without a year. Used when "
4683
+ "showing an event from the current year."
4684
  msgstr ""
4685
 
4686
  #: src/admin-views/tribe-options-display.php:98
4688
  msgstr ""
4689
 
4690
  #: src/admin-views/tribe-options-display.php:99
4691
+ msgid ""
4692
+ "Enter the format to use for dates that show a month and year only. Used on "
4693
+ "month view."
4694
  msgstr ""
4695
 
4696
  #: src/admin-views/tribe-options-display.php:113
4698
  msgstr ""
4699
 
4700
  #: src/admin-views/tribe-options-display.php:114
4701
+ msgid ""
4702
+ "Enter the separator that will be used between the start and end time of an "
4703
+ "event."
4704
  msgstr ""
4705
 
4706
  #: src/admin-views/tribe-options-display.php:128
4716
  msgstr ""
4717
 
4718
  #: src/admin-views/tribe-options-display.php:137
4719
+ msgid ""
4720
+ "Only includes enough css to achieve complex layouts like calendar and week "
4721
+ "view."
4722
  msgstr ""
4723
 
4724
  #: src/admin-views/tribe-options-display.php:139
4742
  msgstr ""
4743
 
4744
  #: src/admin-views/tribe-options-display.php:153
4745
+ msgid ""
4746
+ "Choose a page template to control the appearance of your calendar and event "
4747
+ "content."
4748
  msgstr ""
4749
 
4750
  #: src/admin-views/tribe-options-display.php:161
4772
  msgstr ""
4773
 
4774
  #: src/admin-views/tribe-options-display.php:185
4775
+ msgid ""
4776
+ "Change the default 3 events per day in month view. To impose no limit, you "
4777
+ "may specify -1. Please note there may be performance issues if you allow too "
4778
+ "many events per day. <a href=\"%s\">Read more</a>."
4779
  msgstr ""
4780
 
4781
  #: src/admin-views/tribe-options-display.php:192
4783
  msgstr ""
4784
 
4785
  #: src/admin-views/tribe-options-display.php:193
4786
+ msgid ""
4787
+ "Check this to cache your month view HTML in transients, which can help "
4788
+ "improve calendar speed on sites with many events. <a href=\"%s\">Read more</"
4789
+ "a>."
4790
  msgstr ""
4791
 
4792
  #: src/admin-views/tribe-options-display.php:206
4798
  msgstr ""
4799
 
4800
  #: src/admin-views/tribe-options-display.php:211
4801
+ msgid ""
4802
+ "If you are familiar with HTML, you can add additional code before the event "
4803
+ "template. Some themes may require this to help with styling or layout."
4804
  msgstr ""
4805
 
4806
  #: src/admin-views/tribe-options-display.php:216
4808
  msgstr ""
4809
 
4810
  #: src/admin-views/tribe-options-display.php:217
4811
+ msgid ""
4812
+ "If you are familiar with HTML, you can add additional code after the event "
4813
+ "template. Some themes may require this to help with styling or layout."
4814
  msgstr ""
4815
 
4816
  #: src/admin-views/tribe-options-general.php:12
4842
  msgstr ""
4843
 
4844
  #: src/admin-views/tribe-options-general.php:45
4845
+ msgid ""
4846
+ "This option is disabled when \"Disable the Event Search Bar\" is checked on "
4847
+ "the Display settings tab."
4848
  msgstr ""
4849
 
4850
  #: src/admin-views/tribe-options-general.php:45
4851
+ msgid ""
4852
+ "Enable live ajax for datepicker on front end (User submit not required)."
4853
  msgstr ""
4854
 
4855
  #: src/admin-views/tribe-options-general.php:53
4865
  msgstr ""
4866
 
4867
  #: src/admin-views/tribe-options-general.php:61
4868
+ msgid ""
4869
+ "Show events with the site's other posts. When this box is checked, events "
4870
+ "will also continue to appear on the default events page."
4871
  msgstr ""
4872
 
4873
  #: src/admin-views/tribe-options-general.php:67
4876
  msgstr ""
4877
 
4878
  #: src/admin-views/tribe-options-general.php:68
4879
+ msgid ""
4880
+ "You cannot edit the slug for your events page as you do not have pretty "
4881
+ "permalinks enabled. The current URL for your events page is <a href=\"%1$s\">"
4882
+ "%2$s</a>. In order to edit the slug here, <a href=\"%3$soptions-permalink.php"
4883
+ "\">enable pretty permalinks</a>."
4884
  msgstr ""
4885
 
4886
  #: src/admin-views/tribe-options-general.php:80
4902
  msgstr ""
4903
 
4904
  #: src/admin-views/tribe-options-general.php:97
4905
+ msgid ""
4906
+ "The above should ideally be plural, and this singular.<br />Your single "
4907
+ "event URL is: %s"
4908
  msgstr ""
4909
 
4910
  #: src/admin-views/tribe-options-general.php:102
4912
  msgstr ""
4913
 
4914
  #: src/admin-views/tribe-options-general.php:123
4915
+ msgid ""
4916
+ "Have an event that runs past midnight? Select a time after that event's end "
4917
+ "to avoid showing the event on the next day's calendar."
4918
  msgstr ""
4919
 
4920
  #: src/admin-views/tribe-options-general.php:128
4922
  msgstr ""
4923
 
4924
  #: src/admin-views/tribe-options-general.php:129
4925
+ msgid ""
4926
+ "Set the default currency symbol for event costs. Note that this only impacts "
4927
+ "future events, and changes made will not apply retroactively."
4928
  msgstr ""
4929
 
4930
  #: src/admin-views/tribe-options-general.php:136
4932
  msgstr ""
4933
 
4934
  #: src/admin-views/tribe-options-general.php:137
4935
+ msgid ""
4936
+ "The currency symbol normally precedes the value. Enabling this option "
4937
+ "positions the symbol after the value."
4938
  msgstr ""
4939
 
4940
  #: src/admin-views/tribe-options-general.php:143
4942
  msgstr ""
4943
 
4944
  #: src/admin-views/tribe-options-general.php:143
4945
+ msgid ""
4946
+ "You might find duplicate venues and organizers when updating The Events "
4947
+ "Calendar from a pre-3.0 version. Click this button to automatically merge "
4948
+ "identical venues and organizers."
4949
  msgstr ""
4950
 
4951
  #: src/admin-views/tribe-options-general.php:148
4999
  msgstr ""
5000
 
5001
  #: src/admin-views/tribe-options-timezones.php:10
5002
+ msgid ""
5003
+ "Click this button to update your database and take advantage of additional "
5004
+ "timezone capabilities. Please <a href=\"%s\" target=\"_blank\">configure "
5005
+ "WordPress</a> to use the correct timezone before clicking this button!"
5006
  msgstr ""
5007
 
5008
  #: src/admin-views/tribe-options-timezones.php:30
5026
  msgstr ""
5027
 
5028
  #: src/admin-views/tribe-options-timezones.php:49
5029
+ msgid ""
5030
+ "Appends the timezone to the end of event scheduling information &ndash; this "
5031
+ "can be useful when you have events in numerous different timezones."
5032
  msgstr ""
5033
 
5034
  #: src/admin-views/venue-meta-box.php:265
5098
  msgid "Time:"
5099
  msgstr ""
5100
 
5101
+ #: src/functions/template-tags/date.php:65
5102
  msgid "The function needs to be passed an $event or used in the loop."
5103
  msgstr ""
5104
 
5123
  msgstr ""
5124
 
5125
  #. translators: %s is the singular translation of "Event"
 
5126
  #: src/functions/template-tags/general.php:406
5127
  msgctxt "category list label"
5128
  msgid "%s Category"
5190
  msgstr ""
5191
 
5192
  #: src/functions/template-tags/options.php:29
5193
+ msgid ""
5194
+ "You %1$scannot%2$s use the same slug as above. The above should ideally be "
5195
+ "plural, and this singular.%3$sYour single Event URL is like: %4$s"
5196
  msgstr ""
5197
 
5198
  #: src/functions/template-tags/venue.php:509
5205
  msgstr ""
5206
 
5207
  #: src/io/csv/admin-views/columns.php:27
5208
+ msgid ""
5209
+ "Columns have been mapped based on your last import. Please ensure the "
5210
+ "selected fields match the columns in your CSV file."
5211
  msgstr ""
5212
 
5213
  #: src/io/csv/admin-views/columns.php:32
5227
  msgstr ""
5228
 
5229
  #: src/io/csv/admin-views/general.php:12
5230
+ msgid ""
5231
+ "The settings below will impact events imported from files and other "
5232
+ "websites. Be sure to save your changes before starting to import events."
5233
  msgstr ""
5234
 
5235
  #: src/io/csv/admin-views/general.php:54
5257
  msgstr ""
5258
 
5259
  #: src/io/csv/admin-views/import.php:24 src/io/csv/admin-views/import.php:30
5260
+ msgid ""
5261
+ "Upload a CSV file with one record on each line. The first line may contain "
5262
+ "column names (check the box below)."
5263
  msgstr ""
5264
 
5265
  #: src/io/csv/admin-views/import.php:25
5266
+ msgid ""
5267
+ "One column in your CSV should have the Organizer/Venue name. All other "
5268
+ "fields are optional."
5269
  msgstr ""
5270
 
5271
  #: src/io/csv/admin-views/import.php:26 src/io/csv/admin-views/import.php:32
5272
+ msgid ""
5273
+ "After you upload your file, you'll have the opportunity to indicate how the "
5274
+ "columns in your CSV map to fields in The Events Calendar."
5275
  msgstr ""
5276
 
5277
  #: src/io/csv/admin-views/import.php:28
5279
  msgstr ""
5280
 
5281
  #: src/io/csv/admin-views/import.php:31
5282
+ msgid ""
5283
+ "One column in your CSV should have the Event title. Another should have the "
5284
+ "Event start date. All other fields are optional."
5285
  msgstr ""
5286
 
5287
  #: src/io/csv/admin-views/import.php:36
5293
  msgstr ""
5294
 
5295
  #: src/io/csv/admin-views/import.php:59
5296
+ msgid ""
5297
+ "Upload a properly formatted, UTF-8 encoded CSV file. Not sure if your file "
5298
+ "is UTF-8 encoded? Make sure to specify the character encoding when you save "
5299
+ "the file, or pass it through a %sconversion tool%s."
5300
  msgstr ""
5301
 
5302
  #: src/io/csv/admin-views/import.php:67
5332
  msgstr ""
5333
 
5334
  #: src/io/csv/admin-views/result.php:26
5335
+ msgid ""
5336
+ "%1$s%2$s%3$sInserted:%4$s A new item was inserted successfully. %5$s%2$s"
5337
+ "%3$sUpdated:%4$s An item was found with the same name and/or start date. The "
5338
+ "existing item was updated with the new value from the file.%5$s%2$s"
5339
+ "%3$sSkipped:%4$s A row was found in the CSV file that could not be imported. "
5340
+ "Please see below for the invalid rows.%5$s%6$s"
5341
  msgstr ""
5342
 
5343
  #: src/io/csv/admin-views/result.php:29
5415
  #: src/views/widgets/list-widget.php:101
5416
  msgid "There are no upcoming %s at this time."
5417
  msgstr ""
 
 
 
5418
 
5419
  #. Description of the plugin/theme
5420
+ msgid ""
5421
+ "The Events Calendar is a carefully crafted, extensible plugin that lets you "
5422
+ "easily share your events. Beautiful. Solid. Awesome."
5423
  msgstr ""
5424
 
5425
  #. Author of the plugin/theme
readme.txt CHANGED
@@ -1,10 +1,10 @@
1
  === The Events Calendar ===
2
 
3
- Contributors: ModernTribe, borkweb, zbtirrell, barry.hughes, bordoni, brianjessee, brook-tribe, faction23, geoffgraham, ggwicz, jazbek, jbrinley, leahkoerper, lucatume, mastromktg, mat-lipe, mdbitz, MZAWeb, neillmcshea, nicosantos, peterchester, reid.peifer, roblagatta, ryancurban, shelbelliott, shane.pearlman, aguseo, tribecari, trishasalas, courane01
4
  Tags: events, calendar, event, venue, organizer, dates, date, google maps, conference, workshop, concert, meeting, seminar, summit, class, modern tribe, tribe, widget
5
  Donate link: http://m.tri.be/29
6
  Requires at least: 3.9
7
- Stable tag: 4.5.0.2
8
  Tested up to: 4.7.4
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
@@ -280,7 +280,6 @@ The plugin is made with love by [Modern Tribe Inc](http://m.tri.be/2s).
280
  * [Geoff Graham](https://profiles.wordpress.org/geoffgraham)
281
  * [George Gecewicz](https://profiles.wordpress.org/ggwicz)
282
  * [Gustavo Bordoni](https://profiles.wordpress.org/bordoni)
283
- * [Hunter Wilson](https://profiles.wordpress.org/joinfof)
284
  * [Leah Koerper](https://profiles.wordpress.org/leahkoerper)
285
  * [Luca Tumedei](https://profiles.wordpress.org/lucatume)
286
  * [Matthew Batchelder](https://profiles.wordpress.org/borkweb)
@@ -327,6 +326,13 @@ Please see the changelog for the complete list of changes in this release. Remem
327
 
328
  == Changelog ==
329
 
 
 
 
 
 
 
 
330
  = [4.5.0.2] 2017-05-01 =
331
 
332
  * Fix - Ensure compatibility with WordPress version 4.4 and earlier
1
  === The Events Calendar ===
2
 
3
+ Contributors: ModernTribe, borkweb, zbtirrell, barry.hughes, bordoni, brianjessee, brook-tribe, faction23, geoffgraham, ggwicz, jazbek, jbrinley, leahkoerper, lucatume, mastromktg, mat-lipe, mdbitz, MZAWeb, neillmcshea, nicosantos, peterchester, reid.peifer, roblagatta, ryancurban, shelbelliott, shane.pearlman, aguseo, tribecari, trishasalas, courane01, GeoffBel, vicskf
4
  Tags: events, calendar, event, venue, organizer, dates, date, google maps, conference, workshop, concert, meeting, seminar, summit, class, modern tribe, tribe, widget
5
  Donate link: http://m.tri.be/29
6
  Requires at least: 3.9
7
+ Stable tag: 4.5.1
8
  Tested up to: 4.7.4
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
280
  * [Geoff Graham](https://profiles.wordpress.org/geoffgraham)
281
  * [George Gecewicz](https://profiles.wordpress.org/ggwicz)
282
  * [Gustavo Bordoni](https://profiles.wordpress.org/bordoni)
 
283
  * [Leah Koerper](https://profiles.wordpress.org/leahkoerper)
284
  * [Luca Tumedei](https://profiles.wordpress.org/lucatume)
285
  * [Matthew Batchelder](https://profiles.wordpress.org/borkweb)
326
 
327
  == Changelog ==
328
 
329
+ = [4.5.1] 2017-05-04 =
330
+
331
+ * Fix - Prevented errors on EA import screen that happened in exotic circumstance. Thanks @kathryn for reporting this! [75787]
332
+ * Fix - Made EA preserve custom dates after reimporting a Facebook Event when option is set. [75787]
333
+ * Fix - Enhance month view caching to minimize impact of JSON-LD generation [74656]
334
+ * Tweak - Styling/layout improvements within the Event Aggregator screen [77895]
335
+
336
  = [4.5.0.2] 2017-05-01 =
337
 
338
  * Fix - Ensure compatibility with WordPress version 4.4 and earlier
src/Tribe/Aggregator/Event.php CHANGED
@@ -374,6 +374,8 @@ class Tribe__Events__Aggregator__Event {
374
  $data['EventStartDate'] = date( Tribe__Date_Utils::DBDATEFORMAT, $start_datetime );
375
  $data['EventStartHour'] = date( 'H', $start_datetime );
376
  $data['EventStartMinute'] = date( 'i', $start_datetime );
 
 
377
  }
378
  // The end date needs to be adjusted from a MySQL style datetime string to just the date
379
  if ( isset( $modified['_EventEndDate'] ) && isset( $post_meta['_EventEndDate'] ) ) {
@@ -381,6 +383,8 @@ class Tribe__Events__Aggregator__Event {
381
  $data['EventEndDate'] = date( Tribe__Date_Utils::DBDATEFORMAT, $end_datetime );
382
  $data['EventEndHour'] = date( 'H', $end_datetime );
383
  $data['EventEndMinute'] = date( 'i', $end_datetime );
 
 
384
  }
385
 
386
  // reset any modified taxonomy terms
374
  $data['EventStartDate'] = date( Tribe__Date_Utils::DBDATEFORMAT, $start_datetime );
375
  $data['EventStartHour'] = date( 'H', $start_datetime );
376
  $data['EventStartMinute'] = date( 'i', $start_datetime );
377
+ // Date is stored in 24hr format and doesn't need meridian, which might be set already.
378
+ unset( $data['EventStartMeridian'] );
379
  }
380
  // The end date needs to be adjusted from a MySQL style datetime string to just the date
381
  if ( isset( $modified['_EventEndDate'] ) && isset( $post_meta['_EventEndDate'] ) ) {
383
  $data['EventEndDate'] = date( Tribe__Date_Utils::DBDATEFORMAT, $end_datetime );
384
  $data['EventEndHour'] = date( 'H', $end_datetime );
385
  $data['EventEndMinute'] = date( 'i', $end_datetime );
386
+ // Date is stored in 24hr format and doesn't need meridian, which might be set already.
387
+ unset( $data['EventEndMeridian'] );
388
  }
389
 
390
  // reset any modified taxonomy terms
src/Tribe/Aggregator/Record/List_Table.php CHANGED
@@ -286,6 +286,17 @@ class Tribe__Events__Aggregator__Record__List_Table extends WP_List_Table {
286
 
287
  foreach ( $origins as $origin => $count ) {
288
  $origin_instance = Tribe__Events__Aggregator__Records::instance()->get_by_origin( $origin );
 
 
 
 
 
 
 
 
 
 
 
289
  $link = $this->page->get_url( array( 'tab' => $this->tab->get_slug(), 'origin' => $origin ) );
290
  $text = $origin_instance->get_label() . sprintf( ' <span class="count">(%s)</span>', number_format_i18n( $count ) );
291
  $views[ $origin ] = ( $given_origin !== $origin ? sprintf( '<a href="%s">%s</a>', $link, $text ) : $text );
@@ -299,8 +310,6 @@ class Tribe__Events__Aggregator__Record__List_Table extends WP_List_Table {
299
  * @return array
300
  */
301
  public function get_columns() {
302
- $post_type = $this->screen->post_type;
303
-
304
  $columns = array();
305
 
306
  switch ( $this->tab->get_slug() ) {
286
 
287
  foreach ( $origins as $origin => $count ) {
288
  $origin_instance = Tribe__Events__Aggregator__Records::instance()->get_by_origin( $origin );
289
+
290
+ if ( null === $origin_instance ) {
291
+ $debug_message = sprintf(
292
+ 'The aggregator origin "%s" contains records, but is not supported and was skipped in the counts.',
293
+ $origin
294
+ );
295
+ Tribe__Main::instance()->log()->log_debug( $debug_message, 'aggregator' );
296
+
297
+ continue;
298
+ }
299
+
300
  $link = $this->page->get_url( array( 'tab' => $this->tab->get_slug(), 'origin' => $origin ) );
301
  $text = $origin_instance->get_label() . sprintf( ' <span class="count">(%s)</span>', number_format_i18n( $count ) );
302
  $views[ $origin ] = ( $given_origin !== $origin ? sprintf( '<a href="%s">%s</a>', $link, $text ) : $text );
310
  * @return array
311
  */
312
  public function get_columns() {
 
 
313
  $columns = array();
314
 
315
  switch ( $this->tab->get_slug() ) {
src/Tribe/Main.php CHANGED
@@ -31,7 +31,7 @@ if ( ! class_exists( 'Tribe__Events__Main' ) ) {
31
  const POSTTYPE = 'tribe_events';
32
  const VENUE_POST_TYPE = 'tribe_venue';
33
  const ORGANIZER_POST_TYPE = 'tribe_organizer';
34
- const VERSION = '4.5.0.2';
35
  const MIN_ADDON_VERSION = '4.4';
36
  const MIN_COMMON_VERSION = '4.5.0.1';
37
  const WP_PLUGIN_URL = 'https://wordpress.org/extend/plugins/the-events-calendar/';
@@ -3040,11 +3040,11 @@ if ( ! class_exists( 'Tribe__Events__Main' ) ) {
3040
  /**
3041
  * Publishes associated venue/organizer when an event is published
3042
  *
3043
- * @param int $postID , the post ID
3044
- * @param WP_Post $post , the post object
3045
  *
3046
  */
3047
- public function publishAssociatedTypes( $postID, $post ) {
3048
 
3049
  // don't need to save the venue or organizer meta when we are just publishing
3050
  remove_action( 'save_post_' . self::VENUE_POST_TYPE, array( $this, 'save_venue_data' ), 16, 2 );
@@ -3090,7 +3090,6 @@ if ( ! class_exists( 'Tribe__Events__Main' ) ) {
3090
  // put the actions back
3091
  add_action( 'save_post_' . self::VENUE_POST_TYPE, array( $this, 'save_venue_data' ), 16, 2 );
3092
  add_action( 'save_post_' . self::ORGANIZER_POST_TYPE, array( $this, 'save_organizer_data' ), 16, 2 );
3093
-
3094
  }
3095
 
3096
  /**
31
  const POSTTYPE = 'tribe_events';
32
  const VENUE_POST_TYPE = 'tribe_venue';
33
  const ORGANIZER_POST_TYPE = 'tribe_organizer';
34
+ const VERSION = '4.5.1';
35
  const MIN_ADDON_VERSION = '4.4';
36
  const MIN_COMMON_VERSION = '4.5.0.1';
37
  const WP_PLUGIN_URL = 'https://wordpress.org/extend/plugins/the-events-calendar/';
3040
  /**
3041
  * Publishes associated venue/organizer when an event is published
3042
  *
3043
+ * @param int $post_id The post ID.
3044
+ * @param WP_Post $post The post object.
3045
  *
3046
  */
3047
+ public function publishAssociatedTypes( $post_id, $post ) {
3048
 
3049
  // don't need to save the venue or organizer meta when we are just publishing
3050
  remove_action( 'save_post_' . self::VENUE_POST_TYPE, array( $this, 'save_venue_data' ), 16, 2 );
3090
  // put the actions back
3091
  add_action( 'save_post_' . self::VENUE_POST_TYPE, array( $this, 'save_venue_data' ), 16, 2 );
3092
  add_action( 'save_post_' . self::ORGANIZER_POST_TYPE, array( $this, 'save_organizer_data' ), 16, 2 );
 
3093
  }
3094
 
3095
  /**
src/Tribe/Template/Month.php CHANGED
@@ -111,6 +111,14 @@ if ( ! class_exists( 'Tribe__Events__Template__Month' ) ) {
111
  */
112
  private $html_cache;
113
 
 
 
 
 
 
 
 
 
114
  /**
115
  * Whether the HTML cache is enabled
116
  * @var boolean
@@ -177,8 +185,8 @@ if ( ! class_exists( 'Tribe__Events__Template__Month' ) ) {
177
 
178
  // Cache the result of month/content.php
179
  if ( $this->use_cache ) {
180
- $cache_expiration = apply_filters( 'tribe_events_month_view_transient_expiration', HOUR_IN_SECONDS );
181
- $this->html_cache = new Tribe__Template_Part_Cache( 'month/content.php', serialize( $this->args ), $cache_expiration, 'save_post' );
182
  }
183
 
184
  $this->events_per_day = apply_filters( 'tribe_events_month_day_limit', tribe_get_option( 'monthEventAmount', '3' ) );
@@ -276,8 +284,41 @@ if ( ! class_exists( 'Tribe__Events__Template__Month' ) ) {
276
  * @return void
277
  */
278
  public function json_ld_markup() {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
279
  $events = wp_list_pluck( $this->events_in_month, 'ID' );
280
  Tribe__Events__JSON_LD__Event::instance()->markup( $events );
 
 
 
 
281
  }
282
 
283
  /**
@@ -461,17 +502,27 @@ if ( ! class_exists( 'Tribe__Events__Template__Month' ) ) {
461
  protected function set_events_in_month() {
462
  global $wpdb;
463
 
464
- $grid_start_datetime = tribe_beginning_of_day( $this->first_grid_date );
465
- $grid_end_datetime = tribe_end_of_day( $this->final_grid_date );
466
-
467
  $cache = new Tribe__Cache();
468
- $cache_key = 'events_in_month' . $grid_start_datetime . '-' . $grid_end_datetime;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
469
 
470
- // if we have a cached result, use that
471
- $cached_events = $cache->get( $cache_key, 'save_post' );
472
  if ( $cached_events !== false ) {
473
  $this->events_in_month = $cached_events;
474
-
475
  return;
476
  }
477
 
@@ -498,8 +549,8 @@ if ( ! class_exists( 'Tribe__Events__Template__Month' ) ) {
498
  AND $wpdb->posts.post_status IN('$post_stati')
499
  ORDER BY $wpdb->posts.menu_order ASC, DATE(tribe_event_start.meta_value) ASC, TIME(tribe_event_start.meta_value) ASC;
500
  ",
501
- $grid_start_datetime,
502
- $grid_end_datetime
503
  );
504
 
505
  $this->events_in_month = $wpdb->get_results( $events_request );
@@ -510,7 +561,20 @@ if ( ! class_exists( 'Tribe__Events__Template__Month' ) ) {
510
  update_postmeta_cache( $event_ids_in_month );
511
 
512
  // cache the found events in the object cache
513
- $cache->set( $cache_key, $this->events_in_month, 0, 'save_post' );
 
 
 
 
 
 
 
 
 
 
 
 
 
514
  }
515
 
516
  /**
111
  */
112
  private $html_cache;
113
 
114
+ /**
115
+ * Number of seconds before the month view cache (when enabled) should be
116
+ * invalidated.
117
+ *
118
+ * @var int
119
+ */
120
+ private $cache_expiration;
121
+
122
  /**
123
  * Whether the HTML cache is enabled
124
  * @var boolean
185
 
186
  // Cache the result of month/content.php
187
  if ( $this->use_cache ) {
188
+ $this->cache_expiration = apply_filters( 'tribe_events_month_view_transient_expiration', HOUR_IN_SECONDS );
189
+ $this->html_cache = new Tribe__Template_Part_Cache( 'month/content.php', serialize( $this->args ), $this->cache_expiration, 'save_post' );
190
  }
191
 
192
  $this->events_per_day = apply_filters( 'tribe_events_month_day_limit', tribe_get_option( 'monthEventAmount', '3' ) );
284
  * @return void
285
  */
286
  public function json_ld_markup() {
287
+ if ( ! $this->use_cache ) {
288
+ $this->produce_json_ld_markup( true );
289
+ return;
290
+ }
291
+
292
+ $cache = new Tribe__Cache();
293
+ $cache_key = $this->get_month_view_cache_key( 'events_month_jsonld' );
294
+ $json_ld = $cache->get_transient( $cache_key, 'save_post' );
295
+
296
+ if ( ! $json_ld ) {
297
+ $json_ld = $this->produce_json_ld_markup();
298
+ $cache->set_transient( $cache_key, $json_ld, $this->cache_expiration, 'save_post' );
299
+ }
300
+
301
+ echo $json_ld;
302
+ }
303
+
304
+ /**
305
+ * Renders or returns the JSON LD markup.
306
+ *
307
+ * @param bool $echo
308
+ *
309
+ * @return string
310
+ */
311
+ protected function produce_json_ld_markup( $echo = false ) {
312
+ if ( ! $echo ) {
313
+ ob_start();
314
+ }
315
+
316
  $events = wp_list_pluck( $this->events_in_month, 'ID' );
317
  Tribe__Events__JSON_LD__Event::instance()->markup( $events );
318
+
319
+ if ( ! $echo ) {
320
+ return ob_get_clean();
321
+ }
322
  }
323
 
324
  /**
502
  protected function set_events_in_month() {
503
  global $wpdb;
504
 
 
 
 
505
  $cache = new Tribe__Cache();
506
+ $cache_key = $this->get_month_view_cache_key( 'events_in_month' );
507
+
508
+ // We always use the object cache if available
509
+ $cache_getter = 'get';
510
+ $cache_setter = 'set';
511
+ $expiration = 0;
512
+
513
+ // If the site owner has explicitly enabled month view caching however let's use
514
+ // transients instead, to guarantee persistence
515
+ if ( $this->use_cache ) {
516
+ $cache_getter = 'get_transient';
517
+ $cache_setter = 'set_transient';
518
+ $expiration = $this->cache_expiration;
519
+ }
520
+
521
+ // If we have a cached result, use that
522
+ $cached_events = $cache->$cache_getter( $cache_key, 'save_post' );
523
 
 
 
524
  if ( $cached_events !== false ) {
525
  $this->events_in_month = $cached_events;
 
526
  return;
527
  }
528
 
549
  AND $wpdb->posts.post_status IN('$post_stati')
550
  ORDER BY $wpdb->posts.menu_order ASC, DATE(tribe_event_start.meta_value) ASC, TIME(tribe_event_start.meta_value) ASC;
551
  ",
552
+ tribe_beginning_of_day( $this->first_grid_date ),
553
+ tribe_end_of_day( $this->final_grid_date )
554
  );
555
 
556
  $this->events_in_month = $wpdb->get_results( $events_request );
561
  update_postmeta_cache( $event_ids_in_month );
562
 
563
  // cache the found events in the object cache
564
+ $cache->$cache_setter( $cache_key, $this->events_in_month, $expiration, 'save_post' );
565
+ }
566
+
567
+ /**
568
+ * Returns a string that can be used as a cache key for the current month.
569
+ *
570
+ * @param string $prefix
571
+ *
572
+ * @return string
573
+ */
574
+ protected function get_month_view_cache_key( $prefix ) {
575
+ $grid_start_datetime = tribe_beginning_of_day( $this->first_grid_date );
576
+ $grid_end_datetime = tribe_end_of_day( $this->final_grid_date );
577
+ return $prefix . '-' . $grid_start_datetime . '-' . $grid_end_datetime;
578
  }
579
 
580
  /**
src/Tribe/Venue.php CHANGED
@@ -450,4 +450,4 @@ class Tribe__Events__Venue {
450
  */
451
  include apply_filters( 'tribe_events_tribe_venue_new_form_fields', $template );
452
  }
453
- }
450
  */
451
  include apply_filters( 'tribe_events_tribe_venue_new_form_fields', $template );
452
  }
453
+ }
src/functions/template-tags/date.php CHANGED
@@ -14,92 +14,6 @@ if ( ! class_exists( 'Tribe__Events__Main' ) ) {
14
  return;
15
  }
16
 
17
- if ( ! function_exists( 'tribe_get_start_time' ) ) {
18
- /**
19
- * Start Time
20
- *
21
- * Returns the event start time
22
- *
23
- * @category Events
24
- * @see http://php.net/manual/en/function.date.php
25
- *
26
- * @param int $event (optional)
27
- * @param string $dateFormat Allows date and time formating using standard php syntax
28
- * @param string $timezone Timezone in which to present the date/time (or default behaviour if not set)
29
- *
30
- * @return string|null Time
31
- */
32
- function tribe_get_start_time( $event = null, $dateFormat = '', $timezone = null ) {
33
- if ( is_null( $event ) ) {
34
- global $post;
35
- $event = $post;
36
- }
37
-
38
- if ( is_numeric( $event ) ) {
39
- $event = get_post( $event );
40
- }
41
-
42
- if ( ! is_object( $event ) ) {
43
- return;
44
- }
45
-
46
- if ( tribe_event_is_all_day( $event ) ) {
47
- return;
48
- }
49
-
50
- $start_date = Tribe__Events__Timezones::event_start_timestamp( $event->ID, $timezone );
51
-
52
- if ( '' == $dateFormat ) {
53
- $dateFormat = tribe_get_time_format();
54
- }
55
-
56
- return tribe_format_date( $start_date, false, $dateFormat );
57
- }
58
- }
59
-
60
- if ( ! function_exists( 'tribe_get_end_time' ) ) {
61
- /**
62
- * End Time
63
- *
64
- * Returns the event end time
65
- *
66
- * @category Events
67
- * @see http://php.net/manual/en/function.date.php
68
- *
69
- * @param int $event (optional)
70
- * @param string $dateFormat Allows date and time formating using standard php syntax
71
- * @param string $timezone Timezone in which to present the date/time (or default behaviour if not set)
72
- *
73
- * @return string|null Time
74
- */
75
- function tribe_get_end_time( $event = null, $dateFormat = '', $timezone = null ) {
76
- if ( is_null( $event ) ) {
77
- global $post;
78
- $event = $post;
79
- }
80
-
81
- if ( is_numeric( $event ) ) {
82
- $event = get_post( $event );
83
- }
84
-
85
- if ( ! is_object( $event ) ) {
86
- return;
87
- }
88
-
89
- if ( tribe_event_is_all_day( $event ) ) {
90
- return;
91
- }
92
-
93
- $end_date = Tribe__Events__Timezones::event_end_timestamp( $event->ID, $timezone );
94
-
95
- if ( '' == $dateFormat ) {
96
- $dateFormat = tribe_get_time_format();
97
- }
98
-
99
- return tribe_format_date( $end_date, false, $dateFormat );
100
- }
101
- }
102
-
103
  if ( ! function_exists( 'tribe_get_display_end_date' ) ) {
104
  /**
105
  * End Date formatted for display
14
  return;
15
  }
16
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
  if ( ! function_exists( 'tribe_get_display_end_date' ) ) {
18
  /**
19
  * End Date formatted for display
src/resources/css/aggregator-page.css CHANGED
@@ -209,6 +209,7 @@
209
  text-overflow : ellipsis;
210
  display : inline-block;
211
  max-width : 100%;
 
212
  }
213
 
214
  .tribe-ea td.column-source {
209
  text-overflow : ellipsis;
210
  display : inline-block;
211
  max-width : 100%;
212
+ vertical-align: bottom;
213
  }
214
 
215
  .tribe-ea td.column-source {
src/resources/css/aggregator-page.min.css CHANGED
@@ -1 +1 @@
1
- .tribe-ea .tribe-ea-tab{padding:20px;margin-top:20px;border:1px solid #ccc;background-color:#fff}.tribe-ea .tribe-ea-tab .form-table th[scope=row]{width:140px}.tribe-ea .tribe-ea-tab .form-table tr{position:relative}.tribe-ea .tribe-ea-tab .subsubsub li{font-weight:700}.tribe-ea .tribe-ea-tab .subsubsub .count,.tribe-ea .tribe-ea-tab .subsubsub a{font-weight:400}.tribe-ea .tribe-ea-facebook-login{display:block;clear:both}.tribe-ea .tribe-ea-facebook-login .tribe-ea-status,.tribe-ea .tribe-ea-facebook-login iframe{display:block;float:left}.tribe-ea .tribe-ea-help{padding:4px;color:#0073aa;cursor:pointer}.tribe-ea .tribe-ea-hidden{display:none}.tribe-ea .tribe-ea-file-name{display:inline-block;font-style:italic;line-height:26px;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:auto}.tribe-ea .tribe-ea-raw-list{line-height:1.25em;list-style:square;margin-top:0;margin-left:22px;margin-bottom:6px}.tribe-ea .tribe-ea-raw-list>li{margin-bottom:2px}.tribe-ea .tribe-ea-total{font-weight:600}.tribe-ea .tribe-ea-size-tiny{width:75px}.tribe-ea .tribe-ea-size-small{width:100px}.tribe-ea .tribe-ea-size-medium{width:150px}.tribe-ea .tribe-ea-size-large{width:200px}.tribe-ea .tribe-ea-size-xlarge{width:405px}.tribe-ea .has-credentials{padding:0}.tribe-ea .tribe-button-row{padding-left:0}.tribe-ea .tribe-ea-fileicon{padding:3px}.tribe-ea .tribe-ea-field-readonly{line-height:30px}.tribe-ea .tribe-ea-field-readonly+.tribe-ea-field{margin-left:10px}.tribe-ea .tribe-ea-field.tribe-field-inline-dropdown{margin-left:0}.tribe-ea .tribe-credential-row{border-top:15px solid #fff}.tribe-ea .enter-credentials{background-color:#f8eceb;padding:16px;padding:1rem}.tribe-ea .enter-credentials.credentials-entered{background-color:#ebf2eb}.tribe-ea .enter-credentials.credentials-entered .tribe-credentials-prompt,.tribe-ea .enter-credentials.credentials-entered .tribe-fieldset{display:none}.tribe-ea .enter-credentials.credentials-entered .tribe-credentials-success{display:block;margin-bottom:0}.tribe-ea .enter-credentials input{max-width:250px;width:75%}.tribe-ea .enter-credentials .dashicons{font-size:24px;font-size:1.5rem;line-height:19.2px;line-height:1.2rem;margin-right:8px;margin-right:.5rem}.tribe-ea .enter-credentials .dashicons-warning{color:#d54e21}.tribe-ea .enter-credentials .dashicons-yes{color:#41a341;font-size:32px;font-size:2rem}.tribe-ea .enter-credentials #facebook_api_key{margin-right:24px;margin-right:1.5rem}.tribe-ea .enter-credentials .tribe-credentials-success{display:none}.tribe-ea .manage-column.column-frequency,.tribe-ea .manage-column.column-imported{width:15%}.tribe-ea .manage-column.column-total{width:15%;text-align:left}.tribe-ea .tribe-ea-tab-scheduled td.column-source{padding-left:10px}.tribe-ea .tribe-ea-tab-scheduled td.column-source :not(.row-actions) a:first-of-type{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:inline-block;max-width:100%}.tribe-ea td.column-source{padding-left:50px;position:relative}.tribe-ea td.column-total{text-align:left}.tribe-ea .dashicons.tribe-ea-status-failed{color:#dc3232}.tribe-ea .tribe-ea-report-status{position:absolute;width:45px;bottom:0;top:0;left:0;font-size:25px}.tribe-ea .tribe-ea-report-status>.dashicons{width:100%;padding-top:10px;font-size:inherit}.tribe-ea .tribe-ea-report-status .tribe-ea-status-success{color:#46b450}.tribe-ea .tribe-ea-report-status .tribe-ea-status-scheduled{color:#00a0d2}.tribe-ea .tribe-ea-report-status .tribe-ea-status-failed{color:#dc3232}.tribe-ea .tribe-ea-report-status .tribe-ea-status-pending{color:#ffb900;font-size:.8em}.tribe-ea .select2-container-multi .select2-choices .select2-search-field input{height:25px}.tribe-ea .select2-container{margin:0 1px 0 0}.tribe-ea input,.tribe-ea select{margin-left:0}.tribe-ea .tribe-refine{margin-bottom:4px;margin-bottom:.25rem}.tribe-ea .tribe-refine:last-child{margin-bottom:0}.tribe-ea .tribe-date-helper{color:gray}.tribe-ea .tribe-notice-tribe-missing-aggregator-license{background:url(../images/aggregator/ea-upsell-bkg.svg) transparent no-repeat;background-size:cover;border:none;padding:60px 0;text-align:center}.tribe-ea .tribe-notice-tribe-missing-aggregator-license .upsell-banner{margin-bottom:30px;margin-left:auto;margin-right:auto}.tribe-ea .tribe-notice-tribe-missing-aggregator-license h3{color:#fff;font-size:22px;font-weight:400;letter-spacing:1.5px}.tribe-ea .tribe-notice-tribe-missing-aggregator-license p{color:#fff;font-size:16px;font-weight:300;letter-spacing:1px;margin:0 auto 30px;width:50%}.tribe-ea .tribe-notice-tribe-missing-aggregator-license a:not(.tribe-button){color:#abd8e8}.tribe-ea .tribe-notice-tribe-missing-aggregator-license a:not(.tribe-button):active,.tribe-ea .tribe-notice-tribe-missing-aggregator-license a:not(.tribe-button):hover{color:#cbe1e8}.tribe-ea .tribe-button{border:1px solid;border-radius:3px;color:#fff;display:inline-block;font-size:13px;font-weight:300;letter-spacing:1.5px;padding:15px 30px;text-decoration:none;text-transform:uppercase}.tribe-ea .tribe-button-primary{background:#000;border-color:#000;margin-right:5px}.tribe-ea .tribe-button-secondary{background:transparent;border-color:#fff;margin-left:10px}.tribe-ea .dataTables_filter,.tribe-ea .dataTables_length{line-height:28px;margin-bottom:8px;margin-bottom:.5rem}.tribe-ea .dataTables_filter select,.tribe-ea .dataTables_length select{margin-top:-2px}.tribe-ea .tribe-view-filters.tribe-active+.tribe-filters{display:block}.tribe-ea dl.tribe-filters{display:none;margin-left:8px;margin-left:.5rem;margin-top:0}.tribe-ea dl.tribe-filters dt{clear:left;display:inline-block;font-weight:700;margin-right:4px;margin-right:.25rem}.tribe-ea dl.tribe-filters dd{display:inline;margin-left:0}.tribe-ea dl.tribe-filters dd:after{content:"";display:block;margin-bottom:4px;margin-bottom:.25rem}.tribe-ea .widefat td p{margin-bottom:.25em}.tribe-ea .tribe-ea-facebook-button{margin-left:32px;margin-left:2rem;margin-top:16px;margin-top:1rem}.tribe-ea-table-container{background-color:#fafafa;border:1px solid #e7e7e7;min-height:25px;padding:8px;padding:.5rem}.tribe-preview-container{display:none;padding-left:16px;padding-left:1rem;padding-right:16px;padding-right:1rem;margin-top:8px;margin-top:.5rem}.edit-form .tribe-preview-container,.show-data .tribe-preview-container,.tribe-preview-container.tribe-fetch-error,.tribe-preview-container.tribe-fetched,.tribe-preview-container.tribe-fetching{display:block}.tribe-preview-container.tribe-fetching .spinner-container{display:block;text-align:center}.tribe-preview-container.tribe-fetch-error .tribe-fetch-error-message{display:block}.tribe-preview-container .data-container{display:none}.tribe-preview-container .data-container.csv-data #tribe-csv-preview-message{display:block}.tribe-preview-container .data-container.csv-data #tribe-remote-preview-message{display:none}.tribe-preview-container .data-container #tribe-remote-preview-message{display:block}.tribe-preview-container>td{padding-left:0;padding-right:0}.tribe-preview-container .tribe-column-end-date,.tribe-preview-container .tribe-column-start-date,.tribe-preview-container .tribe-column-start-time{width:8em}.tribe-preview-container .spinner-container,.tribe-preview-container .tribe-fetch-error-message{display:none}.tribe-preview-container .spinner{float:none;margin-left:auto;margin-right:auto;visibility:visible}.tribe-preview-container .spinner-message{display:block;margin-top:4px;margin-top:.25rem}.tribe-preview-container .dataTable{float:left}.tribe-preview-container .dataTable .check-column input,.tribe-preview-container .dataTable .column-cb input{display:none}.tribe-preview-container .dataTable tfoot th,.tribe-preview-container .dataTable thead th{padding-right:20px;white-space:nowrap}.tribe-preview-container .dataTable thead tr+tr th{background:#f3f3f3;border-bottom:0;font-weight:700}.tribe-preview-container .tribe-td-height-limit{max-height:50px;overflow:hidden}.tribe-preview-container .display-checkboxes .check-column input,.tribe-preview-container .display-checkboxes .column-cb input{display:inline-block}.tribe-preview-container .tribe-preview-message{display:none;font-weight:700;line-height:26px}.tribe-preview-container #tribe-ea-field-post_status+label{margin-left:16px;margin-left:1rem}.tribe-default-settings{display:none;padding-bottom:16px;padding-bottom:1rem;padding-top:16px;padding-top:1rem}.tribe-default-settings label{display:inline-block;line-height:26px}.edit-form .tribe-default-settings,.edit-form .tribe-finalize-container,.show-data .data-container,.show-data .tribe-default-settings,.show-data .tribe-finalize-container{display:block}.edit-form .tribe-cancel{display:inline-block}.tribe-ea-form[data-origin=eventbrite] .tribe-finalize-container{display:block}.tribe-ea-form .tribe-bumpdown-manual,.tribe-ea-form .tribe-bumpdown-scheduled,.tribe-ea-form[data-origin=csv] .dataTables_filter,.tribe-ea-form[data-origin=csv] .dataTables_info,.tribe-ea-form[data-origin=csv] .dataTables_length,.tribe-ea-form[data-origin=csv] .dataTables_paginate{display:none}.tribe-ea-form[data-type=manual] .tribe-bumpdown-manual,.tribe-ea-form[data-type=schedule] .tribe-bumpdown-scheduled{display:inline-block}.tribe-cancel{display:none}.tribe-finalize-container{display:none;padding-top:24px;padding-top:1.5rem}.tribe-finalize-container .tribe-timezone-message{font-style:italic;padding-top:8px;padding-top:.5rem}.tribe-message-loader{display:none}.tribe-notice-aggregator-update-msg .progress{border:1px solid #ccc;float:left;margin-right:16px;margin-right:1rem;padding:1px;width:288px;width:18rem}.tribe-notice-aggregator-update-msg .progress .bar{background:#ffba00;height:16px;height:1rem;width:1%}.tribe-notice-aggregator-update-msg.completed{border-left-color:#46b450}.tribe-notice-aggregator-update-msg.completed .progress .bar{background:#7ad03a}.tribe-notice-aggregator-update-msg .tracker{margin:0;padding:0}.tribe-notice-aggregator-update-msg .tracker .tracked-item{display:none;margin:4px 0;margin:.25rem 0}.tribe-notice-aggregator-update-msg .tracker.has-created,.tribe-notice-aggregator-update-msg .tracker.has-skipped,.tribe-notice-aggregator-update-msg .tracker.has-updated{padding-bottom:4px;padding-bottom:.25rem}.tribe-notice-aggregator-update-msg .tracker.has-created .track-created,.tribe-notice-aggregator-update-msg .tracker.has-created .track-remaining,.tribe-notice-aggregator-update-msg .tracker.has-skipped .track-remaining,.tribe-notice-aggregator-update-msg .tracker.has-skipped .track-skipped,.tribe-notice-aggregator-update-msg .tracker.has-updated .track-remaining,.tribe-notice-aggregator-update-msg .tracker.has-updated .track-updated{display:block}.tribe-ea-tab-edit .tribe-bumpdown-trigger.tribe-ea-help{display:none}.select2-disabled{margin-bottom:0;color:gray;cursor:default}.tribe-upsell-subtitle{font-size:11px;color:gray}.select2-highlighted .tribe-upsell-subtitle{color:#fff}.tribe-aggregator-inactive .tribe-ea-tab-scheduled .widefat p,.tribe-aggregator-inactive .tribe-ea-tab-scheduled .widefat td,.tribe-aggregator-inactive .tribe-ea-tab-scheduled .widefat ul{color:#ccc}@media screen and (max-width:782px){.tribe-ea .form-table td{padding-right:0}.tribe-ea .form-table td input[type=text]{width:92%;display:inline-block}.tribe-ea td.tribe-dependent.tribe-active{display:block}.tribe-ea input+.tribe-ea-help{line-height:30px}}
1
+ .tribe-ea .tribe-ea-tab{padding:20px;margin-top:20px;border:1px solid #ccc;background-color:#fff}.tribe-ea .tribe-ea-tab .form-table th[scope=row]{width:140px}.tribe-ea .tribe-ea-tab .form-table tr{position:relative}.tribe-ea .tribe-ea-tab .subsubsub li{font-weight:700}.tribe-ea .tribe-ea-tab .subsubsub .count,.tribe-ea .tribe-ea-tab .subsubsub a{font-weight:400}.tribe-ea .tribe-ea-facebook-login{display:block;clear:both}.tribe-ea .tribe-ea-facebook-login .tribe-ea-status,.tribe-ea .tribe-ea-facebook-login iframe{display:block;float:left}.tribe-ea .tribe-ea-help{padding:4px;color:#0073aa;cursor:pointer}.tribe-ea .tribe-ea-hidden{display:none}.tribe-ea .tribe-ea-file-name{display:inline-block;font-style:italic;line-height:26px;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:auto}.tribe-ea .tribe-ea-raw-list{line-height:1.25em;list-style:square;margin-top:0;margin-left:22px;margin-bottom:6px}.tribe-ea .tribe-ea-raw-list>li{margin-bottom:2px}.tribe-ea .tribe-ea-total{font-weight:600}.tribe-ea .tribe-ea-size-tiny{width:75px}.tribe-ea .tribe-ea-size-small{width:100px}.tribe-ea .tribe-ea-size-medium{width:150px}.tribe-ea .tribe-ea-size-large{width:200px}.tribe-ea .tribe-ea-size-xlarge{width:405px}.tribe-ea .has-credentials{padding:0}.tribe-ea .tribe-button-row{padding-left:0}.tribe-ea .tribe-ea-fileicon{padding:3px}.tribe-ea .tribe-ea-field-readonly{line-height:30px}.tribe-ea .tribe-ea-field-readonly+.tribe-ea-field{margin-left:10px}.tribe-ea .tribe-ea-field.tribe-field-inline-dropdown{margin-left:0}.tribe-ea .tribe-credential-row{border-top:15px solid #fff}.tribe-ea .enter-credentials{background-color:#f8eceb;padding:16px;padding:1rem}.tribe-ea .enter-credentials.credentials-entered{background-color:#ebf2eb}.tribe-ea .enter-credentials.credentials-entered .tribe-credentials-prompt,.tribe-ea .enter-credentials.credentials-entered .tribe-fieldset{display:none}.tribe-ea .enter-credentials.credentials-entered .tribe-credentials-success{display:block;margin-bottom:0}.tribe-ea .enter-credentials input{max-width:250px;width:75%}.tribe-ea .enter-credentials .dashicons{font-size:24px;font-size:1.5rem;line-height:19.2px;line-height:1.2rem;margin-right:8px;margin-right:.5rem}.tribe-ea .enter-credentials .dashicons-warning{color:#d54e21}.tribe-ea .enter-credentials .dashicons-yes{color:#41a341;font-size:32px;font-size:2rem}.tribe-ea .enter-credentials #facebook_api_key{margin-right:24px;margin-right:1.5rem}.tribe-ea .enter-credentials .tribe-credentials-success{display:none}.tribe-ea .manage-column.column-frequency,.tribe-ea .manage-column.column-imported{width:15%}.tribe-ea .manage-column.column-total{width:15%;text-align:left}.tribe-ea .tribe-ea-tab-scheduled td.column-source{padding-left:10px}.tribe-ea .tribe-ea-tab-scheduled td.column-source :not(.row-actions) a:first-of-type{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:inline-block;max-width:100%;vertical-align:bottom}.tribe-ea td.column-source{padding-left:50px;position:relative}.tribe-ea td.column-total{text-align:left}.tribe-ea .dashicons.tribe-ea-status-failed{color:#dc3232}.tribe-ea .tribe-ea-report-status{position:absolute;width:45px;bottom:0;top:0;left:0;font-size:25px}.tribe-ea .tribe-ea-report-status>.dashicons{width:100%;padding-top:10px;font-size:inherit}.tribe-ea .tribe-ea-report-status .tribe-ea-status-success{color:#46b450}.tribe-ea .tribe-ea-report-status .tribe-ea-status-scheduled{color:#00a0d2}.tribe-ea .tribe-ea-report-status .tribe-ea-status-failed{color:#dc3232}.tribe-ea .tribe-ea-report-status .tribe-ea-status-pending{color:#ffb900;font-size:.8em}.tribe-ea .select2-container-multi .select2-choices .select2-search-field input{height:25px}.tribe-ea .select2-container{margin:0 1px 0 0}.tribe-ea input,.tribe-ea select{margin-left:0}.tribe-ea .tribe-refine{margin-bottom:4px;margin-bottom:.25rem}.tribe-ea .tribe-refine:last-child{margin-bottom:0}.tribe-ea .tribe-date-helper{color:gray}.tribe-ea .tribe-notice-tribe-missing-aggregator-license{background:url(../images/aggregator/ea-upsell-bkg.svg) transparent no-repeat;background-size:cover;border:none;padding:60px 0;text-align:center}.tribe-ea .tribe-notice-tribe-missing-aggregator-license .upsell-banner{margin-bottom:30px;margin-left:auto;margin-right:auto}.tribe-ea .tribe-notice-tribe-missing-aggregator-license h3{color:#fff;font-size:22px;font-weight:400;letter-spacing:1.5px}.tribe-ea .tribe-notice-tribe-missing-aggregator-license p{color:#fff;font-size:16px;font-weight:300;letter-spacing:1px;margin:0 auto 30px;width:50%}.tribe-ea .tribe-notice-tribe-missing-aggregator-license a:not(.tribe-button){color:#abd8e8}.tribe-ea .tribe-notice-tribe-missing-aggregator-license a:not(.tribe-button):active,.tribe-ea .tribe-notice-tribe-missing-aggregator-license a:not(.tribe-button):hover{color:#cbe1e8}.tribe-ea .tribe-button{border:1px solid;border-radius:3px;color:#fff;display:inline-block;font-size:13px;font-weight:300;letter-spacing:1.5px;padding:15px 30px;text-decoration:none;text-transform:uppercase}.tribe-ea .tribe-button-primary{background:#000;border-color:#000;margin-right:5px}.tribe-ea .tribe-button-secondary{background:transparent;border-color:#fff;margin-left:10px}.tribe-ea .dataTables_filter,.tribe-ea .dataTables_length{line-height:28px;margin-bottom:8px;margin-bottom:.5rem}.tribe-ea .dataTables_filter select,.tribe-ea .dataTables_length select{margin-top:-2px}.tribe-ea .tribe-view-filters.tribe-active+.tribe-filters{display:block}.tribe-ea dl.tribe-filters{display:none;margin-left:8px;margin-left:.5rem;margin-top:0}.tribe-ea dl.tribe-filters dt{clear:left;display:inline-block;font-weight:700;margin-right:4px;margin-right:.25rem}.tribe-ea dl.tribe-filters dd{display:inline;margin-left:0}.tribe-ea dl.tribe-filters dd:after{content:"";display:block;margin-bottom:4px;margin-bottom:.25rem}.tribe-ea .widefat td p{margin-bottom:.25em}.tribe-ea .tribe-ea-facebook-button{margin-left:32px;margin-left:2rem;margin-top:16px;margin-top:1rem}.tribe-ea-table-container{background-color:#fafafa;border:1px solid #e7e7e7;min-height:25px;padding:8px;padding:.5rem}.tribe-preview-container{display:none;padding-left:16px;padding-left:1rem;padding-right:16px;padding-right:1rem;margin-top:8px;margin-top:.5rem}.edit-form .tribe-preview-container,.show-data .tribe-preview-container,.tribe-preview-container.tribe-fetch-error,.tribe-preview-container.tribe-fetched,.tribe-preview-container.tribe-fetching{display:block}.tribe-preview-container.tribe-fetching .spinner-container{display:block;text-align:center}.tribe-preview-container.tribe-fetch-error .tribe-fetch-error-message{display:block}.tribe-preview-container .data-container{display:none}.tribe-preview-container .data-container.csv-data #tribe-csv-preview-message{display:block}.tribe-preview-container .data-container.csv-data #tribe-remote-preview-message{display:none}.tribe-preview-container .data-container #tribe-remote-preview-message{display:block}.tribe-preview-container>td{padding-left:0;padding-right:0}.tribe-preview-container .tribe-column-end-date,.tribe-preview-container .tribe-column-start-date,.tribe-preview-container .tribe-column-start-time{width:8em}.tribe-preview-container .spinner-container,.tribe-preview-container .tribe-fetch-error-message{display:none}.tribe-preview-container .spinner{float:none;margin-left:auto;margin-right:auto;visibility:visible}.tribe-preview-container .spinner-message{display:block;margin-top:4px;margin-top:.25rem}.tribe-preview-container .dataTable{float:left}.tribe-preview-container .dataTable .check-column input,.tribe-preview-container .dataTable .column-cb input{display:none}.tribe-preview-container .dataTable tfoot th,.tribe-preview-container .dataTable thead th{padding-right:20px;white-space:nowrap}.tribe-preview-container .dataTable thead tr+tr th{background:#f3f3f3;border-bottom:0;font-weight:700}.tribe-preview-container .tribe-td-height-limit{max-height:50px;overflow:hidden}.tribe-preview-container .display-checkboxes .check-column input,.tribe-preview-container .display-checkboxes .column-cb input{display:inline-block}.tribe-preview-container .tribe-preview-message{display:none;font-weight:700;line-height:26px}.tribe-preview-container #tribe-ea-field-post_status+label{margin-left:16px;margin-left:1rem}.tribe-default-settings{display:none;padding-bottom:16px;padding-bottom:1rem;padding-top:16px;padding-top:1rem}.tribe-default-settings label{display:inline-block;line-height:26px}.edit-form .tribe-default-settings,.edit-form .tribe-finalize-container,.show-data .data-container,.show-data .tribe-default-settings,.show-data .tribe-finalize-container{display:block}.edit-form .tribe-cancel{display:inline-block}.tribe-ea-form[data-origin=eventbrite] .tribe-finalize-container{display:block}.tribe-ea-form .tribe-bumpdown-manual,.tribe-ea-form .tribe-bumpdown-scheduled,.tribe-ea-form[data-origin=csv] .dataTables_filter,.tribe-ea-form[data-origin=csv] .dataTables_info,.tribe-ea-form[data-origin=csv] .dataTables_length,.tribe-ea-form[data-origin=csv] .dataTables_paginate{display:none}.tribe-ea-form[data-type=manual] .tribe-bumpdown-manual,.tribe-ea-form[data-type=schedule] .tribe-bumpdown-scheduled{display:inline-block}.tribe-cancel{display:none}.tribe-finalize-container{display:none;padding-top:24px;padding-top:1.5rem}.tribe-finalize-container .tribe-timezone-message{font-style:italic;padding-top:8px;padding-top:.5rem}.tribe-message-loader{display:none}.tribe-notice-aggregator-update-msg .progress{border:1px solid #ccc;float:left;margin-right:16px;margin-right:1rem;padding:1px;width:288px;width:18rem}.tribe-notice-aggregator-update-msg .progress .bar{background:#ffba00;height:16px;height:1rem;width:1%}.tribe-notice-aggregator-update-msg.completed{border-left-color:#46b450}.tribe-notice-aggregator-update-msg.completed .progress .bar{background:#7ad03a}.tribe-notice-aggregator-update-msg .tracker{margin:0;padding:0}.tribe-notice-aggregator-update-msg .tracker .tracked-item{display:none;margin:4px 0;margin:.25rem 0}.tribe-notice-aggregator-update-msg .tracker.has-created,.tribe-notice-aggregator-update-msg .tracker.has-skipped,.tribe-notice-aggregator-update-msg .tracker.has-updated{padding-bottom:4px;padding-bottom:.25rem}.tribe-notice-aggregator-update-msg .tracker.has-created .track-created,.tribe-notice-aggregator-update-msg .tracker.has-created .track-remaining,.tribe-notice-aggregator-update-msg .tracker.has-skipped .track-remaining,.tribe-notice-aggregator-update-msg .tracker.has-skipped .track-skipped,.tribe-notice-aggregator-update-msg .tracker.has-updated .track-remaining,.tribe-notice-aggregator-update-msg .tracker.has-updated .track-updated{display:block}.tribe-ea-tab-edit .tribe-bumpdown-trigger.tribe-ea-help{display:none}.select2-disabled{margin-bottom:0;color:gray;cursor:default}.tribe-upsell-subtitle{font-size:11px;color:gray}.select2-highlighted .tribe-upsell-subtitle{color:#fff}.tribe-aggregator-inactive .tribe-ea-tab-scheduled .widefat p,.tribe-aggregator-inactive .tribe-ea-tab-scheduled .widefat td,.tribe-aggregator-inactive .tribe-ea-tab-scheduled .widefat ul{color:#ccc}@media screen and (max-width:782px){.tribe-ea .form-table td{padding-right:0}.tribe-ea .form-table td input[type=text]{width:92%;display:inline-block}.tribe-ea td.tribe-dependent.tribe-active{display:block}.tribe-ea input+.tribe-ea-help{line-height:30px}}
src/resources/postcss/aggregator-page.pcss CHANGED
@@ -202,6 +202,7 @@
202
  text-overflow : ellipsis;
203
  display : inline-block;
204
  max-width : 100%;
 
205
  }
206
  }
207
  }
202
  text-overflow : ellipsis;
203
  display : inline-block;
204
  max-width : 100%;
205
+ vertical-align: bottom;
206
  }
207
  }
208
  }
the-events-calendar.php CHANGED
@@ -2,7 +2,7 @@
2
  /*
3
  Plugin Name: The Events Calendar
4
  Description: The Events Calendar is a carefully crafted, extensible plugin that lets you easily share your events. Beautiful. Solid. Awesome.
5
- Version: 4.5.0.2
6
  Author: Modern Tribe, Inc.
7
  Author URI: http://m.tri.be/1x
8
  Text Domain: the-events-calendar
2
  /*
3
  Plugin Name: The Events Calendar
4
  Description: The Events Calendar is a carefully crafted, extensible plugin that lets you easily share your events. Beautiful. Solid. Awesome.
5
+ Version: 4.5.1
6
  Author: Modern Tribe, Inc.
7
  Author URI: http://m.tri.be/1x
8
  Text Domain: the-events-calendar