User registration & user profile – Profile Builder - Version 3.5.3

Version Description

  • Feature: Added option to display Elementor sections and widgets to logged out users
  • Fix: Position of password strength on the reset password form
  • Fix: An issue with the password reset shortcode generating invalid HTML in a case
Download this release

Release Info

Developer raster02
Plugin Icon 128x128 User registration & user profile – Profile Builder
Version 3.5.3
Comparing to
See all releases

Code changes from version 3.5.2 to 3.5.3

admin/basic-info.php CHANGED
@@ -28,7 +28,7 @@ function wppb_basic_info_content() {
28
  ?>
29
  <div class="wrap wppb-wrap wppb-info-wrap">
30
  <div class="wppb-badge <?php echo esc_attr( $version ); ?>"><span><?php printf( esc_html__( 'Version %s', 'profile-builder' ), esc_html( PROFILE_BUILDER_VERSION ) ); ?></span></div>
31
- <h1><?php printf( esc_html__( '<strong>Profile Builder </strong> %s', 'profile-builder' ), esc_html( $version ) ); ?></h1>
32
  <p class="wppb-info-text"><?php printf( esc_html__( 'The best way to add front-end registration, edit profile and login forms.', 'profile-builder' ) ); ?></p>
33
  <hr />
34
  <?php
28
  ?>
29
  <div class="wrap wppb-wrap wppb-info-wrap">
30
  <div class="wppb-badge <?php echo esc_attr( $version ); ?>"><span><?php printf( esc_html__( 'Version %s', 'profile-builder' ), esc_html( PROFILE_BUILDER_VERSION ) ); ?></span></div>
31
+ <h1><?php echo wp_kses_post( sprintf( __( '<strong>Profile Builder </strong> %s', 'profile-builder' ), esc_html( $version ) ) ); ?></h1>
32
  <p class="wppb-info-text"><?php printf( esc_html__( 'The best way to add front-end registration, edit profile and login forms.', 'profile-builder' ) ); ?></p>
33
  <hr />
34
  <?php
assets/css/style-front-end.css CHANGED
@@ -384,18 +384,25 @@ label[for=blog-privacy]{
384
  --------------------------------------------------------------*/
385
 
386
  .wppb-error,
387
- .wppb-warning {
 
 
388
  padding: 6px 9px;
389
  margin: 0 auto 25px;
390
  display: block;
391
  width: 100%;
 
 
 
 
392
  box-sizing: border-box;
393
  background: #ffebe8;
394
  border: 1px solid #C00;
395
  }
396
 
397
  .wppb-error,
398
- .wppb-warning{
 
399
  color:#222222 !important;
400
  }
401
 
@@ -414,8 +421,14 @@ label[for=blog-privacy]{
414
  text-decoration: underline;
415
  }
416
 
 
 
 
 
 
 
417
  .wppb-required{
418
- color: red;
419
  }
420
 
421
  .wppb-required,
@@ -424,10 +437,6 @@ label[for=blog-privacy]{
424
  }
425
 
426
  .wppb-success {
427
- padding: 6px 9px;
428
- margin: 0 auto 25px;
429
- display: block;
430
- width: 100%;
431
  box-sizing: border-box;
432
  background: #e7f7d3;
433
  border: 1px solid #6c3;
384
  --------------------------------------------------------------*/
385
 
386
  .wppb-error,
387
+ .wppb-warning,
388
+ .wppb-notice,
389
+ .wppb-success {
390
  padding: 6px 9px;
391
  margin: 0 auto 25px;
392
  display: block;
393
  width: 100%;
394
+ }
395
+
396
+ .wppb-error,
397
+ .wppb-warning {
398
  box-sizing: border-box;
399
  background: #ffebe8;
400
  border: 1px solid #C00;
401
  }
402
 
403
  .wppb-error,
404
+ .wppb-warning,
405
+ .wppb-notice {
406
  color:#222222 !important;
407
  }
408
 
421
  text-decoration: underline;
422
  }
423
 
424
+ .wppb-notice {
425
+ box-sizing: border-box;
426
+ background: #ccc;
427
+ border: 1px solid #666;
428
+ }
429
+
430
  .wppb-required{
431
+ color: red;
432
  }
433
 
434
  .wppb-required,
437
  }
438
 
439
  .wppb-success {
 
 
 
 
440
  box-sizing: border-box;
441
  background: #e7f7d3;
442
  border: 1px solid #6c3;
assets/misc/elementor/class-elementor.php CHANGED
@@ -51,6 +51,7 @@ class PB_Elementor {
51
  require_once(__DIR__ . '/widgets/class-pb-widget-l.php');
52
  require_once(__DIR__ . '/widgets/class-pb-widget-rp.php');
53
  require_once(__DIR__ . '/widgets/class-pb-widget-rf.php');
 
54
  }
55
 
56
  /**
@@ -63,6 +64,7 @@ class PB_Elementor {
63
  \Elementor\Plugin::instance()->widgets_manager->register_widget_type( new PB_Elementor_Login_Widget() );
64
  \Elementor\Plugin::instance()->widgets_manager->register_widget_type( new PB_Elementor_Recover_Password_Widget() );
65
  \Elementor\Plugin::instance()->widgets_manager->register_widget_type( new PB_Elementor_Register_Widget() );
 
66
  }
67
 
68
  public function add_category( $elements_manager ) {
51
  require_once(__DIR__ . '/widgets/class-pb-widget-l.php');
52
  require_once(__DIR__ . '/widgets/class-pb-widget-rp.php');
53
  require_once(__DIR__ . '/widgets/class-pb-widget-rf.php');
54
+ require_once(__DIR__ . '/widgets/class-pb-widget-ul.php');
55
  }
56
 
57
  /**
64
  \Elementor\Plugin::instance()->widgets_manager->register_widget_type( new PB_Elementor_Login_Widget() );
65
  \Elementor\Plugin::instance()->widgets_manager->register_widget_type( new PB_Elementor_Recover_Password_Widget() );
66
  \Elementor\Plugin::instance()->widgets_manager->register_widget_type( new PB_Elementor_Register_Widget() );
67
+ \Elementor\Plugin::instance()->widgets_manager->register_widget_type( new PB_Elementor_User_Listing_Widget() );
68
  }
69
 
70
  public function add_category( $elements_manager ) {
assets/misc/elementor/widgets/class-pb-widget-base.php CHANGED
@@ -263,7 +263,7 @@ abstract class PB_Elementor_Widget extends \Elementor\Widget_Base {
263
  */
264
  protected function render_widget( $form_type ){
265
 
266
- if (!($form_type === 'rf' || $form_type === 'epf' || $form_type === 'l' || $form_type === 'rp')) {
267
  return;
268
  }
269
 
@@ -316,6 +316,18 @@ abstract class PB_Elementor_Widget extends \Elementor\Widget_Base {
316
  case 'rp':
317
  include_once( WPPB_PLUGIN_DIR.'/front-end/recover.php' );
318
  return wppb_front_end_password_recovery();
 
 
 
 
 
 
 
 
 
 
 
 
319
  }
320
  }
321
  }
263
  */
264
  protected function render_widget( $form_type ){
265
 
266
+ if (!($form_type === 'rf' || $form_type === 'epf' || $form_type === 'l' || $form_type === 'rp' || $form_type === 'ul')) {
267
  return;
268
  }
269
 
316
  case 'rp':
317
  include_once( WPPB_PLUGIN_DIR.'/front-end/recover.php' );
318
  return wppb_front_end_password_recovery();
319
+ case 'ul':
320
+ include_once( WPPB_PLUGIN_DIR.'/add-ons/user-listing/userlisting.php' );
321
+ $atts = [
322
+ 'name' => $settings['pb_name'] === '' ? 'userlisting' : $settings['pb_name'],
323
+ 'single' => $settings['pb_single'] === 'yes',
324
+ 'meta_key' => $settings['pb_meta_key'],
325
+ 'meta_value' => $settings['pb_meta_value'],
326
+ 'include' => $settings['pb_include'],
327
+ 'exclude' => $settings['pb_exclude'],
328
+ 'id' => $settings['pb_id'],
329
+ ];
330
+ return wppb_user_listing_shortcode( $atts );
331
  }
332
  }
333
  }
assets/misc/elementor/widgets/class-pb-widget-ul.php ADDED
@@ -0,0 +1,192 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // Exit if accessed directly
4
+ if ( ! defined( 'ABSPATH' ) ) exit;
5
+
6
+ require_once "class-pb-widget-base.php";
7
+
8
+ /**
9
+ * Elementor widget for our wppb-list-users shortcode
10
+ */
11
+ class PB_Elementor_User_Listing_Widget extends PB_Elementor_Widget {
12
+
13
+ public function __construct($data = [], $args = null) {
14
+ parent::__construct($data, $args);
15
+
16
+ wp_register_script('wppb-userlisting-js', WPPB_PLUGIN_URL . '/add-ons/user-listing/userlisting.js', array('jquery', 'jquery-touch-punch'), PROFILE_BUILDER_VERSION, true);
17
+ wp_localize_script( 'wppb-userlisting-js', 'wppb_userlisting_obj', array( 'pageSlug' => wppb_get_users_pagination_slug() ) );
18
+ wp_register_style('wppb-ul-slider-css', WPPB_PLUGIN_URL . '/add-ons/user-listing/jquery-ui-slider.min.css', array(), PROFILE_BUILDER_VERSION );
19
+ //wp_register_script('jquery-ui-slider');
20
+
21
+ }
22
+
23
+ public function get_script_depends() {
24
+ if ( file_exists(WPPB_PLUGIN_DIR . '/add-ons/user-listing/userlisting.php') ) {
25
+ return [
26
+ 'wppb-userlisting-js',
27
+ 'jquery-ui-slider',
28
+ ];
29
+ }
30
+ return [];
31
+ }
32
+
33
+ public function get_style_depends() {
34
+ $styles = [];
35
+ if ( file_exists(WPPB_PLUGIN_DIR . '/add-ons/user-listing/userlisting.php') ) {
36
+ $styles = [
37
+ 'wppb-ul-slider-css',
38
+ ];
39
+ }
40
+ return $styles;
41
+ }
42
+
43
+ /**
44
+ * Get widget name.
45
+ *
46
+ */
47
+ public function get_name() {
48
+ return 'wppb-list-users';
49
+ }
50
+
51
+ /**
52
+ * Get widget title.
53
+ *
54
+ */
55
+ public function get_title() {
56
+ return __( 'User Listing', 'profile-builder' );
57
+ }
58
+
59
+ /**
60
+ * Get widget icon.
61
+ * to-do
62
+ */
63
+ public function get_icon() {
64
+ return 'eicon-post-list';
65
+ }
66
+
67
+ /**
68
+ * Register widget controls.
69
+ *
70
+ */
71
+ protected function _register_controls() {
72
+
73
+ $this->start_controls_section(
74
+ 'pb_user_listing_settings',
75
+ array(
76
+ 'label' => __( 'Listing Settings', 'profile-builder' ),
77
+ 'tab' => \Elementor\Controls_Manager::TAB_CONTENT,
78
+ )
79
+ );
80
+
81
+ $this->add_control(
82
+ 'pb_name',
83
+ array(
84
+ 'label' => __( 'Name', 'profile-builder' ),
85
+ 'type' => \Elementor\Controls_Manager::TEXT,
86
+ 'placeholder' => __( 'Enter Name', 'profile-builder' ),
87
+ 'default' => 'userlisting',
88
+ )
89
+ );
90
+
91
+ $this->add_control(
92
+ 'pb_single',
93
+ array(
94
+ 'label' => __('Single', 'profile-builder'),
95
+ 'type' => \Elementor\Controls_Manager::SWITCHER,
96
+ 'label_on' => __('Yes', 'profile-builder'),
97
+ 'label_off' => __('No', 'profile-builder'),
98
+ 'return_value' => 'yes',
99
+ 'default' => '',
100
+ )
101
+ );
102
+
103
+ $this->add_control(
104
+ 'pb_meta_key',
105
+ array(
106
+ 'label' => __( 'Meta Key', 'profile-builder' ),
107
+ 'type' => \Elementor\Controls_Manager::TEXT,
108
+ 'placeholder' => __( 'Enter Meta Key', 'profile-builder' ),
109
+ 'default' => '',
110
+ 'condition' => [
111
+ 'pb_single' => '',
112
+ ],
113
+ )
114
+ );
115
+
116
+ $this->add_control(
117
+ 'pb_meta_value',
118
+ array(
119
+ 'label' => __( 'Meta Value', 'profile-builder' ),
120
+ 'type' => \Elementor\Controls_Manager::TEXT,
121
+ 'placeholder' => __( 'Enter Meta Value', 'profile-builder' ),
122
+ 'default' => '',
123
+ 'condition' => [
124
+ 'pb_single' => '',
125
+ 'pb_meta_key!' => '',
126
+ ],
127
+ )
128
+ );
129
+
130
+ $this->add_control(
131
+ 'pb_include',
132
+ array(
133
+ 'label' => __( 'Include', 'profile-builder' ),
134
+ 'type' => \Elementor\Controls_Manager::TEXT,
135
+ 'placeholder' => __( 'Enter User IDs', 'profile-builder' ),
136
+ 'default' => '',
137
+ 'condition' => [
138
+ 'pb_single' => '',
139
+ ],
140
+ )
141
+ );
142
+
143
+ $this->add_control(
144
+ 'pb_exclude',
145
+ array(
146
+ 'label' => __( 'Exclude', 'profile-builder' ),
147
+ 'type' => \Elementor\Controls_Manager::TEXT,
148
+ 'placeholder' => __( 'Enter User IDs', 'profile-builder' ),
149
+ 'default' => '',
150
+ 'condition' => [
151
+ 'pb_single' => '',
152
+ ],
153
+ )
154
+ );
155
+
156
+ $this->add_control(
157
+ 'pb_id',
158
+ array(
159
+ 'label' => __( 'ID', 'profile-builder' ),
160
+ 'type' => \Elementor\Controls_Manager::TEXT,
161
+ 'placeholder' => __( 'Enter User ID', 'profile-builder' ),
162
+ 'default' => '',
163
+ 'condition' => [
164
+ 'pb_single' => 'yes',
165
+ ],
166
+ )
167
+ );
168
+
169
+ $this->end_controls_section();
170
+ }
171
+
172
+ /**
173
+ * Render widget output in the front-end.
174
+ *
175
+ */
176
+ protected function render() {
177
+ $output = $this->render_widget( 'ul' );
178
+ echo $output; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
179
+
180
+ // check if the form is being displayed in the Elementor editor
181
+ $is_elementor_edit_mode = false;
182
+ if( class_exists ( '\Elementor\Plugin' ) ){
183
+ $is_elementor_edit_mode = \Elementor\Plugin::$instance->editor->is_edit_mode();
184
+ }
185
+
186
+ if ($is_elementor_edit_mode && !empty($output)) {
187
+ echo '
188
+ ';
189
+ }
190
+ }
191
+
192
+ }
features/content-restriction/class-elementor-content-restriction.php CHANGED
@@ -90,14 +90,33 @@ class WPPB_Elementor {
90
  'label' => __( 'Restrict to logged in users', 'profile-builder' ),
91
  'type' => Controls_Manager::SWITCHER,
92
  'description' => __( 'Allow only logged in users to see this content.', 'profile-builder' ),
 
 
 
 
93
  )
94
  );
95
 
 
 
 
 
 
 
 
 
 
 
 
 
96
  $element->add_control(
97
  'wppb_restriction_user_roles_heading', array(
98
  'label' => __( 'Restrict by User Roles', 'profile-builder' ),
99
  'type' => Controls_Manager::HEADING,
100
  'separator' => 'before',
 
 
 
101
  )
102
  );
103
 
@@ -108,6 +127,9 @@ class WPPB_Elementor {
108
  'multiple' => 'true',
109
  'label_block' => 'true',
110
  'description' => __( 'Allow users which have the specified role to see this content.', 'profile-builder' ),
 
 
 
111
  )
112
  );
113
 
@@ -194,6 +216,10 @@ class WPPB_Elementor {
194
  public function is_hidden( $element ) {
195
  $settings = $element->get_settings();
196
 
 
 
 
 
197
  if( !empty( $settings['wppb_restriction_user_roles'] ) && is_user_logged_in() ) {
198
 
199
  $user_data = get_userdata( get_current_user_id() );
90
  'label' => __( 'Restrict to logged in users', 'profile-builder' ),
91
  'type' => Controls_Manager::SWITCHER,
92
  'description' => __( 'Allow only logged in users to see this content.', 'profile-builder' ),
93
+ 'default' => '',
94
+ 'condition' => array(
95
+ 'wppb_restriction_loggedout_users!' => 'yes'
96
+ )
97
  )
98
  );
99
 
100
+ $element->add_control(
101
+ 'wppb_restriction_loggedout_users', array(
102
+ 'label' => __( 'Restrict to logged out users', 'profile-builder' ),
103
+ 'type' => Controls_Manager::SWITCHER,
104
+ 'description' => __( 'Allow only logged out users to see this content.', 'profile-builder' ),
105
+ 'default' => '',
106
+ 'condition' => array(
107
+ 'wppb_restriction_loggedin_users!' => 'yes'
108
+ )
109
+ )
110
+ );
111
+
112
  $element->add_control(
113
  'wppb_restriction_user_roles_heading', array(
114
  'label' => __( 'Restrict by User Roles', 'profile-builder' ),
115
  'type' => Controls_Manager::HEADING,
116
  'separator' => 'before',
117
+ 'condition' => array(
118
+ 'wppb_restriction_loggedout_users!' => 'yes'
119
+ )
120
  )
121
  );
122
 
127
  'multiple' => 'true',
128
  'label_block' => 'true',
129
  'description' => __( 'Allow users which have the specified role to see this content.', 'profile-builder' ),
130
+ 'condition' => array(
131
+ 'wppb_restriction_loggedout_users!' => 'yes'
132
+ )
133
  )
134
  );
135
 
216
  public function is_hidden( $element ) {
217
  $settings = $element->get_settings();
218
 
219
+ if( is_user_logged_in() && $settings['wppb_restriction_loggedout_users'] === 'yes' ) {
220
+ return true;
221
+ }
222
+
223
  if( !empty( $settings['wppb_restriction_user_roles'] ) && is_user_logged_in() ) {
224
 
225
  $user_data = get_userdata( get_current_user_id() );
front-end/class-formbuilder.php CHANGED
@@ -448,13 +448,13 @@ class Profile_Builder_Form_Creator{
448
  do_action( 'wppb_form_args_before_output', $this->args );
449
  $this->args = apply_filters( 'wppb_filter_form_args_before_output', $this->args );
450
 
451
- echo wp_kses_post( apply_filters( 'wppb_before_form_fields', '<ul>', $this->args['form_type'], $this->args['ID'] ) );
452
  echo $this->wppb_output_form_fields( $_REQUEST, $field_check_errors, $this->args['form_fields'] ); /* phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped */ /* properly escaped when created */
453
- echo wp_kses_post( apply_filters( 'wppb_after_form_fields', '</ul>', $this->args['form_type'], $this->args['ID'], $_REQUEST ) );
454
 
455
- echo wp_kses_post( apply_filters( 'wppb_before_send_credentials_checkbox', '<ul>', $this->args['form_type'], $this->args['ID'] ) );
456
  $this->wppb_add_send_credentials_checkbox( $_REQUEST, $this->args['form_type'] );
457
- echo wp_kses_post( apply_filters( 'wppb_after_send_credentials_checkbox', '</ul>', $this->args['form_type'] ) );
458
 
459
  $wppb_form_submit_extra_attr = apply_filters( 'wppb_form_submit_extra_attr', '', $this->args['form_type'], $this->args['ID'] );
460
  ?>
448
  do_action( 'wppb_form_args_before_output', $this->args );
449
  $this->args = apply_filters( 'wppb_filter_form_args_before_output', $this->args );
450
 
451
+ echo apply_filters( 'wppb_before_form_fields', '<ul>', $this->args['form_type'], $this->args['ID'] ); /* phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped */
452
  echo $this->wppb_output_form_fields( $_REQUEST, $field_check_errors, $this->args['form_fields'] ); /* phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped */ /* properly escaped when created */
453
+ echo apply_filters( 'wppb_after_form_fields', '</ul>', $this->args['form_type'], $this->args['ID'], $_REQUEST ); /* phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped */
454
 
455
+ echo apply_filters( 'wppb_before_send_credentials_checkbox', '<ul>', $this->args['form_type'], $this->args['ID'] ); /* phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped */
456
  $this->wppb_add_send_credentials_checkbox( $_REQUEST, $this->args['form_type'] );
457
+ echo apply_filters( 'wppb_after_send_credentials_checkbox', '</ul>', $this->args['form_type'] ); /* phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped */
458
 
459
  $wppb_form_submit_extra_attr = apply_filters( 'wppb_form_submit_extra_attr', '', $this->args['form_type'], $this->args['ID'] );
460
  ?>
front-end/recover.php CHANGED
@@ -76,7 +76,9 @@ function wppb_create_recover_password_form( $user, $post_data ){
76
  <li class="wppb-form-field passw1">
77
  <label for="passw1">'. esc_html( $password_label ) .'</label>
78
  <input class="password" name="passw1" type="password" id="passw1" value="" autocomplete="off" title="'. esc_attr( wppb_password_length_text() ).'" '. apply_filters( 'wppb_recover_password_extra_attr', '', esc_html( $password_label ), 'password' ) .' />
79
- <span class="wppb-description-delimiter">'. wppb_password_length_text() .' '. wppb_password_strength_description() .'</span>
 
 
80
  </li><!-- .passw1 -->
81
  <input type="hidden" name="userData" value="'. esc_attr( $user->ID ).'"/>
82
  <li class="wppb-form-field passw2">
@@ -84,9 +86,6 @@ function wppb_create_recover_password_form( $user, $post_data ){
84
  <input class="password" name="passw2" type="password" id="passw2" value="" autocomplete="off" '. apply_filters( 'wppb_recover_password_extra_attr', '', esc_html( $repeat_password_label ), 'repeat_password' ) .' />
85
  </li><!-- .passw2 -->';
86
 
87
- /* if we have active the password strength checker */
88
- $recover_inputPassword .= wppb_password_strength_checker_html();
89
-
90
  echo apply_filters( 'wppb_recover_password_form_input', $recover_inputPassword, $passw_one, $passw_two, $user->ID ); //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
91
  ?>
92
  </ul>
@@ -334,13 +333,15 @@ function wppb_front_end_password_recovery(){
334
  }
335
  }elseif ( !email_exists( $username_email ) ){
336
  // check reCAPTCHA
337
- $output = wppb_password_recovery_warning( '', 'wppb_recover_password_displayed_message1' );
338
 
339
  // if there is no reCAPTCHA error show the invalid email address error
340
- if( $output === '' ) {
341
  $warning = __('The email address entered wasn\'t found in the database!', 'profile-builder').'<br/>'.__('Please check that you entered the correct email address.', 'profile-builder');
342
  $warning = apply_filters('wppb_recover_password_sent_message2', $warning);
343
  $output .= '<p class="wppb-warning">'.$warning.'</p>';
 
 
344
  }
345
  }
346
  }
76
  <li class="wppb-form-field passw1">
77
  <label for="passw1">'. esc_html( $password_label ) .'</label>
78
  <input class="password" name="passw1" type="password" id="passw1" value="" autocomplete="off" title="'. esc_attr( wppb_password_length_text() ).'" '. apply_filters( 'wppb_recover_password_extra_attr', '', esc_html( $password_label ), 'password' ) .' />
79
+ <span class="wppb-description-delimiter">'. wppb_password_length_text() .' '. wppb_password_strength_description() .'</span>'.
80
+ /* if we have active the password strength checker */
81
+ wppb_password_strength_checker_html().'
82
  </li><!-- .passw1 -->
83
  <input type="hidden" name="userData" value="'. esc_attr( $user->ID ).'"/>
84
  <li class="wppb-form-field passw2">
86
  <input class="password" name="passw2" type="password" id="passw2" value="" autocomplete="off" '. apply_filters( 'wppb_recover_password_extra_attr', '', esc_html( $repeat_password_label ), 'repeat_password' ) .' />
87
  </li><!-- .passw2 -->';
88
 
 
 
 
89
  echo apply_filters( 'wppb_recover_password_form_input', $recover_inputPassword, $passw_one, $passw_two, $user->ID ); //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
90
  ?>
91
  </ul>
333
  }
334
  }elseif ( !email_exists( $username_email ) ){
335
  // check reCAPTCHA
336
+ $warning = wppb_password_recovery_warning( '', 'wppb_recover_password_displayed_message1' );
337
 
338
  // if there is no reCAPTCHA error show the invalid email address error
339
+ if( $warning === '' ) {
340
  $warning = __('The email address entered wasn\'t found in the database!', 'profile-builder').'<br/>'.__('Please check that you entered the correct email address.', 'profile-builder');
341
  $warning = apply_filters('wppb_recover_password_sent_message2', $warning);
342
  $output .= '<p class="wppb-warning">'.$warning.'</p>';
343
+ } else {
344
+ $output .= $warning;
345
  }
346
  }
347
  }
index.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Profile Builder
4
  Plugin URI: https://www.cozmoslabs.com/wordpress-profile-builder/
5
  Description: Login, registration and edit profile shortcodes for the front-end. Also you can choose what fields should be displayed or add new (custom) ones both in the front-end and in the dashboard.
6
- Version: 3.5.2
7
  Author: Cozmoslabs
8
  Author URI: https://www.cozmoslabs.com/
9
  Text Domain: profile-builder
@@ -70,7 +70,7 @@ function wppb_free_plugin_init() {
70
  *
71
  *
72
  */
73
- define('PROFILE_BUILDER_VERSION', '3.5.2' );
74
  define('WPPB_PLUGIN_DIR', plugin_dir_path(__FILE__));
75
  define('WPPB_PLUGIN_URL', plugin_dir_url(__FILE__));
76
  define('WPPB_PLUGIN_BASENAME', plugin_basename(__FILE__));
3
  Plugin Name: Profile Builder
4
  Plugin URI: https://www.cozmoslabs.com/wordpress-profile-builder/
5
  Description: Login, registration and edit profile shortcodes for the front-end. Also you can choose what fields should be displayed or add new (custom) ones both in the front-end and in the dashboard.
6
+ Version: 3.5.3
7
  Author: Cozmoslabs
8
  Author URI: https://www.cozmoslabs.com/
9
  Text Domain: profile-builder
70
  *
71
  *
72
  */
73
+ define('PROFILE_BUILDER_VERSION', '3.5.3' );
74
  define('WPPB_PLUGIN_DIR', plugin_dir_path(__FILE__));
75
  define('WPPB_PLUGIN_URL', plugin_dir_url(__FILE__));
76
  define('WPPB_PLUGIN_BASENAME', plugin_basename(__FILE__));
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: http://www.cozmoslabs.com/wordpress-profile-builder/
4
  Tags: user registration, user profile, registration, profile, user registration form, user fields, edit profile, user custom fields, front-end login, front-end edit profile, front-end user registration, email confirmation, login form, content restriction, restrict content
5
  Requires at least: 3.1
6
  Tested up to: 5.8.0
7
- Stable tag: 3.5.2
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -176,6 +176,11 @@ This plugin adds/removes user fields in the front-end. Both default and extra pr
176
  15. Edit or Add New User Role
177
 
178
  == Changelog ==
 
 
 
 
 
179
  = 3.5.2 =
180
  * Fix: Fatal Error when logging in
181
 
4
  Tags: user registration, user profile, registration, profile, user registration form, user fields, edit profile, user custom fields, front-end login, front-end edit profile, front-end user registration, email confirmation, login form, content restriction, restrict content
5
  Requires at least: 3.1
6
  Tested up to: 5.8.0
7
+ Stable tag: 3.5.3
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
176
  15. Edit or Add New User Role
177
 
178
  == Changelog ==
179
+ = 3.5.3 =
180
+ * Feature: Added option to display Elementor sections and widgets to logged out users
181
+ * Fix: Position of password strength on the reset password form
182
+ * Fix: An issue with the password reset shortcode generating invalid HTML in a case
183
+
184
  = 3.5.2 =
185
  * Fix: Fatal Error when logging in
186
 
translation/profile-builder-de_DE.mo CHANGED
Binary file
translation/profile-builder-de_DE.po CHANGED
@@ -2,12 +2,12 @@
2
  # This file is distributed under the same license as the Profile Builder package.
3
  msgid ""
4
  msgstr ""
5
- "PO-Revision-Date: 2020-09-26 23:25+0200\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
9
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
10
- "X-Generator: Poedit 2.4.1\n"
11
  "Project-Id-Version: Profile Builder\n"
12
  "POT-Creation-Date: \n"
13
  "Last-Translator: \n"
@@ -3311,7 +3311,7 @@ msgid "displays all users except the ones you specified the user_id for"
3311
  msgstr "Zeigt alle Benutzer an, außer diejenigen, denen du eine user_id gegeben hast."
3312
 
3313
  #: profile-builder-2.0/features/functions.php:566
3314
- msgid "Minimum length of %d characters"
3315
  msgstr "Mindestlänge: %d Zeichen"
3316
 
3317
  #: profile-builder-2.0/front-end/class-formbuilder.php:146
@@ -5605,4 +5605,3 @@ msgstr "Du findest es im Menü vom Profile Builder"
5605
  #: profile-builder-2.0/modules/user-listing/userlisting.php:2565
5606
  msgid "No results found!"
5607
  msgstr "Es wurden keine Ergebnisse gefunden!"
5608
-
2
  # This file is distributed under the same license as the Profile Builder package.
3
  msgid ""
4
  msgstr ""
5
+ "PO-Revision-Date: 2021-08-12 14:26+0300\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
9
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
10
+ "X-Generator: Poedit 3.0\n"
11
  "Project-Id-Version: Profile Builder\n"
12
  "POT-Creation-Date: \n"
13
  "Last-Translator: \n"
3311
  msgstr "Zeigt alle Benutzer an, außer diejenigen, denen du eine user_id gegeben hast."
3312
 
3313
  #: profile-builder-2.0/features/functions.php:566
3314
+ msgid "Minimum length of %d characters."
3315
  msgstr "Mindestlänge: %d Zeichen"
3316
 
3317
  #: profile-builder-2.0/front-end/class-formbuilder.php:146
5605
  #: profile-builder-2.0/modules/user-listing/userlisting.php:2565
5606
  msgid "No results found!"
5607
  msgstr "Es wurden keine Ergebnisse gefunden!"