Ultimate Member – User Profile & Membership Plugin - Version 2.0.12

Version Description

Download this release

Release Info

Developer nsinelnikov
Plugin Icon 128x128 Ultimate Member – User Profile & Membership Plugin
Version 2.0.12
Comparing to
See all releases

Code changes from version 2.0.17 to 2.0.12

Files changed (46) hide show
  1. assets/css/um-profile.css +12 -24
  2. assets/css/um-responsive.css +0 -8
  3. assets/js/um-gdpr.js +0 -22
  4. assets/js/um-gdpr.min.js +0 -1
  5. assets/js/um-scripts.js +0 -4
  6. includes/admin/class-admin.php +0 -24
  7. includes/admin/core/class-admin-gdpr.php +0 -316
  8. includes/admin/core/class-admin-menu.php +0 -15
  9. includes/admin/core/class-admin-notices.php +2 -33
  10. includes/admin/core/class-admin-settings.php +3 -5
  11. includes/admin/core/class-admin-upgrade.php +6 -34
  12. includes/admin/core/packages/2.0-beta1/email_templates.php +2 -2
  13. includes/admin/core/packages/2.0-beta1/menus.php +1 -7
  14. includes/admin/templates/dashboard/cache.php +7 -6
  15. includes/admin/templates/dashboard/upgrade-request.php +0 -6
  16. includes/admin/templates/form/login_customize.php +1 -1
  17. includes/admin/templates/form/profile_customize.php +1 -1
  18. includes/admin/templates/form/register_customize.php +1 -1
  19. includes/admin/templates/form/register_gdpr.php +0 -71
  20. includes/admin/templates/gdpr.php +0 -40
  21. includes/class-dependencies.php +0 -1
  22. includes/class-init.php +43 -49
  23. includes/core/class-access.php +1 -62
  24. includes/core/class-account.php +3 -2
  25. includes/core/class-builtin.php +1 -1
  26. includes/core/class-enqueue.php +1 -3
  27. includes/core/class-fields.php +36 -91
  28. includes/core/class-form.php +14 -2
  29. includes/core/class-gdpr.php +0 -86
  30. includes/core/class-mail.php +18 -6
  31. includes/core/class-permalinks.php +18 -4
  32. includes/core/class-profile.php +0 -7
  33. includes/core/class-rest-api.php +9 -9
  34. includes/core/class-user.php +63 -104
  35. includes/core/um-actions-core.php +1 -3
  36. includes/core/um-actions-form.php +5 -6
  37. includes/core/um-actions-password.php +19 -0
  38. includes/core/um-actions-profile.php +23 -34
  39. includes/core/um-actions-register.php +6 -45
  40. includes/core/um-filters-avatars.php +59 -0
  41. includes/core/um-filters-fields.php +11 -63
  42. includes/core/um-navmenu.php +2 -3
  43. includes/um-short-functions.php +146 -168
  44. readme.txt +1 -50
  45. templates/gdpr-register.php +0 -44
  46. ultimate-member.php +1 -1
assets/css/um-profile.css CHANGED
@@ -393,31 +393,13 @@ font-weight: normal;
393
  border-bottom: 0 !important;
394
  }
395
 
396
- .um-profile-nav-item.without-icon a {
397
- padding-left: 10px;
398
- }
399
- .um-profile-nav-item.without-icon span.title {
400
- padding-left: 0;
401
- }
402
- .um-profile-nav-item.without-icon i {
403
- display: none;
404
- }
405
 
406
- .um-profile-nav-item a:hover {
407
- background: #555;
408
- }
409
- .um-profile-nav-item i {
410
- font-size: 18px;
411
- height: 18px;
412
- line-height: 18px;
413
- position: absolute;
414
- display: block;
415
- top: 8px;
416
- left: 10px;
417
- }
418
- .um-profile-nav-item span.title {
419
- padding-left: 5px;
420
- }
421
  .um-profile-nav-item span.count {
422
  font-size: 12px;
423
  font-weight: 300;
@@ -563,4 +545,10 @@ font-weight: normal;
563
 
564
  .um-profile.um-viewing .um-field-checkbox, .um-profile.um-viewing .um-field-radio{
565
  cursor: default !important;
 
 
 
 
 
 
566
  }
393
  border-bottom: 0 !important;
394
  }
395
 
396
+ .um-profile-nav-item.without-icon a {padding-left: 10px}
397
+ .um-profile-nav-item.without-icon span.title {padding-left: 0}
398
+ .um-profile-nav-item.without-icon i {display: none}
 
 
 
 
 
 
399
 
400
+ .um-profile-nav-item a:hover {background: #555}
401
+ .um-profile-nav-item i {font-size: 18px;height: 18px;line-height: 18px;position: absolute;display: block;top: 8px;left: 10px}
402
+ .um-profile-nav-item span.title {padding-left: 5px}
 
 
 
 
 
 
 
 
 
 
 
 
403
  .um-profile-nav-item span.count {
404
  font-size: 12px;
405
  font-weight: 300;
545
 
546
  .um-profile.um-viewing .um-field-checkbox, .um-profile.um-viewing .um-field-radio{
547
  cursor: default !important;
548
+ }
549
+
550
+ @media (min-width: 880px) {
551
+ .um-profile-nav-item .um-tip-n {
552
+ display: none !important;
553
+ }
554
  }
assets/css/um-responsive.css CHANGED
@@ -6,14 +6,6 @@
6
  display: none;
7
  }
8
 
9
- .um-profile-nav-item a.uimob340-show,
10
- .um-profile-nav-item a.uimob500-show,
11
- .um-profile-nav-item a.uimob800-show,
12
- .um-profile-nav-item a.uimob960-show
13
- {
14
- display: none;
15
- }
16
-
17
  div.uimob340 .uimob340-show,
18
  div.uimob500 .uimob500-show,
19
  div.uimob800 .uimob800-show,
6
  display: none;
7
  }
8
 
 
 
 
 
 
 
 
 
9
  div.uimob340 .uimob340-show,
10
  div.uimob500 .uimob500-show,
11
  div.uimob800 .uimob800-show,
assets/js/um-gdpr.js DELETED
@@ -1,22 +0,0 @@
1
- (function( $ ) {
2
- 'use strict';
3
-
4
- $(document).on('click', "a.um-toggle-gdpr" ,function() {
5
-
6
- var me = jQuery(this);
7
-
8
- $( ".um-gdpr-content" ).toggle( "fast", function() {
9
- if( $( ".um-gdpr-content" ).is(':visible') ){
10
- me.text( me.data('toggle-hide') );
11
- }
12
-
13
- if( $( ".um-gdpr-content" ).is(':hidden') ){
14
- me.text( me.data('toggle-show') );
15
- }
16
-
17
- });
18
-
19
- });
20
-
21
-
22
- })( jQuery );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/js/um-gdpr.min.js DELETED
@@ -1 +0,0 @@
1
- !function(t){"use strict";t(document).on("click","a.um-toggle-gdpr",function(){var e=jQuery(this);t(".um-gdpr-content").toggle("fast",function(){t(".um-gdpr-content").is(":visible")&&e.text(e.data("toggle-hide")),t(".um-gdpr-content").is(":hidden")&&e.text(e.data("toggle-show"))})})}(jQuery);
 
assets/js/um-scripts.js CHANGED
@@ -1,7 +1,3 @@
1
- /*jQuery('body').on('error', '.um-avatar', function() {
2
- if( jQuery(this).data('load-error') != undefined ) return;
3
- jQuery(this).data('load-error', '1').attr('src', jQuery(this).data('default'));
4
- });*/
5
  jQuery(document).ready(function() {
6
 
7
  jQuery(document).on('click', '.um-dropdown a', function(e){
 
 
 
 
1
  jQuery(document).ready(function() {
2
 
3
  jQuery(document).on('click', '.um-dropdown a', function(e){
includes/admin/class-admin.php CHANGED
@@ -35,7 +35,6 @@ if ( ! class_exists( 'um\admin\Admin' ) ) {
35
 
36
  add_action( 'um_admin_do_action__user_cache', array( &$this, 'user_cache' ) );
37
  add_action( 'um_admin_do_action__purge_temp', array( &$this, 'purge_temp' ) );
38
- add_action( 'um_admin_do_action__manual_upgrades_request', array( &$this, 'manual_upgrades_request' ) );
39
  add_action( 'um_admin_do_action__duplicate_form', array( &$this, 'duplicate_form' ) );
40
  add_action( 'um_admin_do_action__um_language_downloader', array( &$this, 'um_language_downloader' ) );
41
  add_action( 'um_admin_do_action__um_hide_locale_notice', array( &$this, 'um_hide_notice' ) );
@@ -49,29 +48,6 @@ if ( ! class_exists( 'um\admin\Admin' ) ) {
49
  }
50
 
51
 
52
- function manual_upgrades_request() {
53
- if ( ! is_admin() || ! current_user_can( 'manage_options' ) ) {
54
- die();
55
- }
56
-
57
- $last_request = get_option( 'um_last_manual_upgrades_request', false );
58
-
59
- if ( empty( $last_request ) || time() > $last_request + DAY_IN_SECONDS ) {
60
-
61
- delete_transient( 'update_plugins' );
62
- delete_site_transient( 'update_plugins' );
63
-
64
- UM()->plugin_updater()->um_checklicenses();
65
-
66
- update_option( 'um_last_manual_upgrades_request', time() );
67
-
68
- $url = add_query_arg( array( 'page' => 'ultimatemember', 'update' => 'got_updates' ), admin_url( 'admin.php' ) );
69
- } else {
70
- $url = add_query_arg( array( 'page' => 'ultimatemember', 'update' => 'often_updates' ), admin_url( 'admin.php' ) );
71
- }
72
- exit( wp_redirect( $url ) );
73
- }
74
-
75
 
76
  /**
77
  * Clear all users cache
35
 
36
  add_action( 'um_admin_do_action__user_cache', array( &$this, 'user_cache' ) );
37
  add_action( 'um_admin_do_action__purge_temp', array( &$this, 'purge_temp' ) );
 
38
  add_action( 'um_admin_do_action__duplicate_form', array( &$this, 'duplicate_form' ) );
39
  add_action( 'um_admin_do_action__um_language_downloader', array( &$this, 'um_language_downloader' ) );
40
  add_action( 'um_admin_do_action__um_hide_locale_notice', array( &$this, 'um_hide_notice' ) );
48
  }
49
 
50
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
 
52
  /**
53
  * Clear all users cache
includes/admin/core/class-admin-gdpr.php DELETED
@@ -1,316 +0,0 @@
1
- <?php
2
- namespace um\admin\core;
3
-
4
- // Exit if accessed directly.
5
- if ( ! defined( 'ABSPATH' ) ) exit;
6
-
7
-
8
- if ( ! class_exists( 'um\admin\core\Admin_GDPR' ) ) {
9
-
10
-
11
- /**
12
- * Class Admin_GDPR
13
- * @package um\admin\core
14
- */
15
- class Admin_GDPR {
16
-
17
- /**
18
- * @var array
19
- */
20
- var $meta_associations = array();
21
-
22
-
23
- /**
24
- * Admin_GDPR constructor.
25
- */
26
- function __construct() {
27
- add_action( 'init', array( &$this, 'init_fields' ), 10 );
28
- add_action( 'admin_init', array( &$this, 'plugin_add_suggested_privacy_content' ), 20 );
29
- add_filter( 'wp_privacy_personal_data_exporters', array( &$this, 'plugin_register_exporters' ) );
30
- add_filter( 'wp_privacy_personal_data_erasers', array( &$this, 'plugin_register_erasers' ) );
31
-
32
- add_action( 'um_admin_custom_register_metaboxes', array( &$this, 'add_metabox_register' ) );
33
- }
34
-
35
-
36
- /**
37
- *
38
- */
39
- function add_metabox_register() {
40
- add_meta_box(
41
- "um-admin-form-register_gdpr",
42
- __( 'Privacy Policy', 'ultimate-member' ),
43
- array( UM()->metabox(), 'load_metabox_form' ),
44
- 'um_form',
45
- 'side',
46
- 'default'
47
- );
48
- }
49
-
50
-
51
- /**
52
- *
53
- */
54
- function init_fields() {
55
- $this->meta_associations = array(
56
-
57
- 'account_status' => __( 'Account Status', 'ultimate-member' ),
58
- 'submitted' => __( 'Submitted data on Registration', 'ultimate-member' ),
59
- 'form_id' => __( 'Registration Form ID', 'ultimate-member' ),
60
- 'timestamp' => __( 'Registration Timestamp', 'ultimate-member' ),
61
- 'request' => __( 'Registration Request', 'ultimate-member' ),
62
- '_wpnonce' => __( 'Registration Nonce', 'ultimate-member' ),
63
- '_wp_http_referer' => __( 'Registration HTTP referer', 'ultimate-member' ),
64
- 'role' => __( 'Community Role', 'ultimate-member' ),
65
- 'um_user_profile_url_slug_user_login' => __( 'Profile Slug "Username"', 'ultimate-member' ),
66
- 'um_user_profile_url_slug_name' => __( 'Profile Slug "First and Last Name with \'.\'"', 'ultimate-member' ),
67
- 'um_user_profile_url_slug_name_dash' => __( 'Profile Slug "First and Last Name with \'-\'"', 'ultimate-member' ),
68
- 'um_user_profile_url_slug_name_plus' => __( 'Profile Slug "First and Last Name with \'+\'"', 'ultimate-member' ),
69
- 'um_user_profile_url_slug_user_id' => __( 'Profile Slug "User ID"', 'ultimate-member' ),
70
- '_um_last_login' => __( 'Last Login Timestamp', 'ultimate-member' ),
71
-
72
- //Private content extension
73
- '_um_private_content_post_id' => __( 'Private Content Post ID', 'ultimate-member' ),
74
-
75
- //Verified Users extension
76
- '_um_verified' => __( 'Verified Account', 'ultimate-member' ),
77
-
78
- //Terms & Conditions extension
79
- 'use_terms_conditions_agreement' => __( 'Terms&Conditions Agreement', 'ultimate-member' ),
80
-
81
- //GDPR extension
82
- 'use_gdpr_agreement' => __( 'Privacy Policy Agreement', 'ultimate-member' ),
83
-
84
-
85
- );
86
-
87
- $all_fields = UM()->builtin()->all_user_fields( null, true );
88
- unset( $all_fields[0] );
89
-
90
- $all_fields = array_map( function( $value ) {
91
- return $value['title'];
92
- }, $all_fields );
93
-
94
- $this->meta_associations = array_merge( $this->meta_associations, $all_fields );
95
-
96
- /**
97
- * UM hook
98
- *
99
- * @type filter
100
- * @title um_gdpr_meta_associations
101
- * @description Exclude taxonomies for UM
102
- * @input_vars
103
- * [{"var":"$meta_associations","type":"array","desc":"Meta Keys Titles"}]
104
- * @change_log
105
- * ["Since: 2.0.14"]
106
- * @usage
107
- * <?php add_filter( 'um_gdpr_meta_associations', 'function_name', 10, 1 ); ?>
108
- * @example
109
- * <?php
110
- * add_filter( 'um_gdpr_meta_associations', 'my_gdpr_meta_associations', 10, 1 );
111
- * function my_gdpr_meta_associations( $meta_associations ) {
112
- * // your code here
113
- * return $meta_associations;
114
- * }
115
- * ?>
116
- */
117
- $this->meta_associations = apply_filters( 'um_gdpr_meta_associations', $this->meta_associations );
118
- }
119
-
120
-
121
- /**
122
- * Return the default suggested privacy policy content.
123
- *
124
- * @return string The default policy content.
125
- */
126
- function plugin_get_default_privacy_content() {
127
- ob_start();
128
-
129
- include UM()->admin()->templates_path . 'gdpr.php';
130
-
131
- return ob_get_clean();
132
- }
133
-
134
-
135
- /**
136
- * Add the suggested privacy policy text to the policy postbox.
137
- */
138
- function plugin_add_suggested_privacy_content() {
139
- $content = $this->plugin_get_default_privacy_content();
140
- wp_add_privacy_policy_content( ultimatemember_plugin_name, $content );
141
- }
142
-
143
-
144
- /**
145
- * Register exporter for Plugin user data.
146
- *
147
- * @see https://github.com/allendav/wp-privacy-requests/blob/master/EXPORT.md
148
- *
149
- * @param $exporters
150
- *
151
- * @return array
152
- */
153
- function plugin_register_exporters( $exporters ) {
154
- $exporters[] = array(
155
- 'exporter_friendly_name' => ultimatemember_plugin_name,
156
- 'callback' => array( &$this, 'data_exporter' )
157
- );
158
- return $exporters;
159
- }
160
-
161
-
162
- /**
163
- * Get user metadata in key => value array
164
- *
165
- *
166
- * @param $user_id
167
- *
168
- * @return array
169
- */
170
- function get_metadata( $user_id ) {
171
- global $wpdb;
172
-
173
- $metadata = $wpdb->get_results( $wpdb->prepare(
174
- "SELECT meta_key, meta_value
175
- FROM {$wpdb->usermeta}
176
- WHERE user_id = %d",
177
- $user_id
178
- ), ARRAY_A );
179
-
180
- $filtered = array();
181
- foreach ( $metadata as $data ) {
182
- if ( in_array( $data['meta_key'], array_keys( $this->meta_associations ) ) ) {
183
- $filtered[] = array(
184
- 'key' => $data['meta_key'],
185
- 'name' => $this->meta_associations[ $data['meta_key'] ],
186
- //'value' => maybe_unserialize( $data['meta_value'] ),
187
- 'value' => $data['meta_value'],
188
- );
189
- }
190
- }
191
-
192
- return $filtered;
193
- }
194
-
195
-
196
- /**
197
- * Exporter for Plugin user data.
198
- *
199
- * @see https://github.com/allendav/wp-privacy-requests/blob/master/EXPORT.md
200
- *
201
- * @param $email_address
202
- * @param int $page
203
- *
204
- * @return array
205
- */
206
- function data_exporter( $email_address, $page = 1 ) {
207
- $export_items = array();
208
- $user = get_user_by( 'email', $email_address );
209
-
210
- if ( $user && $user->ID ) {
211
- // Most item IDs should look like postType-postID
212
- // If you don't have a post, comment or other ID to work with,
213
- // use a unique value to avoid having this item's export
214
- // combined in the final report with other items of the same id
215
- $item_id = "ultimate-member-{$user->ID}";
216
-
217
- // Core group IDs include 'comments', 'posts', etc.
218
- // But you can add your own group IDs as needed
219
- $group_id = 'ultimate-member';
220
-
221
- // Optional group label. Core provides these for core groups.
222
- // If you define your own group, the first exporter to
223
- // include a label will be used as the group label in the
224
- // final exported report
225
- $group_label = ultimatemember_plugin_name;
226
-
227
- // Plugins can add as many items in the item data array as they want
228
- //$data = array();
229
-
230
- $data = $this->get_metadata( $user->ID );
231
-
232
- if ( ! empty( $data ) ) {
233
- // Add this group of items to the exporters data array.
234
- $export_items[] = array(
235
- 'group_id' => $group_id,
236
- 'group_label' => $group_label,
237
- 'item_id' => $item_id,
238
- 'data' => $data,
239
- );
240
- }
241
- }
242
- // Returns an array of exported items for this pass, but also a boolean whether this exporter is finished.
243
- //If not it will be called again with $page increased by 1.
244
- return array(
245
- 'data' => $export_items,
246
- 'done' => true,
247
- );
248
- }
249
-
250
-
251
- /**
252
- * Register eraser for Plugin user data.
253
- *
254
- * @param array $erasers
255
- *
256
- * @return array
257
- */
258
- function plugin_register_erasers( $erasers = array() ) {
259
- $erasers[] = array(
260
- 'eraser_friendly_name' => ultimatemember_plugin_name,
261
- 'callback' => array( &$this, 'data_eraser' )
262
- );
263
- return $erasers;
264
- }
265
-
266
-
267
- /**
268
- * Eraser for Plugin user data.
269
- *
270
- * @param $email_address
271
- * @param int $page
272
- *
273
- * @return array
274
- */
275
- function data_eraser( $email_address, $page = 1 ) {
276
- if ( empty( $email_address ) ) {
277
- return array(
278
- 'items_removed' => false,
279
- 'items_retained' => false,
280
- 'messages' => array(),
281
- 'done' => true,
282
- );
283
- }
284
-
285
- $user = get_user_by( 'email', $email_address );
286
- $messages = array();
287
- $items_removed = false;
288
- $items_retained = false;
289
-
290
- if ( $user && $user->ID ) {
291
- $data = $this->get_metadata( $user->ID );
292
-
293
- foreach ( $data as $metadata ) {
294
- $deleted = delete_user_meta( $user->ID, $metadata['key'] );
295
- if ( $deleted ) {
296
- $items_removed = true;
297
- } else {
298
- $messages[] = sprintf( __( 'Your %s was unable to be removed at this time.', 'ultimate-member' ), $metadata['name'] );
299
- $items_retained = true;
300
- }
301
- }
302
- }
303
-
304
- // Returns an array of exported items for this pass, but also a boolean whether this exporter is finished.
305
- //If not it will be called again with $page increased by 1.
306
- return array(
307
- 'items_removed' => $items_removed,
308
- 'items_retained' => $items_retained,
309
- 'messages' => $messages,
310
- 'done' => true,
311
- );
312
- }
313
-
314
- }
315
-
316
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/admin/core/class-admin-menu.php CHANGED
@@ -206,7 +206,6 @@ if ( ! class_exists( 'um\admin\core\Admin_Menu' ) ) {
206
  add_meta_box( 'um-metaboxes-mainbox-1', __( 'Latest from our blog', 'ultimate-member' ), array( &$this, 'um_news' ), $this->pagehook, 'normal', 'core' );
207
 
208
  add_meta_box( 'um-metaboxes-sidebox-1', __( 'Purge Temp Files', 'ultimate-member' ), array( &$this, 'purge_temp' ), $this->pagehook, 'side', 'core' );
209
-
210
  add_meta_box( 'um-metaboxes-sidebox-2', __( 'User Cache', 'ultimate-member' ), array( &$this, 'user_cache' ), $this->pagehook, 'side', 'core' );
211
 
212
  if ( $this->language_avaialable_not_installed() ) {
@@ -216,12 +215,6 @@ if ( ! class_exists( 'um\admin\core\Admin_Menu' ) ) {
216
  } else if ( $this->language_not_available() ) {
217
  add_meta_box( 'um-metaboxes-sidebox-2', __( 'Language', 'ultimate-member' ), array( &$this, 'ct_language' ), $this->pagehook, 'side', 'core' );
218
  }
219
-
220
- //If there are active and licensed extensions - show metabox for upgrade it
221
- $exts = UM()->plugin_updater()->um_get_active_plugins();
222
- if ( 0 < count( $exts ) ) {
223
- add_meta_box( 'um-metaboxes-sidebox-3', __( 'Upgrade\'s Manual Request', 'ultimate-member' ), array( &$this, 'upgrade_request' ), $this->pagehook, 'side', 'core' );
224
- }
225
  }
226
 
227
 
@@ -276,14 +269,6 @@ if ( ! class_exists( 'um\admin\core\Admin_Menu' ) ) {
276
  }
277
 
278
 
279
- /**
280
- *
281
- */
282
- function upgrade_request() {
283
- include_once UM()->admin()->templates_path . 'dashboard/upgrade-request.php';
284
- }
285
-
286
-
287
  /**
288
  *
289
  */
206
  add_meta_box( 'um-metaboxes-mainbox-1', __( 'Latest from our blog', 'ultimate-member' ), array( &$this, 'um_news' ), $this->pagehook, 'normal', 'core' );
207
 
208
  add_meta_box( 'um-metaboxes-sidebox-1', __( 'Purge Temp Files', 'ultimate-member' ), array( &$this, 'purge_temp' ), $this->pagehook, 'side', 'core' );
 
209
  add_meta_box( 'um-metaboxes-sidebox-2', __( 'User Cache', 'ultimate-member' ), array( &$this, 'user_cache' ), $this->pagehook, 'side', 'core' );
210
 
211
  if ( $this->language_avaialable_not_installed() ) {
215
  } else if ( $this->language_not_available() ) {
216
  add_meta_box( 'um-metaboxes-sidebox-2', __( 'Language', 'ultimate-member' ), array( &$this, 'ct_language' ), $this->pagehook, 'side', 'core' );
217
  }
 
 
 
 
 
 
218
  }
219
 
220
 
269
  }
270
 
271
 
 
 
 
 
 
 
 
 
272
  /**
273
  *
274
  */
includes/admin/core/class-admin-notices.php CHANGED
@@ -38,7 +38,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Notices' ) ) {
38
  $this->localize_note();
39
  $this->show_update_messages();
40
  $this->check_wrong_install_folder();
41
- //$this->admin_notice_tracking();
42
  $this->need_upgrade();
43
  $this->check_wrong_licenses();
44
 
@@ -225,32 +225,9 @@ if ( ! class_exists( 'um\admin\core\Admin_Notices' ) ) {
225
  function old_extensions_notice() {
226
  $show = false;
227
 
228
- $old_extensions = array(
229
- 'bbpress',
230
- 'followers',
231
- 'friends',
232
- 'instagram',
233
- 'mailchimp',
234
- 'messaging',
235
- 'mycred',
236
- 'notices',
237
- 'notifications',
238
- 'online',
239
- 'private-content',
240
- 'profile-completeness',
241
- 'recaptcha',
242
- 'reviews',
243
- 'social-activity',
244
- 'social-login',
245
- 'terms-conditions',
246
- 'user-tags',
247
- 'verified-users',
248
- 'woocommerce',
249
- );
250
-
251
  $slugs = array_map( function( $item ) {
252
  return 'um-' . $item . '/um-' . $item . '.php';
253
- }, $old_extensions );
254
 
255
  $active_plugins = UM()->dependencies()->get_active_plugins();
256
  foreach ( $slugs as $slug ) {
@@ -420,14 +397,6 @@ if ( ! class_exists( 'um\admin\core\Admin_Notices' ) ) {
420
  $messages[0]['content'] = __( 'Your user cache is now removed.', 'ultimate-member' );
421
  break;
422
 
423
- case 'got_updates':
424
- $messages[0]['content'] = __( 'You got the latest upgrades.', 'ultimate-member' );
425
- break;
426
-
427
- case 'often_updates':
428
- $messages[0]['err_content'] = __( 'Try again later. You can run this action once daily.', 'ultimate-member' );
429
- break;
430
-
431
  case 'form_duplicated':
432
  $messages[0]['content'] = __( 'The form has been duplicated successfully.', 'ultimate-member' );
433
  break;
38
  $this->localize_note();
39
  $this->show_update_messages();
40
  $this->check_wrong_install_folder();
41
+ $this->admin_notice_tracking();
42
  $this->need_upgrade();
43
  $this->check_wrong_licenses();
44
 
225
  function old_extensions_notice() {
226
  $show = false;
227
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
228
  $slugs = array_map( function( $item ) {
229
  return 'um-' . $item . '/um-' . $item . '.php';
230
+ }, array_keys( UM()->dependencies()->ext_required_version ) );
231
 
232
  $active_plugins = UM()->dependencies()->get_active_plugins();
233
  foreach ( $slugs as $slug ) {
397
  $messages[0]['content'] = __( 'Your user cache is now removed.', 'ultimate-member' );
398
  break;
399
 
 
 
 
 
 
 
 
 
400
  case 'form_duplicated':
401
  $messages[0]['content'] = __( 'The form has been duplicated successfully.', 'ultimate-member' );
402
  break;
includes/admin/core/class-admin-settings.php CHANGED
@@ -1197,14 +1197,12 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) {
1197
  do_action( "um_settings_page_" . $current_tab . "_" . $current_subtab . "_before_section" );
1198
 
1199
  $section_fields = $this->get_section_fields( $current_tab, $current_subtab );
1200
- $settings_section = $this->render_settings_section( $section_fields, $current_tab, $current_subtab );
1201
 
1202
  /**
1203
  * UM hook
1204
  *
1205
  * @type filter
1206
  * @title um_settings_section_{$current_tab}_{$current_subtab}_content
1207
- *
1208
  * @description Render settings section
1209
  * @input_vars
1210
  * [{"var":"$content","type":"string","desc":"Section content"},
@@ -1222,7 +1220,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) {
1222
  * ?>
1223
  */
1224
  echo apply_filters( 'um_settings_section_' . $current_tab . '_' . $current_subtab . '_content',
1225
- $settings_section,
1226
  $section_fields
1227
  );
1228
 
@@ -1260,7 +1258,6 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) {
1260
  do_action( "um_settings_page_" . $current_tab . "_" . $current_subtab . "_before_section" );
1261
 
1262
  $section_fields = $this->get_section_fields( $current_tab, $current_subtab );
1263
- $settings_section = $this->render_settings_section( $section_fields, $current_tab, $current_subtab );
1264
 
1265
  /**
1266
  * UM hook
@@ -1284,7 +1281,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) {
1284
  * ?>
1285
  */
1286
  echo apply_filters( 'um_settings_section_' . $current_tab . '_' . $current_subtab . '_content',
1287
- $settings_section,
1288
  $section_fields
1289
  );
1290
  ?>
@@ -2184,6 +2181,7 @@ Cache User Profile: <?php if( UM()->options()->get( 'um_profile_object_cache_s
2184
  Generate Slugs on Directories: <?php if( UM()->options()->get( 'um_generate_slug_in_directory' ) == 1 ){ echo "No"; }else{ echo "Yes"; } echo "\n"; ?>
2185
  Rewrite Rules: <?php if( UM()->options()->get( 'um_flush_stop' ) == 1 ){ echo "No"; }else{ echo "Yes"; } echo "\n"; ?>
2186
  Force UTF-8 Encoding: <?php if( UM()->options()->get( 'um_force_utf8_strings' ) == 1 ){ echo "Yes"; }else{ echo "No"; } echo "\n"; ?>
 
2187
  JS/CSS Compression: <?php if ( defined('SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) { echo "Yes"; }else{ echo "No"; } echo "\n"; ?>
2188
  <?php if( is_multisite() ): ?>
2189
  Network Structure: <?php echo UM()->options()->get( 'network_permalink_structure' ). "\n"; ?>
1197
  do_action( "um_settings_page_" . $current_tab . "_" . $current_subtab . "_before_section" );
1198
 
1199
  $section_fields = $this->get_section_fields( $current_tab, $current_subtab );
 
1200
 
1201
  /**
1202
  * UM hook
1203
  *
1204
  * @type filter
1205
  * @title um_settings_section_{$current_tab}_{$current_subtab}_content
 
1206
  * @description Render settings section
1207
  * @input_vars
1208
  * [{"var":"$content","type":"string","desc":"Section content"},
1220
  * ?>
1221
  */
1222
  echo apply_filters( 'um_settings_section_' . $current_tab . '_' . $current_subtab . '_content',
1223
+ $this->render_settings_section( $section_fields, $current_tab, $current_subtab ),
1224
  $section_fields
1225
  );
1226
 
1258
  do_action( "um_settings_page_" . $current_tab . "_" . $current_subtab . "_before_section" );
1259
 
1260
  $section_fields = $this->get_section_fields( $current_tab, $current_subtab );
 
1261
 
1262
  /**
1263
  * UM hook
1281
  * ?>
1282
  */
1283
  echo apply_filters( 'um_settings_section_' . $current_tab . '_' . $current_subtab . '_content',
1284
+ $this->render_settings_section( $section_fields, $current_tab, $current_subtab ),
1285
  $section_fields
1286
  );
1287
  ?>
2181
  Generate Slugs on Directories: <?php if( UM()->options()->get( 'um_generate_slug_in_directory' ) == 1 ){ echo "No"; }else{ echo "Yes"; } echo "\n"; ?>
2182
  Rewrite Rules: <?php if( UM()->options()->get( 'um_flush_stop' ) == 1 ){ echo "No"; }else{ echo "Yes"; } echo "\n"; ?>
2183
  Force UTF-8 Encoding: <?php if( UM()->options()->get( 'um_force_utf8_strings' ) == 1 ){ echo "Yes"; }else{ echo "No"; } echo "\n"; ?>
2184
+ Time Check Security: <?php if( UM()->options()->get( 'enable_timebot' ) == 1 ){ echo "Yes"; }else{ echo "No"; } echo "\n"; ?>
2185
  JS/CSS Compression: <?php if ( defined('SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) { echo "Yes"; }else{ echo "No"; } echo "\n"; ?>
2186
  <?php if( is_multisite() ): ?>
2187
  Network Structure: <?php echo UM()->options()->get( 'network_permalink_structure' ). "\n"; ?>
includes/admin/core/class-admin-upgrade.php CHANGED
@@ -17,12 +17,6 @@ if ( ! class_exists( 'um\admin\core\Admin_Upgrade' ) ) {
17
  class Admin_Upgrade {
18
 
19
 
20
- /**
21
- * @var null
22
- */
23
- protected static $instance = null;
24
-
25
-
26
  /**
27
  * @var
28
  */
@@ -37,25 +31,6 @@ if ( ! class_exists( 'um\admin\core\Admin_Upgrade' ) ) {
37
  var $packages_dir;
38
 
39
 
40
- /**
41
- * Main Admin_Upgrade Instance
42
- *
43
- * Ensures only one instance of UM is loaded or can be loaded.
44
- *
45
- * @since 1.0
46
- * @static
47
- * @see UM()
48
- * @return Admin_Upgrade - Main instance
49
- */
50
- static public function instance() {
51
- if ( is_null( self::$instance ) ) {
52
- self::$instance = new self();
53
- }
54
-
55
- return self::$instance;
56
- }
57
-
58
-
59
  /**
60
  * Admin_Upgrade constructor.
61
  */
@@ -64,14 +39,11 @@ if ( ! class_exists( 'um\admin\core\Admin_Upgrade' ) ) {
64
  $this->necessary_packages = $this->need_run_upgrades();
65
 
66
  if ( ! empty( $this->necessary_packages ) ) {
 
67
  add_action( 'admin_menu', array( $this, 'admin_menu' ), 0 );
68
 
69
- if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
70
- $this->init_packages_ajax();
71
-
72
- add_action( 'wp_ajax_um_run_package', array( $this, 'ajax_run_package' ) );
73
- add_action( 'wp_ajax_um_get_packages', array( $this, 'ajax_get_packages' ) );
74
- }
75
  }
76
 
77
  //add_action( 'in_plugin_update_message-' . um_plugin, array( $this, 'in_plugin_update_message' ) );
@@ -171,7 +143,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Upgrade' ) ) {
171
  foreach ( $this->necessary_packages as $package ) {
172
  $hooks_file = $this->packages_dir . DIRECTORY_SEPARATOR . $package . DIRECTORY_SEPARATOR . 'hooks.php';
173
  if ( file_exists( $hooks_file ) ) {
174
- $pack_ajax_hooks = include_once $hooks_file;
175
 
176
  foreach ( $pack_ajax_hooks as $action => $function ) {
177
  add_action( 'wp_ajax_um_' . $action, "um_upgrade_$function" );
@@ -188,7 +160,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Upgrade' ) ) {
188
  foreach ( $this->necessary_packages as $package ) {
189
  $handlers_file = $this->packages_dir . DIRECTORY_SEPARATOR . $package . DIRECTORY_SEPARATOR . 'functions.php';
190
  if ( file_exists( $handlers_file ) ) {
191
- include_once $handlers_file;
192
  }
193
  }
194
  }
@@ -318,7 +290,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Upgrade' ) ) {
318
  exit('');
319
  } else {
320
  ob_start();
321
- include_once $this->packages_dir . DIRECTORY_SEPARATOR . $_POST['pack'] . DIRECTORY_SEPARATOR . 'init.php';
322
  ob_get_flush();
323
  exit;
324
  }
17
  class Admin_Upgrade {
18
 
19
 
 
 
 
 
 
 
20
  /**
21
  * @var
22
  */
31
  var $packages_dir;
32
 
33
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
  /**
35
  * Admin_Upgrade constructor.
36
  */
39
  $this->necessary_packages = $this->need_run_upgrades();
40
 
41
  if ( ! empty( $this->necessary_packages ) ) {
42
+ $this->init_packages_ajax();
43
  add_action( 'admin_menu', array( $this, 'admin_menu' ), 0 );
44
 
45
+ add_action( 'wp_ajax_um_run_package', array( $this, 'ajax_run_package' ) );
46
+ add_action( 'wp_ajax_um_get_packages', array( $this, 'ajax_get_packages' ) );
 
 
 
 
47
  }
48
 
49
  //add_action( 'in_plugin_update_message-' . um_plugin, array( $this, 'in_plugin_update_message' ) );
143
  foreach ( $this->necessary_packages as $package ) {
144
  $hooks_file = $this->packages_dir . DIRECTORY_SEPARATOR . $package . DIRECTORY_SEPARATOR . 'hooks.php';
145
  if ( file_exists( $hooks_file ) ) {
146
+ $pack_ajax_hooks = include $hooks_file;
147
 
148
  foreach ( $pack_ajax_hooks as $action => $function ) {
149
  add_action( 'wp_ajax_um_' . $action, "um_upgrade_$function" );
160
  foreach ( $this->necessary_packages as $package ) {
161
  $handlers_file = $this->packages_dir . DIRECTORY_SEPARATOR . $package . DIRECTORY_SEPARATOR . 'functions.php';
162
  if ( file_exists( $handlers_file ) ) {
163
+ include $handlers_file;
164
  }
165
  }
166
  }
290
  exit('');
291
  } else {
292
  ob_start();
293
+ include $this->packages_dir . DIRECTORY_SEPARATOR . $_POST['pack'] . DIRECTORY_SEPARATOR . 'init.php';
294
  ob_get_flush();
295
  exit;
296
  }
includes/admin/core/packages/2.0-beta1/email_templates.php CHANGED
@@ -25,8 +25,8 @@ foreach ( $emails as $email_key => $value ) {
25
  } else {
26
  $setting_value = UM()->options()->get( $email_key );
27
 
28
- $fp = @fopen( $theme_template_path, "w" );
29
- $result = @fputs( $fp, $setting_value );
30
  fclose( $fp );
31
  }
32
  } else {
25
  } else {
26
  $setting_value = UM()->options()->get( $email_key );
27
 
28
+ $fp = fopen( $theme_template_path, "w" );
29
+ $result = fputs( $fp, $setting_value );
30
  fclose( $fp );
31
  }
32
  } else {
includes/admin/core/packages/2.0-beta1/menus.php CHANGED
@@ -18,15 +18,9 @@ $menus = get_posts( array(
18
  foreach ( $menus as $menu ) {
19
  $menu_roles = get_post_meta( $menu->ID, 'menu-item-um_nav_roles', true );
20
 
21
- if( !is_array( $menu_roles ) ) {
22
- $menu_roles = array();
23
- }
24
  foreach ( $menu_roles as $i => $role_k ) {
25
- if( $role_k != '' && isset( $roles_associations[ $role_k ] ) ) {
26
- $menu_roles[ $i ] = $roles_associations[ $role_k ];
27
- }
28
  }
29
 
30
-
31
  update_post_meta( $menu->ID, 'menu-item-um_nav_roles', $menu_roles );
32
  }
18
  foreach ( $menus as $menu ) {
19
  $menu_roles = get_post_meta( $menu->ID, 'menu-item-um_nav_roles', true );
20
 
 
 
 
21
  foreach ( $menu_roles as $i => $role_k ) {
22
+ $menu_roles[ $i ] = $roles_associations[ $role_k ];
 
 
23
  }
24
 
 
25
  update_post_meta( $menu->ID, 'menu-item-um_nav_roles', $menu_roles );
26
  }
includes/admin/templates/dashboard/cache.php CHANGED
@@ -1,10 +1,11 @@
1
- <?php global $wpdb;
2
 
3
- $count = $wpdb->get_var(
4
- "SELECT COUNT( option_id )
5
- FROM {$wpdb->options}
6
- WHERE option_name LIKE 'um_cache_userdata_%'"
7
- ); ?>
 
8
 
9
  <p><?php _e( 'Run this task from time to time to keep your DB clean.', 'ultimate-member' ) ?></p>
10
  <p>
1
+ <?php $all_options = wp_load_alloptions();
2
 
3
+ $count = 0;
4
+ foreach ( $all_options as $k => $v ) {
5
+ if ( strstr( $k, 'um_cache_userdata_' ) !== false ) {
6
+ $count++;
7
+ }
8
+ } ?>
9
 
10
  <p><?php _e( 'Run this task from time to time to keep your DB clean.', 'ultimate-member' ) ?></p>
11
  <p>
includes/admin/templates/dashboard/upgrade-request.php DELETED
@@ -1,6 +0,0 @@
1
- <p><?php _e( 'Run this task from time to time if you have issues with WP Cron and need to get UM extension updates.', 'ultimate-member' ) ?></p>
2
- <p>
3
- <a href="<?php echo add_query_arg( 'um_adm_action', 'manual_upgrades_request' ); ?>" class="button">
4
- <?php _e( 'Get latest versions', 'ultimate-member' ) ?>
5
- </a>
6
- </p>
 
 
 
 
 
 
includes/admin/templates/form/login_customize.php CHANGED
@@ -65,7 +65,7 @@
65
  array(
66
  'id' => '_um_login_secondary_btn_word',
67
  'type' => 'text',
68
- 'label' => __( 'Secondary Button Text', 'ultimate-member' ),
69
  'tooltip' => __( 'Customize the button text', 'ultimate-member' ),
70
  'value' => UM()->query()->get_meta_value( '_um_login_secondary_btn_word', null, UM()->options()->get( 'login_secondary_btn_word' ) ),
71
  'conditional' => array( '_um_login_secondary_btn', '=', 1 )
65
  array(
66
  'id' => '_um_login_secondary_btn_word',
67
  'type' => 'text',
68
+ 'label' => __( 'Primary Button Text', 'ultimate-member' ),
69
  'tooltip' => __( 'Customize the button text', 'ultimate-member' ),
70
  'value' => UM()->query()->get_meta_value( '_um_login_secondary_btn_word', null, UM()->options()->get( 'login_secondary_btn_word' ) ),
71
  'conditional' => array( '_um_login_secondary_btn', '=', 1 )
includes/admin/templates/form/profile_customize.php CHANGED
@@ -90,7 +90,7 @@
90
  array(
91
  'id' => '_um_profile_secondary_btn_word',
92
  'type' => 'text',
93
- 'label' => __( 'Secondary Button Text', 'ultimate-member' ),
94
  'tooltip' => __( 'Customize the button text', 'ultimate-member' ),
95
  'value' => UM()->query()->get_meta_value( '_um_profile_secondary_btn_word', null, UM()->options()->get( 'profile_secondary_btn_word' ) ),
96
  'conditional' => array( '_um_profile_secondary_btn', '=', 1 )
90
  array(
91
  'id' => '_um_profile_secondary_btn_word',
92
  'type' => 'text',
93
+ 'label' => __( 'Primary Button Text', 'ultimate-member' ),
94
  'tooltip' => __( 'Customize the button text', 'ultimate-member' ),
95
  'value' => UM()->query()->get_meta_value( '_um_profile_secondary_btn_word', null, UM()->options()->get( 'profile_secondary_btn_word' ) ),
96
  'conditional' => array( '_um_profile_secondary_btn', '=', 1 )
includes/admin/templates/form/register_customize.php CHANGED
@@ -80,7 +80,7 @@
80
  array(
81
  'id' => '_um_register_secondary_btn_word',
82
  'type' => 'text',
83
- 'label' => __( 'Secondary Button Text', 'ultimate-member' ),
84
  'tooltip' => __( 'Customize the button text', 'ultimate-member' ),
85
  'value' => UM()->query()->get_meta_value( '_um_register_secondary_btn_word', null, UM()->options()->get( 'register_secondary_btn_word' ) ),
86
  'conditional' => array( '_um_register_secondary_btn', '=', 1 )
80
  array(
81
  'id' => '_um_register_secondary_btn_word',
82
  'type' => 'text',
83
+ 'label' => __( 'Primary Button Text', 'ultimate-member' ),
84
  'tooltip' => __( 'Customize the button text', 'ultimate-member' ),
85
  'value' => UM()->query()->get_meta_value( '_um_register_secondary_btn_word', null, UM()->options()->get( 'register_secondary_btn_word' ) ),
86
  'conditional' => array( '_um_register_secondary_btn', '=', 1 )
includes/admin/templates/form/register_gdpr.php DELETED
@@ -1,71 +0,0 @@
1
- <div class="um-admin-metabox">
2
-
3
- <?php
4
- $options = array(
5
- '' => __( 'Select page', 'ultimate-member' )
6
- );
7
-
8
- $pages = get_pages();
9
- foreach ( $pages as $page ) {
10
- $options[$page->ID] = $page->post_title;
11
- }
12
-
13
- UM()->admin_forms( array(
14
- 'class' => 'um-form-register-gdpr um-top-label',
15
- 'prefix_id' => 'form',
16
- 'fields' => array(
17
- array(
18
- 'id' => '_um_register_use_gdpr',
19
- 'type' => 'select',
20
- 'label' => __( 'Enable on this form', 'ultimate-member' ),
21
- 'value' => UM()->query()->get_meta_value( '_um_register_use_gdpr', null, '' ),
22
- 'options' => array(
23
- '0' => __( 'No', 'ultimate-member' ),
24
- '1' => __( 'Yes', 'ultimate-member' )
25
- ),
26
- ),
27
- array(
28
- 'id' => '_um_register_use_gdpr_content_id',
29
- 'type' => 'select',
30
- 'label' => __( 'Content', 'ultimate-member' ),
31
- 'value' => UM()->query()->get_meta_value('_um_register_use_gdpr_content_id', null, '' ),
32
- 'options' => $options,
33
- 'conditional' => array( '_um_register_use_gdpr', '=', '1' )
34
- ),
35
- array(
36
- 'id' => '_um_register_use_gdpr_toggle_show',
37
- 'type' => 'text',
38
- 'label' => __( 'Toggle Show text', 'ultimate-member' ),
39
- 'placeholder' => __( 'Show privacy policy', 'ultimate-member' ),
40
- 'value' => UM()->query()->get_meta_value('_um_register_use_gdpr_toggle_show', null, __( 'Show privacy policy', 'ultimate-member' ) ),
41
- 'conditional' => array( '_um_register_use_gdpr', '=', '1' )
42
- ),
43
- array(
44
- 'id' => '_um_register_use_gdpr_toggle_hide',
45
- 'type' => 'text',
46
- 'label' => __( 'Toggle Hide text', 'ultimate-member' ),
47
- 'placeholder' => __( 'Hide privacy policy', 'ultimate-member' ),
48
- 'value' => UM()->query()->get_meta_value('_um_register_use_gdpr_toggle_hide', null, __( 'Hide privacy policy', 'ultimate-member' ) ),
49
- 'conditional' => array( '_um_register_use_gdpr', '=', '1' )
50
- ),
51
- array(
52
- 'id' => '_um_register_use_gdpr_agreement',
53
- 'type' => 'text',
54
- 'label' => __( 'Checkbox agreement description', 'ultimate-member' ),
55
- 'placeholder' => __( 'Please confirm that you agree to our privacy policy', 'ultimate-member' ),
56
- 'value' => UM()->query()->get_meta_value('_um_register_use_gdpr_agreement', null, __( 'Please confirm that you agree to our privacy policy', 'ultimate-member' ) ),
57
- 'conditional' => array( '_um_register_use_gdpr', '=', '1' )
58
- ),
59
- array(
60
- 'id' => '_um_register_use_gdpr_error_text',
61
- 'type' => 'text',
62
- 'label' => __( 'Error Text', 'ultimate-member' ),
63
- 'placeholder' => __( 'Please confirm your acceptance of our privacy policy', 'ultimate-member' ),
64
- 'value' => UM()->query()->get_meta_value('_um_register_use_gdpr_error_text', null, __( 'Please confirm your acceptance of our privacy policy', 'ultimate-member' ) ),
65
- 'conditional' => array( '_um_register_use_gdpr', '=', '1' )
66
- )
67
- )
68
- ) )->render_form(); ?>
69
-
70
- <div class="um-admin-clear"></div>
71
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/admin/templates/gdpr.php DELETED
@@ -1,40 +0,0 @@
1
- <?php if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly. ?>
2
-
3
- <h2>
4
- <?php _e( 'What personal data we collect and why we collect it', 'ultimate-member' ); ?>
5
- </h2>
6
- <h3>
7
- <?php _e( 'Forms', 'ultimate-member' ); ?>
8
- </h3>
9
- <p>
10
- <?php printf( __( '%s provides you with forms for user registration, login and profiles.', 'ultimate-member' ), ultimatemember_plugin_name ); ?>
11
- </p>
12
- <p>
13
- <?php _e( 'Via these forms you are collecting personal data from your users.', 'ultimate-member' ); ?>
14
- </p>
15
- <p>
16
- <?php _e( 'You should include in your privacy policy what personal data is captured when someone submits/fills in one of the forms, why you collect it and what you do with this data and how long you keep it.', 'ultimate-member' ); ?>
17
- </p>
18
-
19
- <h2>
20
- <?php _e( 'How long we retain your data', 'ultimate-member' ); ?>
21
- </h2>
22
- <p>
23
- <?php _e( 'Registered user information is retained in your website’s database indefinitely.', 'ultimate-member' ); ?>
24
- </p>
25
- <p>
26
- <?php _e( 'Data can be exported or removed upon users request via the existing WordPress data exporter or eraser.', 'ultimate-member' ); ?>
27
- </p>
28
- <p>
29
- <?php _e( 'If syncing data to a 3rd party service (e.g Mailchimp via our MailChimp extension), data is retained there until unsubscribed or deleted.', 'ultimate-member' ); ?>
30
- </p>
31
-
32
- <h2>
33
- <?php _e( 'Where we send your data', 'ultimate-member' ); ?>
34
- </h2>
35
- <p>
36
- <?php printf( __( '%s does not send any user data outside of your site by default.', 'ultimate-member' ), ultimatemember_plugin_name ); ?>
37
- </p>
38
- <p>
39
- <?php _e( 'If you have extended the functionality of the plugin (e.g sending registered user data to MailChimp via our MailChimp extension, this user info may be passed to these external services. These services may be located abroad and outwith the EU.', 'ultimate-member' ); ?>
40
- </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/class-dependencies.php CHANGED
@@ -57,7 +57,6 @@ if ( ! class_exists( 'um\Dependencies' ) ) {
57
  'woocommerce' => '2.0.1',
58
  'restrict-content' => '2.0',
59
  'beaver-builder' => '2.0',
60
- 'gdpr' => '1.0.0',
61
  );
62
 
63
 
57
  'woocommerce' => '2.0.1',
58
  'restrict-content' => '2.0',
59
  'beaver-builder' => '2.0',
 
60
  );
61
 
62
 
includes/class-init.php CHANGED
@@ -30,7 +30,6 @@ if ( ! class_exists( 'UM' ) ) {
30
  * @method UM_Terms_Conditions_API Terms_Conditions_API()
31
  * @method UM_Private_Content_API Private_Content_API()
32
  * @method UM_User_Location_API User_Location_API()
33
- * @method UM_GDPR_API GDPR_API()
34
  *
35
  */
36
  final class UM extends UM_Functions {
@@ -386,6 +385,47 @@ if ( ! class_exists( 'UM' ) ) {
386
  }
387
 
388
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
389
  /**
390
  * Autoload UM classes handler
391
  *
@@ -485,7 +525,6 @@ if ( ! class_exists( 'UM' ) ) {
485
  $this->ajax_init();
486
  $this->metabox();
487
  $this->admin_upgrade()->init_packages_ajax_handlers();
488
- $this->admin_gdpr();
489
  } elseif ( $this->is_request( 'admin' ) ) {
490
  $this->admin();
491
  $this->admin_menu();
@@ -498,7 +537,6 @@ if ( ! class_exists( 'UM' ) ) {
498
  $this->users();
499
  $this->dragdrop();
500
  $this->plugin_updater();
501
- $this->admin_gdpr();
502
  } elseif ( $this->is_request( 'frontend' ) ) {
503
  $this->enqueue();
504
  $this->account();
@@ -524,10 +562,9 @@ if ( ! class_exists( 'UM' ) ) {
524
  $this->permalinks();
525
  $this->modal();
526
  $this->cron();
527
- //$this->tracking();
528
  $this->mobile();
529
  $this->external_integrations();
530
- $this->gdpr();
531
  }
532
 
533
 
@@ -637,55 +674,12 @@ if ( ! class_exists( 'UM' ) ) {
637
  */
638
  function admin_upgrade() {
639
  if ( empty( $this->classes['admin_upgrade'] ) ) {
640
- $this->classes['admin_upgrade'] = um\admin\core\Admin_Upgrade::instance();
641
- //$this->classes['admin_upgrade'] = new um\admin\core\Admin_Upgrade();
642
  }
643
  return $this->classes['admin_upgrade'];
644
  }
645
 
646
 
647
- /**
648
- * GDPR privacy policy
649
- *
650
- * @since 2.0.14
651
- *
652
- * @return bool|um\admin\core\Admin_GDPR()
653
- */
654
- function admin_gdpr() {
655
- global $wp_version;
656
-
657
- if ( version_compare( $wp_version, '4.9.6', '<' ) ) {
658
- return false;
659
- }
660
-
661
- if ( empty( $this->classes['admin_gdpr'] ) ) {
662
- $this->classes['admin_gdpr'] = new um\admin\core\Admin_GDPR();
663
- }
664
- return $this->classes['admin_gdpr'];
665
- }
666
-
667
-
668
- /**
669
- * GDPR privacy policy
670
- *
671
- * @since 2.0.14
672
- *
673
- * @return bool|um\core\GDPR()
674
- */
675
- function gdpr() {
676
- global $wp_version;
677
-
678
- if ( version_compare( $wp_version, '4.9.6', '<' ) ) {
679
- return false;
680
- }
681
-
682
- if ( empty( $this->classes['gdpr'] ) ) {
683
- $this->classes['gdpr'] = new um\core\GDPR();
684
- }
685
- return $this->classes['gdpr'];
686
- }
687
-
688
-
689
  /**
690
  * @since 2.0
691
  *
30
  * @method UM_Terms_Conditions_API Terms_Conditions_API()
31
  * @method UM_Private_Content_API Private_Content_API()
32
  * @method UM_User_Location_API User_Location_API()
 
33
  *
34
  */
35
  final class UM extends UM_Functions {
385
  }
386
 
387
 
388
+ /**
389
+ * Show notice for customers with old extension's versions
390
+ */
391
+ /*function old_extensions_notice() {
392
+ if ( ! is_admin() ) {
393
+ return;
394
+ }
395
+
396
+ if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
397
+ return;
398
+ }
399
+
400
+ $show = false;
401
+
402
+ $slugs = array_map( function( $item ) {
403
+ return 'um-' . $item . '/um-' . $item . '.php';
404
+ }, array_keys( $this->dependencies()->ext_required_version ) );
405
+
406
+ $active_plugins = $this->dependencies()->get_active_plugins();
407
+ foreach ( $slugs as $slug ) {
408
+ if ( in_array( $slug, $active_plugins ) ) {
409
+ $plugin_data = get_plugin_data( um_path . '..' . DIRECTORY_SEPARATOR . $slug );
410
+ if ( version_compare( '2.0', $plugin_data['Version'], '>' ) ) {
411
+ $show = true;
412
+ break;
413
+ }
414
+ }
415
+ }
416
+
417
+ if ( ! $show ) {
418
+ return;
419
+ }
420
+
421
+ /*global $um_woocommerce;
422
+ remove_action( 'init', array( $um_woocommerce, 'plugin_check' ), 1 );
423
+ $um_woocommerce->plugin_inactive = true;*
424
+
425
+ echo '<div class="error"><p>' . sprintf( __( '<strong>%s %s</strong> requires 2.0 extensions. You have pre 2.0 extensions installed on your site. <br /> Please update %s extensions to latest versions. For more info see this <a href="%s" target="_blank">doc</a>.', 'ultimate-member' ), ultimatemember_plugin_name, ultimatemember_version, ultimatemember_plugin_name, 'http://docs.ultimatemember.com/article/266-updating-to-2-0-versions-of-extensions' ) . '</p></div>';
426
+ }*/
427
+
428
+
429
  /**
430
  * Autoload UM classes handler
431
  *
525
  $this->ajax_init();
526
  $this->metabox();
527
  $this->admin_upgrade()->init_packages_ajax_handlers();
 
528
  } elseif ( $this->is_request( 'admin' ) ) {
529
  $this->admin();
530
  $this->admin_menu();
537
  $this->users();
538
  $this->dragdrop();
539
  $this->plugin_updater();
 
540
  } elseif ( $this->is_request( 'frontend' ) ) {
541
  $this->enqueue();
542
  $this->account();
562
  $this->permalinks();
563
  $this->modal();
564
  $this->cron();
565
+ $this->tracking();
566
  $this->mobile();
567
  $this->external_integrations();
 
568
  }
569
 
570
 
674
  */
675
  function admin_upgrade() {
676
  if ( empty( $this->classes['admin_upgrade'] ) ) {
677
+ $this->classes['admin_upgrade'] = new um\admin\core\Admin_Upgrade();
 
678
  }
679
  return $this->classes['admin_upgrade'];
680
  }
681
 
682
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
683
  /**
684
  * @since 2.0
685
  *
includes/core/class-access.php CHANGED
@@ -65,10 +65,6 @@ if ( ! class_exists( 'um\core\Access' ) ) {
65
  add_action( 'template_redirect', array( &$this, 'template_redirect' ), 1000 );
66
  add_action( 'um_access_check_individual_term_settings', array( &$this, 'um_access_check_individual_term_settings' ) );
67
  add_action( 'um_access_check_global_settings', array( &$this, 'um_access_check_global_settings' ) );
68
-
69
- /* Disable comments if user has not permission to access current post */
70
- add_filter( 'comments_open', array( $this, 'disable_comments_open' ), 99, 2 );
71
- add_filter( 'get_comments_number', array( $this, 'disable_comments_open' ), 99, 2 );
72
  }
73
 
74
 
@@ -536,7 +532,7 @@ if ( ! class_exists( 'um\core\Access' ) ) {
536
  if ( ! empty( $post->post_type ) && $post->post_type == 'page' ) {
537
  if ( um_is_core_post( $post, 'login' ) || um_is_core_post( $post, 'register' ) ||
538
  um_is_core_post( $post, 'account' ) || um_is_core_post( $post, 'logout' ) ||
539
- um_is_core_post( $post, 'password-reset' ) || ( is_user_logged_in() && um_is_core_post( $post, 'user' ) ) )
540
  return false;
541
  }
542
 
@@ -938,63 +934,6 @@ if ( ! class_exists( 'um\core\Access' ) ) {
938
  }
939
 
940
 
941
- /**
942
- * Disable comments if user has not permission to access this post
943
- * @param mixed $open
944
- * @param int $post_id
945
- * @return boolean
946
- */
947
- public function disable_comments_open( $open, $post_id ) {
948
-
949
- static $cache = array();
950
-
951
- if ( isset( $cache[ $post_id ] ) ) {
952
- return $cache[ $post_id ] ? $open : false;
953
- }
954
-
955
- $post = get_post( $post_id );
956
- $restriction = $this->get_post_privacy_settings( $post );
957
-
958
- if ( ! $restriction ) {
959
- $cache[ $post_id ] = $open;
960
- return $open;
961
- }
962
-
963
- if ( '1' == $restriction['_um_accessible'] ) {
964
-
965
- if ( is_user_logged_in() ) {
966
- if ( ! current_user_can( 'administrator' ) ) {
967
- $open = false;
968
- }
969
- }
970
-
971
- } elseif ( '2' == $restriction['_um_accessible'] ) {
972
- if ( ! is_user_logged_in() ) {
973
- $open = false;
974
- } else {
975
- if ( ! current_user_can( 'administrator' ) ) {
976
- $custom_restrict = $this->um_custom_restriction( $restriction );
977
-
978
- if ( empty( $restriction['_um_access_roles'] ) || false === array_search( '1', $restriction['_um_access_roles'] ) ) {
979
- if ( ! $custom_restrict ) {
980
- $open = false;
981
- }
982
- } else {
983
- $user_can = $this->user_can( get_current_user_id(), $restriction['_um_access_roles'] );
984
-
985
- if ( ! isset( $user_can ) || ! $user_can || ! $custom_restrict ) {
986
- $open = false;
987
- }
988
- }
989
- }
990
- }
991
- }
992
-
993
- $cache[ $post_id ] = $open;
994
- return $open;
995
- }
996
-
997
-
998
  /**
999
  * Protect Post Types in menu query
1000
  * Restrict content new logic
65
  add_action( 'template_redirect', array( &$this, 'template_redirect' ), 1000 );
66
  add_action( 'um_access_check_individual_term_settings', array( &$this, 'um_access_check_individual_term_settings' ) );
67
  add_action( 'um_access_check_global_settings', array( &$this, 'um_access_check_global_settings' ) );
 
 
 
 
68
  }
69
 
70
 
532
  if ( ! empty( $post->post_type ) && $post->post_type == 'page' ) {
533
  if ( um_is_core_post( $post, 'login' ) || um_is_core_post( $post, 'register' ) ||
534
  um_is_core_post( $post, 'account' ) || um_is_core_post( $post, 'logout' ) ||
535
+ um_is_core_post( $post, 'password-reset' ) )
536
  return false;
537
  }
538
 
934
  }
935
 
936
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
937
  /**
938
  * Protect Post Types in menu query
939
  * Restrict content new logic
includes/core/class-account.php CHANGED
@@ -55,7 +55,6 @@ if ( ! class_exists( 'um\core\Account' ) ) {
55
  * @param $args
56
  */
57
  function init_tabs( $args ) {
58
-
59
  $this->tabs = $this->get_tabs();
60
 
61
  ksort( $this->tabs );
@@ -76,6 +75,7 @@ if ( ! class_exists( 'um\core\Account' ) ) {
76
  }
77
 
78
  }
 
79
  $this->tabs = $tabs_structed;
80
  }
81
 
@@ -527,7 +527,7 @@ if ( ! class_exists( 'um\core\Account' ) ) {
527
  * ?>
528
  */
529
  $args = apply_filters( 'um_account_tab_privacy_fields', $args, $shortcode_args );
530
-
531
  $fields = UM()->builtin()->get_specific_fields( $args );
532
  $fields = $this->account_secure_fields( $fields, $id );
533
  $fields = $this->filter_fields_by_attrs( $fields, $shortcode_args );
@@ -535,6 +535,7 @@ if ( ! class_exists( 'um\core\Account' ) ) {
535
  foreach ( $fields as $key => $data ){
536
  $output .= UM()->fields()->edit_field( $key, $data );
537
  }
 
538
  break;
539
 
540
  case 'delete':
55
  * @param $args
56
  */
57
  function init_tabs( $args ) {
 
58
  $this->tabs = $this->get_tabs();
59
 
60
  ksort( $this->tabs );
75
  }
76
 
77
  }
78
+
79
  $this->tabs = $tabs_structed;
80
  }
81
 
527
  * ?>
528
  */
529
  $args = apply_filters( 'um_account_tab_privacy_fields', $args, $shortcode_args );
530
+
531
  $fields = UM()->builtin()->get_specific_fields( $args );
532
  $fields = $this->account_secure_fields( $fields, $id );
533
  $fields = $this->filter_fields_by_attrs( $fields, $shortcode_args );
535
  foreach ( $fields as $key => $data ){
536
  $output .= UM()->fields()->edit_field( $key, $data );
537
  }
538
+
539
  break;
540
 
541
  case 'delete':
includes/core/class-builtin.php CHANGED
@@ -1252,7 +1252,7 @@ if ( ! class_exists( 'um\core\Builtin' ) ) {
1252
  */
1253
  $fields_without_metakey = apply_filters( 'um_fields_without_metakey', $fields_without_metakey );
1254
 
1255
- if ( ! $show_all ) {
1256
  $this->fields_dropdown = array('image','file','password','rating');
1257
  $this->fields_dropdown = array_merge( $this->fields_dropdown, $fields_without_metakey );
1258
  } else {
1252
  */
1253
  $fields_without_metakey = apply_filters( 'um_fields_without_metakey', $fields_without_metakey );
1254
 
1255
+ if ( !$show_all ) {
1256
  $this->fields_dropdown = array('image','file','password','rating');
1257
  $this->fields_dropdown = array_merge( $this->fields_dropdown, $fields_without_metakey );
1258
  } else {
includes/core/class-enqueue.php CHANGED
@@ -319,8 +319,6 @@ if ( ! class_exists( 'um\core\Enqueue' ) ) {
319
  wp_register_script('um_functions', um_url . 'assets/js/um-functions' . $this->suffix . '.js', array('jquery', 'jquery-masonry') );
320
  wp_enqueue_script('um_functions');
321
 
322
- wp_enqueue_script( 'um-gdpr', um_url . 'assets/js/um-gdpr' . $this->suffix . '.js', array( 'jquery' ), ultimatemember_version, false );
323
-
324
  }
325
 
326
 
@@ -465,7 +463,7 @@ if ( ! class_exists( 'um\core\Enqueue' ) ) {
465
  wp_register_script('um_responsive', um_url . 'assets/js/um-responsive' . $this->suffix . '.js' );
466
  wp_enqueue_script('um_responsive');
467
 
468
- wp_register_style('um_responsive', um_url . 'assets/css/um-responsive.css', array( 'um_profile' ) );
469
  wp_enqueue_style('um_responsive');
470
 
471
  }
319
  wp_register_script('um_functions', um_url . 'assets/js/um-functions' . $this->suffix . '.js', array('jquery', 'jquery-masonry') );
320
  wp_enqueue_script('um_functions');
321
 
 
 
322
  }
323
 
324
 
463
  wp_register_script('um_responsive', um_url . 'assets/js/um-responsive' . $this->suffix . '.js' );
464
  wp_enqueue_script('um_responsive');
465
 
466
+ wp_register_style('um_responsive', um_url . 'assets/css/um-responsive.css' );
467
  wp_enqueue_style('um_responsive');
468
 
469
  }
includes/core/class-fields.php CHANGED
@@ -43,8 +43,9 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
43
  <div class="um-field um-field-c">
44
  <div class="um-field-area">
45
  <label class="um-field-checkbox active">
46
- <input type="checkbox" name="<?php echo $id; ?>" value="1" checked/>
47
- <span class="um-field-checkbox-state"><i class="um-icon-android-checkbox-outline"></i></span>
 
48
  <span class="um-field-checkbox-option"> <?php echo $title; ?></span>
49
  </label>
50
  </div>
@@ -573,8 +574,7 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
573
 
574
  } elseif ( um_user( $key ) && $this->editing == true ) {
575
 
576
- //show empty value for password fields
577
- if ( strstr( $key, 'user_pass' ) || $type == 'password' ) {
578
  return '';
579
  }
580
 
@@ -799,11 +799,6 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
799
  return true;
800
  }
801
 
802
- $stripslashed = array_map( 'stripslashes', UM()->form()->post_form[ $key ] );
803
- if ( in_array( $value, $stripslashed ) ) {
804
- return true;
805
- }
806
-
807
  if ( in_array( html_entity_decode( $value ), UM()->form()->post_form[ $key ] ) ) {
808
  return true;
809
  }
@@ -814,21 +809,16 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
814
 
815
  $field_value = um_user( $key );
816
 
817
- if ( $key == 'role' ) {
818
 
819
  $role_keys = get_option( 'um_roles' );
820
 
821
- if ( ! empty( $role_keys ) ) {
822
- if ( in_array( $field_value, $role_keys ) ) {
823
  $field_value = 'um_' . $field_value;
824
  }
825
  }
826
- /*elseif( $this->set_mode == 'register' ){
827
- $data['default'] = UM()->options()->get( 'register_role' );
828
- }
829
- else{
830
- $data['default'] = get_option( 'default_role' );
831
- }*/
832
  }
833
 
834
  /**
@@ -941,25 +931,19 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
941
 
942
  $um_user_value = um_user( $key );
943
 
944
- if ( $key == 'role' ) {
945
  $um_user_value = strtolower( $um_user_value );
946
 
947
  $role_keys = get_option( 'um_roles' );
948
 
949
- if ( ! empty( $role_keys ) ) {
950
- if ( in_array( $um_user_value, $role_keys ) ) {
951
  $um_user_value = 'um_' . $um_user_value;
952
  }
953
  }
954
- /*elseif( $this->set_mode == 'register' ){
955
- $data['default'] = UM()->options()->get( 'register_role' );
956
- }
957
- else{
958
- $data['default'] = get_option( 'default_role' );
959
- }*/
960
  }
961
 
962
- if ( $um_user_value == $value ) {
963
  return true;
964
  }
965
 
@@ -1545,11 +1529,10 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
1545
  * @param string $key
1546
  * @param array $data
1547
  * @param boolean $rule
1548
- * @param array $args
1549
  *
1550
  * @return string
1551
  */
1552
- function edit_field( $key, $data, $rule = false, $args = array() ) {
1553
  global $_um_profile_id;
1554
  $output = null;
1555
  $disabled = '';
@@ -1583,7 +1566,7 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
1583
  * @var boolean $required
1584
  * @var string $validate
1585
  * @var string $default
1586
- * @var string $conditional
1587
  */
1588
  extract( $data );
1589
  }
@@ -1595,7 +1578,7 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
1595
 
1596
  if ($visibility == 'view' && $this->set_mode != 'register') return;
1597
 
1598
- if ( ( $visibility == 'view' && $this->set_mode == 'register' ) ||
1599
  ( isset( $data['editable'] ) && $data['editable'] == 0 && $this->set_mode == 'profile' )
1600
  ) {
1601
 
@@ -1636,7 +1619,6 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
1636
  // forbidden in edit mode?
1637
  if (isset( $data['edit_forbidden'] )) return;
1638
 
1639
-
1640
  // required option
1641
  if (isset( $data['required_opt'] )) {
1642
  $opt = $data['required_opt'];
@@ -1680,47 +1662,7 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
1680
  * ?>
1681
  */
1682
  $type = apply_filters( "um_hook_for_field_{$type}", $type );
1683
- switch ( $type ) {
1684
-
1685
- case 'textarea':
1686
- case 'multiselect':
1687
- $field_id = $field_name = $key;
1688
- $field_value = $this->field_value( $key, $default, $data );
1689
- break;
1690
 
1691
- case 'select':
1692
- case 'radio':
1693
- $form_key = str_replace( 'role_select', 'role', $key );
1694
- $field_id = $form_key;
1695
- break;
1696
- default:
1697
- $field_id = '';
1698
- break;
1699
- }
1700
-
1701
- /**
1702
- * UM hook
1703
- *
1704
- * @type filter
1705
- * @title um_completeness_field_id
1706
- * @description use for change core id not allowed duplicate
1707
- * @input_vars
1708
- * [{"var":"$field_id","type":"string","desc":"Field id"},
1709
- * {"var":"$data","type":"array","desc":"Field Data"}]
1710
- * {"var":"$args","type":"array","desc":"Optional field arguments"}]
1711
- * @change_log
1712
- * ["Since: 2.0.13"]
1713
- * @usage add_filter( 'um_completeness_field_id', 'function_name', 10, 3 );
1714
- * @example
1715
- * <?php
1716
- * add_filter( 'um_completeness_field_id', 'function_name', 10, 3 );
1717
- * function function_name( $field_id, $data, $args ) {
1718
- * // your code here
1719
- * return $field_id;
1720
- * }
1721
- * ?>
1722
- */
1723
- $field_id = apply_filters( 'um_completeness_field_id', $field_id, $data, $args );
1724
  /* Begin by field type */
1725
  switch ( $type ) {
1726
 
@@ -1779,8 +1721,8 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
1779
 
1780
  </div>';
1781
 
1782
- if (!empty( $disabled )) {
1783
- $output .= $this->disabled_hidden_field( $field_name, $field_value );
1784
  }
1785
 
1786
  if ($this->is_error( $key )) {
@@ -2090,6 +2032,8 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
2090
  }
2091
 
2092
  $output .= '<div class="um-field-area">';
 
 
2093
 
2094
  if (isset( $data['html'] ) && $data['html'] != 0 && $key != "description") {
2095
 
@@ -2140,17 +2084,16 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
2140
  // add the contents of the buffer to the output variable
2141
  $output .= ob_get_clean();
2142
 
2143
- } else {
2144
- $output .= '<textarea ' . $disabled . ' style="height: ' . $height . ';" class="' . $this->get_class( $key, $data ) . '" name="' . $field_name . '" id="' . $field_id . '" placeholder="' . $placeholder . '">' . $field_value . '</textarea>';
2145
- }
2146
 
2147
- $output .= '</div>';
 
2148
 
2149
- if ( ! empty( $disabled ) ) {
2150
  $output .= $this->disabled_hidden_field( $field_name, $field_value );
2151
  }
2152
 
2153
- if ( $this->is_error( $key ) ) {
2154
  $output .= $this->field_error( $this->show_error( $key ) );
2155
  }
2156
 
@@ -2168,6 +2111,7 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
2168
  $output .= '<div class="um-field-area">';
2169
 
2170
  $output .= '<div class="um-rating um-raty" id="' . $key . '" data-key="' . $key . '" data-number="' . $data['number'] . '" data-score="' . $this->field_value( $key, $default, $data ) . '"></div>';
 
2171
  $output .= '</div>';
2172
 
2173
  $output .= '</div>';
@@ -2369,6 +2313,8 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
2369
  /* Select dropdown */
2370
  case 'select':
2371
 
 
 
2372
  $output .= '<div class="um-field' . $classes . '"' . $conditional . ' data-key="' . $key . '">';
2373
 
2374
 
@@ -2488,10 +2434,10 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
2488
  }
2489
 
2490
  if( ! empty( $placeholder ) ) {
2491
- $placeholder = strip_tags( $placeholder );
2492
- }
2493
 
2494
- $output .= '<select ' . $disabled . ' ' . $select_original_option_value . ' ' . $disabled_by_parent_option . ' name="' . $form_key . '" id="' . $field_id . '" data-validate="' . $validate . '" data-key="' . $key . '" class="' . $this->get_class( $key, $data, $class ) . '" style="width: 100%" data-placeholder="' . $placeholder . '" ' . $atts_ajax . '>';
2495
 
2496
  /**
2497
  * UM hook
@@ -2685,7 +2631,7 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
2685
  $output .= '<div class="um-field-icon"><i class="' . $icon . '"></i></div>';
2686
  }
2687
 
2688
- $output .= '<select ' . $disabled . ' multiple="multiple" name="' . $field_name . '[]" id="' . $field_id . '" data-maxsize="' . $max_selections . '" data-validate="' . $validate . '" data-key="' . $key . '" class="' . $this->get_class( $key, $data, $class ) . ' um-user-keyword_' . $use_keyword . '" style="width: 100%" data-placeholder="' . $placeholder . '">';
2689
 
2690
 
2691
  if ( isset( $options ) && $options == 'builtin' ) {
@@ -2822,6 +2768,8 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
2822
  /* Radio */
2823
  case 'radio':
2824
 
 
 
2825
  if ( isset( $options ) ) {
2826
  /**
2827
  * UM hook
@@ -2890,7 +2838,7 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
2890
  $um_field_checkbox_item_title = $v;
2891
  $option_value = $v;
2892
 
2893
- if ( ! is_numeric( $k ) && in_array( $form_key, array( 'role', 'role_radio' ) ) ) {
2894
  $um_field_checkbox_item_title = $v;
2895
  $option_value = $k;
2896
  }
@@ -3484,12 +3432,9 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
3484
 
3485
  if (isset( $data['in_group'] ) && $data['in_group'] != '' && $rule != 'group') return;
3486
 
3487
- if ( $visibility == 'edit' ) return;
3488
-
3489
- //invisible on profile page
3490
- if ( $type == 'password' ) return;
3491
 
3492
- if ( in_array( $type, array( 'block', 'shortcode', 'spacing', 'divider', 'group' ) ) ) {
3493
 
3494
  } else {
3495
 
43
  <div class="um-field um-field-c">
44
  <div class="um-field-area">
45
  <label class="um-field-checkbox active">
46
+ <input type="checkbox" name="<?php echo $id; ?>" value="1" checked/><span
47
+ class="um-field-checkbox-state"><i
48
+ class="um-icon-android-checkbox-outline"></i></span>
49
  <span class="um-field-checkbox-option"> <?php echo $title; ?></span>
50
  </label>
51
  </div>
574
 
575
  } elseif ( um_user( $key ) && $this->editing == true ) {
576
 
577
+ if ( strstr( $key, 'user_pass' ) ) {
 
578
  return '';
579
  }
580
 
799
  return true;
800
  }
801
 
 
 
 
 
 
802
  if ( in_array( html_entity_decode( $value ), UM()->form()->post_form[ $key ] ) ) {
803
  return true;
804
  }
809
 
810
  $field_value = um_user( $key );
811
 
812
+ if ($key == 'role') {
813
 
814
  $role_keys = get_option( 'um_roles' );
815
 
816
+ if (!empty( $role_keys )) {
817
+ if (in_array( $field_value, $role_keys )) {
818
  $field_value = 'um_' . $field_value;
819
  }
820
  }
821
+
 
 
 
 
 
822
  }
823
 
824
  /**
931
 
932
  $um_user_value = um_user( $key );
933
 
934
+ if ($key == 'role') {
935
  $um_user_value = strtolower( $um_user_value );
936
 
937
  $role_keys = get_option( 'um_roles' );
938
 
939
+ if (!empty( $role_keys )) {
940
+ if (in_array( $um_user_value, $role_keys )) {
941
  $um_user_value = 'um_' . $um_user_value;
942
  }
943
  }
 
 
 
 
 
 
944
  }
945
 
946
+ if ($um_user_value == $value) {
947
  return true;
948
  }
949
 
1529
  * @param string $key
1530
  * @param array $data
1531
  * @param boolean $rule
 
1532
  *
1533
  * @return string
1534
  */
1535
+ function edit_field( $key, $data, $rule = false ) {
1536
  global $_um_profile_id;
1537
  $output = null;
1538
  $disabled = '';
1566
  * @var boolean $required
1567
  * @var string $validate
1568
  * @var string $default
1569
+ * @var string $conditional
1570
  */
1571
  extract( $data );
1572
  }
1578
 
1579
  if ($visibility == 'view' && $this->set_mode != 'register') return;
1580
 
1581
+ if (( $visibility == 'view' && $this->set_mode == 'register' ) ||
1582
  ( isset( $data['editable'] ) && $data['editable'] == 0 && $this->set_mode == 'profile' )
1583
  ) {
1584
 
1619
  // forbidden in edit mode?
1620
  if (isset( $data['edit_forbidden'] )) return;
1621
 
 
1622
  // required option
1623
  if (isset( $data['required_opt'] )) {
1624
  $opt = $data['required_opt'];
1662
  * ?>
1663
  */
1664
  $type = apply_filters( "um_hook_for_field_{$type}", $type );
 
 
 
 
 
 
 
1665
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1666
  /* Begin by field type */
1667
  switch ( $type ) {
1668
 
1721
 
1722
  </div>';
1723
 
1724
+ if (!empty( $disabled )) {
1725
+ $output .= $this->disabled_hidden_field( $field_name, $field_value );
1726
  }
1727
 
1728
  if ($this->is_error( $key )) {
2032
  }
2033
 
2034
  $output .= '<div class="um-field-area">';
2035
+ $field_name = $key;
2036
+ $field_value = $this->field_value( $key, $default, $data );
2037
 
2038
  if (isset( $data['html'] ) && $data['html'] != 0 && $key != "description") {
2039
 
2084
  // add the contents of the buffer to the output variable
2085
  $output .= ob_get_clean();
2086