WP User Avatar - Version 3.2.16

Version Description

  • Added unique classes to my account page - account details section.
  • Fixed bug with member directory search not working in some cases.
  • Fixed bug where upload field with data is still required.
  • Fixed XSS on member directory search field.
Download this release

Release Info

Developer Collizo4sky
Plugin Icon 128x128 WP User Avatar
Version 3.2.16
Comparing to
See all releases

Code changes from version 3.2.15 to 3.2.16

changelog.txt CHANGED
@@ -1,5 +1,11 @@
1
  == Changelog ==
2
 
 
 
 
 
 
 
3
  = 3.2.15 =
4
  * Fixed bug where social icons where showing when disabled.
5
  * Removed display name from sorted field options.
1
  == Changelog ==
2
 
3
+ = 3.2.16 =
4
+ * Added unique classes to my account page - account details section.
5
+ * Fixed bug with member directory search not working in some cases.
6
+ * Fixed bug where upload field with data is still required.
7
+ * Fixed XSS on member directory search field.
8
+
9
  = 3.2.15 =
10
  * Fixed bug where social icons where showing when disabled.
11
  * Removed display name from sorted field options.
languages/wp-user-avatar.pot CHANGED
@@ -2,9 +2,9 @@
2
  # This file is distributed under the same license as the ProfilePress package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: ProfilePress 3.2.15\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wp-user-avatar\n"
7
- "POT-Creation-Date: 2022-06-28 06:49:37+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -561,7 +561,7 @@ msgstr ""
561
  #: src/AdminBarDashboardAccess/include.settings-page.php:54
562
  #: src/AdminBarDashboardAccess/include.settings-page.php:109
563
  #: src/Functions/custom-settings-api.php:1078
564
- #: src/ShortcodeParser/Builder/FieldsShortcodeCallback.php:1038
565
  msgid "Save Changes"
566
  msgstr ""
567
 
@@ -1016,7 +1016,7 @@ msgstr ""
1016
  #: src/Functions/GlobalFunctions.php:1276
1017
  #: src/ShortcodeParser/Builder/FieldsShortcodeCallback.php:350
1018
  #: src/Themes/DragDrop/AbstractMemberDirectoryTheme.php:209
1019
- #: src/Themes/DragDrop/AbstractMemberDirectoryTheme.php:477
1020
  #: src/Themes/DragDrop/AbstractTheme.php:183
1021
  #: src/Themes/DragDrop/AbstractTheme.php:224
1022
  msgid "First Name"
@@ -1036,7 +1036,7 @@ msgstr ""
1036
  #: src/Functions/GlobalFunctions.php:1277
1037
  #: src/ShortcodeParser/Builder/FieldsShortcodeCallback.php:383
1038
  #: src/Themes/DragDrop/AbstractMemberDirectoryTheme.php:210
1039
- #: src/Themes/DragDrop/AbstractMemberDirectoryTheme.php:478
1040
  #: src/Themes/DragDrop/AbstractTheme.php:186
1041
  #: src/Themes/DragDrop/AbstractTheme.php:227
1042
  msgid "Last Name"
@@ -1222,7 +1222,7 @@ msgstr ""
1222
  #: src/Admin/SettingsPages/DragDropBuilder/Fields/Username.php:22
1223
  #: src/Functions/GlobalFunctions.php:1275
1224
  #: src/ShortcodeParser/Builder/FieldsShortcodeCallback.php:135
1225
- #: src/Themes/DragDrop/AbstractMemberDirectoryTheme.php:479
1226
  #: src/Themes/DragDrop/AbstractTheme.php:159
1227
  #: src/Themes/DragDrop/AbstractTheme.php:218
1228
  #: src/Themes/DragDrop/UserProfile/DefaultTemplate.php:105
@@ -4204,7 +4204,7 @@ msgid "Log Out"
4204
  msgstr ""
4205
 
4206
  #: src/NavigationMenuLinks/Backend.php:31 src/RegisterActivation/Base.php:159
4207
- #: src/ShortcodeParser/Builder/FieldsShortcodeCallback.php:1035
4208
  #: src/ShortcodeParser/Builder/GlobalShortcodes.php:180
4209
  #: src/Widgets/TabbedWidget.php:89
4210
  msgid "Sign Up"
@@ -4375,11 +4375,11 @@ msgstr ""
4375
  msgid "custom field not defined"
4376
  msgstr ""
4377
 
4378
- #: src/ShortcodeParser/Builder/FieldsShortcodeCallback.php:1104
4379
  msgid "Delete Avatar"
4380
  msgstr ""
4381
 
4382
- #: src/ShortcodeParser/Builder/FieldsShortcodeCallback.php:1140
4383
  msgid "Delete Cover Photo"
4384
  msgstr ""
4385
 
@@ -4916,7 +4916,7 @@ msgid "Fields to show in sorting dropdown menu"
4916
  msgstr ""
4917
 
4918
  #: src/Themes/DragDrop/AbstractMemberDirectoryTheme.php:244
4919
- #: src/Themes/DragDrop/AbstractMemberDirectoryTheme.php:838
4920
  msgid "Search"
4921
  msgstr ""
4922
 
@@ -4980,19 +4980,19 @@ msgstr ""
4980
  msgid "No Result Text"
4981
  msgstr ""
4982
 
4983
- #: src/Themes/DragDrop/AbstractMemberDirectoryTheme.php:475
4984
  msgid "Newest Users First"
4985
  msgstr ""
4986
 
4987
- #: src/Themes/DragDrop/AbstractMemberDirectoryTheme.php:476
4988
  msgid "Oldest Users First"
4989
  msgstr ""
4990
 
4991
- #: src/Themes/DragDrop/AbstractMemberDirectoryTheme.php:705
4992
  msgid "Sort by"
4993
  msgstr ""
4994
 
4995
- #: src/Themes/DragDrop/AbstractMemberDirectoryTheme.php:742
4996
  msgid "More Filters"
4997
  msgstr ""
4998
 
2
  # This file is distributed under the same license as the ProfilePress package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: ProfilePress 3.2.16\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wp-user-avatar\n"
7
+ "POT-Creation-Date: 2022-07-21 19:21:35+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
561
  #: src/AdminBarDashboardAccess/include.settings-page.php:54
562
  #: src/AdminBarDashboardAccess/include.settings-page.php:109
563
  #: src/Functions/custom-settings-api.php:1078
564
+ #: src/ShortcodeParser/Builder/FieldsShortcodeCallback.php:1039
565
  msgid "Save Changes"
566
  msgstr ""
567
 
1016
  #: src/Functions/GlobalFunctions.php:1276
1017
  #: src/ShortcodeParser/Builder/FieldsShortcodeCallback.php:350
1018
  #: src/Themes/DragDrop/AbstractMemberDirectoryTheme.php:209
1019
+ #: src/Themes/DragDrop/AbstractMemberDirectoryTheme.php:479
1020
  #: src/Themes/DragDrop/AbstractTheme.php:183
1021
  #: src/Themes/DragDrop/AbstractTheme.php:224
1022
  msgid "First Name"
1036
  #: src/Functions/GlobalFunctions.php:1277
1037
  #: src/ShortcodeParser/Builder/FieldsShortcodeCallback.php:383
1038
  #: src/Themes/DragDrop/AbstractMemberDirectoryTheme.php:210
1039
+ #: src/Themes/DragDrop/AbstractMemberDirectoryTheme.php:480
1040
  #: src/Themes/DragDrop/AbstractTheme.php:186
1041
  #: src/Themes/DragDrop/AbstractTheme.php:227
1042
  msgid "Last Name"
1222
  #: src/Admin/SettingsPages/DragDropBuilder/Fields/Username.php:22
1223
  #: src/Functions/GlobalFunctions.php:1275
1224
  #: src/ShortcodeParser/Builder/FieldsShortcodeCallback.php:135
1225
+ #: src/Themes/DragDrop/AbstractMemberDirectoryTheme.php:481
1226
  #: src/Themes/DragDrop/AbstractTheme.php:159
1227
  #: src/Themes/DragDrop/AbstractTheme.php:218
1228
  #: src/Themes/DragDrop/UserProfile/DefaultTemplate.php:105
4204
  msgstr ""
4205
 
4206
  #: src/NavigationMenuLinks/Backend.php:31 src/RegisterActivation/Base.php:159
4207
+ #: src/ShortcodeParser/Builder/FieldsShortcodeCallback.php:1036
4208
  #: src/ShortcodeParser/Builder/GlobalShortcodes.php:180
4209
  #: src/Widgets/TabbedWidget.php:89
4210
  msgid "Sign Up"
4375
  msgid "custom field not defined"
4376
  msgstr ""
4377
 
4378
+ #: src/ShortcodeParser/Builder/FieldsShortcodeCallback.php:1105
4379
  msgid "Delete Avatar"
4380
  msgstr ""
4381
 
4382
+ #: src/ShortcodeParser/Builder/FieldsShortcodeCallback.php:1141
4383
  msgid "Delete Cover Photo"
4384
  msgstr ""
4385
 
4916
  msgstr ""
4917
 
4918
  #: src/Themes/DragDrop/AbstractMemberDirectoryTheme.php:244
4919
+ #: src/Themes/DragDrop/AbstractMemberDirectoryTheme.php:846
4920
  msgid "Search"
4921
  msgstr ""
4922
 
4980
  msgid "No Result Text"
4981
  msgstr ""
4982
 
4983
+ #: src/Themes/DragDrop/AbstractMemberDirectoryTheme.php:477
4984
  msgid "Newest Users First"
4985
  msgstr ""
4986
 
4987
+ #: src/Themes/DragDrop/AbstractMemberDirectoryTheme.php:478
4988
  msgid "Oldest Users First"
4989
  msgstr ""
4990
 
4991
+ #: src/Themes/DragDrop/AbstractMemberDirectoryTheme.php:713
4992
  msgid "Sort by"
4993
  msgstr ""
4994
 
4995
+ #: src/Themes/DragDrop/AbstractMemberDirectoryTheme.php:750
4996
  msgid "More Filters"
4997
  msgstr ""
4998
 
readme.txt CHANGED
@@ -1,11 +1,11 @@
1
- === WordPress Membership, User Registration, Login Form, User Profile & Restrict Content Plugin – ProfilePress ===
2
  Contributors: properfraction, collizo4sky
3
  Donate link: https://profilepress.com/pricing/
4
  Tags: membership, user registration, user profile, registration form, login form, 2fa, two-factor authenticator, login, registration, password reset, members, users, profile, front-end profile, edit profile, avatar, profile picture
5
  Requires at least: 4.7
6
  Requires PHP: 7.1.0
7
  Tested up to: 6.0
8
- Stable tag: 3.2.15
9
  License: GPLv2 or later
10
 
11
  Modern membership plugin: restrict content, user registration, front-end login form, customizable user profile & member directory.
@@ -118,6 +118,12 @@ No. You can create and manage your forms, user profiles and member directories w
118
 
119
  == Changelog ==
120
 
 
 
 
 
 
 
121
  = 3.2.15 =
122
  * Fixed bug where social icons where showing when disabled.
123
  * Removed display name from sorted field options.
1
+ === WordPress Membership, User Registration, Login Form, User Profile & Restrict Content Plugin – ProfilePress ===
2
  Contributors: properfraction, collizo4sky
3
  Donate link: https://profilepress.com/pricing/
4
  Tags: membership, user registration, user profile, registration form, login form, 2fa, two-factor authenticator, login, registration, password reset, members, users, profile, front-end profile, edit profile, avatar, profile picture
5
  Requires at least: 4.7
6
  Requires PHP: 7.1.0
7
  Tested up to: 6.0
8
+ Stable tag: 3.2.16
9
  License: GPLv2 or later
10
 
11
  Modern membership plugin: restrict content, user registration, front-end login form, customizable user profile & member directory.
118
 
119
  == Changelog ==
120
 
121
+ = 3.2.16 =
122
+ * Added unique classes to my account page - account details section.
123
+ * Fixed bug with member directory search not working in some cases.
124
+ * Fixed bug where upload field with data is still required.
125
+ * Fixed XSS on member directory search field.
126
+
127
  = 3.2.15 =
128
  * Fixed bug where social icons where showing when disabled.
129
  * Removed display name from sorted field options.
src/ShortcodeParser/Builder/FieldsShortcodeCallback.php CHANGED
@@ -836,7 +836,7 @@ class FieldsShortcodeCallback
836
  }
837
 
838
  $atts['required'] = 'false';
839
-
840
  $attributes = $this->field_attributes('ignore_value', $this->valid_field_atts(ppress_normalize_attributes($atts)));
841
 
842
  $checkbox_tag_key = "{$key}[]";
@@ -998,8 +998,9 @@ class FieldsShortcodeCallback
998
  $user_upload_data = get_user_meta($this->current_user->ID, 'pp_uploaded_files', true);
999
  // if the user uploads isn't empty and there exist a file with the custom field key.
1000
  if ( ! empty($user_upload_data) && ($filename = @$user_upload_data[$key])) {
1001
- $link = PPRESS_FILE_UPLOAD_URL . $filename;
1002
- $html .= "<div class='ppress-user-upload'><a href='$link'>$filename</a></div>";
 
1003
  }
1004
 
1005
  $html = apply_filters('ppress_edit_profile_hide_file', $html);
836
  }
837
 
838
  $atts['required'] = 'false';
839
+
840
  $attributes = $this->field_attributes('ignore_value', $this->valid_field_atts(ppress_normalize_attributes($atts)));
841
 
842
  $checkbox_tag_key = "{$key}[]";
998
  $user_upload_data = get_user_meta($this->current_user->ID, 'pp_uploaded_files', true);
999
  // if the user uploads isn't empty and there exist a file with the custom field key.
1000
  if ( ! empty($user_upload_data) && ($filename = @$user_upload_data[$key])) {
1001
+ $link = PPRESS_FILE_UPLOAD_URL . $filename;
1002
+ $html .= "<div class='ppress-user-upload'><a href='$link'>$filename</a></div>";
1003
+ $attributes = str_replace('required="required"', '', $attributes);
1004
  }
1005
 
1006
  $html = apply_filters('ppress_edit_profile_hide_file', $html);
src/ShortcodeParser/MyAccount/edit-profile.tmpl.php CHANGED
@@ -80,111 +80,113 @@ $sub_menus = apply_filters('ppress_my_account_settings_sub_menus', ['general' =>
80
 
81
  <div class="profilepress-myaccount-form-wrap">
82
 
83
- <div class="profilepress-myaccount-form-field">
84
  <div class="ppmyac-custom-file">
85
- <?= do_shortcode('[edit-profile-cover-image id="pp-cover-image" class="ppmyac-custom-file-input"]', true) ?>
86
  <label for="pp-cover-image" class="ppmyac-custom-file-label" data-browse="<?= esc_html__('Browse', 'wp-user-avatar'); ?>">
87
  <?= esc_html__('Cover photo (min. width: 1000px)', 'wp-user-avatar') ?>
88
  </label>
89
  </div>
90
  </div>
91
 
92
- <div class="profilepress-myaccount-form-field">
93
  <div class="profilepress-myaccount-delete-cover-image-wrap">
94
  <div class="profilepress-myaccount-cover-image">
95
  <div class="profilepress-myaccount-has-cover-image" style="<?= ! $cover_image_url ? 'display:none' : '' ?>">
96
- <?= do_shortcode('[pp-user-cover-image]', true); ?>
97
  </div>
98
- <?= do_shortcode(sprintf('[pp-remove-cover-image-button label="%s" class="ppmyac-remove-avatar"]', __('Remove', 'wp-user-avatar')), true); ?>
99
  <div class="profilepress-myaccount-cover-image-empty" style="<?= $cover_image_url ? 'display:none' : '' ?>"></div>
100
  </div>
101
  </div>
102
  </div>
103
 
104
- <div class="profilepress-myaccount-form-field">
105
  <div class="ppmyac-custom-file">
106
- <?= do_shortcode('[edit-profile-avatar id="pp-avatar" class="ppmyac-custom-file-input"]', true) ?>
107
  <label for="pp-avatar" class="ppmyac-custom-file-label" data-browse="<?= esc_html__('Browse', 'wp-user-avatar'); ?>">
108
  <?= esc_html__('Profile picture', 'wp-user-avatar') ?>
109
  </label>
110
  </div>
111
  </div>
112
 
113
- <div class="profilepress-myaccount-form-field">
114
  <div class="profilepress-myaccount-delete-avatar-wrap">
115
  <div class="profilepress-myaccount-delete-avatar">
116
  <?= UserAvatar::get_avatar_img($current_user_id); ?>
117
- <?= do_shortcode(sprintf('[pp-remove-avatar-button label="%s" class="ppmyac-remove-avatar"]', __('Remove', 'wp-user-avatar')), true); ?>
118
  </div>
119
  </div>
120
  </div>
121
 
122
- <div class="profilepress-myaccount-form-field">
123
  <label for="edit-profile-email"><?= esc_html__('Email address', 'wp-user-avatar') ?></label>
124
- <?= do_shortcode('[edit-profile-email id="edit-profile-email" class="profilepress-myaccount-form-control"]', true); ?>
125
  </div>
126
 
127
- <div class="profilepress-myaccount-form-field">
128
  <label for="edit-profile-first-name"><?= esc_html__('First name', 'wp-user-avatar') ?></label>
129
- <?= do_shortcode('[edit-profile-first-name id="edit-profile-first-name" class="profilepress-myaccount-form-control"]', true); ?>
130
  </div>
131
 
132
- <div class="profilepress-myaccount-form-field">
133
  <label for="edit-profile-last-name"><?= esc_html__('Last name', 'wp-user-avatar') ?></label>
134
- <?= do_shortcode('[edit-profile-last-name id="edit-profile-last-name" class="profilepress-myaccount-form-control"]', true); ?>
135
  </div>
136
 
137
- <div class="profilepress-myaccount-form-field">
138
  <label for="edit-profile-nickname"><?= esc_html__('Nickname', 'wp-user-avatar') ?></label>
139
- <?= do_shortcode('[edit-profile-nickname id="edit-profile-nickname" class="profilepress-myaccount-form-control"]', true); ?>
140
  </div>
141
 
142
- <div class="profilepress-myaccount-form-field">
143
  <label for="eup_display_name"><?= esc_html__('Display name publicly as', 'wp-user-avatar') ?></label>
144
  <?php $this->display_name_select_dropdown(); ?>
145
  </div>
146
 
147
- <div class="profilepress-myaccount-form-field">
148
  <label for="edit-profile-website"><?= esc_html__('Website', 'wp-user-avatar') ?></label>
149
- <?= do_shortcode('[edit-profile-website id="edit-profile-website" class="profilepress-myaccount-form-control"]', true); ?>
150
  </div>
151
 
152
- <div class="profilepress-myaccount-form-field">
153
  <label for="edit-profile-bio"><?= esc_html__('About yourself', 'wp-user-avatar') ?></label>
154
- <?= do_shortcode('[edit-profile-bio id="edit-profile-bio" class="profilepress-myaccount-form-control"]', true); ?>
155
  </div>
156
 
157
  <?php if (is_array($contact_infos) && ! empty($contact_infos)) : ?>
158
 
159
  <?php foreach ($contact_infos as $field_key => $label) : ?>
160
- <div class="profilepress-myaccount-form-field">
 
161
  <label for="<?= $field_key ?>"><?= $label ?></label>
162
- <?= do_shortcode(sprintf('[edit-profile-cpf key="%1$s" id="%1$s" type="%2$s" class="profilepress-myaccount-form-control"]', $field_key, 'text'), true) ?>
163
  </div>
164
  <?php endforeach; ?>
165
 
166
- <?php endif; ?>
167
 
168
- <?php if (is_array($custom_fields) && ! empty($custom_fields)) : ?>
 
 
169
 
170
- <?php foreach ($custom_fields as $custom_field) : ?>
171
- <?php
172
  $field_key = $custom_field['field_key'];
 
173
  // skip woocommerce core billing / shipping fields added to wordpress profile admin page.
174
  if (in_array($field_key, ppress_woocommerce_billing_shipping_fields())) continue;
175
  ?>
176
- <div class="profilepress-myaccount-form-field">
177
  <?php if ($custom_field['type'] !== 'agreeable') : ?>
178
  <label for="<?= $field_key ?>"><?= $custom_field['label_name'] ?></label>
179
  <?php endif; ?>
180
- <?= do_shortcode(sprintf('[edit-profile-cpf id="%1$s" key="%1$s" type="%2$s" class="profilepress-myaccount-form-control"]', $field_key, $custom_field['type'])) ?>
181
  </div>
182
  <?php endforeach; ?>
183
 
184
  <?php endif; ?>
185
 
186
- <div class="profilepress-myaccount-form-field">
187
- <?= do_shortcode('[edit-profile-submit]', true); ?>
188
  </div>
189
  </div>
190
 
80
 
81
  <div class="profilepress-myaccount-form-wrap">
82
 
83
+ <div class="profilepress-myaccount-form-field pp-cover-image">
84
  <div class="ppmyac-custom-file">
85
+ <?= '[edit-profile-cover-image id="pp-cover-image" class="ppmyac-custom-file-input"]' ?>
86
  <label for="pp-cover-image" class="ppmyac-custom-file-label" data-browse="<?= esc_html__('Browse', 'wp-user-avatar'); ?>">
87
  <?= esc_html__('Cover photo (min. width: 1000px)', 'wp-user-avatar') ?>
88
  </label>
89
  </div>
90
  </div>
91
 
92
+ <div class="profilepress-myaccount-form-field pp-user-cover-image">
93
  <div class="profilepress-myaccount-delete-cover-image-wrap">
94
  <div class="profilepress-myaccount-cover-image">
95
  <div class="profilepress-myaccount-has-cover-image" style="<?= ! $cover_image_url ? 'display:none' : '' ?>">
96
+ <?= '[pp-user-cover-image]'; ?>
97
  </div>
98
+ <?= sprintf('[pp-remove-cover-image-button label="%s" class="ppmyac-remove-avatar"]', __('Remove', 'wp-user-avatar')); ?>
99
  <div class="profilepress-myaccount-cover-image-empty" style="<?= $cover_image_url ? 'display:none' : '' ?>"></div>
100
  </div>
101
  </div>
102
  </div>
103
 
104
+ <div class="profilepress-myaccount-form-field edit-profile-avatar">
105
  <div class="ppmyac-custom-file">
106
+ <?= '[edit-profile-avatar id="pp-avatar" class="ppmyac-custom-file-input"]' ?>
107
  <label for="pp-avatar" class="ppmyac-custom-file-label" data-browse="<?= esc_html__('Browse', 'wp-user-avatar'); ?>">
108
  <?= esc_html__('Profile picture', 'wp-user-avatar') ?>
109
  </label>
110
  </div>
111
  </div>
112
 
113
+ <div class="profilepress-myaccount-form-field delete-avatar">
114
  <div class="profilepress-myaccount-delete-avatar-wrap">
115
  <div class="profilepress-myaccount-delete-avatar">
116
  <?= UserAvatar::get_avatar_img($current_user_id); ?>
117
+ <?= sprintf('[pp-remove-avatar-button label="%s" class="ppmyac-remove-avatar"]', __('Remove', 'wp-user-avatar')); ?>
118
  </div>
119
  </div>
120
  </div>
121
 
122
+ <div class="profilepress-myaccount-form-field edit-profile-email">
123
  <label for="edit-profile-email"><?= esc_html__('Email address', 'wp-user-avatar') ?></label>
124
+ <?= '[edit-profile-email id="edit-profile-email" class="profilepress-myaccount-form-control"]'; ?>
125
  </div>
126
 
127
+ <div class="profilepress-myaccount-form-field edit-profile-first-name">
128
  <label for="edit-profile-first-name"><?= esc_html__('First name', 'wp-user-avatar') ?></label>
129
+ <?= '[edit-profile-first-name id="edit-profile-first-name" class="profilepress-myaccount-form-control"]'; ?>
130
  </div>
131
 
132
+ <div class="profilepress-myaccount-form-field edit-profile-last-name">
133
  <label for="edit-profile-last-name"><?= esc_html__('Last name', 'wp-user-avatar') ?></label>
134
+ <?= '[edit-profile-last-name id="edit-profile-last-name" class="profilepress-myaccount-form-control"]'; ?>
135
  </div>
136
 
137
+ <div class="profilepress-myaccount-form-field edit-profile-nickname">
138
  <label for="edit-profile-nickname"><?= esc_html__('Nickname', 'wp-user-avatar') ?></label>
139
+ <?= '[edit-profile-nickname id="edit-profile-nickname" class="profilepress-myaccount-form-control"]'; ?>
140
  </div>
141
 
142
+ <div class="profilepress-myaccount-form-field eup_display_name">
143
  <label for="eup_display_name"><?= esc_html__('Display name publicly as', 'wp-user-avatar') ?></label>
144
  <?php $this->display_name_select_dropdown(); ?>
145
  </div>
146
 
147
+ <div class="profilepress-myaccount-form-field edit-profile-website">
148
  <label for="edit-profile-website"><?= esc_html__('Website', 'wp-user-avatar') ?></label>
149
+ <?= '[edit-profile-website id="edit-profile-website" class="profilepress-myaccount-form-control"]'; ?>
150
  </div>
151
 
152
+ <div class="profilepress-myaccount-form-field edit-profile-bio">
153
  <label for="edit-profile-bio"><?= esc_html__('About yourself', 'wp-user-avatar') ?></label>
154
+ <?= '[edit-profile-bio id="edit-profile-bio" class="profilepress-myaccount-form-control"]'; ?>
155
  </div>
156
 
157
  <?php if (is_array($contact_infos) && ! empty($contact_infos)) : ?>
158
 
159
  <?php foreach ($contact_infos as $field_key => $label) : ?>
160
+
161
+ <div class="profilepress-myaccount-form-field <?= $field_key ?>">
162
  <label for="<?= $field_key ?>"><?= $label ?></label>
163
+ <?= sprintf('[edit-profile-cpf key="%1$s" id="%1$s" type="%2$s" class="profilepress-myaccount-form-control"]', $field_key, 'text'); ?>
164
  </div>
165
  <?php endforeach; ?>
166
 
167
+ <?php endif;
168
 
169
+ if (is_array($custom_fields) && ! empty($custom_fields)) : ?>
170
+
171
+ <?php foreach ($custom_fields as $custom_field) :
172
 
 
 
173
  $field_key = $custom_field['field_key'];
174
+
175
  // skip woocommerce core billing / shipping fields added to wordpress profile admin page.
176
  if (in_array($field_key, ppress_woocommerce_billing_shipping_fields())) continue;
177
  ?>
178
+ <div class="profilepress-myaccount-form-field <?= $field_key ?>">
179
  <?php if ($custom_field['type'] !== 'agreeable') : ?>
180
  <label for="<?= $field_key ?>"><?= $custom_field['label_name'] ?></label>
181
  <?php endif; ?>
182
+ <?= sprintf('[edit-profile-cpf id="%1$s" key="%1$s" type="%2$s" class="profilepress-myaccount-form-control"]', $field_key, $custom_field['type']) ?>
183
  </div>
184
  <?php endforeach; ?>
185
 
186
  <?php endif; ?>
187
 
188
+ <div class="profilepress-myaccount-form-field edit-profile-submit">
189
+ <?= '[edit-profile-submit]'; ?>
190
  </div>
191
  </div>
192
 
src/Themes/DragDrop/AbstractMemberDirectoryTheme.php CHANGED
@@ -424,7 +424,7 @@ abstract class AbstractMemberDirectoryTheme extends AbstractTheme
424
 
425
  $total_users_found = $wp_user_query->get_total();
426
 
427
- if ( ! empty($query_params['ppmd-search']) && is_array($users) && ! empty($users)) {
428
 
429
  /**
430
  * @var int $key
@@ -439,6 +439,9 @@ abstract class AbstractMemberDirectoryTheme extends AbstractTheme
439
 
440
  $total_users_found = count($users);
441
 
 
 
 
442
  }
443
 
444
  $cache[$this->form_id] = [
@@ -452,7 +455,6 @@ abstract class AbstractMemberDirectoryTheme extends AbstractTheme
452
 
453
  protected function search_filter_query_params()
454
  {
455
-
456
  static $cache = [];
457
 
458
  if ( ! isset($cache[$this->form_id])) {
@@ -511,12 +513,13 @@ abstract class AbstractMemberDirectoryTheme extends AbstractTheme
511
  ]));
512
 
513
  $args = [
514
- 'number' => $parsed_args['number'],
515
- 'paged' => $parsed_args['paged'],
516
- 'offset' => $parsed_args['offset'],
517
- 'role__in' => $parsed_args['roles'],
518
- 'include' => $parsed_args['include_user_ids'],
519
- 'exclude' => $parsed_args['exclude_user_ids']
 
520
  ];
521
 
522
  // no check for username because it's the default orderby
@@ -553,17 +556,17 @@ abstract class AbstractMemberDirectoryTheme extends AbstractTheme
553
 
554
  $search_columns = $parsed_args['search_columns'];
555
 
556
- $filter_meta_fields = $parsed_args['filter_meta_fields'];
557
-
558
  $roles = $parsed_args['roles'];
559
 
 
 
560
  $args['search'] = '*' . $search_term . '*';
561
 
562
  // we need to empty out the search column so wp user query doesn't restrict the search only
563
  // to supplied search columns. We want to also check usermeta too.
564
  add_filter('user_search_columns', '__return_empty_array', 999999999);
565
 
566
- add_action('pre_user_query', function ($query) {
567
  // removes "AND ()" from query which causes the sql to be invalid.
568
  // SELECT DISTINCT wp_users.* FROM wp_users INNER JOIN wp_usermeta ON
569
  // ( wp_users.ID = wp_usermeta.user_id ) WHERE 1=1 AND ( wp_users.user_nicename LIKE '%little%' OR
@@ -571,13 +574,18 @@ abstract class AbstractMemberDirectoryTheme extends AbstractTheme
571
  // OR ( wp_usermeta.meta_key = 'last_name' AND wp_usermeta.meta_value LIKE '%little%' ) OR ( wp_usermeta.meta_key = 'twitter'
572
  // AND wp_usermeta.meta_value LIKE '%little%' ) ) ) AND () ORDER BY user_registered DESC
573
  $query->query_where = str_replace('AND ()', '', $query->query_where);
 
 
 
 
 
574
  });
575
 
576
  /**
577
  * Modifies the query so we can tactically include searching of $search_columns in wp_users table
578
  * @see https://wordpress.stackexchange.com/a/248674/59917
579
  */
580
- add_filter('get_meta_sql', function ($sql) use ($search_term, $search_columns, $filter_meta_fields, $roles) {
581
 
582
  global $wpdb;
583
 
@@ -843,7 +851,7 @@ abstract class AbstractMemberDirectoryTheme extends AbstractTheme
843
  <div class="ppressmd-member-directory-header-row ppressmd-member-directory-search-row">
844
  <div class="ppressmd-member-directory-search-line">
845
  <label>
846
- <input name="search-<?= $this->form_id ?>" type="search" class="ppressmd-search-line" placeholder="<?= $search_string ?>" value="<?= $entered_search_term ?>">
847
  </label>
848
  <input type="submit" class="ppressmd-do-search ppressmd-button" value="<?= $search_string ?>">
849
  </div>
424
 
425
  $total_users_found = $wp_user_query->get_total();
426
 
427
+ if ( ! empty($roles) && ! empty($query_params['ppmd-search']) && is_array($users) && ! empty($users)) {
428
 
429
  /**
430
  * @var int $key
439
 
440
  $total_users_found = count($users);
441
 
442
+ // only necessary because if filtering by role, LIMIT is removed from query.
443
+ // limit is removed in pre_user_query action callback.
444
+ $users = array_slice($users, $offset, $users_per_page);
445
  }
446
 
447
  $cache[$this->form_id] = [
455
 
456
  protected function search_filter_query_params()
457
  {
 
458
  static $cache = [];
459
 
460
  if ( ! isset($cache[$this->form_id])) {
513
  ]));
514
 
515
  $args = [
516
+ 'number' => $parsed_args['number'],
517
+ 'paged' => $parsed_args['paged'],
518
+ 'offset' => $parsed_args['offset'],
519
+ // excluded cos we are doing this filtering in PHP self::wp_user_query()
520
+ //'role__in' => $parsed_args['roles'],
521
+ 'include' => $parsed_args['include_user_ids'],
522
+ 'exclude' => $parsed_args['exclude_user_ids']
523
  ];
524
 
525
  // no check for username because it's the default orderby
556
 
557
  $search_columns = $parsed_args['search_columns'];
558
 
 
 
559
  $roles = $parsed_args['roles'];
560
 
561
+ $filter_meta_fields = $parsed_args['filter_meta_fields'];
562
+
563
  $args['search'] = '*' . $search_term . '*';
564
 
565
  // we need to empty out the search column so wp user query doesn't restrict the search only
566
  // to supplied search columns. We want to also check usermeta too.
567
  add_filter('user_search_columns', '__return_empty_array', 999999999);
568
 
569
+ add_action('pre_user_query', function ($query) use ($roles) {
570
  // removes "AND ()" from query which causes the sql to be invalid.
571
  // SELECT DISTINCT wp_users.* FROM wp_users INNER JOIN wp_usermeta ON
572
  // ( wp_users.ID = wp_usermeta.user_id ) WHERE 1=1 AND ( wp_users.user_nicename LIKE '%little%' OR
574
  // OR ( wp_usermeta.meta_key = 'last_name' AND wp_usermeta.meta_value LIKE '%little%' ) OR ( wp_usermeta.meta_key = 'twitter'
575
  // AND wp_usermeta.meta_value LIKE '%little%' ) ) ) AND () ORDER BY user_registered DESC
576
  $query->query_where = str_replace('AND ()', '', $query->query_where);
577
+
578
+ if ( ! empty($roles)) {
579
+ // remove query LIMIT so we can get actual total number of result
580
+ unset($query->query_limit);
581
+ }
582
  });
583
 
584
  /**
585
  * Modifies the query so we can tactically include searching of $search_columns in wp_users table
586
  * @see https://wordpress.stackexchange.com/a/248674/59917
587
  */
588
+ add_filter('get_meta_sql', function ($sql) use ($search_term, $search_columns, $filter_meta_fields) {
589
 
590
  global $wpdb;
591
 
851
  <div class="ppressmd-member-directory-header-row ppressmd-member-directory-search-row">
852
  <div class="ppressmd-member-directory-search-line">
853
  <label>
854
+ <input name="search-<?= $this->form_id ?>" type="search" class="ppressmd-search-line" placeholder="<?= $search_string ?>" value="<?= esc_attr($entered_search_term) ?>">
855
  </label>
856
  <input type="submit" class="ppressmd-do-search ppressmd-button" value="<?= $search_string ?>">
857
  </div>
vendor/autoload.php CHANGED
@@ -2,6 +2,11 @@
2
 
3
  // autoload.php @generated by Composer
4
 
 
 
 
 
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInit83c239f73953f902fd203ac8c88fa4b3::getLoader();
2
 
3
  // autoload.php @generated by Composer
4
 
5
+ if (PHP_VERSION_ID < 50600) {
6
+ echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
7
+ exit(1);
8
+ }
9
+
10
  require_once __DIR__ . '/composer/autoload_real.php';
11
 
12
+ return ComposerAutoloaderInitb15b0b66fa591157ab77757b7544be6d::getLoader();
vendor/composer/ClassLoader.php CHANGED
@@ -42,30 +42,75 @@ namespace Composer\Autoload;
42
  */
43
  class ClassLoader
44
  {
 
45
  private $vendorDir;
46
 
47
  // PSR-4
 
 
 
 
48
  private $prefixLengthsPsr4 = array();
 
 
 
 
49
  private $prefixDirsPsr4 = array();
 
 
 
 
50
  private $fallbackDirsPsr4 = array();
51
 
52
  // PSR-0
 
 
 
 
53
  private $prefixesPsr0 = array();
 
 
 
 
54
  private $fallbackDirsPsr0 = array();
55
 
 
56
  private $useIncludePath = false;
 
 
 
 
 
57
  private $classMap = array();
 
 
58
  private $classMapAuthoritative = false;
 
 
 
 
 
59
  private $missingClasses = array();
 
 
60
  private $apcuPrefix;
61
 
 
 
 
62
  private static $registeredLoaders = array();
63
 
 
 
 
64
  public function __construct($vendorDir = null)
65
  {
66
  $this->vendorDir = $vendorDir;
67
  }
68
 
 
 
 
69
  public function getPrefixes()
70
  {
71
  if (!empty($this->prefixesPsr0)) {
@@ -75,28 +120,47 @@ class ClassLoader
75
  return array();
76
  }
77
 
 
 
 
 
78
  public function getPrefixesPsr4()
79
  {
80
  return $this->prefixDirsPsr4;
81
  }
82
 
 
 
 
 
83
  public function getFallbackDirs()
84
  {
85
  return $this->fallbackDirsPsr0;
86
  }
87
 
 
 
 
 
88
  public function getFallbackDirsPsr4()
89
  {
90
  return $this->fallbackDirsPsr4;
91
  }
92
 
 
 
 
 
93
  public function getClassMap()
94
  {
95
  return $this->classMap;
96
  }
97
 
98
  /**
99
- * @param array $classMap Class to filename map
 
 
 
100
  */
101
  public function addClassMap(array $classMap)
102
  {
@@ -111,9 +175,11 @@ class ClassLoader
111
  * Registers a set of PSR-0 directories for a given prefix, either
112
  * appending or prepending to the ones previously set for this prefix.
113
  *
114
- * @param string $prefix The prefix
115
- * @param array|string $paths The PSR-0 root directories
116
- * @param bool $prepend Whether to prepend the directories
 
 
117
  */
118
  public function add($prefix, $paths, $prepend = false)
119
  {
@@ -156,11 +222,13 @@ class ClassLoader
156
  * Registers a set of PSR-4 directories for a given namespace, either
157
  * appending or prepending to the ones previously set for this namespace.
158
  *
159
- * @param string $prefix The prefix/namespace, with trailing '\\'
160
- * @param array|string $paths The PSR-4 base directories
161
- * @param bool $prepend Whether to prepend the directories
162
  *
163
  * @throws \InvalidArgumentException
 
 
164
  */
165
  public function addPsr4($prefix, $paths, $prepend = false)
166
  {
@@ -204,8 +272,10 @@ class ClassLoader
204
  * Registers a set of PSR-0 directories for a given prefix,
205
  * replacing any others previously set for this prefix.
206
  *
207
- * @param string $prefix The prefix
208
- * @param array|string $paths The PSR-0 base directories
 
 
209
  */
210
  public function set($prefix, $paths)
211
  {
@@ -220,10 +290,12 @@ class ClassLoader
220
  * Registers a set of PSR-4 directories for a given namespace,
221
  * replacing any others previously set for this namespace.
222
  *
223
- * @param string $prefix The prefix/namespace, with trailing '\\'
224
- * @param array|string $paths The PSR-4 base directories
225
  *
226
  * @throws \InvalidArgumentException
 
 
227
  */
228
  public function setPsr4($prefix, $paths)
229
  {
@@ -243,6 +315,8 @@ class ClassLoader
243
  * Turns on searching the include path for class files.
244
  *
245
  * @param bool $useIncludePath
 
 
246
  */
247
  public function setUseIncludePath($useIncludePath)
248
  {
@@ -265,6 +339,8 @@ class ClassLoader
265
  * that have not been registered with the class map.
266
  *
267
  * @param bool $classMapAuthoritative
 
 
268
  */
269
  public function setClassMapAuthoritative($classMapAuthoritative)
270
  {
@@ -285,6 +361,8 @@ class ClassLoader
285
  * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
286
  *
287
  * @param string|null $apcuPrefix
 
 
288
  */
289
  public function setApcuPrefix($apcuPrefix)
290
  {
@@ -305,6 +383,8 @@ class ClassLoader
305
  * Registers this instance as an autoloader.
306
  *
307
  * @param bool $prepend Whether to prepend the autoloader or not
 
 
308
  */
309
  public function register($prepend = false)
310
  {
@@ -324,6 +404,8 @@ class ClassLoader
324
 
325
  /**
326
  * Unregisters this instance as an autoloader.
 
 
327
  */
328
  public function unregister()
329
  {
@@ -403,6 +485,11 @@ class ClassLoader
403
  return self::$registeredLoaders;
404
  }
405
 
 
 
 
 
 
406
  private function findFileWithExtension($class, $ext)
407
  {
408
  // PSR-4 lookup
@@ -474,6 +561,10 @@ class ClassLoader
474
  * Scope isolated include.
475
  *
476
  * Prevents access to $this/self from included files.
 
 
 
 
477
  */
478
  function includeFile($file)
479
  {
42
  */
43
  class ClassLoader
44
  {
45
+ /** @var ?string */
46
  private $vendorDir;
47
 
48
  // PSR-4
49
+ /**
50
+ * @var array[]
51
+ * @psalm-var array<string, array<string, int>>
52
+ */
53
  private $prefixLengthsPsr4 = array();
54
+ /**
55
+ * @var array[]
56
+ * @psalm-var array<string, array<int, string>>
57
+ */
58
  private $prefixDirsPsr4 = array();
59
+ /**
60
+ * @var array[]
61
+ * @psalm-var array<string, string>
62
+ */
63
  private $fallbackDirsPsr4 = array();
64
 
65
  // PSR-0
66
+ /**
67
+ * @var array[]
68
+ * @psalm-var array<string, array<string, string[]>>
69
+ */
70
  private $prefixesPsr0 = array();
71
+ /**
72
+ * @var array[]
73
+ * @psalm-var array<string, string>
74
+ */
75
  private $fallbackDirsPsr0 = array();
76
 
77
+ /** @var bool */
78
  private $useIncludePath = false;
79
+
80
+ /**
81
+ * @var string[]
82
+ * @psalm-var array<string, string>
83
+ */
84
  private $classMap = array();
85
+
86
+ /** @var bool */
87
  private $classMapAuthoritative = false;
88
+
89
+ /**
90
+ * @var bool[]
91
+ * @psalm-var array<string, bool>
92
+ */
93
  private $missingClasses = array();
94
+
95
+ /** @var ?string */
96
  private $apcuPrefix;
97
 
98
+ /**
99
+ * @var self[]
100
+ */
101
  private static $registeredLoaders = array();
102
 
103
+ /**
104
+ * @param ?string $vendorDir
105
+ */
106
  public function __construct($vendorDir = null)
107
  {
108
  $this->vendorDir = $vendorDir;
109
  }
110
 
111
+ /**
112
+ * @return string[]
113
+ */
114
  public function getPrefixes()
115
  {
116
  if (!empty($this->prefixesPsr0)) {
120
  return array();
121
  }
122
 
123
+ /**
124
+ * @return array[]
125
+ * @psalm-return array<string, array<int, string>>
126
+ */
127
  public function getPrefixesPsr4()
128
  {
129
  return $this->prefixDirsPsr4;
130
  }
131
 
132
+ /**
133
+ * @return array[]
134
+ * @psalm-return array<string, string>
135
+ */
136
  public function getFallbackDirs()
137
  {
138
  return $this->fallbackDirsPsr0;
139
  }
140
 
141
+ /**
142
+ * @return array[]
143
+ * @psalm-return array<string, string>
144
+ */
145
  public function getFallbackDirsPsr4()
146
  {
147
  return $this->fallbackDirsPsr4;
148
  }
149
 
150
+ /**
151
+ * @return string[] Array of classname => path
152
+ * @psalm-return array<string, string>
153
+ */
154
  public function getClassMap()
155
  {
156
  return $this->classMap;
157
  }
158
 
159
  /**
160
+ * @param string[] $classMap Class to filename map
161
+ * @psalm-param array<string, string> $classMap
162
+ *
163
+ * @return void
164
  */
165
  public function addClassMap(array $classMap)
166
  {
175
  * Registers a set of PSR-0 directories for a given prefix, either
176
  * appending or prepending to the ones previously set for this prefix.
177
  *
178
+ * @param string $prefix The prefix
179
+ * @param string[]|string $paths The PSR-0 root directories
180
+ * @param bool $prepend Whether to prepend the directories
181
+ *
182
+ * @return void
183
  */
184
  public function add($prefix, $paths, $prepend = false)
185
  {
222
  * Registers a set of PSR-4 directories for a given namespace, either
223
  * appending or prepending to the ones previously set for this namespace.
224
  *
225
+ * @param string $prefix The prefix/namespace, with trailing '\\'
226
+ * @param string[]|string $paths The PSR-4 base directories
227
+ * @param bool $prepend Whether to prepend the directories
228
  *
229
  * @throws \InvalidArgumentException
230
+ *
231
+ * @return void
232
  */
233
  public function addPsr4($prefix, $paths, $prepend = false)
234
  {
272
  * Registers a set of PSR-0 directories for a given prefix,
273
  * replacing any others previously set for this prefix.
274
  *
275
+ * @param string $prefix The prefix
276
+ * @param string[]|string $paths The PSR-0 base directories
277
+ *
278
+ * @return void
279
  */
280
  public function set($prefix, $paths)
281
  {
290
  * Registers a set of PSR-4 directories for a given namespace,
291
  * replacing any others previously set for this namespace.
292
  *
293
+ * @param string $prefix The prefix/namespace, with trailing '\\'
294
+ * @param string[]|string $paths The PSR-4 base directories
295
  *
296
  * @throws \InvalidArgumentException
297
+ *
298
+ * @return void
299
  */
300
  public function setPsr4($prefix, $paths)
301
  {
315
  * Turns on searching the include path for class files.
316
  *
317
  * @param bool $useIncludePath
318
+ *
319
+ * @return void
320
  */
321
  public function setUseIncludePath($useIncludePath)
322
  {
339
  * that have not been registered with the class map.
340
  *
341
  * @param bool $classMapAuthoritative
342
+ *
343
+ * @return void
344
  */
345
  public function setClassMapAuthoritative($classMapAuthoritative)
346
  {
361
  * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
362
  *
363
  * @param string|null $apcuPrefix
364
+ *
365
+ * @return void
366
  */
367
  public function setApcuPrefix($apcuPrefix)
368
  {
383
  * Registers this instance as an autoloader.
384
  *
385
  * @param bool $prepend Whether to prepend the autoloader or not
386
+ *
387
+ * @return void
388
  */
389
  public function register($prepend = false)
390
  {
404
 
405
  /**
406
  * Unregisters this instance as an autoloader.
407
+ *
408
+ * @return void
409
  */
410
  public function unregister()
411
  {
485
  return self::$registeredLoaders;
486
  }
487
 
488
+ /**
489
+ * @param string $class
490
+ * @param string $ext
491
+ * @return string|false
492
+ */
493
  private function findFileWithExtension($class, $ext)
494
  {
495
  // PSR-4 lookup
561
  * Scope isolated include.
562
  *
563
  * Prevents access to $this/self from included files.
564
+ *
565
+ * @param string $file
566
+ * @return void
567
+ * @private
568
  */
569
  function includeFile($file)
570
  {
vendor/composer/InstalledVersions.php CHANGED
@@ -20,12 +20,27 @@ use Composer\Semver\VersionParser;
20
  *
21
  * See also https://getcomposer.org/doc/07-runtime.md#installed-versions
22
  *
23
- * To require it's presence, you can require `composer-runtime-api ^2.0`
 
 
24
  */
25
  class InstalledVersions
26
  {
 
 
 
 
27
  private static $installed;
 
 
 
 
28
  private static $canGetVendors;
 
 
 
 
 
29
  private static $installedByVendor = array();
30
 
31
  /**
@@ -228,7 +243,7 @@ class InstalledVersions
228
 
229
  /**
230
  * @return array
231
- * @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}
232
  */
233
  public static function getRootPackage()
234
  {
@@ -242,7 +257,7 @@ class InstalledVersions
242
  *
243
  * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
244
  * @return array[]
245
- * @psalm-return array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string}>}
246
  */
247
  public static function getRawData()
248
  {
@@ -265,7 +280,7 @@ class InstalledVersions
265
  * Returns the raw data of all installed.php which are currently loaded for custom implementations
266
  *
267
  * @return array[]
268
- * @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string}>}>
269
  */
270
  public static function getAllRawData()
271
  {
@@ -288,7 +303,7 @@ class InstalledVersions
288
  * @param array[] $data A vendor/composer/installed.php data set
289
  * @return void
290
  *
291
- * @psalm-param array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string}>} $data
292
  */
293
  public static function reload($data)
294
  {
@@ -298,7 +313,7 @@ class InstalledVersions
298
 
299
  /**
300
  * @return array[]
301
- * @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string}>}>
302
  */
303
  private static function getInstalled()
304
  {
20
  *
21
  * See also https://getcomposer.org/doc/07-runtime.md#installed-versions
22
  *
23
+ * To require its presence, you can require `composer-runtime-api ^2.0`
24
+ *
25
+ * @final
26
  */
27
  class InstalledVersions
28
  {
29
+ /**
30
+ * @var mixed[]|null
31
+ * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}|array{}|null
32
+ */
33
  private static $installed;
34
+
35
+ /**
36
+ * @var bool|null
37
+ */
38
  private static $canGetVendors;
39
+
40
+ /**
41
+ * @var array[]
42
+ * @psalm-var array<string, array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
43
+ */
44
  private static $installedByVendor = array();
45
 
46
  /**
243
 
244
  /**
245
  * @return array
246
+ * @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}
247
  */
248
  public static function getRootPackage()
249
  {
257
  *
258
  * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
259
  * @return array[]
260
+ * @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}
261
  */
262
  public static function getRawData()
263
  {
280
  * Returns the raw data of all installed.php which are currently loaded for custom implementations
281
  *
282
  * @return array[]
283
+ * @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
284
  */
285
  public static function getAllRawData()
286
  {
303
  * @param array[] $data A vendor/composer/installed.php data set
304
  * @return void
305
  *
306
+ * @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $data
307
  */
308
  public static function reload($data)
309
  {
313
 
314
  /**
315
  * @return array[]
316
+ * @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
317
  */
318
  private static function getInstalled()
319
  {
vendor/composer/autoload_classmap.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_classmap.php @generated by Composer
4
 
5
- $vendorDir = dirname(dirname(__FILE__));
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
2
 
3
  // autoload_classmap.php @generated by Composer
4
 
5
+ $vendorDir = dirname(__DIR__);
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
vendor/composer/autoload_files.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_files.php @generated by Composer
4
 
5
- $vendorDir = dirname(dirname(__FILE__));
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
2
 
3
  // autoload_files.php @generated by Composer
4
 
5
+ $vendorDir = dirname(__DIR__);
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
vendor/composer/autoload_namespaces.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_namespaces.php @generated by Composer
4
 
5
- $vendorDir = dirname(dirname(__FILE__));
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
2
 
3
  // autoload_namespaces.php @generated by Composer
4
 
5
+ $vendorDir = dirname(__DIR__);
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
vendor/composer/autoload_psr4.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_psr4.php @generated by Composer
4
 
5
- $vendorDir = dirname(dirname(__FILE__));
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
2
 
3
  // autoload_psr4.php @generated by Composer
4
 
5
+ $vendorDir = dirname(__DIR__);
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInit83c239f73953f902fd203ac8c88fa4b3
6
  {
7
  private static $loader;
8
 
@@ -24,52 +24,34 @@ class ComposerAutoloaderInit83c239f73953f902fd203ac8c88fa4b3
24
 
25
  require __DIR__ . '/platform_check.php';
26
 
27
- spl_autoload_register(array('ComposerAutoloaderInit83c239f73953f902fd203ac8c88fa4b3', 'loadClassLoader'), true, true);
28
- self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
29
- spl_autoload_unregister(array('ComposerAutoloaderInit83c239f73953f902fd203ac8c88fa4b3', 'loadClassLoader'));
30
 
31
- $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
32
- if ($useStaticLoader) {
33
- require __DIR__ . '/autoload_static.php';
34
-
35
- call_user_func(\Composer\Autoload\ComposerStaticInit83c239f73953f902fd203ac8c88fa4b3::getInitializer($loader));
36
- } else {
37
- $map = require __DIR__ . '/autoload_namespaces.php';
38
- foreach ($map as $namespace => $path) {
39
- $loader->set($namespace, $path);
40
- }
41
-
42
- $map = require __DIR__ . '/autoload_psr4.php';
43
- foreach ($map as $namespace => $path) {
44
- $loader->setPsr4($namespace, $path);
45
- }
46
-
47
- $classMap = require __DIR__ . '/autoload_classmap.php';
48
- if ($classMap) {
49
- $loader->addClassMap($classMap);
50
- }
51
- }
52
 
53
  $loader->register(true);
54
 
55
- if ($useStaticLoader) {
56
- $includeFiles = Composer\Autoload\ComposerStaticInit83c239f73953f902fd203ac8c88fa4b3::$files;
57
- } else {
58
- $includeFiles = require __DIR__ . '/autoload_files.php';
59
- }
60
  foreach ($includeFiles as $fileIdentifier => $file) {
61
- composerRequire83c239f73953f902fd203ac8c88fa4b3($fileIdentifier, $file);
62
  }
63
 
64
  return $loader;
65
  }
66
  }
67
 
68
- function composerRequire83c239f73953f902fd203ac8c88fa4b3($fileIdentifier, $file)
 
 
 
 
 
69
  {
70
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
71
- require $file;
72
-
73
  $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
 
 
74
  }
75
  }
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInitb15b0b66fa591157ab77757b7544be6d
6
  {
7
  private static $loader;
8
 
24
 
25
  require __DIR__ . '/platform_check.php';
26
 
27
+ spl_autoload_register(array('ComposerAutoloaderInitb15b0b66fa591157ab77757b7544be6d', 'loadClassLoader'), true, true);
28
+ self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
29
+ spl_autoload_unregister(array('ComposerAutoloaderInitb15b0b66fa591157ab77757b7544be6d', 'loadClassLoader'));
30
 
31
+ require __DIR__ . '/autoload_static.php';
32
+ call_user_func(\Composer\Autoload\ComposerStaticInitb15b0b66fa591157ab77757b7544be6d::getInitializer($loader));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
 
34
  $loader->register(true);
35
 
36
+ $includeFiles = \Composer\Autoload\ComposerStaticInitb15b0b66fa591157ab77757b7544be6d::$files;
 
 
 
 
37
  foreach ($includeFiles as $fileIdentifier => $file) {
38
+ composerRequireb15b0b66fa591157ab77757b7544be6d($fileIdentifier, $file);
39
  }
40
 
41
  return $loader;
42
  }
43
  }
44
 
45
+ /**
46
+ * @param string $fileIdentifier
47
+ * @param string $file
48
+ * @return void
49
+ */
50
+ function composerRequireb15b0b66fa591157ab77757b7544be6d($fileIdentifier, $file)
51
  {
52
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
 
 
53
  $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
54
+
55
+ require $file;
56
  }
57
  }
vendor/composer/autoload_static.php CHANGED
@@ -4,7 +4,7 @@
4
 
5
  namespace Composer\Autoload;
6
 
7
- class ComposerStaticInit83c239f73953f902fd203ac8c88fa4b3
8
  {
9
  public static $files = array (
10
  'fda73876e8be17735f680f484cec1679' => __DIR__ . '/../..' . '/src/Functions/custom-settings-api.php',
@@ -298,9 +298,9 @@ class ComposerStaticInit83c239f73953f902fd203ac8c88fa4b3
298
  public static function getInitializer(ClassLoader $loader)
299
  {
300
  return \Closure::bind(function () use ($loader) {
301
- $loader->prefixLengthsPsr4 = ComposerStaticInit83c239f73953f902fd203ac8c88fa4b3::$prefixLengthsPsr4;
302
- $loader->prefixDirsPsr4 = ComposerStaticInit83c239f73953f902fd203ac8c88fa4b3::$prefixDirsPsr4;
303
- $loader->classMap = ComposerStaticInit83c239f73953f902fd203ac8c88fa4b3::$classMap;
304
 
305
  }, null, ClassLoader::class);
306
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInitb15b0b66fa591157ab77757b7544be6d
8
  {
9
  public static $files = array (
10
  'fda73876e8be17735f680f484cec1679' => __DIR__ . '/../..' . '/src/Functions/custom-settings-api.php',
298
  public static function getInitializer(ClassLoader $loader)
299
  {
300
  return \Closure::bind(function () use ($loader) {
301
+ $loader->prefixLengthsPsr4 = ComposerStaticInitb15b0b66fa591157ab77757b7544be6d::$prefixLengthsPsr4;
302
+ $loader->prefixDirsPsr4 = ComposerStaticInitb15b0b66fa591157ab77757b7544be6d::$prefixDirsPsr4;
303
+ $loader->classMap = ComposerStaticInitb15b0b66fa591157ab77757b7544be6d::$classMap;
304
 
305
  }, null, ClassLoader::class);
306
  }
vendor/composer/installed.php CHANGED
@@ -1,60 +1,60 @@
1
  <?php return array(
2
  'root' => array(
3
- 'pretty_version' => 'dev-master',
4
- 'version' => 'dev-master',
 
 
5
  'type' => 'library',
6
  'install_path' => __DIR__ . '/../../',
7
  'aliases' => array(),
8
- 'reference' => '879e973e849b8179cdd93e766cf066e96ad5abba',
9
- 'name' => '__root__',
10
  'dev' => false,
11
  ),
12
  'versions' => array(
13
  '__root__' => array(
14
- 'pretty_version' => 'dev-master',
15
- 'version' => 'dev-master',
 
16
  'type' => 'library',
17
  'install_path' => __DIR__ . '/../../',
18
  'aliases' => array(),
19
- 'reference' => '879e973e849b8179cdd93e766cf066e96ad5abba',
20
  'dev_requirement' => false,
21
  ),
22
  'barryvdh/composer-cleanup-plugin' => array(
23
  'pretty_version' => 'dev-master',
24
  'version' => 'dev-master',
 
25
  'type' => 'composer-plugin',
26
  'install_path' => __DIR__ . '/../barryvdh/composer-cleanup-plugin',
27
  'aliases' => array(
28
  0 => '0.1.x-dev',
29
  ),
30
- 'reference' => '74d878666436c99f5b671b90312e85479afeedb0',
31
  'dev_requirement' => false,
32
  ),
33
  'collizo4sky/persist-admin-notices-dismissal' => array(
34
  'pretty_version' => '1.4.4',
35
  'version' => '1.4.4.0',
 
36
  'type' => 'library',
37
  'install_path' => __DIR__ . '/../collizo4sky/persist-admin-notices-dismissal',
38
  'aliases' => array(),
39
- 'reference' => '900739eb6b0ec0210465f5983a6d4e0e420289e4',
40
  'dev_requirement' => false,
41
  ),
42
  'pelago/emogrifier' => array(
43
  'pretty_version' => 'v3.1.0',
44
  'version' => '3.1.0.0',
 
45
  'type' => 'library',
46
  'install_path' => __DIR__ . '/../pelago/emogrifier',
47
  'aliases' => array(),
48
- 'reference' => 'f6a5c7d44612d86c3901c93f1592f5440e6b2cd8',
49
  'dev_requirement' => false,
50
  ),
51
  'symfony/css-selector' => array(
52
  'pretty_version' => 'v3.4.47',
53
  'version' => '3.4.47.0',
 
54
  'type' => 'library',
55
  'install_path' => __DIR__ . '/../symfony/css-selector',
56
  'aliases' => array(),
57
- 'reference' => 'da3d9da2ce0026771f5fe64cb332158f1bd2bc33',
58
  'dev_requirement' => false,
59
  ),
60
  ),
1
  <?php return array(
2
  'root' => array(
3
+ 'name' => '__root__',
4
+ 'pretty_version' => '3.x-dev',
5
+ 'version' => '3.9999999.9999999.9999999-dev',
6
+ 'reference' => 'bc0e8fa5bfc967379c0e40a1247ff3b2db8c1e81',
7
  'type' => 'library',
8
  'install_path' => __DIR__ . '/../../',
9
  'aliases' => array(),
 
 
10
  'dev' => false,
11
  ),
12
  'versions' => array(
13
  '__root__' => array(
14
+ 'pretty_version' => '3.x-dev',
15
+ 'version' => '3.9999999.9999999.9999999-dev',
16
+ 'reference' => 'bc0e8fa5bfc967379c0e40a1247ff3b2db8c1e81',
17
  'type' => 'library',
18
  'install_path' => __DIR__ . '/../../',
19
  'aliases' => array(),
 
20
  'dev_requirement' => false,
21
  ),
22
  'barryvdh/composer-cleanup-plugin' => array(
23
  'pretty_version' => 'dev-master',
24
  'version' => 'dev-master',
25
+ 'reference' => '74d878666436c99f5b671b90312e85479afeedb0',
26
  'type' => 'composer-plugin',
27
  'install_path' => __DIR__ . '/../barryvdh/composer-cleanup-plugin',
28
  'aliases' => array(
29
  0 => '0.1.x-dev',
30
  ),
 
31
  'dev_requirement' => false,
32
  ),
33
  'collizo4sky/persist-admin-notices-dismissal' => array(
34
  'pretty_version' => '1.4.4',
35
  'version' => '1.4.4.0',
36
+ 'reference' => '900739eb6b0ec0210465f5983a6d4e0e420289e4',
37
  'type' => 'library',
38
  'install_path' => __DIR__ . '/../collizo4sky/persist-admin-notices-dismissal',
39
  'aliases' => array(),
 
40
  'dev_requirement' => false,
41
  ),
42
  'pelago/emogrifier' => array(
43
  'pretty_version' => 'v3.1.0',
44
  'version' => '3.1.0.0',
45
+ 'reference' => 'f6a5c7d44612d86c3901c93f1592f5440e6b2cd8',
46
  'type' => 'library',
47
  'install_path' => __DIR__ . '/../pelago/emogrifier',
48
  'aliases' => array(),
 
49
  'dev_requirement' => false,
50
  ),
51
  'symfony/css-selector' => array(
52
  'pretty_version' => 'v3.4.47',
53
  'version' => '3.4.47.0',
54
+ 'reference' => 'da3d9da2ce0026771f5fe64cb332158f1bd2bc33',
55
  'type' => 'library',
56
  'install_path' => __DIR__ . '/../symfony/css-selector',
57
  'aliases' => array(),
 
58
  'dev_requirement' => false,
59
  ),
60
  ),
wp-user-avatar.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: ProfilePress
4
  * Plugin URI: https://profilepress.com
5
  * Description: The modern WordPress membership and user profile plugin.
6
- * Version: 3.2.15
7
  * Author: ProfilePress Team
8
  * Author URI: https://profilepress.com
9
  * Text Domain: wp-user-avatar
@@ -14,7 +14,7 @@
14
  defined('ABSPATH') or die("No script kiddies please!");
15
 
16
  define('PROFILEPRESS_SYSTEM_FILE_PATH', __FILE__);
17
- define('PPRESS_VERSION_NUMBER', '3.2.15');
18
 
19
  require __DIR__ . '/vendor/autoload.php';
20
 
3
  * Plugin Name: ProfilePress
4
  * Plugin URI: https://profilepress.com
5
  * Description: The modern WordPress membership and user profile plugin.
6
+ * Version: 3.2.16
7
  * Author: ProfilePress Team
8
  * Author URI: https://profilepress.com
9
  * Text Domain: wp-user-avatar
14
  defined('ABSPATH') or die("No script kiddies please!");
15
 
16
  define('PROFILEPRESS_SYSTEM_FILE_PATH', __FILE__);
17
+ define('PPRESS_VERSION_NUMBER', '3.2.16');
18
 
19
  require __DIR__ . '/vendor/autoload.php';
20