Theme My Login - Version 7.1.4

Version Description

  • Hide form for "check your email" step of password reset
  • Use retrieve_password() from WP core and deprecate compat.php
  • Update strings to match core
  • Add a filter to allow disabling network signup redirect
  • Fix deprecated notice in password strength meter
Download this release

Release Info

Developer jfarthing84
Plugin Icon 128x128 Theme My Login
Version 7.1.4
Comparing to
See all releases

Code changes from version 7.1.3 to 7.1.4

assets/scripts/theme-my-login.js CHANGED
@@ -97,13 +97,13 @@
97
  result = $( '#pass-strength-result' ),
98
  strength;
99
 
100
- result.removeClass('short bad good strong');
101
- if ( ! pass1 ) {
102
- result.html( ' ' );
103
  return;
104
  }
105
 
106
- strength = wp.passwordStrength.meter( pass1, wp.passwordStrength.userInputBlacklist(), pass1 );
107
 
108
  switch ( strength ) {
109
  case -1:
97
  result = $( '#pass-strength-result' ),
98
  strength;
99
 
100
+ result.removeClass('short bad good strong empty');
101
+ if ( ! pass1 || '' === pass1.trim() ) {
102
+ result.addClass('empty').html( ' ' );
103
  return;
104
  }
105
 
106
+ strength = wp.passwordStrength.meter( pass1, wp.passwordStrength.userInputDisallowedList(), pass1 );
107
 
108
  switch ( strength ) {
109
  case -1:
assets/scripts/theme-my-login.min.js CHANGED
@@ -1 +1 @@
1
- !function(n){n(".tml").on("submit",'form[data-ajax="1"]',function(a){var e=n(this),s=e.find(":input"),t=e.find(":submit"),r=n(a.delegateTarget).find(".tml-alerts");a.preventDefault(),r.empty(),s.prop("readonly",!0),t.prop("disabled",!0),n.ajax({data:e.serialize()+"&ajax=1",method:e.attr("method")||"get",url:e.attr("action")}).always(function(){s.prop("readonly",!1),t.prop("disabled",!1)}).done(function(a){a.success?a.data.refresh?location.reload(!0):a.data.redirect?location.href=a.data.redirect:a.data.notice&&r.hide().html(a.data.notice).fadeIn():r.hide().html(a.data.errors).fadeIn()}).fail(function(a,e,s){a.responseJSON.data.errors&&r.hide().html(a.responseJSON.data.errors).fadeIn()})})}(jQuery),function(s){s(function(){var a,e;if(!themeMyLogin.action)return;switch(a=s("#user_login"),themeMyLogin.action){case"activate":(e=s("#key")).length&&e.focus();break;case"lostpassword":case"retrievepassword":case"register":a.focus();break;case"resetpass":case"rp":s("#pass1").focus();break;case"login":-1!=themeMyLogin.errors.indexOf("invalid_username")&&a.val(""),a.val()?s("#user_pass").focus():a.focus()}})}(jQuery),function(s){function a(){var a=s("#pass1").val(),e=s("#pass-strength-result");if(e.removeClass("short bad good strong"),a)switch(wp.passwordStrength.meter(a,wp.passwordStrength.userInputBlacklist(),a)){case-1:e.addClass("bad").html(pwsL10n.unknown);break;case 2:e.addClass("bad").html(pwsL10n.bad);break;case 3:e.addClass("good").html(pwsL10n.good);break;case 4:e.addClass("strong").html(pwsL10n.strong);break;case 5:e.addClass("short").html(pwsL10n.mismatch);break;default:e.addClass("short").html(pwsL10n.short)}else e.html(" ")}s(document).ready(function(){s("#pass1").val("").on("keyup paste",a)})}(jQuery);
1
+ !function(n){n(".tml").on("submit",'form[data-ajax="1"]',function(a){var e=n(this),s=e.find(":input"),t=e.find(":submit"),r=n(a.delegateTarget).find(".tml-alerts");a.preventDefault(),r.empty(),s.prop("readonly",!0),t.prop("disabled",!0),n.ajax({data:e.serialize()+"&ajax=1",method:e.attr("method")||"get",url:e.attr("action")}).always(function(){s.prop("readonly",!1),t.prop("disabled",!1)}).done(function(a){a.success?a.data.refresh?location.reload(!0):a.data.redirect?location.href=a.data.redirect:a.data.notice&&r.hide().html(a.data.notice).fadeIn():r.hide().html(a.data.errors).fadeIn()}).fail(function(a,e,s){a.responseJSON.data.errors&&r.hide().html(a.responseJSON.data.errors).fadeIn()})})}(jQuery),function(s){s(function(){var a,e;if(!themeMyLogin.action)return;switch(a=s("#user_login"),themeMyLogin.action){case"activate":(e=s("#key")).length&&e.focus();break;case"lostpassword":case"retrievepassword":case"register":a.focus();break;case"resetpass":case"rp":s("#pass1").focus();break;case"login":-1!=themeMyLogin.errors.indexOf("invalid_username")&&a.val(""),a.val()?s("#user_pass").focus():a.focus()}})}(jQuery),function(s){function a(){var a=s("#pass1").val(),e=s("#pass-strength-result");if(e.removeClass("short bad good strong empty"),a&&""!==a.trim())switch(wp.passwordStrength.meter(a,wp.passwordStrength.userInputDisallowedList(),a)){case-1:e.addClass("bad").html(pwsL10n.unknown);break;case 2:e.addClass("bad").html(pwsL10n.bad);break;case 3:e.addClass("good").html(pwsL10n.good);break;case 4:e.addClass("strong").html(pwsL10n.strong);break;case 5:e.addClass("short").html(pwsL10n.mismatch);break;default:e.addClass("short").html(pwsL10n.short)}else e.addClass("empty").html(" ")}s(document).ready(function(){s("#pass1").val("").on("keyup paste",a)})}(jQuery);
includes/actions.php CHANGED
@@ -25,7 +25,7 @@ function tml_register_default_actions() {
25
 
26
  // Login
27
  tml_register_action( 'login', array(
28
- 'title' => __( 'Log In' ),
29
  'slug' => 'login',
30
  'callback' => 'tml_login_handler',
31
  'ajax_callback' => 'tml_login_handler',
@@ -506,7 +506,7 @@ function tml_login_handler() {
506
  $errors->add( 'loggedout', __( 'You are now logged out.' ), 'message' );
507
 
508
  } elseif ( isset( $_GET['registration'] ) && 'disabled' == $_GET['registration'] ) {
509
- $errors->add( 'registerdisabled', __( 'User registration is currently not allowed.' ) );
510
 
511
  } elseif ( isset( $_GET['checkemail'] ) && 'confirm' == $_GET['checkemail'] ) {
512
  $errors->add( 'confirm', sprintf( __( 'Check your email for the confirmation link, then visit the <a href="%s">login page</a>.' ), wp_login_url() ) , 'message' );
@@ -593,7 +593,7 @@ function tml_registration_handler() {
593
 
594
  if ( ! get_option( 'users_can_register' ) ) {
595
  if ( tml_is_ajax_request() ) {
596
- tml_add_error( 'registerdisabled', __( 'User registration is currently not allowed.' ) );
597
  tml_send_ajax_error( array(
598
  'errors' => tml_get_form()->render_errors(),
599
  ) );
@@ -647,10 +647,10 @@ function tml_registration_handler() {
647
  function tml_lost_password_handler() {
648
 
649
  if ( tml_is_post_request() ) {
650
- $errors = tml_retrieve_password();
651
  if ( ! is_wp_error( $errors ) ) {
652
  if ( tml_is_ajax_request() ) {
653
- tml_add_error( 'confirm', __( 'Check your email for the confirmation link.' ), 'message' );
654
  tml_send_ajax_success( array(
655
  'notice' => tml_get_form()->render_errors(),
656
  ) );
@@ -671,9 +671,9 @@ function tml_lost_password_handler() {
671
 
672
  if ( isset( $_REQUEST['error'] ) ) {
673
  if ( 'invalidkey' == $_REQUEST['error'] ) {
674
- tml_add_error( 'invalidkey', __( 'Your password reset link appears to be invalid. Please request a new link below.' ) );
675
  } elseif ( 'expiredkey' == $_REQUEST['error'] ) {
676
- tml_add_error( 'expiredkey', __( 'Your password reset link has expired. Please request a new link below.' ) );
677
  }
678
  }
679
 
@@ -721,7 +721,7 @@ function tml_password_reset_handler() {
721
  $errors = new WP_Error;
722
 
723
  if ( isset( $_POST['pass1'] ) && $_POST['pass1'] != $_POST['pass2'] ) {
724
- $errors->add( 'password_reset_mismatch', __( 'The passwords do not match.' ) );
725
  }
726
 
727
  /** This action is documented in wp-login.php */
25
 
26
  // Login
27
  tml_register_action( 'login', array(
28
+ 'title' => isset( $_GET['checkemail'] ) ? __( 'Check your email' ) : __( 'Log In' ),
29
  'slug' => 'login',
30
  'callback' => 'tml_login_handler',
31
  'ajax_callback' => 'tml_login_handler',
506
  $errors->add( 'loggedout', __( 'You are now logged out.' ), 'message' );
507
 
508
  } elseif ( isset( $_GET['registration'] ) && 'disabled' == $_GET['registration'] ) {
509
+ $errors->add( 'registerdisabled', __( '<strong>Error</strong>: User registration is currently not allowed.' ) );
510
 
511
  } elseif ( isset( $_GET['checkemail'] ) && 'confirm' == $_GET['checkemail'] ) {
512
  $errors->add( 'confirm', sprintf( __( 'Check your email for the confirmation link, then visit the <a href="%s">login page</a>.' ), wp_login_url() ) , 'message' );
593
 
594
  if ( ! get_option( 'users_can_register' ) ) {
595
  if ( tml_is_ajax_request() ) {
596
+ tml_add_error( 'registerdisabled', __( '<strong>Error</strong>: User registration is currently not allowed.' ) );
597
  tml_send_ajax_error( array(
598
  'errors' => tml_get_form()->render_errors(),
599
  ) );
647
  function tml_lost_password_handler() {
648
 
649
  if ( tml_is_post_request() ) {
650
+ $errors = retrieve_password();
651
  if ( ! is_wp_error( $errors ) ) {
652
  if ( tml_is_ajax_request() ) {
653
+ tml_add_error( 'confirm', __( 'Check your email for the confirmation link, then visit the <a href="%s">login page</a>.' ), 'message' );
654
  tml_send_ajax_success( array(
655
  'notice' => tml_get_form()->render_errors(),
656
  ) );
671
 
672
  if ( isset( $_REQUEST['error'] ) ) {
673
  if ( 'invalidkey' == $_REQUEST['error'] ) {
674
+ tml_add_error( 'invalidkey', __( '<strong>Error</strong>: Your password reset link appears to be invalid. Please request a new link below.' ) );
675
  } elseif ( 'expiredkey' == $_REQUEST['error'] ) {
676
+ tml_add_error( 'expiredkey', __( '<strong>Error</strong>: Your password reset link has expired. Please request a new link below.' ) );
677
  }
678
  }
679
 
721
  $errors = new WP_Error;
722
 
723
  if ( isset( $_POST['pass1'] ) && $_POST['pass1'] != $_POST['pass2'] ) {
724
+ $errors->add( 'password_reset_mismatch', __( '<strong>Error</strong>: The passwords do not match.' ) );
725
  }
726
 
727
  /** This action is documented in wp-login.php */
includes/class-theme-my-login-form.php CHANGED
@@ -116,7 +116,7 @@ class Theme_My_Login_Form {
116
  }
117
 
118
  if ( ! empty( $args['render_args'] ) ) {
119
- $this->render_args = $args['render_args'];
120
  }
121
  }
122
 
@@ -524,7 +524,30 @@ class Theme_My_Login_Form {
524
  }
525
 
526
  /**
527
- * Render the form.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
528
  *
529
  * @since 7.0
530
  *
@@ -548,6 +571,7 @@ class Theme_My_Login_Form {
548
  'before' => '',
549
  'after' => '',
550
  'show_links' => true,
 
551
  ) );
552
 
553
  /**
@@ -588,18 +612,10 @@ class Theme_My_Login_Form {
588
 
589
  $output .= '<div class="tml-alerts">' . $this->render_errors() . '</div>';
590
 
591
- $output .= '<form name="' . esc_attr( $this->get_name() ) . '" action="' . esc_url( $this->get_action() ) . '" method="' . esc_attr( $this->get_method() ) . '"';
592
- foreach ( $this->get_attributes() as $key => $value ) {
593
- $output .= ' ' . $key . '="' . esc_attr( $value ) . '"';
594
- }
595
- $output .= ">\n";
596
-
597
- foreach ( $this->get_fields() as $field ) {
598
- $output .= $field->render() . "\n";
599
  }
600
 
601
- $output .= "</form>\n";
602
-
603
  /**
604
  * Filter the content after the form.
605
  *
116
  }
117
 
118
  if ( ! empty( $args['render_args'] ) ) {
119
+ $this->render_args = (array) $args['render_args'];
120
  }
121
  }
122
 
524
  }
525
 
526
  /**
527
+ * Render the form element.
528
+ *
529
+ * @since 7.1.4
530
+ *
531
+ * @return string The form markup.
532
+ */
533
+ public function render_form() {
534
+ $output = '<form name="' . esc_attr( $this->get_name() ) . '" action="' . esc_url( $this->get_action() ) . '" method="' . esc_attr( $this->get_method() ) . '"';
535
+ foreach ( $this->get_attributes() as $key => $value ) {
536
+ $output .= ' ' . $key . '="' . esc_attr( $value ) . '"';
537
+ }
538
+ $output .= ">\n";
539
+
540
+ foreach ( $this->get_fields() as $field ) {
541
+ $output .= $field->render() . "\n";
542
+ }
543
+
544
+ $output .= "</form>\n";
545
+
546
+ return $output;
547
+ }
548
+
549
+ /**
550
+ * Render the entire form with notices and links.
551
  *
552
  * @since 7.0
553
  *
571
  'before' => '',
572
  'after' => '',
573
  'show_links' => true,
574
+ 'show_form' => true,
575
  ) );
576
 
577
  /**
612
 
613
  $output .= '<div class="tml-alerts">' . $this->render_errors() . '</div>';
614
 
615
+ if ( $args['show_form'] ) {
616
+ $output .= $this->render_form();
 
 
 
 
 
 
617
  }
618
 
 
 
619
  /**
620
  * Filter the content after the form.
621
  *
includes/class-theme-my-login-widget.php CHANGED
@@ -93,7 +93,7 @@ class Theme_My_Login_Widget extends WP_Widget {
93
  'url' => tml_get_action_url( 'dashboard' ),
94
  ),
95
  'profile' => array(
96
- 'title' => __( 'Edit My Profile' ),
97
  'url' => admin_url( 'profile.php' ),
98
  ),
99
  'logout' => array(
93
  'url' => tml_get_action_url( 'dashboard' ),
94
  ),
95
  'profile' => array(
96
+ 'title' => __( 'Edit Profile' ),
97
  'url' => admin_url( 'profile.php' ),
98
  ),
99
  'logout' => array(
includes/compat.php CHANGED
@@ -6,6 +6,8 @@
6
  * Note I proposed a patch that, if accepted, would negate the need for this file.
7
  * @link https://core.trac.wordpress.org/ticket/31039
8
  *
 
 
9
  * @package Theme_My_Login
10
  * @subpackage Compatibility
11
  */
6
  * Note I proposed a patch that, if accepted, would negate the need for this file.
7
  * @link https://core.trac.wordpress.org/ticket/31039
8
  *
9
+ * @deprecated This file will be removed in a future version of the plugin.
10
+ *
11
  * @package Theme_My_Login
12
  * @subpackage Compatibility
13
  */
includes/extensions.php CHANGED
@@ -332,7 +332,10 @@ function tml_extension_api_call( $url, $args = array() ) {
332
  return false;
333
  }
334
 
335
- $response = json_decode( wp_remote_retrieve_body( $response ) );
 
 
 
336
 
337
  if ( is_object( $response ) ) {
338
  if ( isset( $response->sections ) ) {
332
  return false;
333
  }
334
 
335
+ $response = json_decode( wp_remote_retrieve_body( $response ), true );
336
+ if ( is_array( $response ) ) {
337
+ $response = (object) $response;
338
+ }
339
 
340
  if ( is_object( $response ) ) {
341
  if ( isset( $response->sections ) ) {
includes/forms.php CHANGED
@@ -35,6 +35,10 @@ function tml_register_login_form() {
35
  'attributes' => array_filter( array(
36
  'data-ajax' => tml_use_ajax() ? 1 : 0,
37
  ) ),
 
 
 
 
38
  ) );
39
 
40
  tml_add_form_field( 'login', 'log', array(
35
  'attributes' => array_filter( array(
36
  'data-ajax' => tml_use_ajax() ? 1 : 0,
37
  ) ),
38
+ 'render_args' => isset( $_GET['checkemail'] ) ? array(
39
+ 'show_form' => false,
40
+ 'show_links' => false,
41
+ ) : array(),
42
  ) );
43
 
44
  tml_add_form_field( 'login', 'log', array(
includes/hooks.php CHANGED
@@ -48,9 +48,6 @@ add_action( 'edit_user_created_user', 'tml_send_new_user_notifications', 10, 2 )
48
  remove_action( 'register_new_user', 'wp_send_new_user_notifications' );
49
  remove_action( 'edit_user_created_user', 'wp_send_new_user_notifications' );
50
 
51
- // Passwords
52
- add_action( 'retrieved_password_key', 'tml_retrieve_password_notification', 10, 2 );
53
-
54
  // Activation
55
  add_action( 'tml_activate', 'tml_flush_rewrite_rules' );
56
 
48
  remove_action( 'register_new_user', 'wp_send_new_user_notifications' );
49
  remove_action( 'edit_user_created_user', 'wp_send_new_user_notifications' );
50
 
 
 
 
51
  // Activation
52
  add_action( 'tml_activate', 'tml_flush_rewrite_rules' );
53
 
includes/ms-functions.php CHANGED
@@ -409,8 +409,17 @@ function tml_ms_signup_handler() {
409
  }
410
 
411
  if ( ! is_main_site() ) {
412
- wp_redirect( network_site_url( 'wp-signup.php' ) );
413
- exit;
 
 
 
 
 
 
 
 
 
414
  }
415
 
416
  $active_signup = tml_ms_signup_get_active_signup();
409
  }
410
 
411
  if ( ! is_main_site() ) {
412
+ /**
413
+ * Filter whether to redirect subsite signup to network signup or not.
414
+ *
415
+ * @since 7.1.4
416
+ *
417
+ * @param bool $redirect Whether to redirect or not. Default true.
418
+ */
419
+ if ( apply_filters( 'tml_redirect_subsite_to_network_signup', true ) ) {
420
+ wp_redirect( network_site_url( 'wp-signup.php' ) );
421
+ exit;
422
+ }
423
  }
424
 
425
  $active_signup = tml_ms_signup_get_active_signup();
includes/shortcodes.php CHANGED
@@ -82,7 +82,7 @@ function tml_shortcode( $atts = array() ) {
82
  'url' => admin_url(),
83
  ) : false,
84
  'profile' => array(
85
- 'title' => __( 'Edit My Profile' ),
86
  'url' => admin_url( 'profile.php' ),
87
  ),
88
  'logout' => array(
82
  'url' => admin_url(),
83
  ) : false,
84
  'profile' => array(
85
+ 'title' => __( 'Edit Profile' ),
86
  'url' => admin_url( 'profile.php' ),
87
  ),
88
  'logout' => array(
languages/theme-my-login.pot CHANGED
@@ -1,15 +1,15 @@
1
- # Copyright (C) 2020 Theme My Login
2
  # This file is distributed under the same license as the Theme My Login plugin.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Theme My Login 7.1.1\n"
6
- "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/theme-my-login\n"
7
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
8
  "Language-Team: LANGUAGE <LL@li.org>\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
- "POT-Creation-Date: 2020-06-17T22:14:04+00:00\n"
13
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
  "X-Generator: WP-CLI 2.4.0\n"
15
  "X-Domain: theme-my-login\n"
@@ -98,7 +98,7 @@ msgid "A new <strong>Theme My Login</strong> extension is available!"
98
  msgstr ""
99
 
100
  #: admin/functions.php:278
101
- #: includes/functions.php:548
102
  msgid "Theme My Login Actions"
103
  msgstr ""
104
 
@@ -174,64 +174,64 @@ msgstr ""
174
  msgid "Activate"
175
  msgstr ""
176
 
177
- #: admin/settings.php:640
178
  msgid "Welcome to Theme My Login!"
179
  msgstr ""
180
 
181
- #: admin/settings.php:641
182
  msgid "Below, you can configure how you would like users to register and log in to your site."
183
  msgstr ""
184
 
185
- #: admin/settings.php:642
186
  msgid "Additionally, you can change the slugs that are used to generate the URLs that represent specific actions."
187
  msgstr ""
188
 
189
- #: admin/settings.php:648
190
- #: admin/settings.php:671
191
- #: admin/settings.php:691
192
- #: admin/settings.php:719
193
  msgid "View Documentation"
194
  msgstr ""
195
 
196
- #: admin/settings.php:653
197
- #: admin/settings.php:675
198
- #: admin/settings.php:726
199
  msgid "Get Support"
200
  msgstr ""
201
 
202
- #: admin/settings.php:663
203
  msgid "When you purchase extensions for Theme My Login, you will enter your license keys on this page."
204
  msgstr ""
205
 
206
- #: admin/settings.php:664
207
  msgid "After you enter your license keys and click the Save Changes button at the bottom of the screen, you will see a new button next to each field with a license in it."
208
  msgstr ""
209
 
210
- #: admin/settings.php:665
211
  msgid "If you have not yet activated your license, this button will say \"Activate\". Click this button to activate your license."
212
  msgstr ""
213
 
214
- #: admin/settings.php:666
215
  msgid "If you have already activated your license, this button will say \"Deactivate\". Click this button to deactivate your license."
216
  msgstr ""
217
 
218
- #: admin/settings.php:685
219
  msgid "This page shows you all of the extensions available to purchase for Theme My Login."
220
  msgstr ""
221
 
222
- #: admin/settings.php:686
223
  msgid "Once you purchase an extension, you download it from your email receipt or your account page on our website. Then, you install it just like a normal WordPress plugin."
224
  msgstr ""
225
 
226
- #: admin/settings.php:695
227
  msgid "Go to the Extensions Store"
228
  msgstr ""
229
 
230
- #: admin/settings.php:699
231
  msgid "View your Theme My Login account"
232
  msgstr ""
233
 
234
- #: admin/settings.php:710
235
  msgid "On this page, you can configure the settings for the Theme My Login %s extension."
236
  msgstr ""
237
 
@@ -239,7 +239,7 @@ msgstr ""
239
  msgid "Your Data Request"
240
  msgstr ""
241
 
242
- #: includes/actions.php:519
243
  msgid "Registration complete. You may now log in."
244
  msgstr ""
245
 
@@ -287,32 +287,32 @@ msgstr ""
287
  msgid "Unable to deactivate license. Please deactivate it on <a href=\"%1$s\" target=\"_blank\">our site</a>."
288
  msgstr ""
289
 
290
- #: includes/forms.php:146
291
  msgid "Confirm Password"
292
  msgstr ""
293
 
294
- #: includes/functions.php:549
295
  msgid "Theme My Login Action"
296
  msgstr ""
297
 
298
- #: includes/functions.php:577
299
- #: includes/functions.php:604
300
- #: includes/functions.php:619
301
  msgid "TML Action"
302
  msgstr ""
303
 
304
- #: includes/functions.php:683
305
  msgid "<strong>Error</strong>: Please enter a password."
306
  msgstr ""
307
 
308
- #: includes/functions.php:686
309
  msgid "<strong>Error</strong>: Passwords may not contain the character \"\\\"."
310
  msgstr ""
311
 
312
- #: includes/functions.php:689
313
- msgid "<strong>Error</strong>: Please enter the same password in both password fields."
314
  msgstr ""
315
 
316
- #: includes/functions.php:706
317
  msgid "If you have already set your own password, you may disregard this email and use the password you have already set."
318
  msgstr ""
1
+ # Copyright (C) 2021 Theme My Login
2
  # This file is distributed under the same license as the Theme My Login plugin.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Theme My Login 7.1.4\n"
6
+ "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/theme-my-login-trunk\n"
7
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
8
  "Language-Team: LANGUAGE <LL@li.org>\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
+ "POT-Creation-Date: 2021-12-06T16:20:53+00:00\n"
13
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
  "X-Generator: WP-CLI 2.4.0\n"
15
  "X-Domain: theme-my-login\n"
98
  msgstr ""
99
 
100
  #: admin/functions.php:278
101
+ #: includes/functions.php:555
102
  msgid "Theme My Login Actions"
103
  msgstr ""
104
 
174
  msgid "Activate"
175
  msgstr ""
176
 
177
+ #: admin/settings.php:648
178
  msgid "Welcome to Theme My Login!"
179
  msgstr ""
180
 
181
+ #: admin/settings.php:649
182
  msgid "Below, you can configure how you would like users to register and log in to your site."
183
  msgstr ""
184
 
185
+ #: admin/settings.php:650
186
  msgid "Additionally, you can change the slugs that are used to generate the URLs that represent specific actions."
187
  msgstr ""
188
 
189
+ #: admin/settings.php:656
190
+ #: admin/settings.php:679
191
+ #: admin/settings.php:699
192
+ #: admin/settings.php:727
193
  msgid "View Documentation"
194
  msgstr ""
195
 
196
+ #: admin/settings.php:661
197
+ #: admin/settings.php:683
198
+ #: admin/settings.php:734
199
  msgid "Get Support"
200
  msgstr ""
201
 
202
+ #: admin/settings.php:671
203
  msgid "When you purchase extensions for Theme My Login, you will enter your license keys on this page."
204
  msgstr ""
205
 
206
+ #: admin/settings.php:672
207
  msgid "After you enter your license keys and click the Save Changes button at the bottom of the screen, you will see a new button next to each field with a license in it."
208
  msgstr ""
209
 
210
+ #: admin/settings.php:673
211
  msgid "If you have not yet activated your license, this button will say \"Activate\". Click this button to activate your license."
212
  msgstr ""
213
 
214
+ #: admin/settings.php:674
215
  msgid "If you have already activated your license, this button will say \"Deactivate\". Click this button to deactivate your license."
216
  msgstr ""
217
 
218
+ #: admin/settings.php:693
219
  msgid "This page shows you all of the extensions available to purchase for Theme My Login."
220
  msgstr ""
221
 
222
+ #: admin/settings.php:694
223
  msgid "Once you purchase an extension, you download it from your email receipt or your account page on our website. Then, you install it just like a normal WordPress plugin."
224
  msgstr ""
225
 
226
+ #: admin/settings.php:703
227
  msgid "Go to the Extensions Store"
228
  msgstr ""
229
 
230
+ #: admin/settings.php:707
231
  msgid "View your Theme My Login account"
232
  msgstr ""
233
 
234
+ #: admin/settings.php:718
235
  msgid "On this page, you can configure the settings for the Theme My Login %s extension."
236
  msgstr ""
237
 
239
  msgid "Your Data Request"
240
  msgstr ""
241
 
242
+ #: includes/actions.php:516
243
  msgid "Registration complete. You may now log in."
244
  msgstr ""
245
 
287
  msgid "Unable to deactivate license. Please deactivate it on <a href=\"%1$s\" target=\"_blank\">our site</a>."
288
  msgstr ""
289
 
290
+ #: includes/forms.php:148
291
  msgid "Confirm Password"
292
  msgstr ""
293
 
294
+ #: includes/functions.php:556
295
  msgid "Theme My Login Action"
296
  msgstr ""
297
 
298
+ #: includes/functions.php:584
299
+ #: includes/functions.php:611
300
+ #: includes/functions.php:626
301
  msgid "TML Action"
302
  msgstr ""
303
 
304
+ #: includes/functions.php:690
305
  msgid "<strong>Error</strong>: Please enter a password."
306
  msgstr ""
307
 
308
+ #: includes/functions.php:693
309
  msgid "<strong>Error</strong>: Passwords may not contain the character \"\\\"."
310
  msgstr ""
311
 
312
+ #: includes/functions.php:696
313
+ msgid "<strong>Error</strong>: Passwords don&#8217;t match. Please enter the same password in both password fields."
314
  msgstr ""
315
 
316
+ #: includes/functions.php:713
317
  msgid "If you have already set your own password, you may disregard this email and use the password you have already set."
318
  msgstr ""
readme.txt CHANGED
@@ -2,7 +2,7 @@
2
  Contributors: thememylogin, jfarthing84
3
  Tags: login, register, password, branding, customize, widget, wp-login, wp-login.php
4
  Requires at least: 5.4
5
- Tested up to: 5.7
6
  Stable tag: trunk
7
 
8
  The ultimate login branding solution! Theme My Login offers matchless customization of your WordPress user experience!
@@ -59,6 +59,13 @@ Report bugs, suggest ideas and participate in development at [GitHub](https://gi
59
 
60
  == Changelog ==
61
 
 
 
 
 
 
 
 
62
  = 7.1.3 =
63
  * Fix PHP 8 notices
64
  * Fix wp_sensitive_page_meta() deprecated notice in WP 5.7+
2
  Contributors: thememylogin, jfarthing84
3
  Tags: login, register, password, branding, customize, widget, wp-login, wp-login.php
4
  Requires at least: 5.4
5
+ Tested up to: 5.9
6
  Stable tag: trunk
7
 
8
  The ultimate login branding solution! Theme My Login offers matchless customization of your WordPress user experience!
59
 
60
  == Changelog ==
61
 
62
+ = 7.1.4 =
63
+ * Hide form for "check your email" step of password reset
64
+ * Use retrieve_password() from WP core and deprecate compat.php
65
+ * Update strings to match core
66
+ * Add a filter to allow disabling network signup redirect
67
+ * Fix deprecated notice in password strength meter
68
+
69
  = 7.1.3 =
70
  * Fix PHP 8 notices
71
  * Fix wp_sensitive_page_meta() deprecated notice in WP 5.7+
theme-my-login.php CHANGED
@@ -10,7 +10,7 @@
10
  Plugin Name: Theme My Login
11
  Plugin URI: https://thememylogin.com
12
  Description: Creates an alternate login, registration and password recovery experience within your theme.
13
- Version: 7.1.3
14
  Author: Theme My Login
15
  Author URI: https://thememylogin.com
16
  License: GPLv2
@@ -24,7 +24,7 @@ Network: true
24
  *
25
  * @since 7.0
26
  */
27
- define( 'THEME_MY_LOGIN_VERSION', '7.1.3' );
28
 
29
  /**
30
  * Stores the path to TML.
@@ -66,7 +66,6 @@ require THEME_MY_LOGIN_PATH . 'includes/class-theme-my-login-widget.php';
66
  require THEME_MY_LOGIN_PATH . 'includes/actions.php';
67
  require THEME_MY_LOGIN_PATH . 'includes/forms.php';
68
  require THEME_MY_LOGIN_PATH . 'includes/extensions.php';
69
- require THEME_MY_LOGIN_PATH . 'includes/compat.php';
70
  require THEME_MY_LOGIN_PATH . 'includes/functions.php';
71
  require THEME_MY_LOGIN_PATH . 'includes/options.php';
72
  require THEME_MY_LOGIN_PATH . 'includes/shortcodes.php';
10
  Plugin Name: Theme My Login
11
  Plugin URI: https://thememylogin.com
12
  Description: Creates an alternate login, registration and password recovery experience within your theme.
13
+ Version: 7.1.4
14
  Author: Theme My Login
15
  Author URI: https://thememylogin.com
16
  License: GPLv2
24
  *
25
  * @since 7.0
26
  */
27
+ define( 'THEME_MY_LOGIN_VERSION', '7.1.4' );
28
 
29
  /**
30
  * Stores the path to TML.
66
  require THEME_MY_LOGIN_PATH . 'includes/actions.php';
67
  require THEME_MY_LOGIN_PATH . 'includes/forms.php';
68
  require THEME_MY_LOGIN_PATH . 'includes/extensions.php';
 
69
  require THEME_MY_LOGIN_PATH . 'includes/functions.php';
70
  require THEME_MY_LOGIN_PATH . 'includes/options.php';
71
  require THEME_MY_LOGIN_PATH . 'includes/shortcodes.php';