Strong Testimonials - Version 2.39

Version Description

Download this release

Release Info

Developer machothemes
Plugin Icon 128x128 Strong Testimonials
Version 2.39
Comparing to
See all releases

Code changes from version 2.38.1 to 2.39

admin/about/class-strong-testimonials-about.php CHANGED
@@ -51,7 +51,6 @@ class Strong_Testimonials_About {
51
  * Print the About page.
52
  */
53
  public function about_page() {
54
- $major_minor = strtok( WPMTST_VERSION, '.' ) . '.' . strtok( '.' );
55
  $active_tab = isset( $_GET['tab'] ) ? $_GET['tab'] : 'how-to';
56
  $url = admin_url( 'edit.php?post_type=wpm-testimonial&page=about-strong-testimonials' );
57
  ?>
@@ -60,7 +59,7 @@ class Strong_Testimonials_About {
60
  <img class="wpmst-mascot" src="<?php echo esc_url( WPMTST_ADMIN_URL ); ?>/img/mascot.png" />
61
 
62
  <?php /* translators: %s is the plugin version number */ ?>
63
- <h1><?php printf( __( 'Welcome to Strong Testimonials %s', 'strong-testimonials' ), $major_minor ); ?></h1>
64
 
65
  <p class="about-text">
66
  <?php esc_html_e( 'Thank you for updating to the latest version!', 'strong-testimonials' ); ?>
51
  * Print the About page.
52
  */
53
  public function about_page() {
 
54
  $active_tab = isset( $_GET['tab'] ) ? $_GET['tab'] : 'how-to';
55
  $url = admin_url( 'edit.php?post_type=wpm-testimonial&page=about-strong-testimonials' );
56
  ?>
59
  <img class="wpmst-mascot" src="<?php echo esc_url( WPMTST_ADMIN_URL ); ?>/img/mascot.png" />
60
 
61
  <?php /* translators: %s is the plugin version number */ ?>
62
+ <h1><?php printf( __( 'Welcome to Strong Testimonials %s', 'strong-testimonials' ), WPMTST_VERSION ); ?></h1>
63
 
64
  <p class="about-text">
65
  <?php esc_html_e( 'Thank you for updating to the latest version!', 'strong-testimonials' ); ?>
admin/admin.php CHANGED
@@ -43,9 +43,7 @@ function wpmtst_update_check() {
43
  add_option( 'wpmtst_do_activation_redirect', true );
44
  }
45
 
46
- require_once WPMTST_ADMIN . 'class-strong-testimonials-updater.php';
47
- $updater = new Strong_Testimonials_Updater();
48
- $updater->update();
49
  }
50
 
51
  add_action( 'admin_init', 'wpmtst_update_check', 5 );
43
  add_option( 'wpmtst_do_activation_redirect', true );
44
  }
45
 
46
+ Strong_Testimonials_Updater::update();
 
 
47
  }
48
 
49
  add_action( 'admin_init', 'wpmtst_update_check', 5 );
admin/class-strong-testimonials-defaults.php CHANGED
@@ -394,29 +394,22 @@ class Strong_Testimonials_Defaults {
394
  'text' => _x( 'Required', 'Default message for required notice at top of form.', 'strong-testimonials' ),
395
  'enabled' => 1,
396
  ),
397
- 'captcha' => array(
398
- 'order' => 2,
399
- /* translators: Settings > Form > Messages tab */
400
- 'description' => _x( 'Captcha Label', 'description', 'strong-testimonials' ),
401
- 'text' => _x( 'Captcha', 'Default label for Captcha field on submission form.', 'strong-testimonials' ),
402
- 'required' => false,
403
- ),
404
  'form-submit-button' => array(
405
- 'order' => 3,
406
  /* translators: Settings > Form > Messages tab */
407
  'description' => _x( 'Submit Button', 'description', 'strong-testimonials' ),
408
  /* translators: Default label for the Submit button on testimonial form. */
409
  'text' => _x( 'Add Testimonial', 'the Submit button', 'strong-testimonials' ),
410
  ),
411
  'submission-error' => array(
412
- 'order' => 4,
413
  /* translators: Settings > Form > Messages tab */
414
  'description' => _x( 'Submission Error', 'description', 'strong-testimonials' ),
415
  /* translators: Default message for submission form error. */
416
  'text' => _x( 'There was a problem processing your testimonial.', 'error message', 'strong-testimonials' ),
417
  ),
418
  'submission-success' => array(
419
- 'order' => 5,
420
  /* translators: Settings > Form > Messages tab */
421
  'description' => _x( 'Submission Success', 'description', 'strong-testimonials' ),
422
  /* translators: Default message for submission form success message. */
@@ -449,9 +442,6 @@ class Strong_Testimonials_Defaults {
449
  'email_subject' => __( 'New testimonial for %BLOGNAME%', 'strong-testimonials' ),
450
  /* translators: Default message for new testimonial notification email. */
451
  'email_message' => __( 'New testimonial submission for %BLOGNAME%. This is awaiting action from the website administrator.', 'strong-testimonials' ),
452
- 'captcha' => '',
453
- 'honeypot_before' => false,
454
- 'honeypot_after' => false,
455
  'messages' => $default_messages,
456
  'scrolltop_success' => true,
457
  'scrolltop_success_offset' => 80,
@@ -462,7 +452,7 @@ class Strong_Testimonials_Defaults {
462
  'success_redirect_url' => '',
463
  );
464
 
465
- return $default_form_options;
466
  }
467
 
468
  /**
@@ -837,38 +827,4 @@ class Strong_Testimonials_Defaults {
837
  return $options;
838
  }
839
 
840
- /**
841
- * Build list of supported Captcha plugins.
842
- *
843
- * @since 2.28.5 In this class.
844
- */
845
- public static function get_captcha_plugins() {
846
- $plugins = array(
847
- 'google-captcha' => array(
848
- 'name' => 'Google Captcha by BestWebSoft (free)',
849
- 'desc' => __( '<strong>Recommended.</strong> The best choice for both Invisible reCAPTCHA and reCAPTCHA V2 ("I\'m not a robot" checkbox).', 'strong-testimonials' ),
850
- 'class' => 'Google_Captcha',
851
- 'file' => 'google-captcha/google-captcha.php',
852
- 'settings' => 'admin.php?page=google-captcha.php',
853
- 'search' => 'plugin-install.php?tab=search&s=Google+Captcha',
854
- 'url' => 'https://wordpress.org/plugins/google-captcha',
855
- 'installed' => false,
856
- 'active' => false,
857
- ),
858
- 'captcha-pro' => array(
859
- 'name' => 'Captcha Pro by BestWebSoft (premium)',
860
- 'desc' => __( 'An excellent plugin for math- and image-based captchas.', 'strong-testimonials' ),
861
- 'class' => 'Captcha_Pro',
862
- 'file' => 'captcha-pro/captcha_pro.php',
863
- 'settings' => 'admin.php?page=captcha_pro.php',
864
- 'search' => '',
865
- 'url' => 'https://bestwebsoft.com/products/wordpress/plugins/captcha/',
866
- 'installed' => false,
867
- 'active' => false,
868
- ),
869
- );
870
-
871
- return $plugins;
872
- }
873
-
874
  }
394
  'text' => _x( 'Required', 'Default message for required notice at top of form.', 'strong-testimonials' ),
395
  'enabled' => 1,
396
  ),
 
 
 
 
 
 
 
397
  'form-submit-button' => array(
398
+ 'order' => 2,
399
  /* translators: Settings > Form > Messages tab */
400
  'description' => _x( 'Submit Button', 'description', 'strong-testimonials' ),
401
  /* translators: Default label for the Submit button on testimonial form. */
402
  'text' => _x( 'Add Testimonial', 'the Submit button', 'strong-testimonials' ),
403
  ),
404
  'submission-error' => array(
405
+ 'order' => 3,
406
  /* translators: Settings > Form > Messages tab */
407
  'description' => _x( 'Submission Error', 'description', 'strong-testimonials' ),
408
  /* translators: Default message for submission form error. */
409
  'text' => _x( 'There was a problem processing your testimonial.', 'error message', 'strong-testimonials' ),
410
  ),
411
  'submission-success' => array(
412
+ 'order' => 4,
413
  /* translators: Settings > Form > Messages tab */
414
  'description' => _x( 'Submission Success', 'description', 'strong-testimonials' ),
415
  /* translators: Default message for submission form success message. */
442
  'email_subject' => __( 'New testimonial for %BLOGNAME%', 'strong-testimonials' ),
443
  /* translators: Default message for new testimonial notification email. */
444
  'email_message' => __( 'New testimonial submission for %BLOGNAME%. This is awaiting action from the website administrator.', 'strong-testimonials' ),
 
 
 
445
  'messages' => $default_messages,
446
  'scrolltop_success' => true,
447
  'scrolltop_success_offset' => 80,
452
  'success_redirect_url' => '',
453
  );
454
 
455
+ return apply_filters( 'wpmtst_default_form_options', $default_form_options );
456
  }
457
 
458
  /**
827
  return $options;
828
  }
829
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
830
  }
admin/class-strong-testimonials-updater.php CHANGED
@@ -12,27 +12,20 @@ class Strong_Testimonials_Updater {
12
  *
13
  * @var string
14
  */
15
- private $old_version;
16
 
17
  /**
18
  * Log steps during update process.
19
  *
20
  * @var array
21
  */
22
- private $new_log;
23
 
24
  /**
25
  * Strong_Testimonials_Updater constructor.
26
  */
27
  public function __construct() {
28
- $this->new_log = array();
29
- $this->old_version = get_option( 'wpmtst_plugin_version', false );
30
- if ( $this->old_version ) {
31
- $this->log( __CLASS__, 'old: ' . $this->old_version . ' --> new: ' . WPMTST_VERSION );
32
- }
33
- else {
34
- $this->log( __CLASS__, 'NEW INSTALL', WPMTST_VERSION );
35
- }
36
  }
37
 
38
  /**
@@ -42,7 +35,7 @@ class Strong_Testimonials_Updater {
42
  * @param string $entry
43
  * @param string $var
44
  */
45
- private function log( $name, $entry = '', $var = '' ) {
46
  if ( $name ) {
47
  $x = $name;
48
  if ( $entry ) {
@@ -51,20 +44,20 @@ class Strong_Testimonials_Updater {
51
  $x .= ' = ';
52
  if ( is_array( $var ) || is_object( $var ) ) {
53
  // log the text
54
- $this->new_log[] = $x;
55
  // then log the variable
56
- $this->new_log[] = $var;
57
  }
58
  else {
59
- $this->new_log[] = $x . $var;
60
  }
61
  }
62
  else {
63
- $this->new_log[] = $x;
64
  }
65
  }
66
  else {
67
- $this->new_log[] = $x;
68
  }
69
  }
70
  }
@@ -83,7 +76,7 @@ class Strong_Testimonials_Updater {
83
  * disabled (0) to enabled (1) in order for the property to
84
  * be displayed in the form editor.
85
  */
86
- public function update() {
87
  if ( get_transient( 'wpmtst_update_in_progress' ) ) {
88
  return;
89
  }
@@ -95,12 +88,12 @@ class Strong_Testimonials_Updater {
95
  *
96
  * @since 2.27.1
97
  */
98
- $this->add_caps();
99
 
100
  /**
101
  * Check DB version.
102
  */
103
- $this->update_db_check();
104
 
105
  /**
106
  * Let's start updating.
@@ -110,60 +103,54 @@ class Strong_Testimonials_Updater {
110
  /**
111
  * Options.
112
  */
113
- update_option( 'wpmtst_options', $this->update_options() );
114
 
115
  /**
116
  * Custom fields.
117
  */
118
- update_option( 'wpmtst_fields', $this->update_fields() );
119
 
120
  /**
121
  * Forms.
122
  */
123
- update_option( 'wpmtst_base_forms', $this->update_base_forms() );
124
- update_option( 'wpmtst_custom_forms', $this->update_custom_forms() );
125
- update_option( 'wpmtst_form_options', $this->update_form_options() );
126
 
127
  /**
128
  * Compatibility options.
129
  *
130
  * @since 2.28.0
131
  */
132
- update_option( 'wpmtst_compat_options', $this->update_compat_options() );
133
 
134
  /**
135
  * Overwrite default view options.
136
  *
137
  * @since 2.15.0
138
  */
139
- update_option( 'wpmtst_view_options', $this->update_view_options() );
140
 
141
  /**
142
  * Overwrite default view settings.
143
  *
144
  * @since 2.15.0
145
  */
146
- update_option( 'wpmtst_view_default', $this->update_default_view() );
147
 
148
  /**
149
  * Update views.
150
  */
151
- $this->update_views();
152
 
153
  /**
154
  * Convert nofollow
155
  */
156
  if ( ! isset( $history['2.23.0_convert_nofollow'] ) ) {
157
- $this->convert_nofollow();
158
- $this->update_history_log( '2.23.0_convert_nofollow' );
159
  }
160
 
161
- /**
162
- * Captcha plugin integrations.
163
- *
164
- * @since 2.29.0
165
- */
166
- update_option( 'wpmtst_captcha_plugins', $this->update_captcha_plugins() );
167
 
168
  /**
169
  * Legacy stuff.
@@ -178,13 +165,13 @@ class Strong_Testimonials_Updater {
178
  // Remove older attempts at admin notices.
179
  delete_option( 'wpmtst_news_flag' );
180
 
181
- $this->update_history_log( '2.28_new_update_process' );
182
  }
183
 
184
  /**
185
  * Fix add-ons.
186
  */
187
- $this->update_addons();
188
 
189
  /**
190
  * Update the plugin version.
@@ -194,12 +181,12 @@ class Strong_Testimonials_Updater {
194
  /**
195
  * Update log.
196
  */
197
- $this->update_log();
198
 
199
  /**
200
  * Update admin notices.
201
  */
202
- $this->update_admin_notices();
203
 
204
  delete_transient( 'wpmtst_update_in_progress' );
205
  }
@@ -209,7 +196,7 @@ class Strong_Testimonials_Updater {
209
  *
210
  * @since 2.30.9
211
  */
212
- public function update_addons() {
213
  $addons = get_option( 'wpmtst_addons' );
214
  if ( $addons ) {
215
  foreach ( $addons as $addon => $data ) {
@@ -224,13 +211,13 @@ class Strong_Testimonials_Updater {
224
  /**
225
  * Update the log in options table.
226
  */
227
- public function update_log() {
228
  $log = get_option( 'wpmtst_update_log', array() );
229
- $log[ current_time( 'mysql' ) ] = $this->new_log;
230
  update_option( 'wpmtst_update_log', $log );
231
  }
232
 
233
- public function update_admin_notices() {
234
  wpmtst_add_admin_notice( 'feedback-notice', true );
235
  wpmtst_add_admin_notice( 'upsell-notice', true );
236
  }
@@ -242,7 +229,7 @@ class Strong_Testimonials_Updater {
242
  *
243
  * @return bool|null|WP_Role
244
  */
245
- public function get_admins() {
246
  return get_role( 'administrator' );
247
  }
248
 
@@ -251,8 +238,8 @@ class Strong_Testimonials_Updater {
251
  *
252
  * @since 2.27.1
253
  */
254
- public function add_caps() {
255
- $admins = $this->get_admins();
256
  if ( $admins ) {
257
  $admins->add_cap( 'strong_testimonials_views' );
258
  $admins->add_cap( 'strong_testimonials_fields' );
@@ -260,7 +247,7 @@ class Strong_Testimonials_Updater {
260
  $admins->add_cap( 'strong_testimonials_about' );
261
  }
262
  else {
263
- $this->log( __FUNCTION__, 'failed' );
264
  }
265
  }
266
 
@@ -273,8 +260,8 @@ class Strong_Testimonials_Updater {
273
  *
274
  * @since 2.27.1
275
  */
276
- public function remove_caps() {
277
- if ( $admins = $this->get_admins() ) {
278
  $admins->remove_cap( 'strong_testimonials_views' );
279
  $admins->remove_cap( 'strong_testimonials_fields' );
280
  $admins->remove_cap( 'strong_testimonials_options' );
@@ -287,10 +274,10 @@ class Strong_Testimonials_Updater {
287
  *
288
  * @since 1.21.0 Checking for new table version.
289
  */
290
- public function update_db_check() {
291
  if ( get_option( 'wpmtst_db_version' ) != WPMST()->get_db_version() ) {
292
  wpmtst_update_tables();
293
- $this->log( __FUNCTION__, 'tables updated' );
294
  }
295
  }
296
 
@@ -299,7 +286,7 @@ class Strong_Testimonials_Updater {
299
  *
300
  * @param $event
301
  */
302
- public function update_history_log( $event ) {
303
  $history = get_option( 'wpmtst_history', array() );
304
  $history[ $event ] = current_time( 'mysql' );
305
  update_option( 'wpmtst_history', $history );
@@ -310,7 +297,7 @@ class Strong_Testimonials_Updater {
310
  *
311
  * @return array
312
  */
313
- public function update_options() {
314
  $options = get_option( 'wpmtst_options' );
315
  if ( ! $options ) {
316
  return Strong_Testimonials_Defaults::get_options();
@@ -319,7 +306,7 @@ class Strong_Testimonials_Updater {
319
  /**
320
  * Remove version 1 options
321
  */
322
- if ( version_compare( '2.0', $this->old_version ) ) {
323
 
324
  if ( isset( $options['captcha'] ) ) {
325
  unset( $options['captcha'] );
@@ -404,7 +391,7 @@ class Strong_Testimonials_Updater {
404
  *
405
  * @return array
406
  */
407
- public function update_fields() {
408
  return Strong_Testimonials_Defaults::get_fields();
409
  }
410
 
@@ -413,7 +400,7 @@ class Strong_Testimonials_Updater {
413
  *
414
  * @return array
415
  */
416
- public function update_base_forms() {
417
  return Strong_Testimonials_Defaults::get_base_forms();
418
  }
419
 
@@ -422,7 +409,7 @@ class Strong_Testimonials_Updater {
422
  *
423
  * @return array
424
  */
425
- public function update_custom_forms() {
426
  $custom_forms = get_option( 'wpmtst_custom_forms' );
427
  if ( ! $custom_forms ) {
428
  return Strong_Testimonials_Defaults::get_custom_forms();
@@ -496,7 +483,7 @@ class Strong_Testimonials_Updater {
496
  *
497
  * @return array
498
  */
499
- public function update_form_options() {
500
  $form_options = get_option( 'wpmtst_form_options' );
501
  if ( ! $form_options ) {
502
  return Strong_Testimonials_Defaults::get_form_options();
@@ -515,15 +502,6 @@ class Strong_Testimonials_Updater {
515
  $form_options['admin_email'] = $options['admin_email'];
516
  unset( $options['admin_email'] );
517
 
518
- $form_options['captcha'] = $options['captcha'];
519
- unset( $options['captcha'] );
520
-
521
- $form_options['honeypot_before'] = $options['honeypot_before'];
522
- unset( $options['honeypot_before'] );
523
-
524
- $form_options['honeypot_after'] = $options['honeypot_after'];
525
- unset( $options['honeypot_after'] );
526
-
527
  update_option( 'wpmtst_options', $options );
528
  }
529
 
@@ -556,6 +534,15 @@ class Strong_Testimonials_Updater {
556
  $form_options['messages']['required-field']['enabled'] = 1;
557
  }
558
 
 
 
 
 
 
 
 
 
 
559
  /**
560
  * Merge in new options.
561
  */
@@ -566,56 +553,14 @@ class Strong_Testimonials_Updater {
566
  // Merge nested arrays individually. Don't use array_merge_recursive.
567
 
568
  $form_options['default_recipient'] = array_merge( $defaults['default_recipient'], $form_options['default_recipient'] );
569
-
570
- foreach ( $defaults['messages'] as $key => $message ) {
571
- $form_options['messages'][ $key ] = array_merge( $message, $form_options['messages'][ $key ] );
572
- }
573
-
574
- /**
575
- * Convert Captcha plugin name.
576
- *
577
- * @since 2.28.5
578
- */
579
- switch ( $form_options['captcha'] ) {
580
-
581
- case 'gglcptch' :
582
- // Google Captcha by BestWebSoft
583
- $form_options['captcha'] = 'google-captcha';
584
- $notice = false;
585
- break;
586
-
587
- case 'bwsmathpro' :
588
- // Captcha Pro by BestWebSoft
589
- $form_options['captcha'] = 'captcha-pro';
590
- $notice = false;
591
- break;
592
-
593
- case 'miyoshi' :
594
- // Really Simple Captcha by Takayuki Miyoshi
595
- $form_options['captcha'] = 'really-simple-captcha';
596
- $notice = false;
597
- break;
598
-
599
- case 'advnore' :
600
- // Advanced noCaptcha reCaptcha by Shamim Hasan
601
- // Integration dropped @since 2.29.0
602
- $form_options['captcha'] = '';
603
- $notice = true;
604
- break;
605
-
606
- case 'bwsmath' :
607
- // Craptcha by simplywordpress
608
- // Integration dropped @since 2.29.0
609
- $form_options['captcha'] = '';
610
- $notice = true;
611
- break;
612
-
613
- default :
614
- $notice = false;
615
  }
616
 
617
  if ( ! isset( $history['2.29_captcha_options_changed'] ) ) {
618
- $this->update_history_log( '2.29_captcha_options_changed' );
619
  if ( $notice ) {
620
  wpmtst_add_admin_notice( 'captcha-options-changed', true );
621
  }
@@ -631,7 +576,7 @@ class Strong_Testimonials_Updater {
631
  *
632
  * @return array
633
  */
634
- public function update_compat_options() {
635
  $options = get_option( 'wpmtst_compat_options' );
636
  if ( ! $options ) {
637
  return Strong_Testimonials_Defaults::get_compat_options();
@@ -681,16 +626,7 @@ class Strong_Testimonials_Updater {
681
  *
682
  * @return array
683
  */
684
- public function update_captcha_plugins() {
685
- return Strong_Testimonials_Defaults::get_captcha_plugins();
686
- }
687
-
688
- /**
689
- * View options.
690
- *
691
- * @return array
692
- */
693
- public function update_view_options() {
694
  return Strong_Testimonials_Defaults::get_view_options();
695
  }
696
 
@@ -699,7 +635,7 @@ class Strong_Testimonials_Updater {
699
  *
700
  * @return array
701
  */
702
- public function update_default_view() {
703
  return apply_filters( 'wpmtst_view_default', Strong_Testimonials_Defaults::get_default_view() );
704
  }
705
 
@@ -708,7 +644,7 @@ class Strong_Testimonials_Updater {
708
  *
709
  * @uses wpmtst_save_view
710
  */
711
- public function update_views() {
712
  $views = wpmtst_get_views();
713
 
714
  if ( ! $views ) {
@@ -722,7 +658,7 @@ class Strong_Testimonials_Updater {
722
 
723
  $view_data = unserialize( $view['value'] );
724
  if ( ! is_array( $view_data ) ) {
725
- $this->log( __FUNCTION__, 'view ' . $view['id'] . ' data is not an array' );
726
  continue;
727
  }
728
 
@@ -737,30 +673,30 @@ class Strong_Testimonials_Updater {
737
  */
738
  unset( $view_data['compat'] );
739
 
740
- $view_data = $this->convert_template_name( $view_data );
741
- $view_data = $this->convert_background_color( $view_data );
742
- $view_data = $this->convert_form_ajax( $view_data );
743
- $view_data = $this->convert_layout( $view_data );
744
- $view_data = $this->convert_word_count( $view_data );
745
- $view_data = $this->convert_excerpt_length( $view_data );
746
- $view_data = $this->convert_more_text( $view_data );
747
- $view_data = $this->convert_modern_title( $view_data );
748
- $view_data = $this->convert_slideshow( $view_data );
749
- $view_data = $this->convert_title_link( $view_data );
750
- $view_data = $this->convert_pagination_type( $view_data );
751
  }
752
 
753
  /**
754
  * For version 2.30.
755
  */
756
  if ( ! isset( $history['2.30_new_template_structure'] ) ) {
757
- $view_data = $this->convert_template_structure( $view_data );
758
- $view_data = $this->convert_count( $view_data );
759
  if ( isset( $view_data['background']['example-font-color'] ) ) {
760
  unset( $view_data['background']['example-font-color'] );
761
  }
762
 
763
- $this->update_history_log( '2.30_new_template_structure' );
764
  }
765
 
766
  /**
@@ -769,8 +705,8 @@ class Strong_Testimonials_Updater {
769
  * @since 2.32.2
770
  */
771
  if ( ! isset( $history['2.32.2_carousel_breakpoints'] ) ) {
772
- $view['data'] = $this->add_carousel_breakpoints( $view_data );
773
- $this->update_history_log( '2.32.2_carousel_breakpoints' );
774
  }
775
 
776
  /**
@@ -832,7 +768,7 @@ class Strong_Testimonials_Updater {
832
  *
833
  * @return array
834
  */
835
- public function add_carousel_breakpoints( $view_data ) {
836
  if ( ! isset( $view_data['slideshow_settings']['max_slides'] ) ) {
837
  return $view_data;
838
  }
@@ -880,7 +816,7 @@ class Strong_Testimonials_Updater {
880
  *
881
  * @return array
882
  */
883
- public function convert_template_structure( $view_data ) {
884
  /*
885
  Array
886
  (
@@ -962,7 +898,7 @@ class Strong_Testimonials_Updater {
962
  *
963
  * @return array
964
  */
965
- public function convert_template_name( $view_data ) {
966
  // Change default template from empty to 'default:{type}'
967
  if ( ! $view_data['template'] ) {
968
  if ( 'form' == $view_data['mode'] ) {
@@ -999,10 +935,10 @@ class Strong_Testimonials_Updater {
999
  *
1000
  * @return array
1001
  */
1002
- public function convert_excerpt_length( $view_data ) {
1003
  if ( ! isset( $view_data['excerpt_length'] ) || ! $view_data['excerpt_length'] ) {
1004
  $default_view = Strong_Testimonials_Defaults::get_default_view();
1005
- $average_word_length = $this->get_average_word_length();
1006
 
1007
  if ( isset( $view_data['length'] ) && $view_data['length'] ) {
1008
  $word_count = round( $view_data['length'] / $average_word_length );
@@ -1029,7 +965,7 @@ class Strong_Testimonials_Updater {
1029
  *
1030
  * @return array
1031
  */
1032
- public function convert_more_text( $view_data ) {
1033
  if ( isset( $view_data['more_text'] ) ) {
1034
  if ( isset( $view_data['more_page'] ) && $view_data['more_page'] > 1 ) {
1035
  // convert more_page to toggle and move page id to more_page_id
@@ -1055,7 +991,7 @@ class Strong_Testimonials_Updater {
1055
  *
1056
  * @return array
1057
  */
1058
- public function convert_slideshow( $view_data ) {
1059
  if ( isset( $view_data['slideshow_settings'] ) ) {
1060
  return $view_data;
1061
  }
@@ -1128,7 +1064,7 @@ class Strong_Testimonials_Updater {
1128
  *
1129
  * @return array
1130
  */
1131
- public function convert_count( $view_data ) {
1132
  if ( isset( $view_data['all'] ) ) {
1133
  if ( $view_data['all'] ) {
1134
  $view_data['count'] = -1;
@@ -1146,7 +1082,7 @@ class Strong_Testimonials_Updater {
1146
  *
1147
  * @return array
1148
  */
1149
- public function convert_background_color( $view_data ) {
1150
  if ( ! is_array( $view_data['background'] ) ) {
1151
  $view_data['background'] = array(
1152
  'color' => $view_data['background'],
@@ -1164,7 +1100,7 @@ class Strong_Testimonials_Updater {
1164
  *
1165
  * @return array
1166
  */
1167
- public function convert_form_ajax( $view_data ) {
1168
  if ( isset( $view_data['form-ajax'] ) ) {
1169
  $view_data['form_ajax'] = $view_data['form-ajax'];
1170
  unset( $view_data['form-ajax'] );
@@ -1180,7 +1116,7 @@ class Strong_Testimonials_Updater {
1180
  *
1181
  * @return array
1182
  */
1183
- public function convert_layout( $view_data ) {
1184
  if ( isset( $view_data['pagination'] ) && $view_data['pagination'] ) {
1185
  if ( isset( $view_data['layout'] ) && 'masonry' == $view_data['layout'] ) {
1186
  $view_data['layout'] = '';
@@ -1199,7 +1135,7 @@ class Strong_Testimonials_Updater {
1199
  *
1200
  * @return array
1201
  */
1202
- public function convert_word_count( $view_data ) {
1203
  if ( isset( $view_data['word_count'] ) ) {
1204
  $view_data['excerpt_length'] = $view_data['word_count'];
1205
  unset( $view_data['word_count'] );
@@ -1216,11 +1152,11 @@ class Strong_Testimonials_Updater {
1216
  *
1217
  * @return array
1218
  */
1219
- public function convert_modern_title( $view_data ) {
1220
  if ( 'modern:content' == $view_data['template'] ) {
1221
  if ( ! isset( $history['2.12.4_convert_modern_template'] ) ) {
1222
  $view_data['title'] = 0;
1223
- $this->update_history_log( '2.12.4_convert_modern_template' );
1224
  }
1225
  }
1226
 
@@ -1236,7 +1172,7 @@ class Strong_Testimonials_Updater {
1236
  *
1237
  * @return array
1238
  */
1239
- public function convert_title_link( $view_data ) {
1240
  if ( ! isset( $view_data['title_link'] ) ) {
1241
  $view_data['title_link'] = 0;
1242
  }
@@ -1249,7 +1185,7 @@ class Strong_Testimonials_Updater {
1249
  *
1250
  * @since 2.23.0
1251
  */
1252
- public function convert_nofollow() {
1253
  $args = array(
1254
  'posts_per_page' => - 1,
1255
  'post_type' => 'wpm-testimonial',
@@ -1302,7 +1238,7 @@ class Strong_Testimonials_Updater {
1302
  *
1303
  * @return mixed
1304
  */
1305
- public function convert_pagination_type( $view_data ) {
1306
  if ( isset( $view_data['pagination_type'] ) ) {
1307
  $view_data['pagination_settings']['type'] = $view_data['pagination_type'];
1308
  unset( $view_data['pagination_type'] );
@@ -1326,7 +1262,7 @@ class Strong_Testimonials_Updater {
1326
  *
1327
  * @since 2.10.0
1328
  */
1329
- public function get_average_word_length() {
1330
  $args = array(
1331
  'posts_per_page' => - 1,
1332
  'post_type' => 'wpm-testimonial',
@@ -1353,3 +1289,5 @@ class Strong_Testimonials_Updater {
1353
  }
1354
 
1355
  }
 
 
12
  *
13
  * @var string
14
  */
15
+ private static $old_version;
16
 
17
  /**
18
  * Log steps during update process.
19
  *
20
  * @var array
21
  */
22
+ private static $new_log;
23
 
24
  /**
25
  * Strong_Testimonials_Updater constructor.
26
  */
27
  public function __construct() {
28
+
 
 
 
 
 
 
 
29
  }
30
 
31
  /**
35
  * @param string $entry
36
  * @param string $var
37
  */
38
+ private static function log( $name, $entry = '', $var = '' ) {
39
  if ( $name ) {
40
  $x = $name;
41
  if ( $entry ) {
44
  $x .= ' = ';
45
  if ( is_array( $var ) || is_object( $var ) ) {
46
  // log the text
47
+ self::$new_log[] = $x;
48
  // then log the variable
49
+ self::$new_log[] = $var;
50
  }
51
  else {
52
+ self::$new_log[] = $x . $var;
53
  }
54
  }
55
  else {
56
+ self::$new_log[] = $x;
57
  }
58
  }
59
  else {
60
+ self::$new_log[] = $x;
61
  }
62
  }
63
  }
76
  * disabled (0) to enabled (1) in order for the property to
77
  * be displayed in the form editor.
78
  */
79
+ public static function update() {
80
  if ( get_transient( 'wpmtst_update_in_progress' ) ) {
81
  return;
82
  }
88
  *
89
  * @since 2.27.1
90
  */
91
+ self::add_caps();
92
 
93
  /**
94
  * Check DB version.
95
  */
96
+ self::update_db_check();
97
 
98
  /**
99
  * Let's start updating.
103
  /**
104
  * Options.
105
  */
106
+ update_option( 'wpmtst_options', self::update_options() );
107
 
108
  /**
109
  * Custom fields.
110
  */
111
+ update_option( 'wpmtst_fields', self::update_fields() );
112
 
113
  /**
114
  * Forms.
115
  */
116
+ update_option( 'wpmtst_base_forms', self::update_base_forms() );
117
+ update_option( 'wpmtst_custom_forms', self::update_custom_forms() );
118
+ update_option( 'wpmtst_form_options', self::update_form_options() );
119
 
120
  /**
121
  * Compatibility options.
122
  *
123
  * @since 2.28.0
124
  */
125
+ update_option( 'wpmtst_compat_options', self::update_compat_options() );
126
 
127
  /**
128
  * Overwrite default view options.
129
  *
130
  * @since 2.15.0
131
  */
132
+ update_option( 'wpmtst_view_options', self::update_view_options() );
133
 
134
  /**
135
  * Overwrite default view settings.
136
  *
137
  * @since 2.15.0
138
  */
139
+ update_option( 'wpmtst_view_default', self::update_default_view() );
140
 
141
  /**
142
  * Update views.
143
  */
144
+ self::update_views();
145
 
146
  /**
147
  * Convert nofollow
148
  */
149
  if ( ! isset( $history['2.23.0_convert_nofollow'] ) ) {
150
+ self::convert_nofollow();
151
+ self::update_history_log( '2.23.0_convert_nofollow' );
152
  }
153
 
 
 
 
 
 
 
154
 
155
  /**
156
  * Legacy stuff.
165
  // Remove older attempts at admin notices.
166
  delete_option( 'wpmtst_news_flag' );
167
 
168
+ self::update_history_log( '2.28_new_update_process' );
169
  }
170
 
171
  /**
172
  * Fix add-ons.
173
  */
174
+ self::update_addons();
175
 
176
  /**
177
  * Update the plugin version.
181
  /**
182
  * Update log.
183
  */
184
+ self::update_log();
185
 
186
  /**
187
  * Update admin notices.
188
  */
189
+ self::update_admin_notices();
190
 
191
  delete_transient( 'wpmtst_update_in_progress' );
192
  }
196
  *
197
  * @since 2.30.9
198
  */
199
+ public static function update_addons() {
200
  $addons = get_option( 'wpmtst_addons' );
201
  if ( $addons ) {
202
  foreach ( $addons as $addon => $data ) {
211
  /**
212
  * Update the log in options table.
213
  */
214
+ public static function update_log() {
215
  $log = get_option( 'wpmtst_update_log', array() );
216
+ $log[ current_time( 'mysql' ) ] = self::$new_log;
217
  update_option( 'wpmtst_update_log', $log );
218
  }
219
 
220
+ public static function update_admin_notices() {
221
  wpmtst_add_admin_notice( 'feedback-notice', true );
222
  wpmtst_add_admin_notice( 'upsell-notice', true );
223
  }
229
  *
230
  * @return bool|null|WP_Role
231
  */
232
+ public static function get_admins() {
233
  return get_role( 'administrator' );
234
  }
235
 
238
  *
239
  * @since 2.27.1
240
  */
241
+ public static function add_caps() {
242
+ $admins = self::get_admins();
243
  if ( $admins ) {
244
  $admins->add_cap( 'strong_testimonials_views' );
245
  $admins->add_cap( 'strong_testimonials_fields' );
247
  $admins->add_cap( 'strong_testimonials_about' );
248
  }
249
  else {
250
+ self::log( __FUNCTION__, 'failed' );
251
  }
252
  }
253
 
260
  *
261
  * @since 2.27.1
262
  */
263
+ public static function remove_caps() {
264
+ if ( $admins = self::get_admins() ) {
265
  $admins->remove_cap( 'strong_testimonials_views' );
266
  $admins->remove_cap( 'strong_testimonials_fields' );
267
  $admins->remove_cap( 'strong_testimonials_options' );
274
  *
275
  * @since 1.21.0 Checking for new table version.
276
  */
277
+ public static function update_db_check() {
278
  if ( get_option( 'wpmtst_db_version' ) != WPMST()->get_db_version() ) {
279
  wpmtst_update_tables();
280
+ self::log( __FUNCTION__, 'tables updated' );
281
  }
282
  }
283
 
286
  *
287
  * @param $event
288
  */
289
+ public static function update_history_log( $event ) {
290
  $history = get_option( 'wpmtst_history', array() );
291
  $history[ $event ] = current_time( 'mysql' );
292
  update_option( 'wpmtst_history', $history );
297
  *
298
  * @return array
299
  */
300
+ public static function update_options() {
301
  $options = get_option( 'wpmtst_options' );
302
  if ( ! $options ) {
303
  return Strong_Testimonials_Defaults::get_options();
306
  /**
307
  * Remove version 1 options
308
  */
309
+ if ( version_compare( '2.0', self::$old_version ) ) {
310
 
311
  if ( isset( $options['captcha'] ) ) {
312
  unset( $options['captcha'] );
391
  *
392
  * @return array
393
  */
394
+ public static function update_fields() {
395
  return Strong_Testimonials_Defaults::get_fields();
396
  }
397
 
400
  *
401
  * @return array
402
  */
403
+ public static function update_base_forms() {
404
  return Strong_Testimonials_Defaults::get_base_forms();
405
  }
406
 
409
  *
410
  * @return array
411
  */
412
+ public static function update_custom_forms() {
413
  $custom_forms = get_option( 'wpmtst_custom_forms' );
414
  if ( ! $custom_forms ) {
415
  return Strong_Testimonials_Defaults::get_custom_forms();
483
  *
484
  * @return array
485
  */
486
+ public static function update_form_options() {
487
  $form_options = get_option( 'wpmtst_form_options' );
488
  if ( ! $form_options ) {
489
  return Strong_Testimonials_Defaults::get_form_options();
502
  $form_options['admin_email'] = $options['admin_email'];
503
  unset( $options['admin_email'] );
504
 
 
 
 
 
 
 
 
 
 
505
  update_option( 'wpmtst_options', $options );
506
  }
507
 
534
  $form_options['messages']['required-field']['enabled'] = 1;
535
  }
536
 
537
+ /**
538
+ * Delete form options
539
+ *
540
+ * @since 2.38
541
+ */
542
+ unset( $form_options['captcha'] );
543
+ unset( $form_options['messages']['captcha'] );
544
+
545
+
546
  /**
547
  * Merge in new options.
548
  */
553
  // Merge nested arrays individually. Don't use array_merge_recursive.
554
 
555
  $form_options['default_recipient'] = array_merge( $defaults['default_recipient'], $form_options['default_recipient'] );
556
+ foreach ( $defaults['messages'] as $key => $message ) {
557
+ if( isset( $form_options['messages'][ $key ] ) ) {
558
+ $form_options['messages'][ $key ] = array_merge( $message, $form_options['messages'][ $key ] );
559
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
560
  }
561
 
562
  if ( ! isset( $history['2.29_captcha_options_changed'] ) ) {
563
+ self::update_history_log( '2.29_captcha_options_changed' );
564
  if ( $notice ) {
565
  wpmtst_add_admin_notice( 'captcha-options-changed', true );
566
  }
576
  *
577
  * @return array
578
  */
579
+ public static function update_compat_options() {
580
  $options = get_option( 'wpmtst_compat_options' );
581
  if ( ! $options ) {
582
  return Strong_Testimonials_Defaults::get_compat_options();
626
  *
627
  * @return array
628
  */
629
+ public static function update_view_options() {
 
 
 
 
 
 
 
 
 
630
  return Strong_Testimonials_Defaults::get_view_options();
631
  }
632
 
635
  *
636
  * @return array
637
  */
638
+ public static function update_default_view() {
639
  return apply_filters( 'wpmtst_view_default', Strong_Testimonials_Defaults::get_default_view() );
640
  }
641
 
644
  *
645
  * @uses wpmtst_save_view
646
  */
647
+ public static function update_views() {
648
  $views = wpmtst_get_views();
649
 
650
  if ( ! $views ) {
658
 
659
  $view_data = unserialize( $view['value'] );
660
  if ( ! is_array( $view_data ) ) {
661
+ self::log( __FUNCTION__, 'view ' . $view['id'] . ' data is not an array' );
662
  continue;
663
  }
664
 
673
  */
674
  unset( $view_data['compat'] );
675
 
676
+ $view_data = self::convert_template_name( $view_data );
677
+ $view_data = self::convert_background_color( $view_data );
678
+ $view_data = self::convert_form_ajax( $view_data );
679
+ $view_data = self::convert_layout( $view_data );
680
+ $view_data = self::convert_word_count( $view_data );
681
+ $view_data = self::convert_excerpt_length( $view_data );
682
+ $view_data = self::convert_more_text( $view_data );
683
+ $view_data = self::convert_modern_title( $view_data );
684
+ $view_data = self::convert_slideshow( $view_data );
685
+ $view_data = self::convert_title_link( $view_data );
686
+ $view_data = self::convert_pagination_type( $view_data );
687
  }
688
 
689
  /**
690
  * For version 2.30.
691
  */
692
  if ( ! isset( $history['2.30_new_template_structure'] ) ) {
693
+ $view_data = self::convert_template_structure( $view_data );
694
+ $view_data = self::convert_count( $view_data );
695
  if ( isset( $view_data['background']['example-font-color'] ) ) {
696
  unset( $view_data['background']['example-font-color'] );
697
  }
698
 
699
+ self::update_history_log( '2.30_new_template_structure' );
700
  }
701
 
702
  /**
705
  * @since 2.32.2
706
  */
707
  if ( ! isset( $history['2.32.2_carousel_breakpoints'] ) ) {
708
+ $view['data'] = self::add_carousel_breakpoints( $view_data );
709
+ self::update_history_log( '2.32.2_carousel_breakpoints' );
710
  }
711
 
712
  /**
768
  *
769
  * @return array
770
  */
771
+ public static function add_carousel_breakpoints( $view_data ) {
772
  if ( ! isset( $view_data['slideshow_settings']['max_slides'] ) ) {
773
  return $view_data;
774
  }
816
  *
817
  * @return array
818
  */
819
+ public static function convert_template_structure( $view_data ) {
820
  /*
821
  Array
822
  (
898
  *
899
  * @return array
900
  */
901
+ public static function convert_template_name( $view_data ) {
902
  // Change default template from empty to 'default:{type}'
903
  if ( ! $view_data['template'] ) {
904
  if ( 'form' == $view_data['mode'] ) {
935
  *
936
  * @return array
937
  */
938
+ public static function convert_excerpt_length( $view_data ) {
939
  if ( ! isset( $view_data['excerpt_length'] ) || ! $view_data['excerpt_length'] ) {
940
  $default_view = Strong_Testimonials_Defaults::get_default_view();
941
+ $average_word_length = self::get_average_word_length();
942
 
943
  if ( isset( $view_data['length'] ) && $view_data['length'] ) {
944
  $word_count = round( $view_data['length'] / $average_word_length );
965
  *
966
  * @return array
967
  */
968
+ public static function convert_more_text( $view_data ) {
969
  if ( isset( $view_data['more_text'] ) ) {
970
  if ( isset( $view_data['more_page'] ) && $view_data['more_page'] > 1 ) {
971
  // convert more_page to toggle and move page id to more_page_id
991
  *
992
  * @return array
993
  */
994
+ public static function convert_slideshow( $view_data ) {
995
  if ( isset( $view_data['slideshow_settings'] ) ) {
996
  return $view_data;
997
  }
1064
  *
1065
  * @return array
1066
  */
1067
+ public static function convert_count( $view_data ) {
1068
  if ( isset( $view_data['all'] ) ) {
1069
  if ( $view_data['all'] ) {
1070
  $view_data['count'] = -1;
1082
  *
1083
  * @return array
1084
  */
1085
+ public static function convert_background_color( $view_data ) {
1086
  if ( ! is_array( $view_data['background'] ) ) {
1087
  $view_data['background'] = array(
1088
  'color' => $view_data['background'],
1100
  *
1101
  * @return array
1102
  */
1103
+ public static function convert_form_ajax( $view_data ) {
1104
  if ( isset( $view_data['form-ajax'] ) ) {
1105
  $view_data['form_ajax'] = $view_data['form-ajax'];
1106
  unset( $view_data['form-ajax'] );
1116
  *
1117
  * @return array
1118
  */
1119
+ public static function convert_layout( $view_data ) {
1120
  if ( isset( $view_data['pagination'] ) && $view_data['pagination'] ) {
1121
  if ( isset( $view_data['layout'] ) && 'masonry' == $view_data['layout'] ) {
1122
  $view_data['layout'] = '';
1135
  *
1136
  * @return array
1137
  */
1138
+ public static function convert_word_count( $view_data ) {
1139
  if ( isset( $view_data['word_count'] ) ) {
1140
  $view_data['excerpt_length'] = $view_data['word_count'];
1141
  unset( $view_data['word_count'] );
1152
  *
1153
  * @return array
1154
  */
1155
+ public static function convert_modern_title( $view_data ) {
1156
  if ( 'modern:content' == $view_data['template'] ) {
1157
  if ( ! isset( $history['2.12.4_convert_modern_template'] ) ) {
1158
  $view_data['title'] = 0;
1159
+ self::update_history_log( '2.12.4_convert_modern_template' );
1160
  }
1161
  }
1162
 
1172
  *
1173
  * @return array
1174
  */
1175
+ public static function convert_title_link( $view_data ) {
1176
  if ( ! isset( $view_data['title_link'] ) ) {
1177
  $view_data['title_link'] = 0;
1178
  }
1185
  *
1186
  * @since 2.23.0
1187
  */
1188
+ public static function convert_nofollow() {
1189
  $args = array(
1190
  'posts_per_page' => - 1,
1191
  'post_type' => 'wpm-testimonial',
1238
  *
1239
  * @return mixed
1240
  */
1241
+ public static function convert_pagination_type( $view_data ) {
1242
  if ( isset( $view_data['pagination_type'] ) ) {
1243
  $view_data['pagination_settings']['type'] = $view_data['pagination_type'];
1244
  unset( $view_data['pagination_type'] );
1262
  *
1263
  * @since 2.10.0
1264
  */
1265
+ public static function get_average_word_length() {
1266
  $args = array(
1267
  'posts_per_page' => - 1,
1268
  'post_type' => 'wpm-testimonial',
1289
  }
1290
 
1291
  }
1292
+
1293
+ new Strong_Testimonials_Updater();
admin/class-strong-testimonials-upsell.php CHANGED
@@ -12,6 +12,8 @@ class Strong_Testimonials_Upsell {
12
  add_action( 'wpmtst_before_fields_settings', array( $this, 'add_upsells_2' ) );
13
  add_action( 'wpmtst_view_editor_after_groups', array( $this, 'add_upsells_3' ) );
14
  add_action( 'wpmtst_view_editor_after_group_select', array( $this, 'add_upsells_4' ) );
 
 
15
  }
16
 
17
  public function add_general_upsell_notice() {
@@ -69,7 +71,10 @@ class Strong_Testimonials_Upsell {
69
  )
70
  );
71
  ?>
72
- <a class="button button-primary wpmtst-alert__upgrade-btn" target="_blank" href="<?php echo esc_url( WPMTST_STORE_UPGRADE_URL . '?utm_source=st-lite&utm_campaign=upsell&utm_medium=fields-country-selector-upsell' ); ?>"><?php esc_html_e( 'Upgrade to PRO', 'strong-testimonials' ); ?></a>
 
 
 
73
  </div>
74
  <?php
75
  endif;
@@ -89,7 +94,10 @@ class Strong_Testimonials_Upsell {
89
  )
90
  );
91
  ?>
92
- <a class="button button-primary wpmtst-alert__upgrade-btn" target="_blank" href="<?php echo esc_url( WPMTST_STORE_UPGRADE_URL . '?utm_source=st-lite&utm_campaign=upsell&utm_medium=fields-custom-fields-upsell' ); ?>"><?php esc_html_e( 'Upgrade to PRO', 'strong-testimonials' ); ?></a>
 
 
 
93
  </div>
94
  <?php
95
  endif;
@@ -109,7 +117,10 @@ class Strong_Testimonials_Upsell {
109
  )
110
  );
111
  ?>
112
- <a class="button button-primary wpmtst-alert__upgrade-btn" target="_blank" href="<?php echo esc_url( WPMTST_STORE_UPGRADE_URL . '?utm_source=st-lite&utm_campaign=upsell&utm_medium=fields-multiple-forms-upsell' ); ?>"><?php esc_html_e( 'Upgrade to PRO', 'strong-testimonials' ); ?></a>
 
 
 
113
  </div>
114
  <?php
115
  endif;
@@ -129,7 +140,10 @@ class Strong_Testimonials_Upsell {
129
  )
130
  );
131
  ?>
132
- <a class="button button-primary wpmtst-alert__upgrade-btn" target="_blank" href="<?php echo esc_url( WPMTST_STORE_UPGRADE_URL . '?utm_source=st-lite&utm_campaign=upsell&utm_medium=views-review-markup-upsell' ); ?>"><?php esc_html_e( 'Upgrade to PRO', 'strong-testimonials' ); ?></a>
 
 
 
133
  </div>
134
  <?php
135
  endif;
@@ -149,12 +163,97 @@ class Strong_Testimonials_Upsell {
149
  )
150
  );
151
  ?>
152
- <a class="button button-primary wpmtst-alert__upgrade-btn" target="_blank" href="<?php echo esc_url( WPMTST_STORE_UPGRADE_URL . '?utm_source=st-lite&utm_campaign=upsell&utm_medium=views-advanced-views-upsell' ); ?>"><?php esc_html_e( 'Upgrade to PRO', 'strong-testimonials' ); ?></a>
 
 
 
153
  </div>
154
  <?php
155
  endif;
156
  }
157
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
158
 
159
 
160
  }
12
  add_action( 'wpmtst_before_fields_settings', array( $this, 'add_upsells_2' ) );
13
  add_action( 'wpmtst_view_editor_after_groups', array( $this, 'add_upsells_3' ) );
14
  add_action( 'wpmtst_view_editor_after_group_select', array( $this, 'add_upsells_4' ) );
15
+ add_action( 'wpmtst_fields_before_fields_editor_preview', array( $this, 'add_upsells_5' ) );
16
+ add_action( 'wpmtst_after_form_settings', array( $this, 'add_upsells_6' ) );
17
  }
18
 
19
  public function add_general_upsell_notice() {
71
  )
72
  );
73
  ?>
74
+ <p>
75
+ <a class="button" target="_blank" href="<?php echo esc_url( WPMTST_STORE_URL . '/extensions/country-selector?utm_source=st-lite&utm_campaign=upsell&utm_medium=fields-country-selector-upsell' ); ?>"><?php esc_html_e( 'Learn More', 'strong-testimonials' ); ?></a>
76
+ <a class="button button-primary" target="_blank" href="<?php echo esc_url( WPMTST_STORE_UPGRADE_URL . '?utm_source=st-lite&utm_campaign=upsell&utm_medium=fields-country-selector-upsell' ); ?>"><?php esc_html_e( 'Upgrade', 'strong-testimonials' ); ?></a>
77
+ </p>
78
  </div>
79
  <?php
80
  endif;
94
  )
95
  );
96
  ?>
97
+ <p>
98
+ <a class="button" target="_blank" href="<?php echo esc_url( WPMTST_STORE_URL . '/extensions/custom-fields?utm_source=st-lite&utm_campaign=upsell&utm_medium=fields-custom-fields-upsell' ); ?>"><?php esc_html_e( 'Learn More', 'strong-testimonials' ); ?></a>
99
+ <a class="button button-primary" target="_blank" href="<?php echo esc_url( WPMTST_STORE_UPGRADE_URL . '?utm_source=st-lite&utm_campaign=upsell&utm_medium=fields-custom-fields-upsell' ); ?>"><?php esc_html_e( 'Upgrade', 'strong-testimonials' ); ?></a>
100
+ </p>
101
  </div>
102
  <?php
103
  endif;
117
  )
118
  );
119
  ?>
120
+ <p>
121
+ <a class="button" target="_blank" href="<?php echo esc_url( WPMTST_STORE_URL . '/extensions/multiple-forms?utm_source=st-lite&utm_campaign=upsell&utm_medium=fields-multiple-forms-upsell' ); ?>"><?php esc_html_e( 'Learn More', 'strong-testimonials' ); ?></a>
122
+ <a class="button button-primary" target="_blank" href="<?php echo esc_url( WPMTST_STORE_UPGRADE_URL . '?utm_source=st-lite&utm_campaign=upsell&utm_medium=fields-multiple-forms-upsell' ); ?>"><?php esc_html_e( 'Upgrade', 'strong-testimonials' ); ?></a>
123
+ </p>
124
  </div>
125
  <?php
126
  endif;
140
  )
141
  );
142
  ?>
143
+ <p>
144
+ <a class="button" target="_blank" href="<?php echo esc_url( WPMTST_STORE_URL . '/extensions/review-markup?utm_source=st-lite&utm_campaign=upsell&utm_medium=views-review-markup-upsell' ); ?>"><?php esc_html_e( 'Learn More', 'strong-testimonials' ); ?></a>
145
+ <a class="button button-primary" target="_blank" href="<?php echo esc_url( WPMTST_STORE_UPGRADE_URL . '?utm_source=st-lite&utm_campaign=upsell&utm_medium=views-review-markup-upsell' ); ?>"><?php esc_html_e( 'Upgrade', 'strong-testimonials' ); ?></a>
146
+ </p>
147
  </div>
148
  <?php
149
  endif;
163
  )
164
  );
165
  ?>
166
+ <p>
167
+ <a class="button" target="_blank" href="<?php echo esc_url( WPMTST_STORE_URL . '/extensions/advanced-views?utm_source=st-lite&utm_campaign=upsell&utm_medium=views-advanced-views-upsell' ); ?>"><?php esc_html_e( 'Learn More', 'strong-testimonials' ); ?></a>
168
+ <a class="button button-primary" target="_blank" href="<?php echo esc_url( WPMTST_STORE_UPGRADE_URL . '?utm_source=st-lite&utm_campaign=upsell&utm_medium=views-advanced-views-upsell' ); ?>"><?php esc_html_e( 'Upgrade', 'strong-testimonials' ); ?></a>
169
+ </p>
170
  </div>
171
  <?php
172
  endif;
173
  }
174
 
175
+ public function add_upsells_5() {
176
+ if ( ! defined( 'WPMTST_CAPTCHA_VERSION' ) ) :
177
+ ?>
178
+ <div class="wpmtst-alert">
179
+ <?php
180
+ printf(
181
+ esc_html__( 'Protect your form against spam with the %s extension.', 'strong-testimonials' ),
182
+ sprintf(
183
+ '<a href="%s" target="_blank">%s</a>',
184
+ esc_url( WPMTST_STORE_URL . '/extensions/captcha?utm_source=st-lite&utm_campaign=upsell&utm_medium=form-settings-upsell' ),
185
+ esc_html__( 'Strong Testimonials: Captcha', 'strong-testimonials' )
186
+ )
187
+ );
188
+ ?>
189
+ <p>
190
+ <a class="button" target="_blank" href="<?php echo esc_url( WPMTST_STORE_URL . '/extensions/captcha?utm_source=st-lite&utm_campaign=upsell&utm_medium=form-settings-upsell' ); ?>"><?php esc_html_e( 'Learn More', 'strong-testimonials' ); ?></a>
191
+ <a class="button button-primary" target="_blank" href="<?php echo esc_url( WPMTST_STORE_UPGRADE_URL . '?utm_source=st-lite&utm_campaign=upsell&utm_medium=form-settings-captcha-upsell' ); ?>"><?php esc_html_e( 'Upgrade', 'strong-testimonials' ); ?></a>
192
+ </p>
193
+ </div>
194
+ <?php
195
+ endif;
196
+ }
197
+
198
+ public function add_upsells_6() {
199
+ if ( defined( 'WPMTST_CAPTCHA_VERSION' ) ) {
200
+ return;
201
+ }
202
+ ?>
203
+ <hr>
204
+
205
+ <h3><?php esc_html_e( 'Form Spam Control', 'strong-testimonials' ); ?></h3>
206
+
207
+ <div class="wpmtst-alert">
208
+ <?php
209
+ printf(
210
+ esc_html__( 'Protect your form against spam. Add Google recaptcha or honeypots with the %s extension.', 'strong-testimonials' ),
211
+ sprintf(
212
+ '<a href="%s" target="_blank">%s</a>',
213
+ esc_url( WPMTST_STORE_URL . '/extensions/captcha?utm_source=st-lite&utm_campaign=upsell&utm_medium=form-settings-upsell' ),
214
+ esc_html__( 'Strong Testimonials: Captcha', 'strong-testimonials' )
215
+ )
216
+ );
217
+ ?>
218
+ <p>
219
+ <a class="button" target="_blank" href="<?php echo esc_url( WPMTST_STORE_URL . '/extensions/captcha?utm_source=st-lite&utm_campaign=upsell&utm_medium=form-settings-upsell' ); ?>"><?php esc_html_e( 'Learn More', 'strong-testimonials' ); ?></a>
220
+ <a class="button button-primary" target="_blank" href="<?php echo esc_url( WPMTST_STORE_UPGRADE_URL . '?utm_source=st-lite&utm_campaign=upsell&utm_medium=form-settings-captcha-upsell' ); ?>"><?php esc_html_e( 'Upgrade', 'strong-testimonials' ); ?></a>
221
+ </p>
222
+ </div>
223
+
224
+ <table class="form-table" cellpadding="0" cellspacing="0">
225
+ <tr>
226
+ <th scope="row">
227
+ <label>
228
+ <?php esc_html_e( 'Honeypot', 'strong-testimonials' ); ?>
229
+ </label>
230
+ </th>
231
+ <td>
232
+ <p>
233
+ <?php esc_html_e( 'These methods for trapping spambots are both time-tested and widely used. May be used simultaneously for more protection.', 'strong-testimonials' ); ?>
234
+ </p>
235
+ </td>
236
+ </tr>
237
+ <tr valign="top">
238
+ <th scope="row">
239
+ <label>
240
+ <a name="captcha-section"></a><?php esc_html_e( 'Captcha', 'strong-testimonials' ); ?>
241
+ </label>
242
+ </th>
243
+ <td>
244
+ <?php esc_html_e( 'Google reCAPTCHA prompts visitors to check a box to prove that they’re not a robot before they submit the form.', 'strong-testimonials' ); ?>
245
+ <br/>
246
+ <?php esc_html_e( 'In some cases, they’re prompted to complete another task, like identify a string of letters.', 'strong-testimonials' ); ?>
247
+ <br/>
248
+ <?php esc_html_e( 'This method makes it difficult for spambots to complete form submissions.', 'strong-testimonials' ); ?>
249
+ </td>
250
+ </tr>
251
+ </table>
252
+ <?php
253
+ }
254
+
255
+
256
+
257
 
258
 
259
  }
admin/custom-fields.php CHANGED
@@ -205,6 +205,7 @@ function wpmtst_settings_custom_fields( $form_id = 1 ) {
205
  <h3><?php esc_html_e( 'Basic Preview', 'strong-testimonials' ); ?></h3>
206
  <p><?php esc_html_e( 'Only to demonstrate the fields. May look different in your theme.', 'strong-testimonials' ); ?></p>
207
  </div>
 
208
  <div id="fields-editor-preview">
209
  <div><!-- placeholder --></div>
210
  </div>
205
  <h3><?php esc_html_e( 'Basic Preview', 'strong-testimonials' ); ?></h3>
206
  <p><?php esc_html_e( 'Only to demonstrate the fields. May look different in your theme.', 'strong-testimonials' ); ?></p>
207
  </div>
208
+ <?php do_action( 'wpmtst_fields_before_fields_editor_preview' ); ?>
209
  <div id="fields-editor-preview">
210
  <div><!-- placeholder --></div>
211
  </div>
admin/settings/class-strong-testimonials-settings-form.php CHANGED
@@ -137,10 +137,6 @@ class Strong_Testimonials_Settings_Form {
137
  $input['email_subject'] = isset( $input['email_subject'] ) ? wp_kses_post( trim( $input['email_subject'] ) ) : '';
138
  $input['email_message'] = isset( $input['email_message'] ) ? wp_kses_post( rtrim( $input['email_message'] ) ) : '';
139
 
140
- $input['honeypot_before'] = wpmtst_sanitize_checkbox( $input, 'honeypot_before' );
141
- $input['honeypot_after'] = wpmtst_sanitize_checkbox( $input, 'honeypot_after' );
142
- $input['captcha'] = sanitize_text_field( $input['captcha'] );
143
-
144
  foreach ( $input['messages'] as $key => $message ) {
145
  if ( 'submission-success' == $key ) {
146
  $input['messages'][ $key ]['text'] = $message['text'];
@@ -198,7 +194,7 @@ class Strong_Testimonials_Settings_Form {
198
  unset( $input['success_redirect_2'] );
199
  //ksort( $input );
200
 
201
- return $input;
202
  }
203
 
204
  /**
137
  $input['email_subject'] = isset( $input['email_subject'] ) ? wp_kses_post( trim( $input['email_subject'] ) ) : '';
138
  $input['email_message'] = isset( $input['email_message'] ) ? wp_kses_post( rtrim( $input['email_message'] ) ) : '';
139
 
 
 
 
 
140
  foreach ( $input['messages'] as $key => $message ) {
141
  if ( 'submission-success' == $key ) {
142
  $input['messages'][ $key ]['text'] = $message['text'];
194
  unset( $input['success_redirect_2'] );
195
  //ksort( $input );
196
 
197
+ return apply_filters( 'wpmtst_sanitize_form_options', $input );
198
  }
199
 
200
  /**
admin/settings/partials/form.php CHANGED
@@ -6,34 +6,7 @@
6
  */
7
  $pages_list = wpmtst_get_pages();
8
  $form_options = get_option( 'wpmtst_form_options' );
9
- $plugins = apply_filters( 'wpmtst_captcha_plugins', get_option( 'wpmtst_captcha_plugins', array() ) );
10
 
11
- /**
12
- * If integration with selected Captcha plugin has been removed, disable Captcha.
13
- */
14
- if ( ! is_array( $plugins ) || ! in_array( $form_options['captcha'], array_keys( $plugins ) ) ) {
15
- $form_options['captcha'] = '';
16
- update_option( 'wpmtst_form_options', $form_options );
17
- }
18
-
19
- foreach ( $plugins as $key => $plugin ) {
20
-
21
- if ( file_exists( WP_PLUGIN_DIR . '/' . $plugin['file'] ) ) {
22
- $plugins[ $key ]['installed'] = true;
23
- }
24
-
25
- $plugins[ $key ]['active'] = is_plugin_active( $plugin['file'] );
26
-
27
- /**
28
- * If current Captcha plugin has been deactivated, disable Captcha
29
- * so corresponding div does not appear on front-end form.
30
- */
31
- if ( $key == $form_options['captcha'] && ! $plugins[ $key ]['active'] ) {
32
- $form_options['captcha'] = '';
33
- update_option( 'wpmtst_form_options', $form_options );
34
- }
35
-
36
- }
37
  ?>
38
  <input type="hidden"
39
  name="wpmtst_form_options[default_recipient]"
@@ -255,122 +228,4 @@ foreach ( $plugins as $key => $plugin ) {
255
  </tr>
256
  </table>
257
 
258
- <?php
259
- /**
260
- * ========================================
261
- * Spam Control
262
- * ========================================
263
- */
264
- ?>
265
- <hr>
266
- <h3><?php _e( 'Form Spam Control', 'strong-testimonials' ); ?></h3>
267
-
268
- <table class="form-table" cellpadding="0" cellspacing="0">
269
- <tr>
270
- <th scope="row">
271
- <label>
272
- <?php _ex( 'Honeypot', 'spam control techniques', 'strong-testimonials' ); ?>
273
- </label>
274
- </th>
275
- <td>
276
- <p>
277
- <?php _e( 'These methods for trapping spambots are both time-tested and widely used. May be used simultaneously for more protection.', 'strong-testimonials' ); ?>
278
- </p>
279
- <p>
280
- <?php _e( 'However, honeypots may not be compatible with WP-SpamShield, Ajax page loading, caching or minification.', 'strong-testimonials' ); ?>
281
- </p>
282
- <p>
283
- <?php _e( 'If your form is not working properly, try disabling these.', 'strong-testimonials' ); ?>
284
- </p>
285
- <?php // TODO Add link to article that explains Ajax page loading. ?>
286
- <ul>
287
- <li class="checkbox">
288
- <label>
289
- <input type="checkbox"
290
- name="wpmtst_form_options[honeypot_before]" <?php checked( $form_options['honeypot_before'] ); ?>/>
291
- <?php _e( 'Before', 'strong-testimonials' ); ?>
292
- </label>
293
- <p class="description"><?php _e( 'Adds a new empty field that is invisible to humans. Spambots tend to fill in every field they find in the form. Empty field = human. Not empty = spambot.', 'strong-testimonials' ); ?></p>
294
- </li>
295
- <li class="checkbox">
296
- <label>
297
- <input type="checkbox"
298
- name="wpmtst_form_options[honeypot_after]" <?php checked( $form_options['honeypot_after'] ); ?>/>
299
- <?php _e( 'After', 'strong-testimonials' ); ?>
300
- </label>
301
- <p class="description"><?php _e( 'Adds a new field as soon as the form is submitted. Spambots cannot run JavaScript so the new field never gets added. New field = human. Missing = spambot.', 'strong-testimonials' ); ?></p>
302
- </li>
303
- </ul>
304
- </td>
305
- </tr>
306
- <tr valign="top">
307
- <th scope="row">
308
- <label>
309
- <a name="captcha-section"></a><?php _e( 'Captcha', 'strong-testimonials' ); ?>
310
- </label>
311
- </th>
312
- <td class="stackem">
313
- <p>
314
- <?php _e( 'Enable Captcha using one of these plugins. Be sure to configure any plugins first, if necessary.', 'strong-testimonials' ); ?>
315
- <?php _e( 'May be used alongside honeypot methods.', 'strong-testimonials' ); ?>
316
- </p>
317
- <p>
318
- <?php _e( 'May not be compatible with Ajax page loading.', 'strong-testimonials' ); ?>
319
- </p>
320
- <ul>
321
- <li>
322
- <label>
323
- <input type="radio"
324
- name="wpmtst_form_options[captcha]" <?php checked( '', $form_options['captcha'] ); ?>
325
- value=""/> none
326
- </label>
327
- </li>
328
-
329
- <?php foreach ( $plugins as $key => $plugin ) : ?>
330
- <li>
331
- <label class="inline <?php if ( ! $plugin['active'] ) echo 'disabled'; ?>">
332
- <input type="radio"
333
- name="wpmtst_form_options[captcha]" <?php disabled( ! $plugin['active'] ); ?><?php checked( $key, $form_options['captcha'] ); ?>
334
- value="<?php echo $key; ?>"/>
335
- <?php echo $plugin['name']; ?>
336
- </label>
337
-
338
- <?php if ( isset( $plugin['installed'] ) && $plugin['installed'] ) : // installed ?>
339
-
340
- <?php if ( $plugin['active'] ) : // active ?>
341
-
342
- <?php if ( isset( $plugin['settings'] ) && $plugin['settings'] ) : ?>
343
- <span class="link"><a href="<?php echo $plugin['settings']; ?>"><?php _ex( 'settings', 'link', 'strong-testimonials' ); ?></a></span>
344
- <?php else : ?>
345
- <span class="notice"><?php _e( 'no settings', 'strong-testimonials' ); ?></span>
346
- <?php endif; ?>
347
-
348
- <?php else : // inactive ?>
349
-
350
- <span class="notice disabled"><?php _ex( 'inactive', 'adjective', 'strong-testimonials' ); ?></span>
351
-
352
- <?php endif; ?>
353
- |
354
-
355
- <?php else : // not installed ?>
356
-
357
- <span class="notice disabled">(<?php _e( 'not installed', 'strong-testimonials' ); ?>)</span>
358
-
359
- <?php if ( isset( $plugin['search'] ) && $plugin['search'] ) : ?>
360
- <span class="link"><a href="<?php echo $plugin['search']; ?>"><?php _ex( 'install plugin', 'link', 'strong-testimonials' ); ?></a></span>
361
- |
362
- <?php endif; ?>
363
-
364
- <?php endif; // whether installed ?>
365
-
366
- <span class="link"><a href="<?php echo $plugin['url']; ?>" target="_blank"><?php _ex( 'plugin page', 'link', 'strong-testimonials' ); ?></a></span>
367
-
368
- <?php if ( isset( $plugin['desc'] ) && $plugin['desc'] ) : ?>
369
- <p class="description <?php if ( isset( $plugin['style'] ) ) echo $plugin['style']; ?>"><?php echo $plugin['desc']; ?></p>
370
- <?php endif; ?>
371
- </li>
372
- <?php endforeach; ?>
373
- </ul>
374
- </td>
375
- </tr>
376
- </table>
6
  */
7
  $pages_list = wpmtst_get_pages();
8
  $form_options = get_option( 'wpmtst_form_options' );
 
9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
  ?>
11
  <input type="hidden"
12
  name="wpmtst_form_options[default_recipient]"
228
  </tr>
229
  </table>
230
 
231
+ <?php do_action( 'wpmtst_after_form_settings', $form_options, 'wpmtst_form_options' ); ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/css/admin.css CHANGED
@@ -819,7 +819,7 @@ ul.standard {
819
  background: #f4daa4;
820
  border-radius: 5px;
821
  color: #8d6e30;
822
- padding: 1rem 8rem 1rem 1rem;
823
  position: relative;
824
  }
825
 
@@ -828,4 +828,8 @@ ul.standard {
828
  right: 0.5rem;
829
  top: 50%;
830
  transform: translateY(-50%) !important;
 
 
 
 
831
  }
819
  background: #f4daa4;
820
  border-radius: 5px;
821
  color: #8d6e30;
822
+ padding: 1rem;
823
  position: relative;
824
  }
825
 
828
  right: 0.5rem;
829
  top: 50%;
830
  transform: translateY(-50%) !important;
831
+ }
832
+
833
+ .wpmtst-alert > *:last-child {
834
+ margin-bottom: 0px !important;
835
  }
changelog.txt CHANGED
@@ -1,3 +1,6 @@
 
 
 
1
  = 2.38.1 - May. 14, 2019 =
2
  * fixed placeholder issue for standard input fields
3
  * fixed slideshow height issue
1
+ = 2.39 - May. 24, 2019 =
2
+ * added compatibility with Strong Testimonials: Captcha extension
3
+
4
  = 2.38.1 - May. 14, 2019 =
5
  * fixed placeholder issue for standard input fields
6
  * fixed slideshow height issue
includes/class-strong-form.php CHANGED
@@ -6,23 +6,16 @@ class Strong_Testimonials_Form {
6
 
7
  public $form_options;
8
 
9
- public $plugins;
10
-
11
  public $form_values;
12
 
13
  public $form_errors;
14
 
15
- public $captcha;
16
-
17
  /**
18
  * Strong_Testimonials_Form constructor.
19
  */
20
  public function __construct() {
21
  $this->form_options = get_option( 'wpmtst_form_options' );
22
- $this->plugins = apply_filters( 'wpmtst_captcha_plugins', get_option( 'wpmtst_captcha_plugins' ) );
23
  $this->add_actions();
24
- $this->load_captcha();
25
- $this->load_honeypots();
26
  }
27
 
28
  /**
@@ -35,50 +28,6 @@ class Strong_Testimonials_Form {
35
  add_action( 'wp_ajax_nopriv_wpmtst_form2', array( $this, 'process_form_ajax' ) );
36
  }
37
 
38
- /**
39
- * Load Captcha class.
40
- */
41
- public function load_captcha() {
42
- if ( ! isset( $this->form_options['captcha'] ) || ! $this->form_options['captcha'] ) {
43
- return;
44
- }
45
-
46
- $slug = $this->form_options['captcha'];
47
- if ( ! $slug || ! isset( $this->plugins[ $slug ]['class'] ) ) {
48
- return;
49
- }
50
-
51
- require_once WPMTST_INC . 'integrations/class-integration-captcha.php';
52
-
53
- $file_name = "class-integration-$slug.php";
54
- $file_path = WPMTST_INC . 'integrations/' . $file_name;
55
- $class_name = 'Strong_Testimonials_Integration_' . $this->plugins[ $slug ]['class'];
56
-
57
- if ( file_exists( $file_path ) ) {
58
- require_once $file_path;
59
- }
60
-
61
- if ( class_exists( $class_name ) ) {
62
- $this->captcha = new $class_name();
63
- add_filter( 'wpmtst_add_captcha', array( $this->captcha, 'add_captcha' ), 20 );
64
- add_filter( 'wpmtst_check_captcha', array( $this->captcha, 'check_captcha' ) );
65
- }
66
-
67
- }
68
-
69
- /**
70
- * Load honeypots.
71
- */
72
- public function load_honeypots() {
73
- if ( isset( $this->form_options['honeypot_before'] ) && $this->form_options['honeypot_before'] ) {
74
- add_action( 'honeypot_before_spam_testimonial', array( $this, 'honeypot_error' ) );
75
- }
76
-
77
- if ( isset( $this->form_options['honeypot_after'] ) && $this->form_options['honeypot_after'] ) {
78
- add_action( 'honeypot_after_spam_testimonial', array( $this, 'honeypot_error' ) );
79
- }
80
- }
81
-
82
  /**
83
  * Process a form.
84
  * Moved to `init` hook for strong_testimonials_view() template function.
@@ -210,17 +159,7 @@ class Strong_Testimonials_Form {
210
  $form_name = isset( $new_post['form_id'] ) ? $new_post['form_id'] : 'custom';
211
  $fields = wpmtst_get_form_fields( $form_name );
212
 
213
- if ( $form_options['captcha'] ) {
214
- $form_errors = apply_filters( 'wpmtst_check_captcha', $form_errors );
215
- }
216
-
217
- if ( $form_options['honeypot_before'] ) {
218
- $this->honeypot_before();
219
- }
220
-
221
- if ( $form_options['honeypot_after'] ) {
222
- $this->honeypot_after();
223
- }
224
 
225
  /**
226
  * sanitize & validate
@@ -467,39 +406,6 @@ class Strong_Testimonials_Form {
467
  return false;
468
  }
469
 
470
- /**
471
- * Honeypot preprocessor
472
- */
473
- public function honeypot_before() {
474
- if ( isset( $_POST['wpmtst_if_visitor'] ) && ! empty( $_POST['wpmtst_if_visitor'] ) ) {
475
- do_action( 'honeypot_before_spam_testimonial', $_POST );
476
- }
477
- }
478
-
479
- /**
480
- * Honeypot preprocessor
481
- */
482
- public function honeypot_after() {
483
- if ( ! isset ( $_POST['wpmtst_after'] ) ) {
484
- do_action( 'honeypot_after_spam_testimonial', $_POST );
485
- }
486
- }
487
-
488
- /**
489
- * Honeypot error
490
- */
491
- public function honeypot_error() {
492
- $form_options = get_option( 'wpmtst_form_options' );
493
- $messages = $form_options['messages'];
494
- $part = 'submission-error';
495
- if ( isset( $messages[ $part ]['text'] ) ) {
496
- $message = apply_filters( 'wpmtst_form_message', $messages['submission-error']['text'], $messages[ $part ] );
497
- } else {
498
- $message = __( 'Unknown error.', 'strong-testimonials' );
499
- }
500
- wp_die( $message );
501
- }
502
-
503
  /**
504
  * Restrict MIME types for security reasons.
505
  *
6
 
7
  public $form_options;
8
 
 
 
9
  public $form_values;
10
 
11
  public $form_errors;
12
 
 
 
13
  /**
14
  * Strong_Testimonials_Form constructor.
15
  */
16
  public function __construct() {
17
  $this->form_options = get_option( 'wpmtst_form_options' );
 
18
  $this->add_actions();
 
 
19
  }
20
 
21
  /**
28
  add_action( 'wp_ajax_nopriv_wpmtst_form2', array( $this, 'process_form_ajax' ) );
29
  }
30
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  /**
32
  * Process a form.
33
  * Moved to `init` hook for strong_testimonials_view() template function.
159
  $form_name = isset( $new_post['form_id'] ) ? $new_post['form_id'] : 'custom';
160
  $fields = wpmtst_get_form_fields( $form_name );
161
 
162
+ $form_errors = apply_filters( 'wpmtst_form_additional_checks', $form_errors );
 
 
 
 
 
 
 
 
 
 
163
 
164
  /**
165
  * sanitize & validate
406
  return false;
407
  }
408
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
409
  /**
410
  * Restrict MIME types for security reasons.
411
  *
includes/class-strong-view-form.php CHANGED
@@ -102,7 +102,6 @@ class Strong_View_Form extends Strong_View {
102
 
103
  // If we cannot preprocess, add the inline style to the footer.
104
  add_action( 'wp_footer', array( $this, 'add_custom_style' ) );
105
- add_action( 'wp_footer', array( $this, 'load_honeypots' ) );
106
 
107
  $form_values = array( 'category' => $this->atts['category'] );
108
 
@@ -256,37 +255,6 @@ class Strong_View_Form extends Strong_View {
256
  WPMST()->render->add_script( 'wpmtst-controller' );
257
  }
258
 
259
- /**
260
- * Load honeypots.
261
- */
262
- public function load_honeypots() {
263
- $form_options = get_option( 'wpmtst_form_options' );
264
-
265
- if ( $form_options['honeypot_before'] ) {
266
- ?>
267
- <script type="text/javascript">
268
- (function () { document.getElementById("wpmtst_if_visitor").value = '' })()
269
- </script>
270
- <?php
271
- }
272
-
273
- if ( $form_options['honeypot_after'] ) {
274
- ?>
275
- <script type="text/javascript">
276
- (function () {
277
- var myForm = document.getElementById("wpmtst-submission-form")
278
- myForm.addEventListener("submit", function(e){
279
- var x = document.createElement("input")
280
- x.type = "hidden"
281
- x.name = "wpmtst_after"
282
- x.value = 1
283
- myForm.appendChild(x)
284
- });
285
- })()
286
- </script>
287
- <?php
288
- }
289
- }
290
 
291
  }
292
 
102
 
103
  // If we cannot preprocess, add the inline style to the footer.
104
  add_action( 'wp_footer', array( $this, 'add_custom_style' ) );
 
105
 
106
  $form_values = array( 'category' => $this->atts['category'] );
107
 
255
  WPMST()->render->add_script( 'wpmtst-controller' );
256
  }
257
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
258
 
259
  }
260
 
includes/class-strong-view.php CHANGED
@@ -171,7 +171,7 @@ class Strong_View {
171
  }
172
 
173
  if ( ! $this->get_att( 'use_default_more' ) ) {
174
- add_filter( 'excerpt_more', array( $this, 'excerpt_more' ), 999 );
175
  }
176
  }
177
 
171
  }
172
 
173
  if ( ! $this->get_att( 'use_default_more' ) ) {
174
+ add_filter( 'excerpt_more', array( $this, 'excerpt_more' ), 99999 );
175
  }
176
  }
177
 
includes/functions-template-form.php CHANGED
@@ -412,11 +412,7 @@ function wpmtst_form_field_meta_l10n( $field_meta, $field, $meta ) {
412
  add_filter( 'wpmtst_form_field_meta', 'wpmtst_form_field_meta_l10n', 10, 3 );
413
  add_filter( 'wpmtst_form_field_meta', 'do_shortcode' );
414
 
415
- /**
416
- * Print honeypot after.
417
- *
418
- * @param $field
419
- */
420
  function wpmtst_field_error( $field ) {
421
  $errors = WPMST()->form->get_form_errors();
422
  if ( isset( $errors[ $field['name'] ] ) ) {
@@ -424,110 +420,6 @@ function wpmtst_field_error( $field ) {
424
  }
425
  }
426
 
427
- /**
428
- * Print honeypot before.
429
- */
430
- function wpmtst_form_honeypot_before() {
431
- $form_options = get_option( 'wpmtst_form_options' );
432
- if ( $form_options['honeypot_before'] ) {
433
- ?>
434
- <style>#wpmtst-form .wpmtst_if_visitor * { display: none !important; visibility: hidden !important; }</style>
435
- <span class="wpmtst_if_visitor"><label for="wpmtst_if_visitor">Visitor?</label><input id="wpmtst_if_visitor" type="text" name="wpmtst_if_visitor" size="40" tabindex="-1" autocomplete="off"></span>
436
- <?php
437
- }
438
- }
439
- add_action( 'wpmtst_form_after_fields', 'wpmtst_form_honeypot_before' );
440
-
441
- /**
442
- * Print form catpcha.
443
- */
444
- function wpmtst_form_captcha() {
445
- $form_options = get_option( 'wpmtst_form_options' );
446
- if ( ! isset( $form_options['captcha'] ) || ! $form_options['captcha'] ) {
447
- return;
448
- }
449
-
450
- // removed `really simple captcha` as of 2.37
451
- if ( 'really-simple-captcha' === $form_options['captcha'] ) {
452
- return;
453
- }
454
-
455
- /**
456
- * Only display Captcha label if properly configured.
457
- */
458
- $captcha_html = apply_filters( 'wpmtst_add_captcha', $form_options['captcha'] );
459
- if ( ! $captcha_html ) {
460
- return;
461
- }
462
-
463
- $invisible = wpmtst_form_captcha_invisible();
464
- $errors = WPMST()->form->get_form_errors();
465
-
466
- /**
467
- * To display or not to display.
468
- */
469
- if ( $invisible && 'captcha-pro' == $form_options['captcha']) {
470
-
471
- echo '<div class="form-field wpmtst-captcha">';
472
- echo $captcha_html;
473
- echo '</div>';
474
-
475
- } elseif ( $invisible ) {
476
- echo $captcha_html;
477
-
478
- } else {
479
- ?>
480
- <div class="form-field wpmtst-captcha">
481
- <?php if ( wpmtst_get_form_message( 'captcha' ) ) : ?>
482
- <label for="wpmtst_captcha"><?php wpmtst_form_message( 'captcha' ); ?></label><span class="required symbol"></span>
483
- <?php endif; ?>
484
-
485
- <div>
486
- <?php echo $captcha_html; ?>
487
- <?php if ( isset( $errors['captcha'] ) ) : ?>
488
- <p><label class="error"><?php echo esc_html( $errors['captcha'] ); ?></label></p>
489
- <?php endif; ?>
490
- </div>
491
- </div>
492
- <?php
493
-
494
- }
495
- }
496
- add_action( 'wpmtst_form_after_fields', 'wpmtst_form_captcha' );
497
-
498
- /**
499
- * Determine if we are using Invisible reCAPTCHA.
500
- *
501
- * @since 2.28.5
502
- *
503
- * @return bool
504
- */
505
- function wpmtst_form_captcha_invisible() {
506
- $invisible = false;
507
- $form_options = get_option( 'wpmtst_form_options' );
508
-
509
- /**
510
- * Google Captcha plugin integration.
511
- */
512
- if ( 'google-captcha' == $form_options['captcha'] ) {
513
- $gglcptch_options = get_option( 'gglcptch_options' );
514
- if ( isset( $gglcptch_options['recaptcha_version'] ) && 'invisible' == $gglcptch_options['recaptcha_version'] ) {
515
- $invisible = true;
516
- }
517
- }
518
-
519
- /**
520
- * Captcha Pro plugin integration.
521
- */
522
- if ( 'captcha-pro' == $form_options['captcha'] ) {
523
- $cptch_options = get_option( 'cptch_options' );
524
- if ( isset( $cptch_options['type'] ) && 'invisible' == $cptch_options['type'] ) {
525
- $invisible = true;
526
- }
527
- }
528
-
529
- return $invisible;
530
- }
531
 
532
  /**
533
  * Print the submit button.
412
  add_filter( 'wpmtst_form_field_meta', 'wpmtst_form_field_meta_l10n', 10, 3 );
413
  add_filter( 'wpmtst_form_field_meta', 'do_shortcode' );
414
 
415
+
 
 
 
 
416
  function wpmtst_field_error( $field ) {
417
  $errors = WPMST()->form->get_form_errors();
418
  if ( isset( $errors[ $field['name'] ] ) ) {
420
  }
421
  }
422
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
423
 
424
  /**
425
  * Print the submit button.
includes/integrations/class-integration-captcha-pro.php DELETED
@@ -1,25 +0,0 @@
1
- <?php
2
- class Strong_Testimonials_Integration_Captcha_Pro extends Strong_Testimonials_Integration_Captcha {
3
-
4
- public function __construct() {
5
- parent::__construct();
6
- }
7
-
8
- public function add_captcha() {
9
- if ( function_exists( 'cptch_display_captcha_custom' ) ) {
10
- return '<input type="hidden" name="cntctfrm_contact_action" value="true">' .
11
- cptch_display_captcha_custom();
12
- }
13
-
14
- return '';
15
- }
16
-
17
- public function check_captcha( $form_errors ) {
18
- if ( function_exists( 'cptch_check_custom_form' ) && cptch_check_custom_form() !== true ) {
19
- $form_errors['captcha'] = __( 'The Captcha failed. Please try again.', 'strong-testimonials' );
20
- }
21
-
22
- return $form_errors;
23
- }
24
-
25
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/integrations/class-integration-captcha.php DELETED
@@ -1,14 +0,0 @@
1
- <?php
2
- class Strong_Testimonials_Integration_Captcha {
3
-
4
- public function __construct() {}
5
-
6
- public function add_captcha() {
7
- return '';
8
- }
9
-
10
- public function check_captcha( $form_errors ) {
11
- return $form_errors;
12
- }
13
-
14
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/integrations/class-integration-google-captcha.php DELETED
@@ -1,24 +0,0 @@
1
- <?php
2
- class Strong_Testimonials_Integration_Google_Captcha extends Strong_Testimonials_Integration_Captcha {
3
-
4
- public function __construct() {
5
- parent::__construct();
6
- }
7
-
8
- public function add_captcha() {
9
- if ( function_exists( 'gglcptch_display_custom' ) ) {
10
- return gglcptch_display_custom();
11
- }
12
-
13
- return '';
14
- }
15
-
16
- public function check_captcha( $form_errors ) {
17
- if ( function_exists( 'gglcptch_check_custom' ) && gglcptch_check_custom() !== true ) {
18
- $form_errors['captcha'] = __( 'The Captcha failed. Please try again.', 'strong-testimonials' );
19
- }
20
-
21
- return $form_errors;
22
- }
23
-
24
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/integrations/class-integration-really-simple-captcha.php DELETED
@@ -1,40 +0,0 @@
1
- <?php
2
- class Strong_Testimonials_Integration_Really_Simple_Captcha extends Strong_Testimonials_Integration_Captcha {
3
-
4
- public function __construct() {
5
- parent::__construct();
6
- }
7
-
8
- public function add_captcha() {
9
- if ( class_exists( 'ReallySimpleCaptcha' ) ) {
10
- $captcha_instance = new ReallySimpleCaptcha();
11
- $word = $captcha_instance->generate_random_word();
12
- $prefix = mt_rand();
13
- $image = $captcha_instance->generate_image( $prefix, $word );
14
- $html = '<span>' . _x( 'Input this code:', 'Captcha', 'strong-testimonials' ) . '&nbsp;<input type="hidden" name="captchac" value="'.$prefix.'"><img class="captcha" src="' . plugins_url( 'really-simple-captcha/tmp/' ) . $image . '"></span>';
15
- $html .= '<input type="text" class="captcha" name="captchar" maxlength="4" size="5">';
16
- return $html;
17
- }
18
-
19
- return '';
20
- }
21
-
22
- public function check_captcha( $form_errors ) {
23
- if ( class_exists( 'ReallySimpleCaptcha' ) ) {
24
- $captcha_instance = new ReallySimpleCaptcha();
25
- $prefix = isset( $_POST['captchac'] ) ? (string) $_POST['captchac'] : '';
26
- $response = isset( $_POST['captchar'] ) ? (string) $_POST['captchar'] : '';
27
- $correct = $captcha_instance->check( $prefix, $response );
28
- if ( !$correct ) {
29
- $errors['captcha'] = __( 'The Captcha failed. Please try again.', 'strong-testimonials' );
30
- }
31
- // remove the temporary image and text files (except on Windows)
32
- if ( '127.0.0.1' != $_SERVER['SERVER_ADDR'] ) {
33
- $captcha_instance->remove( $prefix );
34
- }
35
- }
36
-
37
- return $form_errors;
38
- }
39
-
40
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
public/js/lib/strongslider/jquery.strongslider.js CHANGED
@@ -1349,6 +1349,11 @@
1349
  return;
1350
  }
1351
 
 
 
 
 
 
1352
  if( e.originalEvent.target.classList.contains('readmore-text') ) {
1353
  return;
1354
  }
1349
  return;
1350
  }
1351
 
1352
+ // if touch started on a link, then return
1353
+ if( e.originalEvent.target.tagName.toLowerCase() === 'a' ) {
1354
+ return;
1355
+ }
1356
+
1357
  if( e.originalEvent.target.classList.contains('readmore-text') ) {
1358
  return;
1359
  }
public/js/lib/strongslider/jquery.strongslider.min.js CHANGED
@@ -1 +1 @@
1
- !function(G){var J={debug:!1,logAs:"strongSlider",compat:{lazyload:{active:!1,classes:{}}},mode:"horizontal",slideSelector:"div.t-slide",infiniteLoop:!0,hideControlOnEnd:!1,speed:500,easing:null,slideMargin:10,startSlide:0,randomStart:!1,captions:!1,adaptiveHeight:!1,adaptiveHeightSpeed:500,video:!1,useCSS:!0,preloadImages:"visible",responsive:!0,slideZIndex:50,wrapperClass:"wpmslider-wrapper",stretch:!1,imagesLoaded:!0,touchEnabled:!0,swipeThreshold:50,oneToOneTouch:!0,preventDefaultSwipeX:!0,preventDefaultSwipeY:!1,ariaLive:!0,ariaHidden:!0,keyboardEnabled:!1,pager:!0,pagerType:"full",pagerShortSeparator:" / ",pagerSelector:null,buildPager:null,pagerCustom:null,controls:!0,nextText:"Next",prevText:"Prev",nextSelector:null,prevSelector:null,autoControls:!1,startText:"Start",stopText:"Stop",autoControlsCombine:!1,autoControlsSelector:null,auto:!0,pause:4e3,autoStart:!0,autoDirection:"next",stopAutoOnClick:!1,autoHover:!1,autoDelay:0,autoSlideForOnePage:!1,minSlides:1,maxSlides:1,moveSlides:0,onSliderLoad:function(){return!0},onSlideBefore:function(){return!0},onSlideAfter:function(){return!0},onSlideNext:function(){return!0},onSlidePrev:function(){return!0},onSliderResize:function(){return!0},onAutoChange:function(){return!0}};G.fn.strongSlider=function(i){if(0===this.length)return this;var g={},o=this,p=this.find(".wpmslider-content");if(!G(p).data("strongSlider")){var t=function(){if(!G(p).data("strongSlider")){g.visibilityInterval=0,g.hidden=!1;var e=o.data("slider-var"),t={};void 0!==window[e]&&(t=window[e].config),g.settings=G.extend({},J,t,i),g.debug=g.settings.debug,g.logAs=g.settings.logAs,g.debug&&console.log(g.logAs,"slider.settings",g.settings),g.children=p.children(g.settings.slideSelector),g.children.length<g.settings.minSlides&&(g.settings.minSlides=g.children.length),g.children.length<g.settings.maxSlides&&(g.settings.maxSlides=g.children.length),g.settings.randomStart&&(g.settings.startSlide=Math.floor(Math.random()*g.children.length)),g.active={index:g.settings.startSlide},r(),g.carousel&&(g.settings.preloadImages="all"),g.working=!1,g.controls={},g.interval=null,g.animProp="vertical"===g.settings.mode?"top":"left",g.usingCSS=g.settings.useCSS&&"fade"!==g.settings.mode&&function(){for(var e=document.createElement("div"),t=["WebkitPerspective","MozPerspective","OPerspective","msPerspective"],i=0;i<t.length;i++)if(void 0!==e.style[t[i]])return g.cssPrefix=t[i].replace("Perspective","").toLowerCase(),g.animProp="-"+g.cssPrefix+"-transform",!0;return!1}(),"vertical"===g.settings.mode&&(g.settings.maxSlides=g.settings.minSlides),p.data("origStyle",p.attr("style")),p.children(g.settings.slideSelector).each(function(){G(this).data("origStyle",G(this).attr("style"))}),p.getSlideCount()&&(g.settings.imagesLoaded?o.imagesLoaded(function(){n()}):n())}},e=function(){return o.is(":visible")&&"hidden"!==o.css("visibility")},n=function(){e()&&function(){if(g.settings.compat.lazyload){for(var e=!1,t=0,i=g.settings.compat.lazyload.classes.length;t<i;t++){var n=g.settings.compat.lazyload.classes[t].start,s=g.settings.compat.lazyload.classes[t].finish;n&&s?o.find("img."+n).length&&!o.find("img."+s).length&&(e=!0):n?o.find("img."+n).length&&(e=!0):s&&(o.find("img."+s).length||(e=!0))}if(e)return g.debug&&console.log(g.logAs,"lazy loading..."),!1}return g.debug&&console.log(g.logAs,"compat check complete"),!0}()?(clearInterval(g.visibilityInterval),s()):0===g.visibilityInterval&&(g.visibilityInterval=setInterval(n,4e3))},s=function(){var e=g.children.eq(g.settings.startSlide);p.wrap('<div class="'+g.settings.wrapperClass+'"><div class="wpmslider-viewport"></div></div>'),g.viewport=p.parent(),g.settings.ariaLive&&g.viewport.attr("aria-live","polite"),g.loader=G('<div class="wpmslider-loading" />'),g.viewport.prepend(g.loader),p.css({width:"horizontal"===g.settings.mode?1e3*g.children.length+215+"%":"auto",position:"relative"}),g.usingCSS&&g.settings.easing?p.css("-"+g.cssPrefix+"-transition-timing-function",g.settings.easing):g.settings.easing||(g.settings.easing="swing"),g.viewport.css({width:"100%",overflow:"hidden",position:"relative"}),g.viewport.parent().css({maxWidth:w()}),g.settings.pager||g.settings.controls||g.viewport.parent().css({margin:"0 auto"}),g.children.css({float:"horizontal"===g.settings.mode?"left":"none",listStyle:"none",position:"relative"}),a(),"horizontal"===g.settings.mode&&0<g.settings.slideMargin&&g.children.css("marginRight",g.settings.slideMargin),"vertical"===g.settings.mode&&0<g.settings.slideMargin&&g.children.css("marginBottom",g.settings.slideMargin),"fade"===g.settings.mode?(g.children.css({position:"absolute",zIndex:0,display:"none"}),g.children.eq(g.settings.startSlide).css({zIndex:g.settings.slideZIndex,display:"block"})):g.children.css({display:"block"}),g.controls.el=G('<div class="wpmslider-controls" />'),g.settings.captions&&A(),g.active.last=g.settings.startSlide===C()-1,g.settings.video&&p.fitVids(),"none"===g.settings.preloadImages?e=null:"all"===g.settings.preloadImages&&(e=g.children),g.settings.controls&&T(),g.settings.auto&&g.settings.autoControls&&M(),g.settings.pager&&k(),g.settings.controls&&I(),(g.settings.controls||g.settings.autoControls||g.settings.pager)&&g.viewport.after(g.controls.el),null===e?d():l(e,d)},r=function(){g.debug&&console.log(g.logAs,"setBreakpoint");var e=g.settings.breakpoints.single,t=g.settings.breakpoints.multiple;if("show_multiple"===g.settings.type)for(var i in t)if(t.hasOwnProperty(i)&&verge.viewportW()>=t[i].width){e=t[i];break}g.debug&&console.log("current breakpoint",e),g.settings.maxSlides=e.maxSlides,g.settings.moveSlides=e.moveSlides,g.settings.slideMargin=e.slideMargin,g.carousel=1<g.settings.minSlides||1<g.settings.maxSlides},a=function(){r(),g.children.css("width",x())},l=function(e,t){var i=e.find('img:not([src=""]), iframe').length,n=0;0!==i?e.find('img:not([src=""]), iframe').each(function(){G(this).one("load error",function(){++n===i&&t()}).each(function(){(this.complete||""===this.src)&&G(this).trigger("load")})}):t()},d=function(){if(g.settings.infiniteLoop&&"fade"!==g.settings.mode){var e="vertical"===g.settings.mode?g.settings.minSlides:g.settings.maxSlides,t=g.children.slice(0,e).clone(!0).addClass("wpmslider-clone"),i=g.children.slice(-e).clone(!0).addClass("wpmslider-clone");g.settings.ariaHidden&&(t.attr("aria-hidden",!0),i.attr("aria-hidden",!0)),p.append(t).prepend(i)}g.loader.remove(),"vertical"===g.settings.mode&&(g.settings.adaptiveHeight=!0),p.redrawSlider(),g.settings.onSliderLoad.call(p,g.active.index),g.initialized=!0,g.visibilityInterval=setInterval(v,500),g.settings.responsive&&c(),g.settings.auto&&g.settings.autoStart&&(1<C()||g.settings.autoSlideForOnePage)&&W(),g.settings.pager&&O(g.settings.startSlide),g.settings.controls&&N(),g.settings.touchEnabled&&X(),g.settings.keyboardEnabled&&G(document).keydown(Y)},c=function(){window.addEventListener("resize",u,!1),window.addEventListener("orientationchange",u,!1),window.addEventListener("toggleFullContent",u,!1),window.addEventListener("blur",function(){h("blur")}),window.addEventListener("focus",function(){f("blur")})},u=_.debounce(function(){g.debug&&console.log(g.logAs,"updateLayout"),j()},250),v=function(){g.settings.auto&&(e()?f("hide"):h("hide"),verge.inViewport(p)?f("scroll"):h("scroll"))},h=function(e){g.interval&&(p.stopAuto(!0),g.autoPaused=e,g.debug&&console.log(g.logAs,"pause",e))},f=function(e){g.autoPaused===e&&(p.startAuto(!0),g.autoPaused=null,g.debug&&console.log(g.logAs,"play",e))},m=function(e){return Math.max.apply(Math,e)},S=function(){var t=0,e=G();if("vertical"===g.settings.mode||g.settings.adaptiveHeight)if(g.carousel){var i=1===g.settings.moveSlides?g.active.index:g.active.index*y();e=g.children.eq(i);for(var n=1;n<=g.settings.maxSlides-1;n++)e=i+n>=g.children.length?e.add(g.children.eq(n-1)):e.add(g.children.eq(i+n))}else e=g.children.eq(g.active.index);else e=g.children;return"vertical"===g.settings.mode?(e.each(function(e){t+=G(this).outerHeight()}),0<g.settings.slideMargin&&(t+=g.settings.slideMargin*(g.settings.minSlides-1))):t=Math.max.apply(Math,e.map(function(){return G(this).outerHeight(!1)}).get()),"border-box"===g.viewport.css("box-sizing")?t+=parseFloat(g.viewport.css("padding-top"))+parseFloat(g.viewport.css("padding-bottom"))+parseFloat(g.viewport.css("border-top-width"))+parseFloat(g.viewport.css("border-bottom-width")):"padding-box"===g.viewport.css("box-sizing")&&(t+=parseFloat(g.viewport.css("padding-top"))+parseFloat(g.viewport.css("padding-bottom"))),t},w=function(){return"100%"},x=function(){var e=g.viewport.width(),t=g.settings.slideMargin*(g.settings.maxSlides-1);return Math.floor((e-t)/g.settings.maxSlides)},b=function(){return g.settings.maxSlides},C=function(){var e=0,t=0,i=0;if(0<g.settings.moveSlides){if(!g.settings.infiniteLoop){for(;t<g.children.length;)++e,t=i+b(),i+=g.settings.moveSlides<=b()?g.settings.moveSlides:b();return i}e=Math.ceil(g.children.length/y())}else e=Math.ceil(g.children.length/b());return e},y=function(){return 0<g.settings.moveSlides&&g.settings.moveSlides<=b()?g.settings.moveSlides:b()},P=function(e,t,i,n){var s,o;g.usingCSS?("vertical"===g.settings.mode?o="translateY("+e+"px)":"horizontal"===g.settings.mode?o="translateX("+e+"px":"none"===g.settings.mode&&(o="translateY("+e+"px)",i=0),p.css("-"+g.cssPrefix+"-transition-duration",i/1e3+"s"),"slide"===t?(p.css(g.animProp,o),0!==i?p.on("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd",function(e){G(e.target).is(p)&&(p.off("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd"),F())}):F()):"reset"===t&&p.css(g.animProp,o)):((s={})[g.animProp]=e,"slide"===t?p.animate(s,i,g.settings.easing,function(){F()}):"reset"===t&&p.css(g.animProp,e))},E=function(){for(var e="",t="",i=C(),n=0;n<i;n++)t="",g.settings.buildPager?("icons"===g.settings.buildPager&&(t=""),(G.isFunction(g.settings.buildPager)||g.settings.pagerCustom)&&(t=g.settings.buildPager(n)),g.pagerEl.addClass("wpmslider-custom-pager")):(t=n+1,g.pagerEl.addClass("wpmslider-default-pager")),e+='<div class="wpmslider-pager-item"><a href="" data-slide-index="'+n+'" class="wpmslider-pager-link">'+t+"</a></div>";g.pagerEl.html(e)},k=function(){g.settings.pagerCustom?g.pagerEl=G(g.settings.pagerCustom):(g.pagerEl=G('<div class="wpmslider-pager" />'),g.settings.pagerSelector?G(g.settings.pagerSelector).html(g.pagerEl):g.controls.el.addClass("wpmslider-has-pager").append(g.pagerEl),E()),g.pagerEl.on("click touchend","a",H)},T=function(){g.controls.prev=G('<a class="wpmslider-prev" href="">'+g.settings.prevText+"</a>"),g.controls.prev.on("click touchend",L),g.settings.prevSelector&&G(g.settings.prevSelector).append(g.controls.prev),g.settings.prevSelector||(g.controls.directionEl=G('<div class="wpmslider-controls-direction" />'),g.controls.directionEl.append(g.controls.prev),g.controls.el.addClass("wpmslider-has-controls-direction").append(g.controls.directionEl))},I=function(){g.controls.next=G('<a class="wpmslider-next" href="">'+g.settings.nextText+"</a>"),g.controls.next.on("click touchend",z),g.settings.nextSelector&&G(g.settings.nextSelector).append(g.controls.next),g.settings.nextSelector||(g.controls.directionEl=G('<div class="wpmslider-controls-direction" />'),g.controls.directionEl.append(g.controls.next),g.controls.el.addClass("wpmslider-has-controls-direction").append(g.controls.directionEl))},M=function(){g.controls.start=G('<div class="wpmslider-controls-auto-item"><a class="wpmslider-start" href="">'+g.settings.startText+"</a></div>"),g.controls.stop=G('<div class="wpmslider-controls-auto-item"><a class="wpmslider-stop" href="">'+g.settings.stopText+"</a></div>"),g.controls.autoEl=G('<div class="wpmslider-controls-auto" />'),g.controls.autoEl.on("click",".wpmslider-start",q),g.controls.autoEl.on("click",".wpmslider-stop",D),g.settings.autoControlsCombine?g.controls.autoEl.append(g.controls.start):g.controls.autoEl.append(g.controls.start).append(g.controls.stop),g.settings.autoControlsSelector?G(g.settings.autoControlsSelector).html(g.controls.autoEl):g.controls.el.addClass("wpmslider-has-controls-auto").append(g.controls.autoEl),B(g.settings.autoStart?"stop":"start")},A=function(){g.children.each(function(e){var t=G(this).find("img:first").attr("title");void 0!==t&&(""+t).length&&G(this).append('<div class="wpmslider-caption"><span>'+t+"</span></div>")})},z=function(e){e.preventDefault(),e.stopPropagation(),g.controls.el.hasClass("disabled")||(g.settings.auto&&g.settings.stopAutoOnClick&&(g.debug&&console.log(g.logAs,"stop on navigation"),p.stopAuto()),p.goToNextSlide())},L=function(e){e.preventDefault(),e.stopPropagation(),g.controls.el.hasClass("disabled")||(g.settings.auto&&g.settings.stopAutoOnClick&&(g.debug&&console.log(g.logAs,"stop on navigation"),p.stopAuto()),p.goToPrevSlide())},q=function(e){p.startAuto(),e.preventDefault(),e.stopPropagation()},D=function(e){p.stopAuto(),e.preventDefault(),e.stopPropagation()},H=function(e){var t,i;e.preventDefault(),e.stopPropagation(),g.controls.el.hasClass("disabled")||(g.settings.auto&&g.settings.stopAutoOnClick&&(g.debug&&console.log(g.logAs,"stop on navigation"),p.stopAuto()),void 0!==(t=G(e.currentTarget)).attr("data-slide-index")&&(i=parseInt(t.attr("data-slide-index")))!==g.active.index&&p.goToSlide(i))},O=function(i){var e=g.children.length;if("short"===g.settings.pagerType)return 1<g.settings.maxSlides&&(e=Math.ceil(g.children.length/g.settings.maxSlides)),void g.pagerEl.html(i+1+g.settings.pagerShortSeparator+e);g.pagerEl.find("a").removeClass("active"),g.pagerEl.each(function(e,t){G(t).find("a").eq(i).addClass("active")})},F=function(){if(g.settings.infiniteLoop){var e="";0===g.active.index?e=g.children.eq(0).position():g.active.index===C()-1&&g.carousel?e=g.children.eq((C()-1)*y()).position():g.active.index===g.children.length-1&&(e=g.children.eq(g.children.length-1).position()),e&&("horizontal"===g.settings.mode?P(-e.left,"reset",0):"vertical"===g.settings.mode&&P(-e.top,"reset",0))}g.working=!1,g.settings.onSlideAfter.call(p,g.children.eq(g.active.index),g.oldIndex,g.active.index)},B=function(e){g.settings.autoControlsCombine?g.controls.autoEl.html(g.controls[e]):(g.controls.autoEl.find("a").removeClass("active"),g.controls.autoEl.find("a:not(.wpmslider-"+e+")").addClass("active"))},N=function(){1===C()?(g.controls.prev.addClass("disabled"),g.controls.next.addClass("disabled")):!g.settings.infiniteLoop&&g.settings.hideControlOnEnd&&(0===g.active.index?(g.controls.prev.addClass("disabled"),g.controls.next.removeClass("disabled")):g.active.index===C()-1?(g.controls.next.addClass("disabled"),g.controls.prev.removeClass("disabled")):(g.controls.prev.removeClass("disabled"),g.controls.next.removeClass("disabled")))},W=function(){0<g.settings.autoDelay?setTimeout(p.startAuto,g.settings.autoDelay):p.startAuto(),g.settings.autoHover&&p.hover(function(){h("hover")},function(){f("hover")})},Y=function(e){var t=document.activeElement.tagName.toLowerCase();if(null===new RegExp(t,["i"]).exec("input|textarea")&&verge.inViewport(p)){if(39===e.keyCode)return z(e),!1;if(37===e.keyCode)return L(e),!1}},X=function(){g.touch={start:{x:0,y:0},end:{x:0,y:0}},g.viewport.on("touchstart MSPointerDown pointerdown",R),g.viewport.on("click",".wpmslider a",function(e){g.viewport.hasClass("click-disabled")&&(e.preventDefault(),e.stopPropagation(),g.viewport.removeClass("click-disabled"))})},R=function(e){if(("touchstart"===e.type||0===e.button)&&!e.originalEvent.target.classList.contains("readmore-text"))if(g.controls.el.addClass("disabled"),g.working)e.preventDefault(),e.stopPropagation(),g.controls.el.removeClass("disabled");else{g.touch.originalPos=p.position();var t=e.originalEvent,i=void 0!==t.changedTouches?t.changedTouches:[t];if("function"==typeof PointerEvent&&void 0===t.pointerId)return;g.touch.start.x=i[0].pageX,g.touch.start.y=i[0].pageY,g.viewport.get(0).setPointerCapture&&(g.pointerId=t.pointerId,g.viewport.get(0).setPointerCapture(g.pointerId)),g.originalClickTarget=t.originalTarget||t.target,g.originalClickButton=t.button,g.originalClickButtons=t.buttons,g.originalEventType=t.type,g.hasMove=!1,g.viewport.on("touchmove MSPointerMove pointermove",U),g.viewport.on("touchend MSPointerUp pointerup",V),g.viewport.on("MSPointerCancel pointercancel",Z)}},Z=function(e){e.preventDefault(),P(g.touch.originalPos.left,"reset",0),g.controls.el.removeClass("disabled"),g.viewport.off("MSPointerCancel pointercancel",Z),g.viewport.off("touchmove MSPointerMove pointermove",U),g.viewport.off("touchend MSPointerUp pointerup",V),g.viewport.get(0).releasePointerCapture&&g.viewport.get(0).releasePointerCapture(g.pointerId)},U=function(e){var t=e.originalEvent,i=void 0!==t.changedTouches?t.changedTouches:[t],n=Math.abs(i[0].pageX-g.touch.start.x),s=Math.abs(i[0].pageY-g.touch.start.y),o=0,r=0;g.hasMove=!0,s<3*n&&g.settings.preventDefaultSwipeX?(e.preventDefault(),e.stopPropagation()):n<3*s&&g.settings.preventDefaultSwipeY&&(e.preventDefault(),e.stopPropagation()),"touchmove"!==e.type&&e.preventDefault(),"fade"!==g.settings.mode&&g.settings.oneToOneTouch&&(o="horizontal"===g.settings.mode?(r=i[0].pageX-g.touch.start.x,g.touch.originalPos.left+r):(r=i[0].pageY-g.touch.start.y,g.touch.originalPos.top+r),P(o,"reset",0))},V=function(e){e.preventDefault(),g.viewport.off("touchmove MSPointerMove pointermove",U),g.controls.el.removeClass("disabled");var t=e.originalEvent,i=void 0!==t.changedTouches?t.changedTouches:[t],n=0,s=0;g.touch.end.x=i[0].pageX,g.touch.end.y=i[0].pageY,"fade"===g.settings.mode?(s=Math.abs(g.touch.start.x-g.touch.end.x))>=g.settings.swipeThreshold&&(g.touch.start.x>g.touch.end.x?p.goToNextSlide():p.goToPrevSlide(),p.stopAuto()):(n="horizontal"===g.settings.mode?(s=g.touch.end.x-g.touch.start.x,g.touch.originalPos.left):(s=g.touch.end.y-g.touch.start.y,g.touch.originalPos.top),!g.settings.infiniteLoop&&(0===g.active.index&&0<s||g.active.last&&s<0)?P(n,"reset",200):Math.abs(s)>=g.settings.swipeThreshold?(s<0?p.goToNextSlide():p.goToPrevSlide(),p.stopAuto()):P(n,"reset",200)),g.viewport.off("touchend MSPointerUp pointerup",V),g.viewport.get(0).releasePointerCapture&&g.viewport.get(0).releasePointerCapture(g.pointerId),!1!==g.hasMove||0!==g.originalClickButton&&"touchstart"!==g.originalEventType||G(g.originalClickTarget).trigger({type:"click",button:g.originalClickButton,buttons:g.originalClickButtons})},j=function(e){g.initialized?g.working?(g.debug&&console.log(g.logAs,"slider working"),window.setTimeout(j,10)):(p.redrawSlider(),g.settings.onSliderResize.call(p,g.active.index)):g.debug&&console.log(g.logAs,"slider not initialized")},Q=function(e){var t=b();g.settings.ariaHidden&&(g.children.attr("aria-hidden","true"),g.children.slice(e,e+t).attr("aria-hidden","false"))};return p.goToSlide=function(e,t){var i,n,s,o,r,a=!0,l=0,d={left:0,top:0},c=null;if(g.oldIndex=g.active.index,g.active.index=(r=e)<0?g.settings.infiniteLoop?C()-1:g.active.index:r>=C()?g.settings.infiniteLoop?0:g.active.index:r,!g.working&&g.active.index!==g.oldIndex){if(g.working=!0,void 0!==(a=g.settings.onSlideBefore.call(p,g.children.eq(g.active.index),g.oldIndex,g.active.index))&&!a)return g.active.index=g.oldIndex,void(g.working=!1);"next"===t?g.settings.onSlideNext.call(p,g.children.eq(g.active.index),g.oldIndex,g.active.index)||(a=!1):"prev"===t&&(g.settings.onSlidePrev.call(p,g.children.eq(g.active.index),g.oldIndex,g.active.index)||(a=!1)),g.active.last=g.active.index>=C()-1,(g.settings.pager||g.settings.pagerCustom)&&O(g.active.index),g.settings.controls&&N(),"fade"===g.settings.mode?(g.settings.adaptiveHeight&&g.viewport.height()!==S()&&g.viewport.animate({height:S()},g.settings.adaptiveHeightSpeed),g.children.filter(":visible").fadeOut(g.settings.speed).css({zIndex:0}),g.children.eq(g.active.index).css("zIndex",g.settings.slideZIndex+1).fadeIn(g.settings.speed,function(){G(this).css("zIndex",g.settings.slideZIndex),F()})):(g.settings.adaptiveHeight&&g.viewport.height()!==S()&&g.viewport.animate({height:S()},g.settings.adaptiveHeightSpeed),!g.settings.infiniteLoop&&g.carousel&&g.active.last?"horizontal"===g.settings.mode?(d=(c=g.children.eq(g.children.length-1)).position(),l=g.viewport.width()-c.outerWidth()):(i=g.children.length-g.settings.minSlides,d=g.children.eq(i).position()):g.carousel&&g.active.last&&"prev"===t?(n=1===g.settings.moveSlides?g.settings.maxSlides-y():(C()-1)*y()-(g.children.length-g.settings.maxSlides),d=(c=p.children(".wpmslider-clone").eq(n)).position()):"next"===t&&0===g.active.index?(d=p.find("> .wpmslider-clone").eq(g.settings.maxSlides).position(),g.active.last=!1):0<=e&&(o=e*parseInt(y()),d=g.children.eq(o).position()),void 0!==d&&(s="horizontal"===g.settings.mode?-(d.left-l):-d.top,P(s,"slide",g.settings.speed))),g.settings.ariaHidden&&Q(g.active.index*y())}},p.goToNextSlide=function(){if((g.settings.infiniteLoop||!g.active.last)&&!0!==g.working){var e=parseInt(g.active.index)+1;p.goToSlide(e,"next")}},p.goToPrevSlide=function(){if((g.settings.infiniteLoop||0!==g.active.index)&&!0!==g.working){var e=parseInt(g.active.index)-1;p.goToSlide(e,"prev")}},p.startAuto=function(e){g.interval||(g.interval=setInterval(function(){"next"===g.settings.autoDirection?p.goToNextSlide():p.goToPrevSlide()},g.settings.pause),g.settings.onAutoChange.call(p,!0),g.settings.autoControls&&!0!==e&&B("stop"))},p.stopAuto=function(e){g.autoPaused&&(g.autoPaused=!1),g.interval&&(clearInterval(g.interval),g.interval=null,g.settings.onAutoChange.call(p,!1),g.settings.autoControls&&!0!==e&&B("start"))},p.getCurrentSlide=function(){return g.active.index},p.getCurrentSlideElement=function(){return g.children.eq(g.active.index)},p.getSlideElement=function(e){return g.children.eq(e)},p.getSlideCount=function(){return g.children.length},p.isWorking=function(){return g.working},p.redrawSlider=function(){var e,t,i,n,s;g.debug&&console.log(g.logAs,"redrawSlider"),a(),g.children.height("auto"),g.viewport.height(S()+2),g.settings.stretch&&(e=g.children.map(function(){return jQuery(this).actual("outerHeight")}).get(),t=m(e),g.children.height(t)),g.children.add(p.find(".wpmslider-clone")).outerWidth(x()),g.children.length>g.settings.maxSlides&&g.active.last&&!g.settings.infiniteLoop?"horizontal"===g.settings.mode?(i=(n=g.children.last()).position(),P(-(i.left-(g.viewport.width()-n.outerWidth())),"reset",0)):"vertical"===g.settings.mode&&(s=g.children.length-g.settings.minSlides,i=g.children.eq(s).position(),P(-i.top,"reset",0)):(i=g.children.eq(g.active.index*y()).position(),g.active.index===C()-1&&(g.active.last=!0),void 0!==i&&("horizontal"===g.settings.mode?P(-i.left,"reset",0):"vertical"===g.settings.mode?P(-i.top,"reset",0):"none"===g.settings.mode&&P(-i.top,"reset",0))),g.active.last&&(g.active.index=C()-1),g.active.index>=C()&&(g.active.last=!0),g.settings.pager&&!g.settings.pagerCustom&&(E(),O(g.active.index)),g.settings.ariaHidden&&Q(g.active.index*y())},p.destroySlider=function(){g.initialized&&(g.initialized=!1,G(".wpmslider-clone",this).remove(),g.children.each(function(){void 0!==G(this).data("origStyle")?G(this).attr("style",G(this).data("origStyle")):G(this).removeAttr("style")}),void 0!==G(this).data("origStyle")?this.attr("style",G(this).data("origStyle")):G(this).removeAttr("style"),G(this).unwrap().unwrap(),g.controls.el&&g.controls.el.remove(),g.controls.next&&g.controls.next.remove(),g.controls.prev&&g.controls.prev.remove(),g.pagerEl&&g.settings.controls&&!g.settings.pagerCustom&&g.pagerEl.remove(),G(".wpmslider-caption",this).remove(),g.controls.autoEl&&g.controls.autoEl.remove(),clearInterval(g.interval),clearInterval(g.visibilityInterval),g.settings.responsive&&G(window).off("resize",j),g.settings.keyboardEnabled&&G(document).off("keydown",Y),G(this).removeData("strongSlider"))},p.reloadSlider=function(e){void 0!==e&&(i=e),p.destroySlider(),t(),G(p).data("strongSlider",this)},t(),G(p).data("strongSlider",this),o.attr("data-state","init"),g.debug&&console.log(g.logAs,"viewport",verge.viewportW(),"x",verge.viewportH()),this}}}(jQuery);
1
+ !function(G){var J={debug:!1,logAs:"strongSlider",compat:{lazyload:{active:!1,classes:{}}},mode:"horizontal",slideSelector:"div.t-slide",infiniteLoop:!0,hideControlOnEnd:!1,speed:500,easing:null,slideMargin:10,startSlide:0,randomStart:!1,captions:!1,adaptiveHeight:!1,adaptiveHeightSpeed:500,video:!1,useCSS:!0,preloadImages:"visible",responsive:!0,slideZIndex:50,wrapperClass:"wpmslider-wrapper",stretch:!1,imagesLoaded:!0,touchEnabled:!0,swipeThreshold:50,oneToOneTouch:!0,preventDefaultSwipeX:!0,preventDefaultSwipeY:!1,ariaLive:!0,ariaHidden:!0,keyboardEnabled:!1,pager:!0,pagerType:"full",pagerShortSeparator:" / ",pagerSelector:null,buildPager:null,pagerCustom:null,controls:!0,nextText:"Next",prevText:"Prev",nextSelector:null,prevSelector:null,autoControls:!1,startText:"Start",stopText:"Stop",autoControlsCombine:!1,autoControlsSelector:null,auto:!0,pause:4e3,autoStart:!0,autoDirection:"next",stopAutoOnClick:!1,autoHover:!1,autoDelay:0,autoSlideForOnePage:!1,minSlides:1,maxSlides:1,moveSlides:0,onSliderLoad:function(){return!0},onSlideBefore:function(){return!0},onSlideAfter:function(){return!0},onSlideNext:function(){return!0},onSlidePrev:function(){return!0},onSliderResize:function(){return!0},onAutoChange:function(){return!0}};G.fn.strongSlider=function(i){if(0===this.length)return this;var g={},o=this,p=this.find(".wpmslider-content");if(!G(p).data("strongSlider")){var t=function(){if(!G(p).data("strongSlider")){g.visibilityInterval=0,g.hidden=!1;var e=o.data("slider-var"),t={};void 0!==window[e]&&(t=window[e].config),g.settings=G.extend({},J,t,i),g.debug=g.settings.debug,g.logAs=g.settings.logAs,g.debug&&console.log(g.logAs,"slider.settings",g.settings),g.children=p.children(g.settings.slideSelector),g.children.length<g.settings.minSlides&&(g.settings.minSlides=g.children.length),g.children.length<g.settings.maxSlides&&(g.settings.maxSlides=g.children.length),g.settings.randomStart&&(g.settings.startSlide=Math.floor(Math.random()*g.children.length)),g.active={index:g.settings.startSlide},r(),g.carousel&&(g.settings.preloadImages="all"),g.working=!1,g.controls={},g.interval=null,g.animProp="vertical"===g.settings.mode?"top":"left",g.usingCSS=g.settings.useCSS&&"fade"!==g.settings.mode&&function(){for(var e=document.createElement("div"),t=["WebkitPerspective","MozPerspective","OPerspective","msPerspective"],i=0;i<t.length;i++)if(void 0!==e.style[t[i]])return g.cssPrefix=t[i].replace("Perspective","").toLowerCase(),g.animProp="-"+g.cssPrefix+"-transform",!0;return!1}(),"vertical"===g.settings.mode&&(g.settings.maxSlides=g.settings.minSlides),p.data("origStyle",p.attr("style")),p.children(g.settings.slideSelector).each(function(){G(this).data("origStyle",G(this).attr("style"))}),p.getSlideCount()&&(g.settings.imagesLoaded?o.imagesLoaded(function(){n()}):n())}},e=function(){return o.is(":visible")&&"hidden"!==o.css("visibility")},n=function(){e()&&function(){if(g.settings.compat.lazyload){for(var e=!1,t=0,i=g.settings.compat.lazyload.classes.length;t<i;t++){var n=g.settings.compat.lazyload.classes[t].start,s=g.settings.compat.lazyload.classes[t].finish;n&&s?o.find("img."+n).length&&!o.find("img."+s).length&&(e=!0):n?o.find("img."+n).length&&(e=!0):s&&(o.find("img."+s).length||(e=!0))}if(e)return g.debug&&console.log(g.logAs,"lazy loading..."),!1}return g.debug&&console.log(g.logAs,"compat check complete"),!0}()?(clearInterval(g.visibilityInterval),s()):0===g.visibilityInterval&&(g.visibilityInterval=setInterval(n,4e3))},s=function(){var e=g.children.eq(g.settings.startSlide);p.wrap('<div class="'+g.settings.wrapperClass+'"><div class="wpmslider-viewport"></div></div>'),g.viewport=p.parent(),g.settings.ariaLive&&g.viewport.attr("aria-live","polite"),g.loader=G('<div class="wpmslider-loading" />'),g.viewport.prepend(g.loader),p.css({width:"horizontal"===g.settings.mode?1e3*g.children.length+215+"%":"auto",position:"relative"}),g.usingCSS&&g.settings.easing?p.css("-"+g.cssPrefix+"-transition-timing-function",g.settings.easing):g.settings.easing||(g.settings.easing="swing"),g.viewport.css({width:"100%",overflow:"hidden",position:"relative"}),g.viewport.parent().css({maxWidth:w()}),g.settings.pager||g.settings.controls||g.viewport.parent().css({margin:"0 auto"}),g.children.css({float:"horizontal"===g.settings.mode?"left":"none",listStyle:"none",position:"relative"}),a(),"horizontal"===g.settings.mode&&0<g.settings.slideMargin&&g.children.css("marginRight",g.settings.slideMargin),"vertical"===g.settings.mode&&0<g.settings.slideMargin&&g.children.css("marginBottom",g.settings.slideMargin),"fade"===g.settings.mode?(g.children.css({position:"absolute",zIndex:0,display:"none"}),g.children.eq(g.settings.startSlide).css({zIndex:g.settings.slideZIndex,display:"block"})):g.children.css({display:"block"}),g.controls.el=G('<div class="wpmslider-controls" />'),g.settings.captions&&A(),g.active.last=g.settings.startSlide===C()-1,g.settings.video&&p.fitVids(),"none"===g.settings.preloadImages?e=null:"all"===g.settings.preloadImages&&(e=g.children),g.settings.controls&&T(),g.settings.auto&&g.settings.autoControls&&M(),g.settings.pager&&k(),g.settings.controls&&I(),(g.settings.controls||g.settings.autoControls||g.settings.pager)&&g.viewport.after(g.controls.el),null===e?d():l(e,d)},r=function(){g.debug&&console.log(g.logAs,"setBreakpoint");var e=g.settings.breakpoints.single,t=g.settings.breakpoints.multiple;if("show_multiple"===g.settings.type)for(var i in t)if(t.hasOwnProperty(i)&&verge.viewportW()>=t[i].width){e=t[i];break}g.debug&&console.log("current breakpoint",e),g.settings.maxSlides=e.maxSlides,g.settings.moveSlides=e.moveSlides,g.settings.slideMargin=e.slideMargin,g.carousel=1<g.settings.minSlides||1<g.settings.maxSlides},a=function(){r(),g.children.css("width",x())},l=function(e,t){var i=e.find('img:not([src=""]), iframe').length,n=0;0!==i?e.find('img:not([src=""]), iframe').each(function(){G(this).one("load error",function(){++n===i&&t()}).each(function(){(this.complete||""===this.src)&&G(this).trigger("load")})}):t()},d=function(){if(g.settings.infiniteLoop&&"fade"!==g.settings.mode){var e="vertical"===g.settings.mode?g.settings.minSlides:g.settings.maxSlides,t=g.children.slice(0,e).clone(!0).addClass("wpmslider-clone"),i=g.children.slice(-e).clone(!0).addClass("wpmslider-clone");g.settings.ariaHidden&&(t.attr("aria-hidden",!0),i.attr("aria-hidden",!0)),p.append(t).prepend(i)}g.loader.remove(),"vertical"===g.settings.mode&&(g.settings.adaptiveHeight=!0),p.redrawSlider(),g.settings.onSliderLoad.call(p,g.active.index),g.initialized=!0,g.visibilityInterval=setInterval(v,500),g.settings.responsive&&c(),g.settings.auto&&g.settings.autoStart&&(1<C()||g.settings.autoSlideForOnePage)&&W(),g.settings.pager&&O(g.settings.startSlide),g.settings.controls&&B(),g.settings.touchEnabled&&X(),g.settings.keyboardEnabled&&G(document).keydown(Y)},c=function(){window.addEventListener("resize",u,!1),window.addEventListener("orientationchange",u,!1),window.addEventListener("toggleFullContent",u,!1),window.addEventListener("blur",function(){h("blur")}),window.addEventListener("focus",function(){f("blur")})},u=_.debounce(function(){g.debug&&console.log(g.logAs,"updateLayout"),j()},250),v=function(){g.settings.auto&&(e()?f("hide"):h("hide"),verge.inViewport(p)?f("scroll"):h("scroll"))},h=function(e){g.interval&&(p.stopAuto(!0),g.autoPaused=e,g.debug&&console.log(g.logAs,"pause",e))},f=function(e){g.autoPaused===e&&(p.startAuto(!0),g.autoPaused=null,g.debug&&console.log(g.logAs,"play",e))},m=function(e){return Math.max.apply(Math,e)},S=function(){var t=0,e=G();if("vertical"===g.settings.mode||g.settings.adaptiveHeight)if(g.carousel){var i=1===g.settings.moveSlides?g.active.index:g.active.index*y();e=g.children.eq(i);for(var n=1;n<=g.settings.maxSlides-1;n++)e=i+n>=g.children.length?e.add(g.children.eq(n-1)):e.add(g.children.eq(i+n))}else e=g.children.eq(g.active.index);else e=g.children;return"vertical"===g.settings.mode?(e.each(function(e){t+=G(this).outerHeight()}),0<g.settings.slideMargin&&(t+=g.settings.slideMargin*(g.settings.minSlides-1))):t=Math.max.apply(Math,e.map(function(){return G(this).outerHeight(!1)}).get()),"border-box"===g.viewport.css("box-sizing")?t+=parseFloat(g.viewport.css("padding-top"))+parseFloat(g.viewport.css("padding-bottom"))+parseFloat(g.viewport.css("border-top-width"))+parseFloat(g.viewport.css("border-bottom-width")):"padding-box"===g.viewport.css("box-sizing")&&(t+=parseFloat(g.viewport.css("padding-top"))+parseFloat(g.viewport.css("padding-bottom"))),t},w=function(){return"100%"},x=function(){var e=g.viewport.width(),t=g.settings.slideMargin*(g.settings.maxSlides-1);return Math.floor((e-t)/g.settings.maxSlides)},b=function(){return g.settings.maxSlides},C=function(){var e=0,t=0,i=0;if(0<g.settings.moveSlides){if(!g.settings.infiniteLoop){for(;t<g.children.length;)++e,t=i+b(),i+=g.settings.moveSlides<=b()?g.settings.moveSlides:b();return i}e=Math.ceil(g.children.length/y())}else e=Math.ceil(g.children.length/b());return e},y=function(){return 0<g.settings.moveSlides&&g.settings.moveSlides<=b()?g.settings.moveSlides:b()},P=function(e,t,i,n){var s,o;g.usingCSS?("vertical"===g.settings.mode?o="translateY("+e+"px)":"horizontal"===g.settings.mode?o="translateX("+e+"px":"none"===g.settings.mode&&(o="translateY("+e+"px)",i=0),p.css("-"+g.cssPrefix+"-transition-duration",i/1e3+"s"),"slide"===t?(p.css(g.animProp,o),0!==i?p.on("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd",function(e){G(e.target).is(p)&&(p.off("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd"),F())}):F()):"reset"===t&&p.css(g.animProp,o)):((s={})[g.animProp]=e,"slide"===t?p.animate(s,i,g.settings.easing,function(){F()}):"reset"===t&&p.css(g.animProp,e))},E=function(){for(var e="",t="",i=C(),n=0;n<i;n++)t="",g.settings.buildPager?("icons"===g.settings.buildPager&&(t=""),(G.isFunction(g.settings.buildPager)||g.settings.pagerCustom)&&(t=g.settings.buildPager(n)),g.pagerEl.addClass("wpmslider-custom-pager")):(t=n+1,g.pagerEl.addClass("wpmslider-default-pager")),e+='<div class="wpmslider-pager-item"><a href="" data-slide-index="'+n+'" class="wpmslider-pager-link">'+t+"</a></div>";g.pagerEl.html(e)},k=function(){g.settings.pagerCustom?g.pagerEl=G(g.settings.pagerCustom):(g.pagerEl=G('<div class="wpmslider-pager" />'),g.settings.pagerSelector?G(g.settings.pagerSelector).html(g.pagerEl):g.controls.el.addClass("wpmslider-has-pager").append(g.pagerEl),E()),g.pagerEl.on("click touchend","a",H)},T=function(){g.controls.prev=G('<a class="wpmslider-prev" href="">'+g.settings.prevText+"</a>"),g.controls.prev.on("click touchend",L),g.settings.prevSelector&&G(g.settings.prevSelector).append(g.controls.prev),g.settings.prevSelector||(g.controls.directionEl=G('<div class="wpmslider-controls-direction" />'),g.controls.directionEl.append(g.controls.prev),g.controls.el.addClass("wpmslider-has-controls-direction").append(g.controls.directionEl))},I=function(){g.controls.next=G('<a class="wpmslider-next" href="">'+g.settings.nextText+"</a>"),g.controls.next.on("click touchend",z),g.settings.nextSelector&&G(g.settings.nextSelector).append(g.controls.next),g.settings.nextSelector||(g.controls.directionEl=G('<div class="wpmslider-controls-direction" />'),g.controls.directionEl.append(g.controls.next),g.controls.el.addClass("wpmslider-has-controls-direction").append(g.controls.directionEl))},M=function(){g.controls.start=G('<div class="wpmslider-controls-auto-item"><a class="wpmslider-start" href="">'+g.settings.startText+"</a></div>"),g.controls.stop=G('<div class="wpmslider-controls-auto-item"><a class="wpmslider-stop" href="">'+g.settings.stopText+"</a></div>"),g.controls.autoEl=G('<div class="wpmslider-controls-auto" />'),g.controls.autoEl.on("click",".wpmslider-start",q),g.controls.autoEl.on("click",".wpmslider-stop",D),g.settings.autoControlsCombine?g.controls.autoEl.append(g.controls.start):g.controls.autoEl.append(g.controls.start).append(g.controls.stop),g.settings.autoControlsSelector?G(g.settings.autoControlsSelector).html(g.controls.autoEl):g.controls.el.addClass("wpmslider-has-controls-auto").append(g.controls.autoEl),N(g.settings.autoStart?"stop":"start")},A=function(){g.children.each(function(e){var t=G(this).find("img:first").attr("title");void 0!==t&&(""+t).length&&G(this).append('<div class="wpmslider-caption"><span>'+t+"</span></div>")})},z=function(e){e.preventDefault(),e.stopPropagation(),g.controls.el.hasClass("disabled")||(g.settings.auto&&g.settings.stopAutoOnClick&&(g.debug&&console.log(g.logAs,"stop on navigation"),p.stopAuto()),p.goToNextSlide())},L=function(e){e.preventDefault(),e.stopPropagation(),g.controls.el.hasClass("disabled")||(g.settings.auto&&g.settings.stopAutoOnClick&&(g.debug&&console.log(g.logAs,"stop on navigation"),p.stopAuto()),p.goToPrevSlide())},q=function(e){p.startAuto(),e.preventDefault(),e.stopPropagation()},D=function(e){p.stopAuto(),e.preventDefault(),e.stopPropagation()},H=function(e){var t,i;e.preventDefault(),e.stopPropagation(),g.controls.el.hasClass("disabled")||(g.settings.auto&&g.settings.stopAutoOnClick&&(g.debug&&console.log(g.logAs,"stop on navigation"),p.stopAuto()),void 0!==(t=G(e.currentTarget)).attr("data-slide-index")&&(i=parseInt(t.attr("data-slide-index")))!==g.active.index&&p.goToSlide(i))},O=function(i){var e=g.children.length;if("short"===g.settings.pagerType)return 1<g.settings.maxSlides&&(e=Math.ceil(g.children.length/g.settings.maxSlides)),void g.pagerEl.html(i+1+g.settings.pagerShortSeparator+e);g.pagerEl.find("a").removeClass("active"),g.pagerEl.each(function(e,t){G(t).find("a").eq(i).addClass("active")})},F=function(){if(g.settings.infiniteLoop){var e="";0===g.active.index?e=g.children.eq(0).position():g.active.index===C()-1&&g.carousel?e=g.children.eq((C()-1)*y()).position():g.active.index===g.children.length-1&&(e=g.children.eq(g.children.length-1).position()),e&&("horizontal"===g.settings.mode?P(-e.left,"reset",0):"vertical"===g.settings.mode&&P(-e.top,"reset",0))}g.working=!1,g.settings.onSlideAfter.call(p,g.children.eq(g.active.index),g.oldIndex,g.active.index)},N=function(e){g.settings.autoControlsCombine?g.controls.autoEl.html(g.controls[e]):(g.controls.autoEl.find("a").removeClass("active"),g.controls.autoEl.find("a:not(.wpmslider-"+e+")").addClass("active"))},B=function(){1===C()?(g.controls.prev.addClass("disabled"),g.controls.next.addClass("disabled")):!g.settings.infiniteLoop&&g.settings.hideControlOnEnd&&(0===g.active.index?(g.controls.prev.addClass("disabled"),g.controls.next.removeClass("disabled")):g.active.index===C()-1?(g.controls.next.addClass("disabled"),g.controls.prev.removeClass("disabled")):(g.controls.prev.removeClass("disabled"),g.controls.next.removeClass("disabled")))},W=function(){0<g.settings.autoDelay?setTimeout(p.startAuto,g.settings.autoDelay):p.startAuto(),g.settings.autoHover&&p.hover(function(){h("hover")},function(){f("hover")})},Y=function(e){var t=document.activeElement.tagName.toLowerCase();if(null===new RegExp(t,["i"]).exec("input|textarea")&&verge.inViewport(p)){if(39===e.keyCode)return z(e),!1;if(37===e.keyCode)return L(e),!1}},X=function(){g.touch={start:{x:0,y:0},end:{x:0,y:0}},g.viewport.on("touchstart MSPointerDown pointerdown",R),g.viewport.on("click",".wpmslider a",function(e){g.viewport.hasClass("click-disabled")&&(e.preventDefault(),e.stopPropagation(),g.viewport.removeClass("click-disabled"))})},R=function(e){if(("touchstart"===e.type||0===e.button)&&"a"!==e.originalEvent.target.tagName.toLowerCase()&&!e.originalEvent.target.classList.contains("readmore-text"))if(g.controls.el.addClass("disabled"),g.working)e.preventDefault(),e.stopPropagation(),g.controls.el.removeClass("disabled");else{g.touch.originalPos=p.position();var t=e.originalEvent,i=void 0!==t.changedTouches?t.changedTouches:[t];if("function"==typeof PointerEvent&&void 0===t.pointerId)return;g.touch.start.x=i[0].pageX,g.touch.start.y=i[0].pageY,g.viewport.get(0).setPointerCapture&&(g.pointerId=t.pointerId,g.viewport.get(0).setPointerCapture(g.pointerId)),g.originalClickTarget=t.originalTarget||t.target,g.originalClickButton=t.button,g.originalClickButtons=t.buttons,g.originalEventType=t.type,g.hasMove=!1,g.viewport.on("touchmove MSPointerMove pointermove",U),g.viewport.on("touchend MSPointerUp pointerup",V),g.viewport.on("MSPointerCancel pointercancel",Z)}},Z=function(e){e.preventDefault(),P(g.touch.originalPos.left,"reset",0),g.controls.el.removeClass("disabled"),g.viewport.off("MSPointerCancel pointercancel",Z),g.viewport.off("touchmove MSPointerMove pointermove",U),g.viewport.off("touchend MSPointerUp pointerup",V),g.viewport.get(0).releasePointerCapture&&g.viewport.get(0).releasePointerCapture(g.pointerId)},U=function(e){var t=e.originalEvent,i=void 0!==t.changedTouches?t.changedTouches:[t],n=Math.abs(i[0].pageX-g.touch.start.x),s=Math.abs(i[0].pageY-g.touch.start.y),o=0,r=0;g.hasMove=!0,s<3*n&&g.settings.preventDefaultSwipeX?(e.preventDefault(),e.stopPropagation()):n<3*s&&g.settings.preventDefaultSwipeY&&(e.preventDefault(),e.stopPropagation()),"touchmove"!==e.type&&e.preventDefault(),"fade"!==g.settings.mode&&g.settings.oneToOneTouch&&(o="horizontal"===g.settings.mode?(r=i[0].pageX-g.touch.start.x,g.touch.originalPos.left+r):(r=i[0].pageY-g.touch.start.y,g.touch.originalPos.top+r),P(o,"reset",0))},V=function(e){e.preventDefault(),g.viewport.off("touchmove MSPointerMove pointermove",U),g.controls.el.removeClass("disabled");var t=e.originalEvent,i=void 0!==t.changedTouches?t.changedTouches:[t],n=0,s=0;g.touch.end.x=i[0].pageX,g.touch.end.y=i[0].pageY,"fade"===g.settings.mode?(s=Math.abs(g.touch.start.x-g.touch.end.x))>=g.settings.swipeThreshold&&(g.touch.start.x>g.touch.end.x?p.goToNextSlide():p.goToPrevSlide(),p.stopAuto()):(n="horizontal"===g.settings.mode?(s=g.touch.end.x-g.touch.start.x,g.touch.originalPos.left):(s=g.touch.end.y-g.touch.start.y,g.touch.originalPos.top),!g.settings.infiniteLoop&&(0===g.active.index&&0<s||g.active.last&&s<0)?P(n,"reset",200):Math.abs(s)>=g.settings.swipeThreshold?(s<0?p.goToNextSlide():p.goToPrevSlide(),p.stopAuto()):P(n,"reset",200)),g.viewport.off("touchend MSPointerUp pointerup",V),g.viewport.get(0).releasePointerCapture&&g.viewport.get(0).releasePointerCapture(g.pointerId),!1!==g.hasMove||0!==g.originalClickButton&&"touchstart"!==g.originalEventType||G(g.originalClickTarget).trigger({type:"click",button:g.originalClickButton,buttons:g.originalClickButtons})},j=function(e){g.initialized?g.working?(g.debug&&console.log(g.logAs,"slider working"),window.setTimeout(j,10)):(p.redrawSlider(),g.settings.onSliderResize.call(p,g.active.index)):g.debug&&console.log(g.logAs,"slider not initialized")},Q=function(e){var t=b();g.settings.ariaHidden&&(g.children.attr("aria-hidden","true"),g.children.slice(e,e+t).attr("aria-hidden","false"))};return p.goToSlide=function(e,t){var i,n,s,o,r,a=!0,l=0,d={left:0,top:0},c=null;if(g.oldIndex=g.active.index,g.active.index=(r=e)<0?g.settings.infiniteLoop?C()-1:g.active.index:r>=C()?g.settings.infiniteLoop?0:g.active.index:r,!g.working&&g.active.index!==g.oldIndex){if(g.working=!0,void 0!==(a=g.settings.onSlideBefore.call(p,g.children.eq(g.active.index),g.oldIndex,g.active.index))&&!a)return g.active.index=g.oldIndex,void(g.working=!1);"next"===t?g.settings.onSlideNext.call(p,g.children.eq(g.active.index),g.oldIndex,g.active.index)||(a=!1):"prev"===t&&(g.settings.onSlidePrev.call(p,g.children.eq(g.active.index),g.oldIndex,g.active.index)||(a=!1)),g.active.last=g.active.index>=C()-1,(g.settings.pager||g.settings.pagerCustom)&&O(g.active.index),g.settings.controls&&B(),"fade"===g.settings.mode?(g.settings.adaptiveHeight&&g.viewport.height()!==S()&&g.viewport.animate({height:S()},g.settings.adaptiveHeightSpeed),g.children.filter(":visible").fadeOut(g.settings.speed).css({zIndex:0}),g.children.eq(g.active.index).css("zIndex",g.settings.slideZIndex+1).fadeIn(g.settings.speed,function(){G(this).css("zIndex",g.settings.slideZIndex),F()})):(g.settings.adaptiveHeight&&g.viewport.height()!==S()&&g.viewport.animate({height:S()},g.settings.adaptiveHeightSpeed),!g.settings.infiniteLoop&&g.carousel&&g.active.last?"horizontal"===g.settings.mode?(d=(c=g.children.eq(g.children.length-1)).position(),l=g.viewport.width()-c.outerWidth()):(i=g.children.length-g.settings.minSlides,d=g.children.eq(i).position()):g.carousel&&g.active.last&&"prev"===t?(n=1===g.settings.moveSlides?g.settings.maxSlides-y():(C()-1)*y()-(g.children.length-g.settings.maxSlides),d=(c=p.children(".wpmslider-clone").eq(n)).position()):"next"===t&&0===g.active.index?(d=p.find("> .wpmslider-clone").eq(g.settings.maxSlides).position(),g.active.last=!1):0<=e&&(o=e*parseInt(y()),d=g.children.eq(o).position()),void 0!==d&&(s="horizontal"===g.settings.mode?-(d.left-l):-d.top,P(s,"slide",g.settings.speed))),g.settings.ariaHidden&&Q(g.active.index*y())}},p.goToNextSlide=function(){if((g.settings.infiniteLoop||!g.active.last)&&!0!==g.working){var e=parseInt(g.active.index)+1;p.goToSlide(e,"next")}},p.goToPrevSlide=function(){if((g.settings.infiniteLoop||0!==g.active.index)&&!0!==g.working){var e=parseInt(g.active.index)-1;p.goToSlide(e,"prev")}},p.startAuto=function(e){g.interval||(g.interval=setInterval(function(){"next"===g.settings.autoDirection?p.goToNextSlide():p.goToPrevSlide()},g.settings.pause),g.settings.onAutoChange.call(p,!0),g.settings.autoControls&&!0!==e&&N("stop"))},p.stopAuto=function(e){g.autoPaused&&(g.autoPaused=!1),g.interval&&(clearInterval(g.interval),g.interval=null,g.settings.onAutoChange.call(p,!1),g.settings.autoControls&&!0!==e&&N("start"))},p.getCurrentSlide=function(){return g.active.index},p.getCurrentSlideElement=function(){return g.children.eq(g.active.index)},p.getSlideElement=function(e){return g.children.eq(e)},p.getSlideCount=function(){return g.children.length},p.isWorking=function(){return g.working},p.redrawSlider=function(){var e,t,i,n,s;g.debug&&console.log(g.logAs,"redrawSlider"),a(),g.children.height("auto"),g.viewport.height(S()+2),g.settings.stretch&&(e=g.children.map(function(){return jQuery(this).actual("outerHeight")}).get(),t=m(e),g.children.height(t)),g.children.add(p.find(".wpmslider-clone")).outerWidth(x()),g.children.length>g.settings.maxSlides&&g.active.last&&!g.settings.infiniteLoop?"horizontal"===g.settings.mode?(i=(n=g.children.last()).position(),P(-(i.left-(g.viewport.width()-n.outerWidth())),"reset",0)):"vertical"===g.settings.mode&&(s=g.children.length-g.settings.minSlides,i=g.children.eq(s).position(),P(-i.top,"reset",0)):(i=g.children.eq(g.active.index*y()).position(),g.active.index===C()-1&&(g.active.last=!0),void 0!==i&&("horizontal"===g.settings.mode?P(-i.left,"reset",0):"vertical"===g.settings.mode?P(-i.top,"reset",0):"none"===g.settings.mode&&P(-i.top,"reset",0))),g.active.last&&(g.active.index=C()-1),g.active.index>=C()&&(g.active.last=!0),g.settings.pager&&!g.settings.pagerCustom&&(E(),O(g.active.index)),g.settings.ariaHidden&&Q(g.active.index*y())},p.destroySlider=function(){g.initialized&&(g.initialized=!1,G(".wpmslider-clone",this).remove(),g.children.each(function(){void 0!==G(this).data("origStyle")?G(this).attr("style",G(this).data("origStyle")):G(this).removeAttr("style")}),void 0!==G(this).data("origStyle")?this.attr("style",G(this).data("origStyle")):G(this).removeAttr("style"),G(this).unwrap().unwrap(),g.controls.el&&g.controls.el.remove(),g.controls.next&&g.controls.next.remove(),g.controls.prev&&g.controls.prev.remove(),g.pagerEl&&g.settings.controls&&!g.settings.pagerCustom&&g.pagerEl.remove(),G(".wpmslider-caption",this).remove(),g.controls.autoEl&&g.controls.autoEl.remove(),clearInterval(g.interval),clearInterval(g.visibilityInterval),g.settings.responsive&&G(window).off("resize",j),g.settings.keyboardEnabled&&G(document).off("keydown",Y),G(this).removeData("strongSlider"))},p.reloadSlider=function(e){void 0!==e&&(i=e),p.destroySlider(),t(),G(p).data("strongSlider",this)},t(),G(p).data("strongSlider",this),o.attr("data-state","init"),g.debug&&console.log(g.logAs,"viewport",verge.viewportW(),"x",verge.viewportH()),this}}}(jQuery);
readme.txt CHANGED
@@ -4,7 +4,7 @@ Tags: testimonials, testimonial slider, testimonial form, star ratings
4
  Requires at least: 4.6
5
  Requires PHP: 5.6
6
  Tested up to: 5.2
7
- Stable tag: 2.38.1
8
  License: GPLv3 or later
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
@@ -47,12 +47,6 @@ Some templates have light & dark versions and other options. If you want to cust
47
 
48
  This plugin provides one form with custom fields. Customize the form by adding or removing fields and changing properties like the order, label, and placeholder.
49
 
50
- Anti-spam measures include honeypots and Captcha via these plugins:
51
-
52
- * [Google Captcha (reCAPTCHA) by BestWebSoft](https://wordpress.org/plugins/google-captcha/) *recommended*
53
- * [Captcha Pro](https://bestwebsoft.com/products/wordpress/plugins/captcha/)
54
- * [Really Simple Captcha](https://wordpress.org/plugins/really-simple-captcha/)
55
-
56
  Send custom notification emails to multiple admins.
57
 
58
  Submit the form via Ajax for use with plugins like [Popup Maker](https://wordpress.org/plugins/popup-maker/).
4
  Requires at least: 4.6
5
  Requires PHP: 5.6
6
  Tested up to: 5.2
7
+ Stable tag: 2.39
8
  License: GPLv3 or later
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
47
 
48
  This plugin provides one form with custom fields. Customize the form by adding or removing fields and changing properties like the order, label, and placeholder.
49
 
 
 
 
 
 
 
50
  Send custom notification emails to multiple admins.
51
 
52
  Submit the form via Ajax for use with plugins like [Popup Maker](https://wordpress.org/plugins/popup-maker/).
strong-testimonials.php CHANGED
@@ -5,7 +5,7 @@
5
  * Description: Collect and display your testimonials or reviews.
6
  * Author: MachoThemes
7
  * Author URI: https://www.machothemes.com/
8
- * Version: 2.38.1
9
  * Text Domain: strong-testimonials
10
  * Domain Path: /languages
11
  * Requires: 4.6 or higher
@@ -44,7 +44,7 @@ if ( ! defined( 'ABSPATH' ) ) {
44
  exit;
45
  }
46
 
47
- define( 'WPMTST_VERSION', '2.38.1' );
48
  define( 'WPMTST_PLUGIN', plugin_basename( __FILE__ ) ); // strong-testimonials/strong-testimonials.php
49
  define( 'WPMTST', dirname( WPMTST_PLUGIN ) ); // strong-testimonials
50
  defined( 'WPMTST_STORE_URL' ) || define( 'WPMTST_STORE_URL', 'https://strongtestimonials.com' );
@@ -285,6 +285,7 @@ final class Strong_Testimonials {
285
  require_once WPMTST_ADMIN . 'class-strong-testimonials-post-editor.php';
286
  require_once WPMTST_ADMIN . 'class-strong-testimonials-exporter.php';
287
  require_once WPMTST_ADMIN . 'class-strong-testimonials-upsell.php';
 
288
 
289
  require_once WPMTST_ADMIN . 'admin.php';
290
  require_once WPMTST_ADMIN . 'admin-notices.php';
@@ -529,3 +530,4 @@ function WPMST() {
529
 
530
  // Get plugin running
531
  WPMST();
 
5
  * Description: Collect and display your testimonials or reviews.
6
  * Author: MachoThemes
7
  * Author URI: https://www.machothemes.com/
8
+ * Version: 2.39
9
  * Text Domain: strong-testimonials
10
  * Domain Path: /languages
11
  * Requires: 4.6 or higher
44
  exit;
45
  }
46
 
47
+ define( 'WPMTST_VERSION', '2.39' );
48
  define( 'WPMTST_PLUGIN', plugin_basename( __FILE__ ) ); // strong-testimonials/strong-testimonials.php
49
  define( 'WPMTST', dirname( WPMTST_PLUGIN ) ); // strong-testimonials
50
  defined( 'WPMTST_STORE_URL' ) || define( 'WPMTST_STORE_URL', 'https://strongtestimonials.com' );
285
  require_once WPMTST_ADMIN . 'class-strong-testimonials-post-editor.php';
286
  require_once WPMTST_ADMIN . 'class-strong-testimonials-exporter.php';
287
  require_once WPMTST_ADMIN . 'class-strong-testimonials-upsell.php';
288
+ require_once WPMTST_ADMIN . 'class-strong-testimonials-updater.php';
289
 
290
  require_once WPMTST_ADMIN . 'admin.php';
291
  require_once WPMTST_ADMIN . 'admin-notices.php';
530
 
531
  // Get plugin running
532
  WPMST();
533
+