WP User Avatar - Version 3.1.9

Version Description

  • Fixed issue where bulk delete wasn't working in some cases.
  • Scoped wp_list actions to manage_options capability.
  • Fixed typos in admin setting and My Account pages.
  • Improved sanitization and escaping of data.
  • Added file upload field support to profile-cpf shortcode.
  • Added missing bio support to profile-hide-empty-data shortcode.
  • Fixed bug where profileslug + slash in a post slug redirected to homepage.
  • Fixed bug where custom processing labels wasnt working for password reset forms.
Download this release

Release Info

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

Code changes from version 3.1.8 to 3.1.9

Files changed (44) hide show
  1. assets/js/admin.js +0 -2
  2. changelog.txt +11 -1
  3. deprecated/wp-user-avatar/includes/class-wp-user-avatar-admin.php +1 -2
  4. languages/wp-user-avatar.pot +68 -72
  5. readme.txt +11 -1
  6. src/Admin/SettingsPages/DragDropBuilder/Controls/IconPicker.php +2 -2
  7. src/Admin/SettingsPages/DragDropBuilder/Controls/Input.php +5 -5
  8. src/Admin/SettingsPages/DragDropBuilder/Controls/Select.php +8 -8
  9. src/Admin/SettingsPages/DragDropBuilder/Controls/Textarea.php +6 -6
  10. src/Admin/SettingsPages/DragDropBuilder/Controls/WPEditor.php +4 -4
  11. src/Admin/SettingsPages/DragDropBuilder/DragDropBuilder.php +10 -10
  12. src/Admin/SettingsPages/DragDropBuilder/FieldBase.php +1 -1
  13. src/Admin/SettingsPages/DragDropBuilder/Metabox.php +12 -11
  14. src/Admin/SettingsPages/EmailSettings/WPListTable.php +3 -3
  15. src/Admin/SettingsPages/ExtensionsSettingsPage.php +6 -6
  16. src/Admin/SettingsPages/FormList.php +20 -21
  17. src/Admin/SettingsPages/Forms.php +2 -2
  18. src/Admin/SettingsPages/MemberDirectories.php +5 -4
  19. src/Admin/SettingsPages/MembersDirectoryList.php +1 -1
  20. src/AdminBarDashboardAccess/include.settings-page.php +4 -4
  21. src/Classes/AdminNotices.php +2 -2
  22. src/Classes/AjaxHandler.php +7 -5
  23. src/Classes/BuddyPressBbPress.php +2 -2
  24. src/Classes/FormPreviewHandler.php +1 -1
  25. src/Classes/LoginAuth.php +1 -1
  26. src/Classes/ModifyRedirectDefaultLinks.php +13 -13
  27. src/Classes/PasswordReset.php +3 -3
  28. src/ContentProtection/Frontend/Redirect.php +1 -1
  29. src/ContentProtection/WPListTable.php +7 -3
  30. src/Functions/custom-settings-api.php +2 -2
  31. src/ShortcodeParser/Builder/FieldsShortcodeCallback.php +0 -1
  32. src/ShortcodeParser/Builder/FrontendProfileBuilder.php +11 -3
  33. src/ShortcodeParser/Builder/GlobalShortcodes.php +7 -4
  34. src/ShortcodeParser/Builder/PasswordResetBuilder.php +14 -12
  35. src/ShortcodeParser/FrontendProfileTag.php +2 -4
  36. src/ShortcodeParser/MyAccount/dashboard.tmpl.php +1 -1
  37. src/ShortcodeParser/PasswordResetTag.php +10 -12
  38. src/Themes/DragDrop/AbstractMemberDirectoryTheme.php +3 -3
  39. vendor/autoload.php +1 -1
  40. vendor/composer/InstalledVersions.php +2 -2
  41. vendor/composer/autoload_real.php +7 -7
  42. vendor/composer/autoload_static.php +4 -4
  43. vendor/composer/installed.php +2 -2
  44. wp-user-avatar.php +2 -2
assets/js/admin.js CHANGED
@@ -1,7 +1,5 @@
1
  (function ($) {
2
 
3
- /** @todo add nonce to all ajax requests */
4
-
5
  var sb = {
6
  ajax_flag: false,
7
  ajax_queue: []
1
  (function ($) {
2
 
 
 
3
  var sb = {
4
  ajax_flag: false,
5
  ajax_queue: []
changelog.txt CHANGED
@@ -1,4 +1,14 @@
1
- = 3.1.8 =
 
 
 
 
 
 
 
 
 
 
2
  * Fixed issue with global site access not correctly working.
3
  * Added success color to registration form notice.
4
  * Fixed bug admin bar control wasn't working.
1
+ = 3.1.9 =
2
+ * Fixed issue where bulk delete wasn't working in some cases.
3
+ * Scoped wp_list actions to manage_options capability.
4
+ * Fixed typos in admin setting and My Account pages.
5
+ * Improved sanitization and escaping of data.
6
+ * Added file upload field support to profile-cpf shortcode.
7
+ * Added missing bio support to profile-hide-empty-data shortcode.
8
+ * Fixed bug where profile-slug + slash in a post slug redirected to homepage.
9
+ * Fixed bug where custom processing labels wasn’t working for password reset forms.
10
+
11
+ = 3.1.8 =
12
  * Fixed issue with global site access not correctly working.
13
  * Added success color to registration form notice.
14
  * Fixed bug admin bar control wasn't working.
deprecated/wp-user-avatar/includes/class-wp-user-avatar-admin.php CHANGED
@@ -105,8 +105,7 @@ class WP_User_Avatar_Admin extends AbstractSettingsPage
105
  $content .= '</p>';
106
 
107
  $content .= '<p>';
108
- /** @todo add doc link here */
109
- $content .= '<strong><a href="#" target="_blank">' . esc_html__('Learn more', 'wp-user-avatar') . '</a></strong>';
110
  $content .= '</p>';
111
 
112
  return $content;
105
  $content .= '</p>';
106
 
107
  $content .= '<p>';
108
+ $content .= '<strong><a href="https://profilepress.net/article/avatar-shortcode/?utm_source=wp_dashboard&utm_medium=ppress-settings-page&utm_campaign=profile-cover-photo" target="_blank">' . esc_html__('Learn more', 'wp-user-avatar') . '</a></strong>';
 
109
  $content .= '</p>';
110
 
111
  return $content;
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.1.8\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wp-user-avatar\n"
7
- "POT-Creation-Date: 2021-06-23 12:57:31+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -36,11 +36,11 @@ msgid ""
36
  "in users."
37
  msgstr ""
38
 
39
- #: deprecated/wp-user-avatar/includes/class-wp-user-avatar-admin.php:109
40
  msgid "Learn more"
41
  msgstr ""
42
 
43
- #: deprecated/wp-user-avatar/includes/class-wp-user-avatar-admin.php:132
44
  #: deprecated/wp-user-avatar/includes/wpua-functions.php:65
45
  #: deprecated/wp-user-avatar/includes/wpua-functions.php:73
46
  #: deprecated/wp-user-avatar/includes/wpua-functions.php:78
@@ -50,54 +50,54 @@ msgstr ""
50
  msgid "Profile Picture"
51
  msgstr ""
52
 
53
- #: deprecated/wp-user-avatar/includes/class-wp-user-avatar-admin.php:212
54
  msgid "Mystery Man"
55
  msgstr ""
56
 
57
- #: deprecated/wp-user-avatar/includes/class-wp-user-avatar-admin.php:213
58
  msgid "Blank"
59
  msgstr ""
60
 
61
- #: deprecated/wp-user-avatar/includes/class-wp-user-avatar-admin.php:214
62
  msgid "Gravatar Logo"
63
  msgstr ""
64
 
65
- #: deprecated/wp-user-avatar/includes/class-wp-user-avatar-admin.php:215
66
  msgid "Identicon (Generated)"
67
  msgstr ""
68
 
69
- #: deprecated/wp-user-avatar/includes/class-wp-user-avatar-admin.php:216
70
  msgid "Wavatar (Generated)"
71
  msgstr ""
72
 
73
- #: deprecated/wp-user-avatar/includes/class-wp-user-avatar-admin.php:217
74
  msgid "MonsterID (Generated)"
75
  msgstr ""
76
 
77
- #: deprecated/wp-user-avatar/includes/class-wp-user-avatar-admin.php:218
78
  msgid "Retro (Generated)"
79
  msgstr ""
80
 
 
81
  #: deprecated/wp-user-avatar/includes/class-wp-user-avatar-admin.php:252
82
- #: deprecated/wp-user-avatar/includes/class-wp-user-avatar-admin.php:253
83
  #: deprecated/wp-user-avatar/includes/wpua-options-page.php:119
84
  #: deprecated/wp-user-avatar/includes/wpua-options-page.php:123
85
  msgid "Default Profile Picture"
86
  msgstr ""
87
 
88
- #: deprecated/wp-user-avatar/includes/class-wp-user-avatar-admin.php:253
89
  #: deprecated/wp-user-avatar/includes/class-wp-user-avatar.php:142
90
  msgid "Choose Image"
91
  msgstr ""
92
 
93
- #: deprecated/wp-user-avatar/includes/class-wp-user-avatar-admin.php:254
94
  #: src/Admin/SettingsPages/EmailSettings/DefaultTemplateCustomizer.php:283
95
  #: src/ShortcodeParser/MyAccount/edit-profile.tmpl.php:98
96
  #: src/ShortcodeParser/MyAccount/edit-profile.tmpl.php:117
97
  msgid "Remove"
98
  msgstr ""
99
 
100
- #: deprecated/wp-user-avatar/includes/class-wp-user-avatar-admin.php:254
101
  #: deprecated/wp-user-avatar/includes/class-wp-user-avatar.php:168
102
  msgid "Undo"
103
  msgstr ""
@@ -491,7 +491,7 @@ msgid ""
491
  "shortcodes."
492
  msgstr ""
493
 
494
- #: src/Admin/SettingsPages/AddNewForm.php:66 src/Classes/AjaxHandler.php:115
495
  msgid "Build Now"
496
  msgstr ""
497
 
@@ -566,6 +566,7 @@ msgstr ""
566
  #: src/Admin/SettingsPages/EmailSettings/CustomizerTrait.php:11
567
  #: src/AdminBarDashboardAccess/include.settings-page.php:54
568
  #: src/AdminBarDashboardAccess/include.settings-page.php:109
 
569
  #: src/ShortcodeParser/Builder/FieldsShortcodeCallback.php:1018
570
  msgid "Save Changes"
571
  msgstr ""
@@ -1727,8 +1728,8 @@ msgstr ""
1727
  #: src/Admin/SettingsPages/Forms.php:99
1728
  #: src/Admin/SettingsPages/GeneralSettings.php:133
1729
  #: src/Admin/SettingsPages/GeneralSettings.php:248
1730
- #: src/Classes/AjaxHandler.php:53 src/NavigationMenuLinks/Backend.php:34
1731
- #: src/ShortcodeParser/Builder/GlobalShortcodes.php:235
1732
  #: src/Themes/DragDrop/AbstractBuildScratch.php:180
1733
  #: src/Widgets/TabbedWidget.php:108
1734
  msgid "Login"
@@ -1736,27 +1737,27 @@ msgstr ""
1736
 
1737
  #: src/Admin/SettingsPages/Forms.php:104
1738
  #: src/Admin/SettingsPages/GeneralSettings.php:119
1739
- #: src/Classes/AjaxHandler.php:58
1740
  msgid "Registration"
1741
  msgstr ""
1742
 
1743
  #: src/Admin/SettingsPages/Forms.php:110
1744
  #: src/Admin/SettingsPages/GeneralSettings.php:265
1745
- #: src/Classes/AjaxHandler.php:63
1746
  msgid "Password Reset"
1747
  msgstr ""
1748
 
1749
- #: src/Admin/SettingsPages/Forms.php:115 src/Classes/AjaxHandler.php:68
1750
  #: src/NavigationMenuLinks/Backend.php:32
1751
- #: src/ShortcodeParser/Builder/GlobalShortcodes.php:301
1752
  msgid "Edit Profile"
1753
  msgstr ""
1754
 
1755
- #: src/Admin/SettingsPages/Forms.php:122 src/Classes/AjaxHandler.php:74
1756
  msgid "Melange"
1757
  msgstr ""
1758
 
1759
- #: src/Admin/SettingsPages/Forms.php:130 src/Classes/AjaxHandler.php:81
1760
  msgid "User Profile"
1761
  msgstr ""
1762
 
@@ -1770,7 +1771,7 @@ msgid "Live Preview"
1770
  msgstr ""
1771
 
1772
  #: src/Admin/SettingsPages/Forms.php:285
1773
- #: src/Admin/SettingsPages/MemberDirectories.php:200
1774
  msgid "Add New"
1775
  msgstr ""
1776
 
@@ -2505,55 +2506,55 @@ msgid ""
2505
  "\""
2506
  msgstr ""
2507
 
2508
- #: src/Classes/AjaxHandler.php:44
2509
  msgid ""
2510
  "Melange is a way to combine login, registration & password reset forms in a "
2511
  "single form."
2512
  msgstr ""
2513
 
2514
- #: src/Classes/AjaxHandler.php:48
2515
  msgid "Select Form Type"
2516
  msgstr ""
2517
 
2518
- #: src/Classes/AjaxHandler.php:49
2519
  msgid "Loading..."
2520
  msgstr ""
2521
 
2522
- #: src/Classes/AjaxHandler.php:100
2523
  msgid "Create from Scratch"
2524
  msgstr ""
2525
 
2526
- #: src/Classes/AjaxHandler.php:106
2527
  msgid "Do it Yourself"
2528
  msgstr ""
2529
 
2530
- #: src/Classes/AjaxHandler.php:109
2531
  msgid "Get Started Creating Your Own Form"
2532
  msgstr ""
2533
 
2534
- #: src/Classes/AjaxHandler.php:150
2535
  msgid "Select this template"
2536
  msgstr ""
2537
 
2538
- #: src/Classes/AjaxHandler.php:151
2539
  #: src/ContentProtection/ContentConditions.php:274
2540
  msgid "Select Template"
2541
  msgstr ""
2542
 
2543
- #: src/Classes/AjaxHandler.php:160
2544
  msgid "Enter a Name"
2545
  msgstr ""
2546
 
2547
- #: src/Classes/AjaxHandler.php:216 src/Classes/AjaxHandler.php:239
2548
  #: src/Classes/PasswordReset.php:359
2549
  msgid "Unexpected error. Please try again."
2550
  msgstr ""
2551
 
2552
- #: src/Classes/AjaxHandler.php:248
2553
  msgid "Form with similar name exist already."
2554
  msgstr ""
2555
 
2556
- #: src/Classes/AjaxHandler.php:525
2557
  msgid "Security validation failed. Try again"
2558
  msgstr ""
2559
 
@@ -3056,7 +3057,6 @@ msgid "Add Protection Rule"
3056
  msgstr ""
3057
 
3058
  #: src/ContentProtection/SettingsPage.php:61
3059
- #: src/ContentProtection/WPListTable.php:14
3060
  msgid "Protection Rules"
3061
  msgstr ""
3062
 
@@ -3073,10 +3073,6 @@ msgstr ""
3073
  msgid "Add a Protection Rule"
3074
  msgstr ""
3075
 
3076
- #: src/ContentProtection/WPListTable.php:13
3077
- msgid "Protection Rule"
3078
- msgstr ""
3079
-
3080
  #: src/ContentProtection/WPListTable.php:21
3081
  msgid "No protection rule found."
3082
  msgstr ""
@@ -4253,14 +4249,14 @@ msgstr ""
4253
 
4254
  #: src/NavigationMenuLinks/Backend.php:30
4255
  #: src/NavigationMenuLinks/Backend.php:34
4256
- #: src/ShortcodeParser/Builder/GlobalShortcodes.php:269
4257
  #: src/Widgets/UserPanel.php:30 src/Widgets/UserPanel.php:71
4258
  msgid "Log Out"
4259
  msgstr ""
4260
 
4261
  #: src/NavigationMenuLinks/Backend.php:31 src/RegisterActivation/Base.php:159
4262
  #: src/ShortcodeParser/Builder/FieldsShortcodeCallback.php:1015
4263
- #: src/ShortcodeParser/Builder/GlobalShortcodes.php:172
4264
  #: src/Widgets/TabbedWidget.php:90
4265
  msgid "Sign Up"
4266
  msgstr ""
@@ -4313,7 +4309,7 @@ msgid "Lucid Tab Widget"
4313
  msgstr ""
4314
 
4315
  #: src/RegisterActivation/Base.php:163
4316
- #: src/ShortcodeParser/Builder/GlobalShortcodes.php:204
4317
  #: src/Themes/DragDrop/AbstractTheme.php:117
4318
  msgid "Reset Password"
4319
  msgstr ""
@@ -4336,40 +4332,40 @@ msgstr ""
4336
 
4337
  #: src/ShortcodeParser/Builder/EditProfileBuilder.php:82
4338
  #: src/ShortcodeParser/Builder/EditProfileBuilder.php:95
4339
- #: src/ShortcodeParser/Builder/PasswordResetBuilder.php:213
4340
- #: src/ShortcodeParser/Builder/PasswordResetBuilder.php:225
4341
  #: src/ShortcodeParser/Builder/RegistrationFormBuilder.php:137
4342
  #: src/ShortcodeParser/Builder/RegistrationFormBuilder.php:150
4343
  msgid "Strength indicator"
4344
  msgstr ""
4345
 
4346
  #: src/ShortcodeParser/Builder/EditProfileBuilder.php:83
4347
- #: src/ShortcodeParser/Builder/PasswordResetBuilder.php:214
4348
  #: src/ShortcodeParser/Builder/RegistrationFormBuilder.php:138
4349
  msgid "Very weak"
4350
  msgstr ""
4351
 
4352
  #: src/ShortcodeParser/Builder/EditProfileBuilder.php:84
4353
- #: src/ShortcodeParser/Builder/PasswordResetBuilder.php:215
4354
  #: src/ShortcodeParser/Builder/RegistrationFormBuilder.php:139
4355
  msgid "Weak"
4356
  msgstr ""
4357
 
4358
  #: src/ShortcodeParser/Builder/EditProfileBuilder.php:85
4359
- #: src/ShortcodeParser/Builder/PasswordResetBuilder.php:216
4360
  #: src/ShortcodeParser/Builder/RegistrationFormBuilder.php:140
4361
  msgctxt "password strength"
4362
  msgid "Medium"
4363
  msgstr ""
4364
 
4365
  #: src/ShortcodeParser/Builder/EditProfileBuilder.php:86
4366
- #: src/ShortcodeParser/Builder/PasswordResetBuilder.php:217
4367
  #: src/ShortcodeParser/Builder/RegistrationFormBuilder.php:141
4368
  msgid "Strong"
4369
  msgstr ""
4370
 
4371
  #: src/ShortcodeParser/Builder/EditProfileBuilder.php:87
4372
- #: src/ShortcodeParser/Builder/PasswordResetBuilder.php:218
4373
  #: src/ShortcodeParser/Builder/RegistrationFormBuilder.php:142
4374
  msgid "Mismatch"
4375
  msgstr ""
@@ -4418,7 +4414,7 @@ msgstr ""
4418
  #: src/ShortcodeParser/Builder/FieldsShortcodeCallback.php:814
4419
  #: src/ShortcodeParser/Builder/FieldsShortcodeCallback.php:873
4420
  #: src/ShortcodeParser/Builder/FieldsShortcodeCallback.php:922
4421
- #: src/ShortcodeParser/Builder/FrontendProfileBuilder.php:350
4422
  msgid "Field key is missing"
4423
  msgstr ""
4424
 
@@ -4442,36 +4438,36 @@ msgstr ""
4442
  msgid "custom field not defined"
4443
  msgstr ""
4444
 
4445
- #: src/ShortcodeParser/Builder/FieldsShortcodeCallback.php:1085
4446
  msgid "Delete Avatar"
4447
  msgstr ""
4448
 
4449
- #: src/ShortcodeParser/Builder/FieldsShortcodeCallback.php:1121
4450
  msgid "Delete Cover Image"
4451
  msgstr ""
4452
 
4453
- #: src/ShortcodeParser/Builder/FrontendProfileBuilder.php:113
4454
  msgid "This user has not created any post."
4455
  msgstr ""
4456
 
4457
- #: src/ShortcodeParser/Builder/FrontendProfileBuilder.php:116
4458
  msgid "You have not created any post."
4459
  msgstr ""
4460
 
4461
- #: src/ShortcodeParser/Builder/FrontendProfileBuilder.php:174
4462
  msgid "This user has not made any comment."
4463
  msgstr ""
4464
 
4465
- #: src/ShortcodeParser/Builder/FrontendProfileBuilder.php:177
4466
  msgid "You have not made any comment."
4467
  msgstr ""
4468
 
4469
- #: src/ShortcodeParser/Builder/FrontendProfileBuilder.php:656
4470
  msgid "No post written yet."
4471
  msgstr ""
4472
 
4473
- #: src/ShortcodeParser/Builder/PasswordResetBuilder.php:103
4474
- #: src/ShortcodeParser/Builder/PasswordResetBuilder.php:335
4475
  #: src/Widgets/TabbedWidget.php:91
4476
  msgid "Get New Password"
4477
  msgstr ""
@@ -4492,23 +4488,23 @@ msgstr ""
4492
  msgid "Authentication failed. Please try again"
4493
  msgstr ""
4494
 
4495
- #: src/ShortcodeParser/FrontendProfileTag.php:87
4496
  msgid ""
4497
  "This content is available to members only. Please <a href=\"%1$s\">login</a> "
4498
  "or <a href=\"%2$s\">register</a> to view this area."
4499
  msgstr ""
4500
 
4501
- #: src/ShortcodeParser/FrontendProfileTag.php:94
4502
  msgid "You are not authorized to access this area."
4503
  msgstr ""
4504
 
4505
- #: src/ShortcodeParser/FrontendProfileTag.php:132
4506
  msgid ""
4507
  "Form class not found. Please check if this user profile actually exist in "
4508
  "ProfilePress."
4509
  msgstr ""
4510
 
4511
- #: src/ShortcodeParser/FrontendProfileTag.php:197
4512
  #: src/Themes/DragDrop/UserProfile/Dixon.php:121
4513
  msgid "Profile"
4514
  msgstr ""
@@ -4582,8 +4578,8 @@ msgstr ""
4582
 
4583
  #: src/ShortcodeParser/MyAccount/dashboard.tmpl.php:26
4584
  msgid ""
4585
- "From your account dashboard you can view your <a href=\"%1$s\">change your "
4586
- "password</a> and <a href=\"%2$s\">edit your account details</a>."
4587
  msgstr ""
4588
 
4589
  #: src/ShortcodeParser/MyAccount/edit-profile.tmpl.php:32
@@ -4611,11 +4607,11 @@ msgstr ""
4611
  msgid "Enter your new password below"
4612
  msgstr ""
4613
 
4614
- #: src/ShortcodeParser/PasswordResetTag.php:105
4615
  msgid "Re-enter new password"
4616
  msgstr ""
4617
 
4618
- #: src/ShortcodeParser/PasswordResetTag.php:109
4619
  msgid "Save"
4620
  msgstr ""
4621
 
@@ -5419,9 +5415,9 @@ msgstr ""
5419
  msgid "ProfilePress"
5420
  msgstr ""
5421
 
5422
- #. #-#-#-#-# wp-user-avatar.pot (ProfilePress 3.1.8) #-#-#-#-#
5423
  #. Plugin URI of the plugin/theme
5424
- #. #-#-#-#-# wp-user-avatar.pot (ProfilePress 3.1.8) #-#-#-#-#
5425
  #. Author URI of the plugin/theme
5426
  msgid "https://profilepress.net"
5427
  msgstr ""
2
  # This file is distributed under the same license as the ProfilePress package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: ProfilePress 3.1.9\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wp-user-avatar\n"
7
+ "POT-Creation-Date: 2021-07-04 11:58:20+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
36
  "in users."
37
  msgstr ""
38
 
39
+ #: deprecated/wp-user-avatar/includes/class-wp-user-avatar-admin.php:108
40
  msgid "Learn more"
41
  msgstr ""
42
 
43
+ #: deprecated/wp-user-avatar/includes/class-wp-user-avatar-admin.php:131
44
  #: deprecated/wp-user-avatar/includes/wpua-functions.php:65
45
  #: deprecated/wp-user-avatar/includes/wpua-functions.php:73
46
  #: deprecated/wp-user-avatar/includes/wpua-functions.php:78
50
  msgid "Profile Picture"
51
  msgstr ""
52
 
53
+ #: deprecated/wp-user-avatar/includes/class-wp-user-avatar-admin.php:211
54
  msgid "Mystery Man"
55
  msgstr ""
56
 
57
+ #: deprecated/wp-user-avatar/includes/class-wp-user-avatar-admin.php:212
58
  msgid "Blank"
59
  msgstr ""
60
 
61
+ #: deprecated/wp-user-avatar/includes/class-wp-user-avatar-admin.php:213
62
  msgid "Gravatar Logo"
63
  msgstr ""
64
 
65
+ #: deprecated/wp-user-avatar/includes/class-wp-user-avatar-admin.php:214
66
  msgid "Identicon (Generated)"
67
  msgstr ""
68
 
69
+ #: deprecated/wp-user-avatar/includes/class-wp-user-avatar-admin.php:215
70
  msgid "Wavatar (Generated)"
71
  msgstr ""
72
 
73
+ #: deprecated/wp-user-avatar/includes/class-wp-user-avatar-admin.php:216
74
  msgid "MonsterID (Generated)"
75
  msgstr ""
76
 
77
+ #: deprecated/wp-user-avatar/includes/class-wp-user-avatar-admin.php:217
78
  msgid "Retro (Generated)"
79
  msgstr ""
80
 
81
+ #: deprecated/wp-user-avatar/includes/class-wp-user-avatar-admin.php:251
82
  #: deprecated/wp-user-avatar/includes/class-wp-user-avatar-admin.php:252
 
83
  #: deprecated/wp-user-avatar/includes/wpua-options-page.php:119
84
  #: deprecated/wp-user-avatar/includes/wpua-options-page.php:123
85
  msgid "Default Profile Picture"
86
  msgstr ""
87
 
88
+ #: deprecated/wp-user-avatar/includes/class-wp-user-avatar-admin.php:252
89
  #: deprecated/wp-user-avatar/includes/class-wp-user-avatar.php:142
90
  msgid "Choose Image"
91
  msgstr ""
92
 
93
+ #: deprecated/wp-user-avatar/includes/class-wp-user-avatar-admin.php:253
94
  #: src/Admin/SettingsPages/EmailSettings/DefaultTemplateCustomizer.php:283
95
  #: src/ShortcodeParser/MyAccount/edit-profile.tmpl.php:98
96
  #: src/ShortcodeParser/MyAccount/edit-profile.tmpl.php:117
97
  msgid "Remove"
98
  msgstr ""
99
 
100
+ #: deprecated/wp-user-avatar/includes/class-wp-user-avatar-admin.php:253
101
  #: deprecated/wp-user-avatar/includes/class-wp-user-avatar.php:168
102
  msgid "Undo"
103
  msgstr ""
491
  "shortcodes."
492
  msgstr ""
493
 
494
+ #: src/Admin/SettingsPages/AddNewForm.php:66 src/Classes/AjaxHandler.php:116
495
  msgid "Build Now"
496
  msgstr ""
497
 
566
  #: src/Admin/SettingsPages/EmailSettings/CustomizerTrait.php:11
567
  #: src/AdminBarDashboardAccess/include.settings-page.php:54
568
  #: src/AdminBarDashboardAccess/include.settings-page.php:109
569
+ #: src/Functions/custom-settings-api.php:1077
570
  #: src/ShortcodeParser/Builder/FieldsShortcodeCallback.php:1018
571
  msgid "Save Changes"
572
  msgstr ""
1728
  #: src/Admin/SettingsPages/Forms.php:99
1729
  #: src/Admin/SettingsPages/GeneralSettings.php:133
1730
  #: src/Admin/SettingsPages/GeneralSettings.php:248
1731
+ #: src/Classes/AjaxHandler.php:54 src/NavigationMenuLinks/Backend.php:34
1732
+ #: src/ShortcodeParser/Builder/GlobalShortcodes.php:237
1733
  #: src/Themes/DragDrop/AbstractBuildScratch.php:180
1734
  #: src/Widgets/TabbedWidget.php:108
1735
  msgid "Login"
1737
 
1738
  #: src/Admin/SettingsPages/Forms.php:104
1739
  #: src/Admin/SettingsPages/GeneralSettings.php:119
1740
+ #: src/Classes/AjaxHandler.php:59
1741
  msgid "Registration"
1742
  msgstr ""
1743
 
1744
  #: src/Admin/SettingsPages/Forms.php:110
1745
  #: src/Admin/SettingsPages/GeneralSettings.php:265
1746
+ #: src/Classes/AjaxHandler.php:64
1747
  msgid "Password Reset"
1748
  msgstr ""
1749
 
1750
+ #: src/Admin/SettingsPages/Forms.php:115 src/Classes/AjaxHandler.php:69
1751
  #: src/NavigationMenuLinks/Backend.php:32
1752
+ #: src/ShortcodeParser/Builder/GlobalShortcodes.php:302
1753
  msgid "Edit Profile"
1754
  msgstr ""
1755
 
1756
+ #: src/Admin/SettingsPages/Forms.php:122 src/Classes/AjaxHandler.php:75
1757
  msgid "Melange"
1758
  msgstr ""
1759
 
1760
+ #: src/Admin/SettingsPages/Forms.php:130 src/Classes/AjaxHandler.php:82
1761
  msgid "User Profile"
1762
  msgstr ""
1763
 
1771
  msgstr ""
1772
 
1773
  #: src/Admin/SettingsPages/Forms.php:285
1774
+ #: src/Admin/SettingsPages/MemberDirectories.php:201
1775
  msgid "Add New"
1776
  msgstr ""
1777
 
2506
  "\""
2507
  msgstr ""
2508
 
2509
+ #: src/Classes/AjaxHandler.php:45
2510
  msgid ""
2511
  "Melange is a way to combine login, registration & password reset forms in a "
2512
  "single form."
2513
  msgstr ""
2514
 
2515
+ #: src/Classes/AjaxHandler.php:49
2516
  msgid "Select Form Type"
2517
  msgstr ""
2518
 
2519
+ #: src/Classes/AjaxHandler.php:50
2520
  msgid "Loading..."
2521
  msgstr ""
2522
 
2523
+ #: src/Classes/AjaxHandler.php:101
2524
  msgid "Create from Scratch"
2525
  msgstr ""
2526
 
2527
+ #: src/Classes/AjaxHandler.php:107
2528
  msgid "Do it Yourself"
2529
  msgstr ""
2530
 
2531
+ #: src/Classes/AjaxHandler.php:110
2532
  msgid "Get Started Creating Your Own Form"
2533
  msgstr ""
2534
 
2535
+ #: src/Classes/AjaxHandler.php:151
2536
  msgid "Select this template"
2537
  msgstr ""
2538
 
2539
+ #: src/Classes/AjaxHandler.php:152
2540
  #: src/ContentProtection/ContentConditions.php:274
2541
  msgid "Select Template"
2542
  msgstr ""
2543
 
2544
+ #: src/Classes/AjaxHandler.php:161
2545
  msgid "Enter a Name"
2546
  msgstr ""
2547
 
2548
+ #: src/Classes/AjaxHandler.php:217 src/Classes/AjaxHandler.php:240
2549
  #: src/Classes/PasswordReset.php:359
2550
  msgid "Unexpected error. Please try again."
2551
  msgstr ""
2552
 
2553
+ #: src/Classes/AjaxHandler.php:249
2554
  msgid "Form with similar name exist already."
2555
  msgstr ""
2556
 
2557
+ #: src/Classes/AjaxHandler.php:527
2558
  msgid "Security validation failed. Try again"
2559
  msgstr ""
2560
 
3057
  msgstr ""
3058
 
3059
  #: src/ContentProtection/SettingsPage.php:61
 
3060
  msgid "Protection Rules"
3061
  msgstr ""
3062
 
3073
  msgid "Add a Protection Rule"
3074
  msgstr ""
3075
 
 
 
 
 
3076
  #: src/ContentProtection/WPListTable.php:21
3077
  msgid "No protection rule found."
3078
  msgstr ""
4249
 
4250
  #: src/NavigationMenuLinks/Backend.php:30
4251
  #: src/NavigationMenuLinks/Backend.php:34
4252
+ #: src/ShortcodeParser/Builder/GlobalShortcodes.php:271
4253
  #: src/Widgets/UserPanel.php:30 src/Widgets/UserPanel.php:71
4254
  msgid "Log Out"
4255
  msgstr ""
4256
 
4257
  #: src/NavigationMenuLinks/Backend.php:31 src/RegisterActivation/Base.php:159
4258
  #: src/ShortcodeParser/Builder/FieldsShortcodeCallback.php:1015
4259
+ #: src/ShortcodeParser/Builder/GlobalShortcodes.php:174
4260
  #: src/Widgets/TabbedWidget.php:90
4261
  msgid "Sign Up"
4262
  msgstr ""
4309
  msgstr ""
4310
 
4311
  #: src/RegisterActivation/Base.php:163
4312
+ #: src/ShortcodeParser/Builder/GlobalShortcodes.php:206
4313
  #: src/Themes/DragDrop/AbstractTheme.php:117
4314
  msgid "Reset Password"
4315
  msgstr ""
4332
 
4333
  #: src/ShortcodeParser/Builder/EditProfileBuilder.php:82
4334
  #: src/ShortcodeParser/Builder/EditProfileBuilder.php:95
4335
+ #: src/ShortcodeParser/Builder/PasswordResetBuilder.php:214
4336
+ #: src/ShortcodeParser/Builder/PasswordResetBuilder.php:226
4337
  #: src/ShortcodeParser/Builder/RegistrationFormBuilder.php:137
4338
  #: src/ShortcodeParser/Builder/RegistrationFormBuilder.php:150
4339
  msgid "Strength indicator"
4340
  msgstr ""
4341
 
4342
  #: src/ShortcodeParser/Builder/EditProfileBuilder.php:83
4343
+ #: src/ShortcodeParser/Builder/PasswordResetBuilder.php:215
4344
  #: src/ShortcodeParser/Builder/RegistrationFormBuilder.php:138
4345
  msgid "Very weak"
4346
  msgstr ""
4347
 
4348
  #: src/ShortcodeParser/Builder/EditProfileBuilder.php:84
4349
+ #: src/ShortcodeParser/Builder/PasswordResetBuilder.php:216
4350
  #: src/ShortcodeParser/Builder/RegistrationFormBuilder.php:139
4351
  msgid "Weak"
4352
  msgstr ""
4353
 
4354
  #: src/ShortcodeParser/Builder/EditProfileBuilder.php:85
4355
+ #: src/ShortcodeParser/Builder/PasswordResetBuilder.php:217
4356
  #: src/ShortcodeParser/Builder/RegistrationFormBuilder.php:140
4357
  msgctxt "password strength"
4358
  msgid "Medium"
4359
  msgstr ""
4360
 
4361
  #: src/ShortcodeParser/Builder/EditProfileBuilder.php:86
4362
+ #: src/ShortcodeParser/Builder/PasswordResetBuilder.php:218
4363
  #: src/ShortcodeParser/Builder/RegistrationFormBuilder.php:141
4364
  msgid "Strong"
4365
  msgstr ""
4366
 
4367
  #: src/ShortcodeParser/Builder/EditProfileBuilder.php:87
4368
+ #: src/ShortcodeParser/Builder/PasswordResetBuilder.php:219
4369
  #: src/ShortcodeParser/Builder/RegistrationFormBuilder.php:142
4370
  msgid "Mismatch"
4371
  msgstr ""
4414
  #: src/ShortcodeParser/Builder/FieldsShortcodeCallback.php:814
4415
  #: src/ShortcodeParser/Builder/FieldsShortcodeCallback.php:873
4416
  #: src/ShortcodeParser/Builder/FieldsShortcodeCallback.php:922
4417
+ #: src/ShortcodeParser/Builder/FrontendProfileBuilder.php:349
4418
  msgid "Field key is missing"
4419
  msgstr ""
4420
 
4438
  msgid "custom field not defined"
4439
  msgstr ""
4440
 
4441
+ #: src/ShortcodeParser/Builder/FieldsShortcodeCallback.php:1084
4442
  msgid "Delete Avatar"
4443
  msgstr ""
4444
 
4445
+ #: src/ShortcodeParser/Builder/FieldsShortcodeCallback.php:1120
4446
  msgid "Delete Cover Image"
4447
  msgstr ""
4448
 
4449
+ #: src/ShortcodeParser/Builder/FrontendProfileBuilder.php:112
4450
  msgid "This user has not created any post."
4451
  msgstr ""
4452
 
4453
+ #: src/ShortcodeParser/Builder/FrontendProfileBuilder.php:115
4454
  msgid "You have not created any post."
4455
  msgstr ""
4456
 
4457
+ #: src/ShortcodeParser/Builder/FrontendProfileBuilder.php:173
4458
  msgid "This user has not made any comment."
4459
  msgstr ""
4460
 
4461
+ #: src/ShortcodeParser/Builder/FrontendProfileBuilder.php:176
4462
  msgid "You have not made any comment."
4463
  msgstr ""
4464
 
4465
+ #: src/ShortcodeParser/Builder/FrontendProfileBuilder.php:664
4466
  msgid "No post written yet."
4467
  msgstr ""
4468
 
4469
+ #: src/ShortcodeParser/Builder/PasswordResetBuilder.php:104
4470
+ #: src/ShortcodeParser/Builder/PasswordResetBuilder.php:337
4471
  #: src/Widgets/TabbedWidget.php:91
4472
  msgid "Get New Password"
4473
  msgstr ""
4488
  msgid "Authentication failed. Please try again"
4489
  msgstr ""
4490
 
4491
+ #: src/ShortcodeParser/FrontendProfileTag.php:86
4492
  msgid ""
4493
  "This content is available to members only. Please <a href=\"%1$s\">login</a> "
4494
  "or <a href=\"%2$s\">register</a> to view this area."
4495
  msgstr ""
4496
 
4497
+ #: src/ShortcodeParser/FrontendProfileTag.php:93
4498
  msgid "You are not authorized to access this area."
4499
  msgstr ""
4500
 
4501
+ #: src/ShortcodeParser/FrontendProfileTag.php:131
4502
  msgid ""
4503
  "Form class not found. Please check if this user profile actually exist in "
4504
  "ProfilePress."
4505
  msgstr ""
4506
 
4507
+ #: src/ShortcodeParser/FrontendProfileTag.php:196
4508
  #: src/Themes/DragDrop/UserProfile/Dixon.php:121
4509
  msgid "Profile"
4510
  msgstr ""
4578
 
4579
  #: src/ShortcodeParser/MyAccount/dashboard.tmpl.php:26
4580
  msgid ""
4581
+ "From your account dashboard you can <a href=\"%1$s\">change your password</"
4582
+ "a> and <a href=\"%2$s\">edit your account details</a>."
4583
  msgstr ""
4584
 
4585
  #: src/ShortcodeParser/MyAccount/edit-profile.tmpl.php:32
4607
  msgid "Enter your new password below"
4608
  msgstr ""
4609
 
4610
+ #: src/ShortcodeParser/PasswordResetTag.php:104
4611
  msgid "Re-enter new password"
4612
  msgstr ""
4613
 
4614
+ #: src/ShortcodeParser/PasswordResetTag.php:107
4615
  msgid "Save"
4616
  msgstr ""
4617
 
5415
  msgid "ProfilePress"
5416
  msgstr ""
5417
 
5418
+ #. #-#-#-#-# wp-user-avatar.pot (ProfilePress 3.1.9) #-#-#-#-#
5419
  #. Plugin URI of the plugin/theme
5420
+ #. #-#-#-#-# wp-user-avatar.pot (ProfilePress 3.1.9) #-#-#-#-#
5421
  #. Author URI of the plugin/theme
5422
  msgid "https://profilepress.net"
5423
  msgstr ""
readme.txt CHANGED
@@ -5,7 +5,7 @@ Tags: user registration, user profile, registration form, membership, login form
5
  Requires at least: 4.7
6
  Requires PHP: 5.6
7
  Tested up to: 5.7
8
- Stable tag: 3.1.8
9
  License: GPLv2 or later
10
 
11
  Modern membership plugin for user registration, login form, user profile, member directories & content restriction.
@@ -117,6 +117,16 @@ No. You can create and manage your forms, user profiles and member directories w
117
 
118
  == Changelog ==
119
 
 
 
 
 
 
 
 
 
 
 
120
  = 3.1.8 =
121
  * Fixed issue with global site access not correctly working.
122
  * Added success color to registration form notice.
5
  Requires at least: 4.7
6
  Requires PHP: 5.6
7
  Tested up to: 5.7
8
+ Stable tag: 3.1.9
9
  License: GPLv2 or later
10
 
11
  Modern membership plugin for user registration, login form, user profile, member directories & content restriction.
117
 
118
  == Changelog ==
119
 
120
+ = 3.1.9 =
121
+ * Fixed issue where bulk delete wasn't working in some cases.
122
+ * Scoped wp_list actions to manage_options capability.
123
+ * Fixed typos in admin setting and My Account pages.
124
+ * Improved sanitization and escaping of data.
125
+ * Added file upload field support to profile-cpf shortcode.
126
+ * Added missing bio support to profile-hide-empty-data shortcode.
127
+ * Fixed bug where profileslug + slash in a post slug redirected to homepage.
128
+ * Fixed bug where custom processing labels wasn’t working for password reset forms.
129
+
130
  = 3.1.8 =
131
  * Fixed issue with global site access not correctly working.
132
  * Added success color to registration form notice.
src/Admin/SettingsPages/DragDropBuilder/Controls/IconPicker.php CHANGED
@@ -11,7 +11,7 @@ class IconPicker
11
  {
12
  $this->args = wp_parse_args(
13
  $args,
14
- ['value' => sprintf('{{data.%s}}', $args['name'])]
15
  );
16
  }
17
 
@@ -28,7 +28,7 @@ class IconPicker
28
  printf(
29
  '<input style="display: none" class="pp-form-control" type="hidden" id="%1$s" name="%1$s" value="%2$s">',
30
  $this->args['name'],
31
- @$this->args['value']
32
  );
33
 
34
  echo '<div class="pp-form-control pp-form-control-icon-picker">';
11
  {
12
  $this->args = wp_parse_args(
13
  $args,
14
+ ['value' => sprintf('{{data.%s}}', esc_attr($args['name']))]
15
  );
16
  }
17
 
28
  printf(
29
  '<input style="display: none" class="pp-form-control" type="hidden" id="%1$s" name="%1$s" value="%2$s">',
30
  $this->args['name'],
31
+ ppress_var($this->args, 'value', '')
32
  );
33
 
34
  echo '<div class="pp-form-control pp-form-control-icon-picker">';
src/Admin/SettingsPages/DragDropBuilder/Controls/Input.php CHANGED
@@ -11,7 +11,7 @@ class Input
11
  {
12
  $this->args = wp_parse_args(
13
  $args,
14
- ['type' => 'text', 'name' => '', 'value' => sprintf('{{{data.%s}}}', $args['name'])]
15
  );
16
  }
17
 
@@ -27,10 +27,10 @@ class Input
27
 
28
  printf(
29
  '<input class="pp-form-control" type="%1$s" placeholder="%2$s" id="%3$s" name="%3$s" value="%4$s" %5$s>',
30
- $this->args['type'],
31
- @$this->args['placeholder'],
32
- $this->args['name'],
33
- @$this->args['value'],
34
  $this->args['type'] == 'checkbox' ? sprintf('<# if(data.%s === true) { #> checked <# } #>', $this->args['name']) : ''
35
  );
36
 
11
  {
12
  $this->args = wp_parse_args(
13
  $args,
14
+ ['type' => 'text', 'name' => '', 'value' => sprintf('{{{data.%s}}}', esc_attr($args['name']))]
15
  );
16
  }
17
 
27
 
28
  printf(
29
  '<input class="pp-form-control" type="%1$s" placeholder="%2$s" id="%3$s" name="%3$s" value="%4$s" %5$s>',
30
+ esc_attr($this->args['type']),
31
+ esc_attr(ppress_var($this->args,'placeholder', '')),
32
+ esc_attr($this->args['name']),
33
+ $this->args['value'],
34
  $this->args['type'] == 'checkbox' ? sprintf('<# if(data.%s === true) { #> checked <# } #>', $this->args['name']) : ''
35
  );
36
 
src/Admin/SettingsPages/DragDropBuilder/Controls/Select.php CHANGED
@@ -17,33 +17,33 @@ class Select
17
 
18
  public function render()
19
  {
20
- echo sprintf('<label for="%s" class="pp-label">%s</label>', $this->args['name'], $this->args['label']);
21
 
22
- echo sprintf('<select class="pp-form-control" id="%1$s" name="%1$s">', $this->args['name']);
23
 
24
  foreach ($this->args['options'] as $key => $value) {
25
 
26
  $selected = sprintf(
27
  "<# if(data.%s == '%s') { #> selected <# } #>",
28
- $this->args['name'],
29
- $key
30
  );
31
 
32
  if (is_array($value)) {
33
- echo "<optgroup label='$key'>";
34
  foreach ($value as $key2 => $value2) {
35
- echo sprintf('<option value="%s" %s>%s</option>', $key2, $selected, $value2);
36
  }
37
  echo '</optgroup>';
38
  } else {
39
- echo sprintf('<option value="%s" %s>%s</option>', $key, $selected, $value);
40
  }
41
  }
42
 
43
  echo '</select>';
44
 
45
  if (isset($this->args['description'])) {
46
- printf('<div class="pp-form-control-description">%s</div>', $this->args['description']);
47
  }
48
  }
49
  }
17
 
18
  public function render()
19
  {
20
+ echo sprintf('<label for="%s" class="pp-label">%s</label>', esc_attr($this->args['name']), esc_attr($this->args['label']));
21
 
22
+ echo sprintf('<select class="pp-form-control" id="%1$s" name="%1$s">', esc_attr($this->args['name']));
23
 
24
  foreach ($this->args['options'] as $key => $value) {
25
 
26
  $selected = sprintf(
27
  "<# if(data.%s == '%s') { #> selected <# } #>",
28
+ esc_attr($this->args['name']),
29
+ esc_attr($key)
30
  );
31
 
32
  if (is_array($value)) {
33
+ echo "<optgroup label='" . esc_attr($key) . "'>";
34
  foreach ($value as $key2 => $value2) {
35
+ echo sprintf('<option value="%s" %s>%s</option>', esc_attr($key2), $selected, esc_attr($value2));
36
  }
37
  echo '</optgroup>';
38
  } else {
39
+ echo sprintf('<option value="%s" %s>%s</option>', esc_attr($key), $selected, esc_attr($value));
40
  }
41
  }
42
 
43
  echo '</select>';
44
 
45
  if (isset($this->args['description'])) {
46
+ printf('<div class="pp-form-control-description">%s</div>', esc_attr($this->args['description']));
47
  }
48
  }
49
  }
src/Admin/SettingsPages/DragDropBuilder/Controls/Textarea.php CHANGED
@@ -11,23 +11,23 @@ class Textarea
11
  {
12
  $this->args = wp_parse_args(
13
  $args,
14
- ['name' => '', 'value' => sprintf('{{{data.%s}}}', $args['name'])]
15
  );
16
  }
17
 
18
  public function render()
19
  {
20
- echo sprintf('<label for="%s" class="pp-label">%s</label>', $this->args['name'], $this->args['label']);
21
 
22
  if (isset($this->args['description'])) {
23
- printf('<div class="pp-form-control-description">%s</div>', $this->args['description']);
24
  }
25
 
26
  echo sprintf(
27
  '<textarea placeholder="%3$s" id="%1$s" name="%1$s" class="pp-form-control">%2$s</textarea>',
28
- $this->args['name'],
29
- @$this->args['value'],
30
- @$this->args['placeholder']
31
  );
32
  }
33
  }
11
  {
12
  $this->args = wp_parse_args(
13
  $args,
14
+ ['name' => '', 'value' => sprintf('{{{data.%s}}}', esc_attr($args['name']))]
15
  );
16
  }
17
 
18
  public function render()
19
  {
20
+ echo sprintf('<label for="%s" class="pp-label">%s</label>', esc_attr($this->args['name']), esc_attr($this->args['label']));
21
 
22
  if (isset($this->args['description'])) {
23
+ printf('<div class="pp-form-control-description">%s</div>', esc_attr($this->args['description']));
24
  }
25
 
26
  echo sprintf(
27
  '<textarea placeholder="%3$s" id="%1$s" name="%1$s" class="pp-form-control">%2$s</textarea>',
28
+ esc_attr($this->args['name']),
29
+ $this->args['value'],
30
+ esc_attr(ppress_var($this->args, 'placeholder'))
31
  );
32
  }
33
  }
src/Admin/SettingsPages/DragDropBuilder/Controls/WPEditor.php CHANGED
@@ -11,7 +11,7 @@ class WPEditor
11
  {
12
  $this->args = wp_parse_args(
13
  $args,
14
- ['name' => '', 'value' => sprintf('{{{data.%s}}}', $args['name'])]
15
  );
16
  }
17
 
@@ -26,9 +26,9 @@ class WPEditor
26
  echo sprintf(
27
  // 100%% double 1% cos we are escaping %
28
  '<textarea style="height: 300px;padding: 10px;width: 100%%" placeholder="%3$s" id="%1$s" name="%1$s" class="pp-form-control pp-form-control-wpeditor">%2$s</textarea>',
29
- $this->args['name'],
30
- @$this->args['value'],
31
- @$this->args['placeholder']
32
  );
33
  }
34
  }
11
  {
12
  $this->args = wp_parse_args(
13
  $args,
14
+ ['name' => '', 'value' => sprintf('{{{data.%s}}}', esc_attr($args['name']))]
15
  );
16
  }
17
 
26
  echo sprintf(
27
  // 100%% double 1% cos we are escaping %
28
  '<textarea style="height: 300px;padding: 10px;width: 100%%" placeholder="%3$s" id="%1$s" name="%1$s" class="pp-form-control pp-form-control-wpeditor">%2$s</textarea>',
29
+ esc_attr($this->args['name']),
30
+ $this->args['value'],
31
+ esc_attr(ppress_var($this->args, 'placeholder'))
32
  );
33
  }
34
  }
src/Admin/SettingsPages/DragDropBuilder/DragDropBuilder.php CHANGED
@@ -80,10 +80,10 @@ class DragDropBuilder
80
 
81
  $fields[$key] = [
82
  'definedFieldKey' => $field_key,
83
- 'definedFieldType' => $definedFieldType,
84
  'fieldTitle' => ppress_decode_html_strip_tags($label),
85
- 'label' => $label,
86
- 'placeholder' => $label,
87
  'fieldIcon' => '<span class="dashicons dashicons-portfolio"></span>',
88
  ];
89
  }
@@ -123,11 +123,11 @@ class DragDropBuilder
123
 
124
  $fields[$key] = [
125
  'definedFieldKey' => $field_key,
126
- 'definedFieldType' => $definedFieldType,
127
  'fieldTitle' => ppress_decode_html_strip_tags($title) . ($woocommerce_field !== false ? (sprintf(' (WC%s)', 'billing' == $woocommerce_field ? 'BA' : 'SA')) : ''),
128
  'fieldBarTitle' => ppress_decode_html_strip_tags($title),
129
- 'label' => $title,
130
- 'placeholder' => $title,
131
  'fieldIcon' => '<span class="dashicons dashicons-portfolio"></span>',
132
  ];
133
  }
@@ -1249,12 +1249,12 @@ class DragDropBuilder
1249
  {
1250
  settings_errors('pp_drag_drop_builder_notice');
1251
  $title = FR::get_name($this->form_id, $this->form_type);
1252
- $shortcode = sprintf('&lsqb;profilepress-%s id=&quot;%s&quot;&rsqb;', $this->form_type, $this->form_id);
1253
  ?>
1254
  <div id="titlediv">
1255
  <div id="titlewrap">
1256
  <label class="screen-reader-text" id="title-prompt-text" for="title"><?php _e('Enter title here', 'wp-user-avatar'); ?></label>
1257
- <input type="text" name="pp_form_title" size="30" value="<?= $title ?>" id="title">
1258
  <a class="pp-form-save-changes button button-primary button-large" style="margin: 2px 0 0 10px;text-align: center;" href="#"><?php _e('Save Changes', 'wp-user-avatar'); ?></a>
1259
  </div>
1260
  <div class="inside">
@@ -1263,7 +1263,7 @@ class DragDropBuilder
1263
  <?php esc_html_e('Copy this shortcode and paste it into your post, page, or text widget content:', 'wp-user-avatar') ?>
1264
  </label>
1265
  <span class="shortcode wp-ui-highlight">
1266
- <input type="text" id="ppress-shortcode" onfocus="this.select();" readonly="readonly" class="large-text code" value="<?= $shortcode ?>">
1267
  </span>
1268
  </p>
1269
  </div>
@@ -1284,7 +1284,7 @@ class DragDropBuilder
1284
  <a class="pp-form-save-changes button button-primary button-large" style="margin: 0 10px 0 0;vertical-align: middle;" href="#">
1285
  <?php _e('Save Changes', 'wp-user-avatar'); ?>
1286
  </a>
1287
- <a href="<?php echo FormList::delete_url($this->form_id, $this->form_type) ?>" class="pp-form-delete button-link button-link-delete">
1288
  <?php _e('Delete Form', 'wp-user-avatar'); ?>
1289
  </a>
1290
  </div>
80
 
81
  $fields[$key] = [
82
  'definedFieldKey' => $field_key,
83
+ 'definedFieldType' => esc_attr($definedFieldType),
84
  'fieldTitle' => ppress_decode_html_strip_tags($label),
85
+ 'label' => esc_attr($label),
86
+ 'placeholder' => esc_attr($label),
87
  'fieldIcon' => '<span class="dashicons dashicons-portfolio"></span>',
88
  ];
89
  }
123
 
124
  $fields[$key] = [
125
  'definedFieldKey' => $field_key,
126
+ 'definedFieldType' => esc_attr($definedFieldType),
127
  'fieldTitle' => ppress_decode_html_strip_tags($title) . ($woocommerce_field !== false ? (sprintf(' (WC%s)', 'billing' == $woocommerce_field ? 'BA' : 'SA')) : ''),
128
  'fieldBarTitle' => ppress_decode_html_strip_tags($title),
129
+ 'label' => esc_attr($title),
130
+ 'placeholder' => esc_attr($title),
131
  'fieldIcon' => '<span class="dashicons dashicons-portfolio"></span>',
132
  ];
133
  }
1249
  {
1250
  settings_errors('pp_drag_drop_builder_notice');
1251
  $title = FR::get_name($this->form_id, $this->form_type);
1252
+ $shortcode = sprintf('[profilepress-%s id="%s"]', $this->form_type, $this->form_id);
1253
  ?>
1254
  <div id="titlediv">
1255
  <div id="titlewrap">
1256
  <label class="screen-reader-text" id="title-prompt-text" for="title"><?php _e('Enter title here', 'wp-user-avatar'); ?></label>
1257
+ <input type="text" name="pp_form_title" size="30" value="<?= esc_attr($title) ?>" id="title">
1258
  <a class="pp-form-save-changes button button-primary button-large" style="margin: 2px 0 0 10px;text-align: center;" href="#"><?php _e('Save Changes', 'wp-user-avatar'); ?></a>
1259
  </div>
1260
  <div class="inside">
1263
  <?php esc_html_e('Copy this shortcode and paste it into your post, page, or text widget content:', 'wp-user-avatar') ?>
1264
  </label>
1265
  <span class="shortcode wp-ui-highlight">
1266
+ <input type="text" id="ppress-shortcode" onfocus="this.select();" readonly="readonly" class="large-text code" value="<?= esc_attr($shortcode) ?>">
1267
  </span>
1268
  </p>
1269
  </div>
1284
  <a class="pp-form-save-changes button button-primary button-large" style="margin: 0 10px 0 0;vertical-align: middle;" href="#">
1285
  <?php _e('Save Changes', 'wp-user-avatar'); ?>
1286
  </a>
1287
+ <a href="<?= esc_url(FormList::delete_url($this->form_id, $this->form_type)) ?>" class="pp-form-delete button-link button-link-delete">
1288
  <?php _e('Delete Form', 'wp-user-avatar'); ?>
1289
  </a>
1290
  </div>
src/Admin/SettingsPages/DragDropBuilder/FieldBase.php CHANGED
@@ -122,7 +122,7 @@ abstract class FieldBase implements FieldInterface
122
  <?php foreach ($tabs as $tab_id => $tab_title) {
123
  if ( ! empty($field_settings[$tab_id])) {
124
  ?>
125
- <a href="#<?= $tab_id ?>" class="pp-form-buider-settings-popup-tab-menu"><?= $tab_title ?></a>
126
  <?php
127
  }
128
  }
122
  <?php foreach ($tabs as $tab_id => $tab_title) {
123
  if ( ! empty($field_settings[$tab_id])) {
124
  ?>
125
+ <a href="#<?= $tab_id ?>" class="pp-form-buider-settings-popup-tab-menu"><?= esc_html($tab_title) ?></a>
126
  <?php
127
  }
128
  }
src/Admin/SettingsPages/DragDropBuilder/Metabox.php CHANGED
@@ -65,7 +65,7 @@ class Metabox
65
  $placeholder = isset($options['placeholder']) ? $options['placeholder'] : '';
66
  printf(
67
  '<input type="text" class="short" name="%1$s" id="%1$s" value="%3$s" placeholder="%2$s">',
68
- esc_attr($name), esc_attr($placeholder), $this->saved_values_bucket($name)
69
  );
70
  }
71
 
@@ -74,7 +74,7 @@ class Metabox
74
  $placeholder = isset($options['placeholder']) ? $options['placeholder'] : '';
75
  printf(
76
  '<input type="number" class="short" name="%1$s" id="%1$s" value="%3$s" placeholder="%2$s">',
77
- esc_attr($name), esc_attr($placeholder), $this->saved_values_bucket($name)
78
  );
79
  }
80
 
@@ -84,7 +84,7 @@ class Metabox
84
 
85
  printf(
86
  '<input type="text" class="short pp-color-field" name="%1$s" id="%1$s" value="%3$s" placeholder="%2$s" data-default-color="%4$s">',
87
- esc_attr($name), esc_attr($placeholder), $this->saved_values_bucket($name), $this->default_values()[$name]
88
  );
89
  }
90
 
@@ -94,7 +94,7 @@ class Metabox
94
  echo '<div class="pp_upload_field_container">';
95
  printf(
96
  '<input type="text" class="pp_upload_field short large-text" name="%1$s" id="%1$s" value="%3$s" placeholder="%2$s">',
97
- esc_attr($name), esc_attr($placeholder), $this->saved_values_bucket($name)
98
  );
99
  printf('<span class="pp_upload_file"><a href="#" class="pp_upload_button">%s</a></span>', esc_html__('Upload Image', 'wp-user-avatar'));
100
  echo '</div>';
@@ -105,7 +105,7 @@ class Metabox
105
  $placeholder = isset($options['placeholder']) ? $options['placeholder'] : '';
106
  printf(
107
  '<textarea class="short" name="%1$s" id="%1$s" placeholder="%2$s">%3$s</textarea>',
108
- esc_attr($name), esc_attr($placeholder), $this->saved_values_bucket($name)
109
  );
110
  }
111
 
@@ -146,7 +146,7 @@ class Metabox
146
 
147
  public function custom($name, $options)
148
  {
149
- echo isset($options['content']) ? $options['content'] : '';
150
  }
151
 
152
  private function select2_selected($id, $name)
@@ -274,12 +274,13 @@ class Metabox
274
  ?>
275
  <div class="postbox-container" id="settings">
276
  <div id="pp-form-builder-metabox" class="postbox">
277
- <div class="postbox-header"><h2 class="hndle is-non-sortable"><span><?= $metabox_title ?></span></h2>
 
278
  </div>
279
  <div class="inside">
280
  <div class="panel-wrap pp-form-builder-mb-data">
281
  <ul class="pp-form-builder-mb-data_tabs pp-tabs">
282
- <?php foreach ($tabs as $key => $value) : ?>
283
  <?php if (empty($tab_settings[$key])) continue; ?>
284
  <li class="<?= $key ?>_options <?= $key ?>_tab">
285
  <a href="#<?= $key ?>_data"><span><?= $value ?></span></a>
@@ -288,15 +289,15 @@ class Metabox
288
  </ul>
289
 
290
  <?php foreach ($tab_settings as $key => $fields) {
291
- echo '<div id="' . $key . '_data" class="panel pp-form-builder_options_panel hidden">';
292
 
293
  foreach ($fields as $options) {
294
  $field_id = $options['id'];
295
 
296
  echo sprintf('<div class="form-field %s_wrap">', $field_id);
297
- echo "<label for=\"$field_id\">" . $options['label'] . '</label>';
298
  if ( ! empty($options['description'])) {
299
- printf('<span class="pp-form-builder-help-tip" title="%s"></span>', $options['description']);
300
  }
301
  echo '<div class="pp-field-row-content">';
302
  $this->{$options['type']}($field_id, $options);
65
  $placeholder = isset($options['placeholder']) ? $options['placeholder'] : '';
66
  printf(
67
  '<input type="text" class="short" name="%1$s" id="%1$s" value="%3$s" placeholder="%2$s">',
68
+ esc_attr($name), esc_attr($placeholder), esc_attr($this->saved_values_bucket($name))
69
  );
70
  }
71
 
74
  $placeholder = isset($options['placeholder']) ? $options['placeholder'] : '';
75
  printf(
76
  '<input type="number" class="short" name="%1$s" id="%1$s" value="%3$s" placeholder="%2$s">',
77
+ esc_attr($name), esc_attr($placeholder), esc_attr($this->saved_values_bucket($name))
78
  );
79
  }
80
 
84
 
85
  printf(
86
  '<input type="text" class="short pp-color-field" name="%1$s" id="%1$s" value="%3$s" placeholder="%2$s" data-default-color="%4$s">',
87
+ esc_attr($name), esc_attr($placeholder), esc_attr($this->saved_values_bucket($name)), esc_attr(ppress_var($this->default_values(), $name))
88
  );
89
  }
90
 
94
  echo '<div class="pp_upload_field_container">';
95
  printf(
96
  '<input type="text" class="pp_upload_field short large-text" name="%1$s" id="%1$s" value="%3$s" placeholder="%2$s">',
97
+ esc_attr($name), esc_attr($placeholder), esc_attr($this->saved_values_bucket($name))
98
  );
99
  printf('<span class="pp_upload_file"><a href="#" class="pp_upload_button">%s</a></span>', esc_html__('Upload Image', 'wp-user-avatar'));
100
  echo '</div>';
105
  $placeholder = isset($options['placeholder']) ? $options['placeholder'] : '';
106
  printf(
107
  '<textarea class="short" name="%1$s" id="%1$s" placeholder="%2$s">%3$s</textarea>',
108
+ esc_attr($name), esc_attr($placeholder), esc_textarea($this->saved_values_bucket($name))
109
  );
110
  }
111
 
146
 
147
  public function custom($name, $options)
148
  {
149
+ echo isset($options['content']) ? wp_kses_post($options['content']) : '';
150
  }
151
 
152
  private function select2_selected($id, $name)
274
  ?>
275
  <div class="postbox-container" id="settings">
276
  <div id="pp-form-builder-metabox" class="postbox">
277
+ <div class="postbox-header"><h2 class="hndle is-non-sortable">
278
+ <span><?= esc_html($metabox_title) ?></span></h2>
279
  </div>
280
  <div class="inside">
281
  <div class="panel-wrap pp-form-builder-mb-data">
282
  <ul class="pp-form-builder-mb-data_tabs pp-tabs">
283
+ <?php foreach ($tabs as $key => $value) : $key = esc_attr($key); ?>
284
  <?php if (empty($tab_settings[$key])) continue; ?>
285
  <li class="<?= $key ?>_options <?= $key ?>_tab">
286
  <a href="#<?= $key ?>_data"><span><?= $value ?></span></a>
289
  </ul>
290
 
291
  <?php foreach ($tab_settings as $key => $fields) {
292
+ echo '<div id="' . esc_attr($key) . '_data" class="panel pp-form-builder_options_panel hidden">';
293
 
294
  foreach ($fields as $options) {
295
  $field_id = $options['id'];
296
 
297
  echo sprintf('<div class="form-field %s_wrap">', $field_id);
298
+ echo "<label for=\"$field_id\">" . esc_html($options['label']) . '</label>';
299
  if ( ! empty($options['description'])) {
300
+ printf('<span class="pp-form-builder-help-tip" title="%s"></span>', esc_attr($options['description']));
301
  }
302
  echo '<div class="pp-field-row-content">';
303
  $this->{$options['type']}($field_id, $options);
src/Admin/SettingsPages/EmailSettings/WPListTable.php CHANGED
@@ -41,7 +41,7 @@ class WPListTable extends \WP_List_Table
41
 
42
  public function column_default($item, $column_name)
43
  {
44
- $url = esc_url_raw(add_query_arg('type', sanitize_text_field($item['key'])));
45
 
46
  if ($column_name == 'configure') {
47
  return '<a class="button pp-email-configure" href="' . $url . '"><span class="dashicons dashicons-admin-generic"></span></a>';
@@ -67,11 +67,11 @@ class WPListTable extends \WP_List_Table
67
  if ( ! empty($item['description'])) {
68
  $hint = sprintf(
69
  ' <span class="ppress-hint-tooltip hint--top hint--medium hint--bounce" aria-label="%s"><span class="dashicons dashicons-editor-help"></span></span>',
70
- $item['description']
71
  );
72
  }
73
 
74
- return sprintf('%s<strong><a href="%s">%s</a>%s</strong>', $flag, $url, $item['title'], $hint);
75
  }
76
 
77
  public function prepare_items()
41
 
42
  public function column_default($item, $column_name)
43
  {
44
+ $url = esc_url(add_query_arg('type', sanitize_text_field($item['key'])));
45
 
46
  if ($column_name == 'configure') {
47
  return '<a class="button pp-email-configure" href="' . $url . '"><span class="dashicons dashicons-admin-generic"></span></a>';
67
  if ( ! empty($item['description'])) {
68
  $hint = sprintf(
69
  ' <span class="ppress-hint-tooltip hint--top hint--medium hint--bounce" aria-label="%s"><span class="dashicons dashicons-editor-help"></span></span>',
70
+ esc_attr($item['description'])
71
  );
72
  }
73
 
74
+ return sprintf('%s<strong><a href="%s">%s</a>%s</strong>', $flag, $url, esc_html($item['title']), $hint);
75
  }
76
 
77
  public function prepare_items()
src/Admin/SettingsPages/ExtensionsSettingsPage.php CHANGED
@@ -117,13 +117,13 @@ class ExtensionsSettingsPage extends AbstractSettingsPage
117
  <div class="ppress-extension-card-body<?= EM::is_premium() && $extension_class::$instance_flag && (true !== $dependency_available) ? ' ppress-unavailable' : '' ?>">
118
  <div class="ppress-extension-card-header">
119
  <?= ppress_var($extension, 'icon', '') ?>
120
- <?= $extension['title'] ?>
121
  </div>
122
  <div class="ppress-extension-card-description">
123
- <div><?= $extension['description'] ?></div>
124
  <div class="ppress-extension-card-learn-more">
125
- <a href="<?= $extension['url'] ?>" target="_blank"><?= esc_html__('Learn More', 'wp-user-avatar') ?></a>
126
- <a href="<?= $extension['url'] ?>" target="_blank" class="no-underline"> →</a>
127
  </div>
128
  </div>
129
  </div>
@@ -150,8 +150,8 @@ class ExtensionsSettingsPage extends AbstractSettingsPage
150
 
151
  <?php else : ?>
152
  <div class="ppress-extensions-upgrade-cta">
153
- <a class="button-primary ppress-extensions-button" href="<?= $upgrade_url ?>" target="_blank">
154
- <?= $upgrade_label ?>
155
  </a>
156
  </div>
157
  <?php endif; ?>
117
  <div class="ppress-extension-card-body<?= EM::is_premium() && $extension_class::$instance_flag && (true !== $dependency_available) ? ' ppress-unavailable' : '' ?>">
118
  <div class="ppress-extension-card-header">
119
  <?= ppress_var($extension, 'icon', '') ?>
120
+ <?= esc_html($extension['title']) ?>
121
  </div>
122
  <div class="ppress-extension-card-description">
123
+ <div><?= esc_html($extension['description']) ?></div>
124
  <div class="ppress-extension-card-learn-more">
125
+ <a href="<?= esc_url($extension['url']) ?>" target="_blank"><?= esc_html__('Learn More', 'wp-user-avatar') ?></a>
126
+ <a href="<?= esc_url($extension['url']) ?>" target="_blank" class="no-underline"> →</a>
127
  </div>
128
  </div>
129
  </div>
150
 
151
  <?php else : ?>
152
  <div class="ppress-extensions-upgrade-cta">
153
+ <a class="button-primary ppress-extensions-button" href="<?= esc_url($upgrade_url) ?>" target="_blank">
154
+ <?= esc_html($upgrade_label) ?>
155
  </a>
156
  </div>
157
  <?php endif; ?>
src/Admin/SettingsPages/FormList.php CHANGED
@@ -120,8 +120,8 @@ class FormList extends \WP_List_Table
120
  sprintf(
121
  'admin.php?page=%s&view=edit-shortcode-%s&id=%d',
122
  $slug,
123
- $form_type,
124
- $form_id
125
  )
126
  );
127
 
@@ -131,42 +131,42 @@ class FormList extends \WP_List_Table
131
  sprintf(
132
  'admin.php?page=%s&view=drag-drop-builder&form-type=%s&id=%d',
133
  $slug,
134
- $form_type,
135
- $form_id
136
  )
137
  );
138
  }
139
 
140
- return $url;
141
  }
142
 
143
  public static function delete_url($form_id, $form_type)
144
  {
145
- return admin_url(
146
  sprintf(
147
  'admin.php?page=pp-forms&action=delete&form_type=%s&id=%d&_wpnonce=%s',
148
- $form_type,
149
- $form_id,
150
  ppress_create_nonce()
151
  )
152
- );
153
  }
154
 
155
  public static function clone_url($form_id, $form_type)
156
  {
157
- return admin_url(
158
  sprintf(
159
  'admin.php?page=pp-forms&action=clone&form_type=%s&id=%d&_wpnonce=%s',
160
- $form_type,
161
- $form_id,
162
  ppress_create_nonce()
163
  )
164
- );
165
  }
166
 
167
  public static function preview_url($form_id, $form_type)
168
  {
169
- return add_query_arg(['pp_preview_form' => $form_id, 'type' => $form_type], home_url());
170
  }
171
 
172
  /**
@@ -229,10 +229,10 @@ class FormList extends \WP_List_Table
229
  $form_id = absint($item['form_id']);
230
  $form_type = sanitize_text_field($item['form_type']);
231
  $builder_type = sanitize_text_field($item['builder_type']);
232
- $customize_url = self::customize_url($form_id, $form_type, $builder_type);
233
- $delete_url = self::delete_url($form_id, $form_type);
234
- $clone_url = self::clone_url($form_id, $form_type);
235
- $preview_url = self::preview_url($form_id, $form_type);
236
 
237
  $actions = array(
238
  'edit' => sprintf("<a href='%s'>%s</a>", $customize_url, esc_attr__('Edit', 'wp-user-avatar')),
@@ -399,11 +399,10 @@ class FormList extends \WP_List_Table
399
 
400
  // Detect when a bulk action is being triggered...
401
  if ('bulk-delete' == $this->current_action()) {
402
- check_admin_referer('bulk-forms');
403
- $form_ids = $_POST['form_id'];
404
 
405
  foreach ($form_ids as $form_id) {
406
- $form_id = absint($form_id);
407
  $form_type = ! empty($_GET['form-type']) ? sanitize_text_field($_GET['form-type']) : FR::LOGIN_TYPE;
408
  if (isset($_GET['page']) && $_GET['page'] == PPRESS_MEMBER_DIRECTORIES_SLUG) {
409
  $form_type = FR::MEMBERS_DIRECTORY_TYPE;
120
  sprintf(
121
  'admin.php?page=%s&view=edit-shortcode-%s&id=%d',
122
  $slug,
123
+ sanitize_text_field($form_type),
124
+ absint($form_id)
125
  )
126
  );
127
 
131
  sprintf(
132
  'admin.php?page=%s&view=drag-drop-builder&form-type=%s&id=%d',
133
  $slug,
134
+ sanitize_text_field($form_type),
135
+ absint($form_id)
136
  )
137
  );
138
  }
139
 
140
+ return esc_url($url);
141
  }
142
 
143
  public static function delete_url($form_id, $form_type)
144
  {
145
+ return esc_url(admin_url(
146
  sprintf(
147
  'admin.php?page=pp-forms&action=delete&form_type=%s&id=%d&_wpnonce=%s',
148
+ sanitize_text_field($form_type),
149
+ absint($form_id),
150
  ppress_create_nonce()
151
  )
152
+ ));
153
  }
154
 
155
  public static function clone_url($form_id, $form_type)
156
  {
157
+ return esc_url(admin_url(
158
  sprintf(
159
  'admin.php?page=pp-forms&action=clone&form_type=%s&id=%d&_wpnonce=%s',
160
+ sanitize_text_field($form_type),
161
+ absint($form_id),
162
  ppress_create_nonce()
163
  )
164
+ ));
165
  }
166
 
167
  public static function preview_url($form_id, $form_type)
168
  {
169
+ return esc_url(add_query_arg(['pp_preview_form' => $form_id, 'type' => $form_type], home_url()));
170
  }
171
 
172
  /**
229
  $form_id = absint($item['form_id']);
230
  $form_type = sanitize_text_field($item['form_type']);
231
  $builder_type = sanitize_text_field($item['builder_type']);
232
+ $customize_url = esc_url(self::customize_url($form_id, $form_type, $builder_type));
233
+ $delete_url = esc_url(self::delete_url($form_id, $form_type));
234
+ $clone_url = esc_url(self::clone_url($form_id, $form_type));
235
+ $preview_url = esc_url(self::preview_url($form_id, $form_type));
236
 
237
  $actions = array(
238
  'edit' => sprintf("<a href='%s'>%s</a>", $customize_url, esc_attr__('Edit', 'wp-user-avatar')),
399
 
400
  // Detect when a bulk action is being triggered...
401
  if ('bulk-delete' == $this->current_action()) {
402
+ check_admin_referer('bulk-' . $this->_args['plural']);
403
+ $form_ids = array_map('absint', $_POST['form_id']);
404
 
405
  foreach ($form_ids as $form_id) {
 
406
  $form_type = ! empty($_GET['form-type']) ? sanitize_text_field($_GET['form-type']) : FR::LOGIN_TYPE;
407
  if (isset($_GET['page']) && $_GET['page'] == PPRESS_MEMBER_DIRECTORIES_SLUG) {
408
  $form_type = FR::MEMBERS_DIRECTORY_TYPE;
src/Admin/SettingsPages/Forms.php CHANGED
@@ -196,10 +196,10 @@ class Forms extends AbstractSettingsPage
196
  break;
197
  }
198
 
199
- $preview_url = add_query_arg(
200
  ['pp_preview_form' => absint($_GET['id']), 'type' => $form_type],
201
  home_url()
202
- );
203
 
204
  $html = "<a target='_blank' class=\"add-new-h2\" href=\"$preview_url\">" . esc_html__('Live Preview', 'wp-user-avatar') . '</a>';
205
 
196
  break;
197
  }
198
 
199
+ $preview_url = esc_url(add_query_arg(
200
  ['pp_preview_form' => absint($_GET['id']), 'type' => $form_type],
201
  home_url()
202
+ ));
203
 
204
  $html = "<a target='_blank' class=\"add-new-h2\" href=\"$preview_url\">" . esc_html__('Live Preview', 'wp-user-avatar') . '</a>';
205
 
src/Admin/SettingsPages/MemberDirectories.php CHANGED
@@ -96,10 +96,10 @@ class MemberDirectories extends AbstractSettingsPage
96
  {
97
  if ( ! isset($_GET['view'])) return;
98
 
99
- $preview_url = add_query_arg(
100
  ['pp_preview_form' => absint($_GET['id']), 'type' => FR::MEMBERS_DIRECTORY_TYPE],
101
  home_url()
102
- );
103
 
104
  $html = "<a target='_blank' class=\"add-new-h2\" href=\"$preview_url\">" . esc_html__('Live Preview', 'wp-user-avatar') . '</a>';
105
 
@@ -134,6 +134,7 @@ class MemberDirectories extends AbstractSettingsPage
134
 
135
  if ( ! empty($_GET['view']) && $_GET['view'] == 'add-new') {
136
  echo '<script type="text/javascript">var pp_is_member_directory = true;</script>';
 
137
  return AddNewForm::get_instance()->settings_admin_page();
138
  }
139
 
@@ -145,7 +146,7 @@ class MemberDirectories extends AbstractSettingsPage
145
 
146
  $shortcode_builder_page_header = sprintf(
147
  '<div class="wrap ppSCB"><h2>%s %s</h2><form method="post">%s',
148
- $page_header,
149
  $this->live_form_preview_btn(false),
150
  ppress_nonce_field()
151
  );
@@ -196,7 +197,7 @@ class MemberDirectories extends AbstractSettingsPage
196
 
197
  public function add_new_form_button()
198
  {
199
- $url = add_query_arg('view', 'add-new', PPRESS_MEMBER_DIRECTORIES_SETTINGS_PAGE);
200
  echo "<a class=\"add-new-h2\" href=\"$url\">" . esc_html__('Add New', 'wp-user-avatar') . '</a>';
201
  }
202
 
96
  {
97
  if ( ! isset($_GET['view'])) return;
98
 
99
+ $preview_url = esc_url(add_query_arg(
100
  ['pp_preview_form' => absint($_GET['id']), 'type' => FR::MEMBERS_DIRECTORY_TYPE],
101
  home_url()
102
+ ));
103
 
104
  $html = "<a target='_blank' class=\"add-new-h2\" href=\"$preview_url\">" . esc_html__('Live Preview', 'wp-user-avatar') . '</a>';
105
 
134
 
135
  if ( ! empty($_GET['view']) && $_GET['view'] == 'add-new') {
136
  echo '<script type="text/javascript">var pp_is_member_directory = true;</script>';
137
+
138
  return AddNewForm::get_instance()->settings_admin_page();
139
  }
140
 
146
 
147
  $shortcode_builder_page_header = sprintf(
148
  '<div class="wrap ppSCB"><h2>%s %s</h2><form method="post">%s',
149
+ esc_html($page_header),
150
  $this->live_form_preview_btn(false),
151
  ppress_nonce_field()
152
  );
197
 
198
  public function add_new_form_button()
199
  {
200
+ $url = esc_url(add_query_arg('view', 'add-new', PPRESS_MEMBER_DIRECTORIES_SETTINGS_PAGE));
201
  echo "<a class=\"add-new-h2\" href=\"$url\">" . esc_html__('Add New', 'wp-user-avatar') . '</a>';
202
  }
203
 
src/Admin/SettingsPages/MembersDirectoryList.php CHANGED
@@ -8,7 +8,7 @@ class MembersDirectoryList extends FormList
8
  {
9
  printf(
10
  esc_html__('No members directory is currently available. %sConsider creating one%s', 'wp-user-avatar'),
11
- '<a href="' . add_query_arg('view', 'add-new', PPRESS_MEMBER_DIRECTORIES_SETTINGS_PAGE) . '">',
12
  '</a>'
13
  );
14
  }
8
  {
9
  printf(
10
  esc_html__('No members directory is currently available. %sConsider creating one%s', 'wp-user-avatar'),
11
+ '<a href="' . esc_url(add_query_arg('view', 'add-new', PPRESS_MEMBER_DIRECTORIES_SETTINGS_PAGE)) . '">',
12
  '</a>'
13
  );
14
  }
src/AdminBarDashboardAccess/include.settings-page.php CHANGED
@@ -40,8 +40,8 @@ $disable_dashboard_access_roles = ppress_var($abdc_options, 'disable_dashboard_a
40
  <?php foreach (ppress_get_editable_roles() as $role_key => $data) :
41
  ?>
42
  <label>
43
- <input id="admin-bar-<?php echo $role_key; ?>" type="checkbox" name="ppress_abdc_options[disable_admin_bar_roles][]" value="<?php echo $role_key; ?>" <?php checked(in_array($role_key, $disable_admin_bar_roles)); ?>>
44
- <?php echo $data['name']; ?></label><br/>
45
  <?php endforeach; ?>
46
  <p class="description">
47
  <?php _e('Select the user roles that the admin bar will be disabled for. It will be disabled for everyone except admins if none is checked.', 'wp-user-avatar'); ?>
@@ -84,7 +84,7 @@ $disable_dashboard_access_roles = ppress_var($abdc_options, 'disable_dashboard_a
84
  <?php foreach (ppress_get_editable_roles() as $role_key => $data) :
85
  ?>
86
  <label>
87
- <input id="dashboard-access-<?php echo $role_key; ?>" type="checkbox" name="ppress_abdc_options[disable_dashboard_access_roles][]" value="<?php echo $role_key; ?>" <?php checked(in_array($role_key, $disable_dashboard_access_roles)); ?>>
88
  <?php echo $data['name']; ?></label><br/>
89
  <?php endforeach; ?>
90
  <p class="description">
@@ -97,7 +97,7 @@ $disable_dashboard_access_roles = ppress_var($abdc_options, 'disable_dashboard_a
97
  <label for="dashboard_redirect_url"><?php _e('Dashboard Redirect URL', 'wp-user-avatar'); ?></label>
98
  </th>
99
  <td>
100
- <input id="dashboard_redirect_url" type="text" name="ppress_abdc_options[dashboard_redirect_url]" value="<?php echo $dashboard_redirect_url; ?>">
101
  <p class="description">
102
  <?php _e('Enter URL to redirect users to without dashboard access. If empty, users will be redirected to website homepage.', 'wp-user-avatar'); ?>
103
  </p>
40
  <?php foreach (ppress_get_editable_roles() as $role_key => $data) :
41
  ?>
42
  <label>
43
+ <input id="admin-bar-<?php echo $role_key; ?>" type="checkbox" name="ppress_abdc_options[disable_admin_bar_roles][]" value="<?php echo esc_attr($role_key); ?>" <?php checked(in_array($role_key, $disable_admin_bar_roles)); ?>>
44
+ <?php echo esc_html($data['name']); ?></label><br/>
45
  <?php endforeach; ?>
46
  <p class="description">
47
  <?php _e('Select the user roles that the admin bar will be disabled for. It will be disabled for everyone except admins if none is checked.', 'wp-user-avatar'); ?>
84
  <?php foreach (ppress_get_editable_roles() as $role_key => $data) :
85
  ?>
86
  <label>
87
+ <input id="dashboard-access-<?php echo esc_attr($role_key); ?>" type="checkbox" name="ppress_abdc_options[disable_dashboard_access_roles][]" value="<?php echo esc_attr($role_key); ?>" <?php checked(in_array($role_key, $disable_dashboard_access_roles)); ?>>
88
  <?php echo $data['name']; ?></label><br/>
89
  <?php endforeach; ?>
90
  <p class="description">
97
  <label for="dashboard_redirect_url"><?php _e('Dashboard Redirect URL', 'wp-user-avatar'); ?></label>
98
  </th>
99
  <td>
100
+ <input id="dashboard_redirect_url" type="text" name="ppress_abdc_options[dashboard_redirect_url]" value="<?php echo esc_url($dashboard_redirect_url); ?>">
101
  <p class="description">
102
  <?php _e('Enter URL to redirect users to without dashboard access. If empty, users will be redirected to website homepage.', 'wp-user-avatar'); ?>
103
  </p>
src/Classes/AdminNotices.php CHANGED
@@ -76,7 +76,7 @@ class AdminNotices
76
 
77
  $review_url = 'https://wordpress.org/support/plugin/wp-user-avatar/reviews/?filter=5#new-post';
78
 
79
- $dismiss_url = esc_url_raw(add_query_arg('ppress_admin_action', 'dismiss_leave_review_forever'));
80
 
81
  $notice = sprintf(
82
  __('Hey, I noticed you have been using ProfilePress for at least 7 days now - that\'s awesome! Could you please do us a BIG favor and give it a %1$s5-star rating on WordPress?%2$s This will help us spread the word and boost our motivation - thanks!', 'wp-user-avatar'),
@@ -104,7 +104,7 @@ class AdminNotices
104
 
105
  if (get_option('ppress_is_from_wp_user_avatar', false) != 'true') return;
106
 
107
- $dismiss_url = esc_url_raw(add_query_arg('ppress_admin_action', 'dismiss_wp_user_avatar_now_ppress'));
108
 
109
  $notice = sprintf(
110
  __('Important news! %1$sWP User Avatar%2$s is now %1$sProfilePress%2$s. We added new features such as member directories, frontend user registration & login forms, user profile, content protection and more. %3$sCheck Them Out%5$s | %4$sDismiss Notice%5$s', 'wp-user-avatar'),
76
 
77
  $review_url = 'https://wordpress.org/support/plugin/wp-user-avatar/reviews/?filter=5#new-post';
78
 
79
+ $dismiss_url = esc_url(add_query_arg('ppress_admin_action', 'dismiss_leave_review_forever'));
80
 
81
  $notice = sprintf(
82
  __('Hey, I noticed you have been using ProfilePress for at least 7 days now - that\'s awesome! Could you please do us a BIG favor and give it a %1$s5-star rating on WordPress?%2$s This will help us spread the word and boost our motivation - thanks!', 'wp-user-avatar'),
104
 
105
  if (get_option('ppress_is_from_wp_user_avatar', false) != 'true') return;
106
 
107
+ $dismiss_url = esc_url(add_query_arg('ppress_admin_action', 'dismiss_wp_user_avatar_now_ppress'));
108
 
109
  $notice = sprintf(
110
  __('Important news! %1$sWP User Avatar%2$s is now %1$sProfilePress%2$s. We added new features such as member directories, frontend user registration & login forms, user profile, content protection and more. %3$sCheck Them Out%5$s | %4$sDismiss Notice%5$s', 'wp-user-avatar'),
src/Classes/AjaxHandler.php CHANGED
@@ -41,6 +41,7 @@ class AjaxHandler
41
 
42
  public function menu_bar($builder_type)
43
  {
 
44
  $melange_jbox = esc_html__('Melange is a way to combine login, registration & password reset forms in a single form.', 'wp-user-avatar');
45
  ?>
46
  <div id="pp-sub-bar">
@@ -161,7 +162,7 @@ class AjaxHandler
161
  $placeholder = ! empty($placeholder) ? $placeholder : '';
162
  ?>
163
  <div class="pp-form-new-list pp-optin-clear">
164
- <h4><?php echo $label; ?>
165
  <input type="text" id="pp-add-form-title" placeholder="<?= $placeholder; ?>">
166
  <span class="spinner pp-dash-spinner"></span>
167
  </h4>
@@ -171,7 +172,7 @@ class AjaxHandler
171
 
172
  public function get_forms_by_builder_type($form_type = FR::LOGIN_TYPE, $builder_type = false)
173
  {
174
- $form_type = ! empty($form_type) ? $form_type : FR::LOGIN_TYPE;
175
  $builder_type = ! $builder_type ? sanitize_text_field($_POST['data']) : $builder_type;
176
 
177
  $this->form_name_field();
@@ -267,13 +268,14 @@ class AjaxHandler
267
  function ajax_delete_avatar()
268
  {
269
  if (current_user_can('read')) {
 
270
  if ( ! wp_verify_nonce($_POST['nonce'], 'ppress-frontend-nonce')) {
271
  wp_send_json(array('error' => 'nonce_failed'));
272
  }
273
 
274
  EditUserProfile::remove_avatar_core();
275
 
276
- wp_send_json(array('success' => true, 'default' => get_avatar_url(get_current_user_id(), '300')));
277
  }
278
  }
279
 
@@ -289,7 +291,7 @@ class AjaxHandler
289
 
290
  $default = get_option('wp_user_cover_default_image_url', '');
291
 
292
- wp_send_json(['success' => true, 'default' => $default]);
293
  }
294
  }
295
 
@@ -404,7 +406,7 @@ class AjaxHandler
404
  $ajax_response = array('success' => true, 'redirect' => $response);
405
 
406
  if (isset($response) && is_wp_error($response)) {
407
- $login_error = '<div class="' . $login_status_css_class . '">';
408
  $login_error .= $response->get_error_message();
409
  $login_error .= '</div>';
410
 
41
 
42
  public function menu_bar($builder_type)
43
  {
44
+ $builder_type = sanitize_text_field($builder_type);
45
  $melange_jbox = esc_html__('Melange is a way to combine login, registration & password reset forms in a single form.', 'wp-user-avatar');
46
  ?>
47
  <div id="pp-sub-bar">
162
  $placeholder = ! empty($placeholder) ? $placeholder : '';
163
  ?>
164
  <div class="pp-form-new-list pp-optin-clear">
165
+ <h4><?php echo esc_html($label); ?>
166
  <input type="text" id="pp-add-form-title" placeholder="<?= $placeholder; ?>">
167
  <span class="spinner pp-dash-spinner"></span>
168
  </h4>
172
 
173
  public function get_forms_by_builder_type($form_type = FR::LOGIN_TYPE, $builder_type = false)
174
  {
175
+ $form_type = ! empty($form_type) ? sanitize_text_field($form_type) : FR::LOGIN_TYPE;
176
  $builder_type = ! $builder_type ? sanitize_text_field($_POST['data']) : $builder_type;
177
 
178
  $this->form_name_field();
268
  function ajax_delete_avatar()
269
  {
270
  if (current_user_can('read')) {
271
+
272
  if ( ! wp_verify_nonce($_POST['nonce'], 'ppress-frontend-nonce')) {
273
  wp_send_json(array('error' => 'nonce_failed'));
274
  }
275
 
276
  EditUserProfile::remove_avatar_core();
277
 
278
+ wp_send_json(array('success' => true, 'default' => esc_url(get_avatar_url(get_current_user_id(), '300'))));
279
  }
280
  }
281
 
291
 
292
  $default = get_option('wp_user_cover_default_image_url', '');
293
 
294
+ wp_send_json(['success' => true, 'default' => esc_url($default)]);
295
  }
296
  }
297
 
406
  $ajax_response = array('success' => true, 'redirect' => $response);
407
 
408
  if (isset($response) && is_wp_error($response)) {
409
+ $login_error = '<div class="' . esc_attr($login_status_css_class) . '">';
410
  $login_error .= $response->get_error_message();
411
  $login_error .= '</div>';
412
 
src/Classes/BuddyPressBbPress.php CHANGED
@@ -58,7 +58,7 @@ class BuddyPressBbPress
58
  if (UserAvatar::user_has_pp_avatar($user_id)) {
59
  $avatar_url = UserAvatar::get_pp_avatar_url($user_id);
60
 
61
- return preg_replace('/src=".+?"/', 'src="' . $avatar_url . '"', $image_in_html);
62
  }
63
  }
64
 
@@ -76,7 +76,7 @@ class BuddyPressBbPress
76
  public static function override_avatar_url($image_url, $params)
77
  {
78
  if (isset($params['object']) && 'user' == $params['object']) {
79
- $user_id = $params['item_id'];
80
  if (UserAvatar::user_has_pp_avatar($user_id)) {
81
  $image_url = UserAvatar::get_pp_avatar_url($user_id);
82
  }
58
  if (UserAvatar::user_has_pp_avatar($user_id)) {
59
  $avatar_url = UserAvatar::get_pp_avatar_url($user_id);
60
 
61
+ return preg_replace('/src=".+?"/', 'src="' . esc_url($avatar_url) . '"', $image_in_html);
62
  }
63
  }
64
 
76
  public static function override_avatar_url($image_url, $params)
77
  {
78
  if (isset($params['object']) && 'user' == $params['object']) {
79
+ $user_id = absint($params['item_id']);
80
  if (UserAvatar::user_has_pp_avatar($user_id)) {
81
  $image_url = UserAvatar::get_pp_avatar_url($user_id);
82
  }
src/Classes/FormPreviewHandler.php CHANGED
@@ -42,7 +42,7 @@ class FormPreviewHandler
42
 
43
  $form_title = FormRepository::get_name($this->_form_id, $this->_form_type);
44
 
45
- return $form_title . " " . esc_html__('Preview', 'wp-user-avatar');
46
  }
47
 
48
  /**
42
 
43
  $form_title = FormRepository::get_name($this->_form_id, $this->_form_type);
44
 
45
+ return esc_html($form_title) . " " . esc_html__('Preview', 'wp-user-avatar');
46
  }
47
 
48
  /**
src/Classes/LoginAuth.php CHANGED
@@ -95,7 +95,7 @@ class LoginAuth
95
  $login_redirection = apply_filters('login_redirect', $login_redirect, $requested_redirect_to, $user);
96
 
97
  /** Setup a custom location of the builder */
98
- $login_redirection = apply_filters('ppress_login_redirect', $login_redirection, $login_form_id, $user);
99
 
100
  // if ajax, return the url to redirect to
101
  if (self::is_ajax()) return $login_redirection;
95
  $login_redirection = apply_filters('login_redirect', $login_redirect, $requested_redirect_to, $user);
96
 
97
  /** Setup a custom location of the builder */
98
+ $login_redirection = esc_url_raw(apply_filters('ppress_login_redirect', $login_redirection, $login_form_id, $user));
99
 
100
  // if ajax, return the url to redirect to
101
  if (self::is_ajax()) return $login_redirection;
src/Classes/ModifyRedirectDefaultLinks.php CHANGED
@@ -51,7 +51,7 @@ class ModifyRedirectDefaultLinks
51
  $val = get_permalink($page_id);
52
  }
53
 
54
- return apply_filters('ppress_password_reset_url', $val);
55
  }
56
 
57
  /**
@@ -65,7 +65,7 @@ class ModifyRedirectDefaultLinks
65
 
66
  if (empty($page_id)) return;
67
 
68
- $password_reset_url = get_permalink(absint($page_id));
69
 
70
  wp_safe_redirect($password_reset_url);
71
  exit;
@@ -97,7 +97,7 @@ class ModifyRedirectDefaultLinks
97
  }
98
  }
99
 
100
- return apply_filters('ppress_login_url', $url, $redirect, $force_reauth);
101
  }
102
 
103
 
@@ -124,7 +124,7 @@ class ModifyRedirectDefaultLinks
124
  }
125
  }
126
 
127
- wp_safe_redirect($login_url);
128
  exit;
129
  }
130
 
@@ -141,7 +141,7 @@ class ModifyRedirectDefaultLinks
141
  $val = get_permalink($page_id);
142
  }
143
 
144
- return apply_filters('ppress_registration_url', $val);
145
  }
146
 
147
  /**
@@ -155,7 +155,7 @@ class ModifyRedirectDefaultLinks
155
 
156
  $reg_url = ppress_registration_url();
157
 
158
- wp_safe_redirect($reg_url);
159
  exit;
160
  }
161
 
@@ -196,7 +196,7 @@ class ModifyRedirectDefaultLinks
196
  $logout_url = add_query_arg('redirect_to', urlencode($set_redirect), $logout_url);
197
  }
198
 
199
- return $logout_url;
200
  }
201
 
202
  /**
@@ -213,7 +213,7 @@ class ModifyRedirectDefaultLinks
213
  $url = get_permalink($page_id);
214
  }
215
 
216
- return $url;
217
  }, 9999999999);
218
 
219
  // Filter to disable edit profile redirect for administrator.
@@ -223,10 +223,10 @@ class ModifyRedirectDefaultLinks
223
  if ( ! empty(ppress_get_setting('edit_user_profile_url'))) {
224
  $edit_user_profile_url = ppress_edit_profile_url();
225
 
226
- $page_viewed = esc_url($_SERVER['REQUEST_URI']);
227
 
228
  if (isset($page_viewed) && strpos($page_viewed, 'wp-admin/profile.php') !== false) {
229
- wp_safe_redirect($edit_user_profile_url);
230
  exit;
231
  }
232
  }
@@ -236,7 +236,7 @@ class ModifyRedirectDefaultLinks
236
  public function author_link_func($url, $author_id)
237
  {
238
  if (ppress_settings_by_key('author_slug_to_profile') == 'on') {
239
- $url = ppress_get_frontend_profile_url($author_id);
240
  }
241
 
242
  return $url;
@@ -256,7 +256,7 @@ class ModifyRedirectDefaultLinks
256
  $email = $comment->comment_author_email;
257
  $user = get_user_by('email', $email);
258
  if (isset($user->user_login)) {
259
- $url = ppress_get_frontend_profile_url($user->user_login);
260
  }
261
  }
262
  }
@@ -269,7 +269,7 @@ class ModifyRedirectDefaultLinks
269
  */
270
  public function redirect_logout_page()
271
  {
272
- $page_viewed = basename(esc_url($_SERVER['REQUEST_URI']));
273
 
274
  if ($page_viewed == "wp-login.php?loggedout=true" && $_SERVER['REQUEST_METHOD'] == 'GET') {
275
  wp_safe_redirect(home_url());
51
  $val = get_permalink($page_id);
52
  }
53
 
54
+ return apply_filters('ppress_password_reset_url', esc_url_raw($val));
55
  }
56
 
57
  /**
65
 
66
  if (empty($page_id)) return;
67
 
68
+ $password_reset_url = esc_url_raw(get_permalink(absint($page_id)));
69
 
70
  wp_safe_redirect($password_reset_url);
71
  exit;
97
  }
98
  }
99
 
100
+ return apply_filters('ppress_login_url', esc_url_raw($url), $redirect, $force_reauth);
101
  }
102
 
103
 
124
  }
125
  }
126
 
127
+ wp_safe_redirect(esc_url_raw($login_url));
128
  exit;
129
  }
130
 
141
  $val = get_permalink($page_id);
142
  }
143
 
144
+ return apply_filters('ppress_registration_url', esc_url_raw($val));
145
  }
146
 
147
  /**
155
 
156
  $reg_url = ppress_registration_url();
157
 
158
+ wp_safe_redirect(esc_url_raw($reg_url));
159
  exit;
160
  }
161
 
196
  $logout_url = add_query_arg('redirect_to', urlencode($set_redirect), $logout_url);
197
  }
198
 
199
+ return esc_url_raw($logout_url);
200
  }
201
 
202
  /**
213
  $url = get_permalink($page_id);
214
  }
215
 
216
+ return esc_url_raw($url);
217
  }, 9999999999);
218
 
219
  // Filter to disable edit profile redirect for administrator.
223
  if ( ! empty(ppress_get_setting('edit_user_profile_url'))) {
224
  $edit_user_profile_url = ppress_edit_profile_url();
225
 
226
+ $page_viewed = esc_url_raw($_SERVER['REQUEST_URI']);
227
 
228
  if (isset($page_viewed) && strpos($page_viewed, 'wp-admin/profile.php') !== false) {
229
+ wp_safe_redirect(esc_url_raw($edit_user_profile_url));
230
  exit;
231
  }
232
  }
236
  public function author_link_func($url, $author_id)
237
  {
238
  if (ppress_settings_by_key('author_slug_to_profile') == 'on') {
239
+ $url = esc_url_raw(ppress_get_frontend_profile_url($author_id));
240
  }
241
 
242
  return $url;
256
  $email = $comment->comment_author_email;
257
  $user = get_user_by('email', $email);
258
  if (isset($user->user_login)) {
259
+ $url = esc_url_raw(ppress_get_frontend_profile_url($user->user_login));
260
  }
261
  }
262
  }
269
  */
270
  public function redirect_logout_page()
271
  {
272
+ $page_viewed = basename(esc_url_raw($_SERVER['REQUEST_URI']));
273
 
274
  if ($page_viewed == "wp-login.php?loggedout=true" && $_SERVER['REQUEST_METHOD'] == 'GET') {
275
  wp_safe_redirect(home_url());
src/Classes/PasswordReset.php CHANGED
@@ -71,7 +71,7 @@ class PasswordReset
71
  /**
72
  * Callback function for filter
73
  *
74
- * @param string $user_data
75
  * @param $key
76
  *
77
  * @return string formatted message for use by the password reset form
@@ -215,8 +215,8 @@ class PasswordReset
215
  */
216
  public static function do_password_reset()
217
  {
218
- $reset_key = $_REQUEST['reset_key'];
219
- $reset_login = $_REQUEST['reset_login'];
220
 
221
  $user = check_password_reset_key($reset_key, $reset_login);
222
 
71
  /**
72
  * Callback function for filter
73
  *
74
+ * @param mixed $user_data
75
  * @param $key
76
  *
77
  * @return string formatted message for use by the password reset form
215
  */
216
  public static function do_password_reset()
217
  {
218
+ $reset_key = wp_unslash($_REQUEST['reset_key']);
219
+ $reset_login = wp_unslash($_REQUEST['reset_login']);
220
 
221
  $user = check_password_reset_key($reset_key, $reset_login);
222
 
src/ContentProtection/Frontend/Redirect.php CHANGED
@@ -64,7 +64,7 @@ class Redirect
64
  if (Checker::content_match($meta['content'], true)) {
65
 
66
  if (Checker::is_blocked($who_can_access, $access_roles)) {
67
- wp_safe_redirect($redirect_url);
68
  exit;
69
  }
70
 
64
  if (Checker::content_match($meta['content'], true)) {
65
 
66
  if (Checker::is_blocked($who_can_access, $access_roles)) {
67
+ wp_safe_redirect(esc_url_raw($redirect_url));
68
  exit;
69
  }
70
 
src/ContentProtection/WPListTable.php CHANGED
@@ -10,8 +10,8 @@ class WPListTable extends \WP_List_Table
10
  public function __construct()
11
  {
12
  parent::__construct(array(
13
- 'singular' => esc_html__('Protection Rule', 'wp-user-avatar'),
14
- 'plural' => esc_html__('Protection Rules', 'wp-user-avatar'),
15
  'ajax' => false
16
  ));
17
  }
@@ -313,6 +313,9 @@ class WPListTable extends \WP_List_Table
313
  {
314
  $rule_id = absint(ppress_var($_GET, 'id', 0));
315
 
 
 
 
316
  if ('deactivate' === $this->current_action()) {
317
 
318
  check_admin_referer('pp_content_protection_deactivate_rule');
@@ -377,7 +380,8 @@ class WPListTable extends \WP_List_Table
377
  }
378
 
379
  if ('bulk-delete' === $this->current_action()) {
380
- check_admin_referer('bulk-pp_cp_rules');
 
381
 
382
  $delete_ids = array_map('absint', $_POST['rule_id']);
383
 
10
  public function __construct()
11
  {
12
  parent::__construct(array(
13
+ 'singular' => 'ppress-protection-rule',
14
+ 'plural' => 'ppress-protection-rules',
15
  'ajax' => false
16
  ));
17
  }
313
  {
314
  $rule_id = absint(ppress_var($_GET, 'id', 0));
315
 
316
+ // Bail if user is not an admin or without admin privileges.
317
+ if ( ! current_user_can('manage_options')) return;
318
+
319
  if ('deactivate' === $this->current_action()) {
320
 
321
  check_admin_referer('pp_content_protection_deactivate_rule');
380
  }
381
 
382
  if ('bulk-delete' === $this->current_action()) {
383
+
384
+ check_admin_referer('bulk-' . $this->_args['plural']);
385
 
386
  $delete_ids = array_map('absint', $_POST['rule_id']);
387
 
src/Functions/custom-settings-api.php CHANGED
@@ -418,7 +418,7 @@ class Custom_Settings_Page_Api
418
  $pageURL .= $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];
419
  }
420
 
421
- return apply_filters('wp_cspa_main_current_page_url', $pageURL);
422
  }
423
 
424
 
@@ -1074,7 +1074,7 @@ public function _header($args)
1074
  public function _footer($disable_submit_button = null)
1075
  {
1076
  return '</table>
1077
- <p><input class="button-primary" type="submit" name="save_' . $this->option_name . '" value="Save Changes"></p>
1078
  </div>
1079
  </div>';
1080
  }
418
  $pageURL .= $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];
419
  }
420
 
421
+ return apply_filters('wp_cspa_main_current_page_url', esc_url_raw($pageURL));
422
  }
423
 
424
 
1074
  public function _footer($disable_submit_button = null)
1075
  {
1076
  return '</table>
1077
+ <p><input class="button-primary" type="submit" name="save_' . $this->option_name . '" value="'. esc_html__('Save Changes', 'wp-user-avatar'). '"></p>
1078
  </div>
1079
  </div>';
1080
  }
src/ShortcodeParser/Builder/FieldsShortcodeCallback.php CHANGED
@@ -1035,7 +1035,6 @@ class FieldsShortcodeCallback
1035
 
1036
  $processing_label = ! empty($atts['processing_label']) ? $atts['processing_label'] : FormRepository::get_processing_label($form_id, $form_type);
1037
 
1038
-
1039
  $attributes = $this->field_attributes($field_name, $atts);
1040
 
1041
  $html = sprintf(
1035
 
1036
  $processing_label = ! empty($atts['processing_label']) ? $atts['processing_label'] : FormRepository::get_processing_label($form_id, $form_type);
1037
 
 
1038
  $attributes = $this->field_attributes($field_name, $atts);
1039
 
1040
  $html = sprintf(
src/ShortcodeParser/Builder/FrontendProfileBuilder.php CHANGED
@@ -3,6 +3,7 @@
3
  namespace ProfilePress\Core\ShortcodeParser\Builder;
4
 
5
  use ProfilePress\Core\Classes\ExtensionManager as EM;
 
6
 
7
  class FrontendProfileBuilder
8
  {
@@ -35,14 +36,12 @@ class FrontendProfileBuilder
35
  add_shortcode('profile-bio', array($this, 'profile_bio'));
36
 
37
  add_shortcode('profile-cpf', array($this, 'profile_custom_profile_field'));
38
-
39
  add_shortcode('profile-file', array($this, 'profile_user_uploaded_file'));
40
 
41
  add_shortcode('profile-cover-image-url', array($this, 'cover_image_url'));
42
 
43
  add_shortcode('profile-avatar-url', array($this, 'user_avatar_url'));
44
- // backward compat
45
- add_shortcode('user-avatar-url', array($this, 'user_avatar_url'));
46
 
47
  add_shortcode('profile-hide-empty-data', array($this, 'hide_empty_data'));
48
 
@@ -349,6 +348,12 @@ class FrontendProfileBuilder
349
 
350
  if (empty($key)) return esc_html__('Field key is missing', 'wp-user-avatar');
351
 
 
 
 
 
 
 
352
  $data = self::$user_data->{$key};
353
 
354
  if (is_array($data)) {
@@ -444,6 +449,9 @@ class FrontendProfileBuilder
444
  case 'last_name':
445
  $key = 'last_name';
446
  break;
 
 
 
447
  }
448
 
449
  if ( ! empty($key) && ! empty(self::$user_data->$key)) {
3
  namespace ProfilePress\Core\ShortcodeParser\Builder;
4
 
5
  use ProfilePress\Core\Classes\ExtensionManager as EM;
6
+ use ProfilePress\Core\Classes\PROFILEPRESS_sql;
7
 
8
  class FrontendProfileBuilder
9
  {
36
  add_shortcode('profile-bio', array($this, 'profile_bio'));
37
 
38
  add_shortcode('profile-cpf', array($this, 'profile_custom_profile_field'));
 
39
  add_shortcode('profile-file', array($this, 'profile_user_uploaded_file'));
40
 
41
  add_shortcode('profile-cover-image-url', array($this, 'cover_image_url'));
42
 
43
  add_shortcode('profile-avatar-url', array($this, 'user_avatar_url'));
44
+ add_shortcode('user-avatar-url', array($this, 'user_avatar_url')); // backward compat
 
45
 
46
  add_shortcode('profile-hide-empty-data', array($this, 'hide_empty_data'));
47
 
348
 
349
  if (empty($key)) return esc_html__('Field key is missing', 'wp-user-avatar');
350
 
351
+ $type = PROFILEPRESS_sql::get_field_type($key);
352
+
353
+ if ('file' == $type) {
354
+ return $this->profile_user_uploaded_file($atts);
355
+ }
356
+
357
  $data = self::$user_data->{$key};
358
 
359
  if (is_array($data)) {
449
  case 'last_name':
450
  $key = 'last_name';
451
  break;
452
+ case 'bio':
453
+ $key = 'description';
454
+ break;
455
  }
456
 
457
  if ( ! empty($key) && ! empty(self::$user_data->$key)) {
src/ShortcodeParser/Builder/GlobalShortcodes.php CHANGED
@@ -20,7 +20,7 @@ class GlobalShortcodes
20
  add_shortcode('link-lost-password', array(__CLASS__, 'link_lost_password'));
21
  add_shortcode('link-login', array(__CLASS__, 'link_login'));
22
  add_shortcode('link-logout', array(__CLASS__, 'link_logout'));
23
- add_shortcode('link-edit-user-profile', array(__CLASS__, 'link_edit_profile'));
24
  add_shortcode('link-my-account', array(__CLASS__, 'link_edit_profile'));
25
  add_shortcode('pp-login-form', array(__CLASS__, 'login_form_tag'));
26
  add_shortcode('pp-registration-form', array(__CLASS__, 'registration_form_tag'));
@@ -152,10 +152,12 @@ class GlobalShortcodes
152
  {
153
  $atts = shortcode_atts(['custom_html' => ''], $atts);
154
 
155
- return do_shortcode(stripslashes($atts['custom_html']));
156
  }
157
 
158
- /** registration url */
 
 
159
  public static function link_registration($atts)
160
  {
161
  $atts = ppress_normalize_attributes($atts);
@@ -285,7 +287,6 @@ class GlobalShortcodes
285
 
286
  /**
287
  * URL to user edit page
288
- * @return string
289
  */
290
  public static function link_edit_profile($atts)
291
  {
@@ -425,6 +426,7 @@ class GlobalShortcodes
425
 
426
  ob_start();
427
  ppress_content_http_redirect($url);
 
428
  return ob_get_clean();
429
  }
430
 
@@ -453,6 +455,7 @@ class GlobalShortcodes
453
 
454
  ob_start();
455
  ppress_content_http_redirect($url);
 
456
  return ob_get_clean();
457
  }
458
 
20
  add_shortcode('link-lost-password', array(__CLASS__, 'link_lost_password'));
21
  add_shortcode('link-login', array(__CLASS__, 'link_login'));
22
  add_shortcode('link-logout', array(__CLASS__, 'link_logout'));
23
+ add_shortcode('link-edit-user-profile', array(__CLASS__, 'link_edit_profile')); // backward compat
24
  add_shortcode('link-my-account', array(__CLASS__, 'link_edit_profile'));
25
  add_shortcode('pp-login-form', array(__CLASS__, 'login_form_tag'));
26
  add_shortcode('pp-registration-form', array(__CLASS__, 'registration_form_tag'));
152
  {
153
  $atts = shortcode_atts(['custom_html' => ''], $atts);
154
 
155
+ return do_shortcode(stripslashes(wp_kses_post($atts['custom_html'])));
156
  }
157
 
158
+ /**
159
+ * Registration url
160
+ */
161
  public static function link_registration($atts)
162
  {
163
  $atts = ppress_normalize_attributes($atts);
287
 
288
  /**
289
  * URL to user edit page
 
290
  */
291
  public static function link_edit_profile($atts)
292
  {
426
 
427
  ob_start();
428
  ppress_content_http_redirect($url);
429
+
430
  return ob_get_clean();
431
  }
432
 
455
 
456
  ob_start();
457
  ppress_content_http_redirect($url);
458
+
459
  return ob_get_clean();
460
  }
461
 
src/ShortcodeParser/Builder/PasswordResetBuilder.php CHANGED
@@ -57,7 +57,7 @@ class PasswordResetBuilder
57
  return apply_filters('ppress_password_reset_username_field', $html, $atts);
58
  }
59
 
60
- protected function get_processing_label()
61
  {
62
  $form_type = FormRepository::PASSWORD_RESET_TYPE;
63
  $form_id = isset($GLOBALS['pp_password_reset_form_id']) ? $GLOBALS['pp_password_reset_form_id'] : 0;
@@ -84,11 +84,12 @@ class PasswordResetBuilder
84
 
85
  $atts = shortcode_atts(
86
  array(
87
- 'class' => '',
88
- 'id' => '',
89
- 'value' => '',
90
- 'title' => '',
91
- 'name' => 'password_reset_submit',
 
92
  ),
93
  $atts
94
  );
@@ -108,7 +109,7 @@ class PasswordResetBuilder
108
  '<input data-pp-submit-label="%2$s" data-pp-processing-label="%3$s" type="submit" value="%2$s" %1$s>',
109
  "$name $title $class $id $other_atts_html",
110
  $value,
111
- $this->get_processing_label()
112
  );
113
 
114
  return apply_filters('ppress_password_reset_submit_field', $html, $atts);
@@ -319,10 +320,11 @@ class PasswordResetBuilder
319
 
320
  $atts = shortcode_atts(
321
  array(
322
- 'class' => '',
323
- 'id' => '',
324
- 'title' => '',
325
- 'name' => 'reset_password',
 
326
  ),
327
  $atts
328
  );
@@ -342,7 +344,7 @@ class PasswordResetBuilder
342
  '<input data-pp-submit-label="%2$s" data-pp-processing-label="%3$s" type="submit" value="%2$s" %1$s>',
343
  "$name $title $class $id $other_atts_html",
344
  $value,
345
- $this->get_processing_label()
346
  );
347
 
348
  return apply_filters('ppress_password_reset_handler_submit_field', $html, $atts);
57
  return apply_filters('ppress_password_reset_username_field', $html, $atts);
58
  }
59
 
60
+ protected function get_processing_label($atts)
61
  {
62
  $form_type = FormRepository::PASSWORD_RESET_TYPE;
63
  $form_id = isset($GLOBALS['pp_password_reset_form_id']) ? $GLOBALS['pp_password_reset_form_id'] : 0;
84
 
85
  $atts = shortcode_atts(
86
  array(
87
+ 'class' => '',
88
+ 'id' => '',
89
+ 'value' => '',
90
+ 'title' => '',
91
+ 'processing_label' => '',
92
+ 'name' => 'password_reset_submit',
93
  ),
94
  $atts
95
  );
109
  '<input data-pp-submit-label="%2$s" data-pp-processing-label="%3$s" type="submit" value="%2$s" %1$s>',
110
  "$name $title $class $id $other_atts_html",
111
  $value,
112
+ $this->get_processing_label($atts)
113
  );
114
 
115
  return apply_filters('ppress_password_reset_submit_field', $html, $atts);
320
 
321
  $atts = shortcode_atts(
322
  array(
323
+ 'class' => '',
324
+ 'id' => '',
325
+ 'title' => '',
326
+ 'processing_label' => '',
327
+ 'name' => 'reset_password',
328
  ),
329
  $atts
330
  );
344
  '<input data-pp-submit-label="%2$s" data-pp-processing-label="%3$s" type="submit" value="%2$s" %1$s>',
345
  "$name $title $class $id $other_atts_html",
346
  $value,
347
+ $this->get_processing_label($atts)
348
  );
349
 
350
  return apply_filters('ppress_password_reset_handler_submit_field', $html, $atts);
src/ShortcodeParser/FrontendProfileTag.php CHANGED
@@ -42,9 +42,8 @@ class FrontendProfileTag
42
  if (is_user_logged_in()) {
43
  $user = $this->get_current_user_data();
44
  } else {
45
- $profile_slug_with_slash = ppress_get_profile_slug() . '/';
46
 
47
- if (strpos($_SERVER['REQUEST_URI'], $profile_slug_with_slash) !== false) {
48
  wp_safe_redirect(home_url());
49
  exit;
50
  }
@@ -205,8 +204,7 @@ class FrontendProfileTag
205
  return $title;
206
  }
207
 
208
- /** Singleton instance */
209
- static public function get_instance()
210
  {
211
  static $instance = false;
212
 
42
  if (is_user_logged_in()) {
43
  $user = $this->get_current_user_data();
44
  } else {
 
45
 
46
+ if (strpos($_SERVER['REQUEST_URI'], '/' . ppress_get_profile_slug() . '/') !== false) {
47
  wp_safe_redirect(home_url());
48
  exit;
49
  }
204
  return $title;
205
  }
206
 
207
+ public static function get_instance()
 
208
  {
209
  static $instance = false;
210
 
src/ShortcodeParser/MyAccount/dashboard.tmpl.php CHANGED
@@ -23,7 +23,7 @@ $current_user = get_user_by('id', get_current_user_id());
23
  <p>
24
  <?php
25
  printf(
26
- __('From your account dashboard you can view your <a href="%1$s">change your password</a> and <a href="%2$s">edit your account details</a>.', 'wp-user-avatar'),
27
  esc_url(MyAccountTag::get_endpoint_url('change-password')),
28
  esc_url(MyAccountTag::get_endpoint_url('edit-profile'))
29
  );
23
  <p>
24
  <?php
25
  printf(
26
+ __('From your account dashboard you can <a href="%1$s">change your password</a> and <a href="%2$s">edit your account details</a>.', 'wp-user-avatar'),
27
  esc_url(MyAccountTag::get_endpoint_url('change-password')),
28
  esc_url(MyAccountTag::get_endpoint_url('edit-profile'))
29
  );
src/ShortcodeParser/PasswordResetTag.php CHANGED
@@ -96,18 +96,16 @@ class PasswordResetTag extends FormProcessor
96
  {
97
  ob_start();
98
  ?>
99
- <div class="pp-reset-password-form">
100
- <h3><?= esc_html__('Enter your new password below', 'wp-user-avatar'); ?></h3>
101
- <label for="password1"><?= esc_html__('New password', 'wp-user-avatar'); ?>
102
- <span class="req">*</span></label>
103
- [enter-password id="password1" required autocomplete="off"]
104
-
105
- <label for="password2"><?= esc_html__('Re-enter new password', 'wp-user-avatar') ?>
106
- <span class="req">*</span></label>
107
- [re-enter-password id="password2" required autocomplete="off"]
108
-
109
- [password-reset-submit class="pp-reset-button pp-reset-button-block" value="<?= esc_html__('Save', 'wp-user-avatar'); ?>"]
110
- </div>
111
  <?php
112
  return apply_filters('ppress_form_default_handler_form', ob_get_clean());
113
  }
96
  {
97
  ob_start();
98
  ?>
99
+ <div class="pp-reset-password-form">
100
+ <h3><?= esc_html__('Enter your new password below', 'wp-user-avatar'); ?></h3>
101
+ <label for="password1"><?= esc_html__('New password', 'wp-user-avatar'); ?> <span class="req">*</span></label>
102
+ [enter-password id="password1" required autocomplete="off"]
103
+
104
+ <label for="password2"><?= esc_html__('Re-enter new password', 'wp-user-avatar') ?> <span class="req">*</span></label>
105
+ [re-enter-password id="password2" required autocomplete="off"]
106
+
107
+ [password-reset-submit class="pp-reset-button pp-reset-button-block" value="<?= esc_html__('Save', 'wp-user-avatar'); ?>"]
108
+ </div>
 
 
109
  <?php
110
  return apply_filters('ppress_form_default_handler_form', ob_get_clean());
111
  }
src/Themes/DragDrop/AbstractMemberDirectoryTheme.php CHANGED
@@ -915,17 +915,17 @@ abstract class AbstractMemberDirectoryTheme extends AbstractTheme
915
 
916
  protected function get_results_text()
917
  {
918
- return $this->get_meta('ppress_md_results_text');
919
  }
920
 
921
  protected function get_single_result_text()
922
  {
923
- return $this->get_meta('ppress_md_single_result_text');
924
  }
925
 
926
  protected function get_no_result_text()
927
  {
928
- return $this->get_meta('ppress_md_no_result_text');
929
  }
930
 
931
  protected function get_default_result_number_per_page()
915
 
916
  protected function get_results_text()
917
  {
918
+ return esc_html($this->get_meta('ppress_md_results_text'));
919
  }
920
 
921
  protected function get_single_result_text()
922
  {
923
+ return esc_html($this->get_meta('ppress_md_single_result_text'));
924
  }
925
 
926
  protected function get_no_result_text()
927
  {
928
+ return esc_html($this->get_meta('ppress_md_no_result_text'));
929
  }
930
 
931
  protected function get_default_result_number_per_page()
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInitc340867a2b798d549ce71fca3e3b82ba::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInit0f0dfaf6382a05d192bd889e5f7168f9::getLoader();
vendor/composer/InstalledVersions.php CHANGED
@@ -29,7 +29,7 @@ private static $installed = array (
29
  'aliases' =>
30
  array (
31
  ),
32
- 'reference' => '4f0c3976c72f377530f47c02351f5d5119d25c78',
33
  'name' => '__root__',
34
  ),
35
  'versions' =>
@@ -41,7 +41,7 @@ private static $installed = array (
41
  'aliases' =>
42
  array (
43
  ),
44
- 'reference' => '4f0c3976c72f377530f47c02351f5d5119d25c78',
45
  ),
46
  'collizo4sky/persist-admin-notices-dismissal' =>
47
  array (
29
  'aliases' =>
30
  array (
31
  ),
32
+ 'reference' => '9b520d65a2664f9459fb4987528469dbcf6d2475',
33
  'name' => '__root__',
34
  ),
35
  'versions' =>
41
  'aliases' =>
42
  array (
43
  ),
44
+ 'reference' => '9b520d65a2664f9459fb4987528469dbcf6d2475',
45
  ),
46
  'collizo4sky/persist-admin-notices-dismissal' =>
47
  array (
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInitc340867a2b798d549ce71fca3e3b82ba
6
  {
7
  private static $loader;
8
 
@@ -24,15 +24,15 @@ class ComposerAutoloaderInitc340867a2b798d549ce71fca3e3b82ba
24
 
25
  require __DIR__ . '/platform_check.php';
26
 
27
- spl_autoload_register(array('ComposerAutoloaderInitc340867a2b798d549ce71fca3e3b82ba', 'loadClassLoader'), true, true);
28
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
29
- spl_autoload_unregister(array('ComposerAutoloaderInitc340867a2b798d549ce71fca3e3b82ba', '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\ComposerStaticInitc340867a2b798d549ce71fca3e3b82ba::getInitializer($loader));
36
  } else {
37
  $map = require __DIR__ . '/autoload_namespaces.php';
38
  foreach ($map as $namespace => $path) {
@@ -53,19 +53,19 @@ class ComposerAutoloaderInitc340867a2b798d549ce71fca3e3b82ba
53
  $loader->register(true);
54
 
55
  if ($useStaticLoader) {
56
- $includeFiles = Composer\Autoload\ComposerStaticInitc340867a2b798d549ce71fca3e3b82ba::$files;
57
  } else {
58
  $includeFiles = require __DIR__ . '/autoload_files.php';
59
  }
60
  foreach ($includeFiles as $fileIdentifier => $file) {
61
- composerRequirec340867a2b798d549ce71fca3e3b82ba($fileIdentifier, $file);
62
  }
63
 
64
  return $loader;
65
  }
66
  }
67
 
68
- function composerRequirec340867a2b798d549ce71fca3e3b82ba($fileIdentifier, $file)
69
  {
70
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
71
  require $file;
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInit0f0dfaf6382a05d192bd889e5f7168f9
6
  {
7
  private static $loader;
8
 
24
 
25
  require __DIR__ . '/platform_check.php';
26
 
27
+ spl_autoload_register(array('ComposerAutoloaderInit0f0dfaf6382a05d192bd889e5f7168f9', 'loadClassLoader'), true, true);
28
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
29
+ spl_autoload_unregister(array('ComposerAutoloaderInit0f0dfaf6382a05d192bd889e5f7168f9', '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\ComposerStaticInit0f0dfaf6382a05d192bd889e5f7168f9::getInitializer($loader));
36
  } else {
37
  $map = require __DIR__ . '/autoload_namespaces.php';
38
  foreach ($map as $namespace => $path) {
53
  $loader->register(true);
54
 
55
  if ($useStaticLoader) {
56
+ $includeFiles = Composer\Autoload\ComposerStaticInit0f0dfaf6382a05d192bd889e5f7168f9::$files;
57
  } else {
58
  $includeFiles = require __DIR__ . '/autoload_files.php';
59
  }
60
  foreach ($includeFiles as $fileIdentifier => $file) {
61
+ composerRequire0f0dfaf6382a05d192bd889e5f7168f9($fileIdentifier, $file);
62
  }
63
 
64
  return $loader;
65
  }
66
  }
67
 
68
+ function composerRequire0f0dfaf6382a05d192bd889e5f7168f9($fileIdentifier, $file)
69
  {
70
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
71
  require $file;
vendor/composer/autoload_static.php CHANGED
@@ -4,7 +4,7 @@
4
 
5
  namespace Composer\Autoload;
6
 
7
- class ComposerStaticInitc340867a2b798d549ce71fca3e3b82ba
8
  {
9
  public static $files = array (
10
  'fda73876e8be17735f680f484cec1679' => __DIR__ . '/../..' . '/src/Functions/custom-settings-api.php',
@@ -286,9 +286,9 @@ class ComposerStaticInitc340867a2b798d549ce71fca3e3b82ba
286
  public static function getInitializer(ClassLoader $loader)
287
  {
288
  return \Closure::bind(function () use ($loader) {
289
- $loader->prefixLengthsPsr4 = ComposerStaticInitc340867a2b798d549ce71fca3e3b82ba::$prefixLengthsPsr4;
290
- $loader->prefixDirsPsr4 = ComposerStaticInitc340867a2b798d549ce71fca3e3b82ba::$prefixDirsPsr4;
291
- $loader->classMap = ComposerStaticInitc340867a2b798d549ce71fca3e3b82ba::$classMap;
292
 
293
  }, null, ClassLoader::class);
294
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInit0f0dfaf6382a05d192bd889e5f7168f9
8
  {
9
  public static $files = array (
10
  'fda73876e8be17735f680f484cec1679' => __DIR__ . '/../..' . '/src/Functions/custom-settings-api.php',
286
  public static function getInitializer(ClassLoader $loader)
287
  {
288
  return \Closure::bind(function () use ($loader) {
289
+ $loader->prefixLengthsPsr4 = ComposerStaticInit0f0dfaf6382a05d192bd889e5f7168f9::$prefixLengthsPsr4;
290
+ $loader->prefixDirsPsr4 = ComposerStaticInit0f0dfaf6382a05d192bd889e5f7168f9::$prefixDirsPsr4;
291
+ $loader->classMap = ComposerStaticInit0f0dfaf6382a05d192bd889e5f7168f9::$classMap;
292
 
293
  }, null, ClassLoader::class);
294
  }
vendor/composer/installed.php CHANGED
@@ -6,7 +6,7 @@
6
  'aliases' =>
7
  array (
8
  ),
9
- 'reference' => '4f0c3976c72f377530f47c02351f5d5119d25c78',
10
  'name' => '__root__',
11
  ),
12
  'versions' =>
@@ -18,7 +18,7 @@
18
  'aliases' =>
19
  array (
20
  ),
21
- 'reference' => '4f0c3976c72f377530f47c02351f5d5119d25c78',
22
  ),
23
  'collizo4sky/persist-admin-notices-dismissal' =>
24
  array (
6
  'aliases' =>
7
  array (
8
  ),
9
+ 'reference' => '9b520d65a2664f9459fb4987528469dbcf6d2475',
10
  'name' => '__root__',
11
  ),
12
  'versions' =>
18
  'aliases' =>
19
  array (
20
  ),
21
+ 'reference' => '9b520d65a2664f9459fb4987528469dbcf6d2475',
22
  ),
23
  'collizo4sky/persist-admin-notices-dismissal' =>
24
  array (
wp-user-avatar.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: ProfilePress
4
  * Plugin URI: https://profilepress.net
5
  * Description: The modern WordPress membership and user profile plugin.
6
- * Version: 3.1.8
7
  * Author: ProfilePress Team
8
  * Author URI: https://profilepress.net
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.1.8');
18
 
19
  require __DIR__ . '/vendor/autoload.php';
20
 
3
  * Plugin Name: ProfilePress
4
  * Plugin URI: https://profilepress.net
5
  * Description: The modern WordPress membership and user profile plugin.
6
+ * Version: 3.1.9
7
  * Author: ProfilePress Team
8
  * Author URI: https://profilepress.net
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.1.9');
18
 
19
  require __DIR__ . '/vendor/autoload.php';
20