PluginProbe
UsersWP – Front-end login form, User Registration, User Profile & Members Directory plugin for WP / 1.2.73
UsersWP – Front-end login form, User Registration, User Profile & Members Directory plugin for WP v1.2.73
1.2.73 1.2.72 1.2.71 1.2.70 1.2.69 1.2.68 1.2.67 1.2.66 1.2.65 1.2.64 1.2.63 trunk 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.17 1.0.18 1.0.19 1.0.20 1.0.21 1.0.22 All 173 releases
← All changes | includes/class-meta.php +207 -240 1.0.211.2.73 View file →
@@ -8,119 +8,114 @@
8 8 * @author GeoDirectory Team <info@wpgeodirectory.com>
9 9 */
10 10 class UsersWP_Meta {
11 11
12 - /**
13 - * Gets UsersWP setting value using key.
14 - *
15 - * @since 1.0.0
16 - * @package userswp
17 - *
18 - * @param string $key Setting Key.
19 - * @param bool|string $default Default value.
20 - * @param bool $cache Use cache to retrieve the value?.
21 - *
22 - * @return string Setting Value.
23 - */
24 - public function get_option( $key = '', $default = false, $cache = true ) {
25 - if ($cache) {
26 - global $uwp_options;
27 - } else {
28 - $uwp_options = get_option( 'uwp_settings' );
29 - }
30 - $value = ! empty( $uwp_options[ $key ] ) ? $uwp_options[ $key ] : $default;
31 - $value = apply_filters( 'uwp_get_option', $value, $key, $default );
32 - return apply_filters( 'uwp_get_option_' . $key, $value, $key, $default );
33 - }
12 + /**
13 + * Gets UsersWP user meta value using key.
14 + *
15 + * @since 1.0.0
16 + * @package userswp
17 + *
18 + * @param int|bool $user_id User ID.
19 + * @param string $key User meta Key.
20 + * @param bool|string $default Default value.
21 + *
22 + * @return string User meta Value.
23 + */
24 + public function get_usermeta( $user_id = false, $key = '', $default = false ) {
25 + global $wpdb;
34 26
35 - /**
36 - * Updates UsersWP setting value using key.
37 - *
38 - * @since 1.0.0
39 - * @package userswp
40 - *
41 - * @param string|bool $key Setting Key.
42 - * @param string $value Setting Value.
43 - *
44 - * @return bool Update success or not?.
45 - */
46 - public function update_option( $key = false, $value = '') {
27 + if ( ! $user_id ) {
28 + return $default;
29 + }
47 30
48 - if (!$key ) {
49 - return false;
50 - }
31 + if ( ! $key ) {
32 + return $default;
33 + }
51 34
52 - $settings = get_option( 'uwp_settings', array());
35 + $meta_table = get_usermeta_table_prefix() . 'uwp_usermeta';
53 36
54 - if( !is_array( $settings ) ) {
55 - $settings = array();
56 - }
37 + if ( uwp_str_ends_with( $key, '_privacy' ) ) {
38 + if ( uwp_str_ends_with( $key, '_tab_privacy' ) ) {
39 + $obj_key = $user_id.'_tabs_privacy';
40 + $row = wp_cache_get( $obj_key, 'uwp_usermeta_tabs_privacy' );
57 41
58 - $settings[ $key ] = $value;
42 + if ( ! $row ) {
43 + $row = $wpdb->get_row( $wpdb->prepare( "SELECT tabs_privacy FROM `{$meta_table}` WHERE user_id = %d", $user_id ), ARRAY_A );
44 + wp_cache_set( $obj_key, $row, 'uwp_usermeta_tabs_privacy' );
45 + }
59 46
60 - $settings = apply_filters( 'uwp_update_option', $settings, $key, $value );
61 - $settings = apply_filters( 'uwp_update_option_' . $key, $settings, $key, $value );
47 + $value = false;
62 48
63 - update_option( 'uwp_settings', $settings );
49 + if ( ! empty( $row ) ) {
50 + $public_fields = isset( $row['tabs_privacy'] ) ? maybe_unserialize( $row['tabs_privacy'] ) : $default;
51 + $public_fields_keys = is_array( $public_fields ) ? array_keys( $public_fields ) : $public_fields;
64 52
65 - return true;
66 - }
53 + if ( is_array( $public_fields ) && in_array( $key, $public_fields_keys ) ) {
54 + $value = $public_fields[ $key ];
55 + }
56 + }
57 + } else {
58 + $obj_key = $user_id.'_user_privacy';
59 + $row = wp_cache_get( $obj_key, 'uwp_usermeta_user_privacy' );
67 60
68 - /**
69 - * Gets UsersWP user meta value using key.
70 - *
71 - * @since 1.0.0
72 - * @package userswp
73 - *
74 - * @param int|bool $user_id User ID.
75 - * @param string $key User meta Key.
76 - * @param bool|string $default Default value.
77 - *
78 - * @return string User meta Value.
79 - */
80 - public function get_usermeta( $user_id = false, $key = '', $default = false ) {
81 - if (!$user_id) {
82 - return $default;
83 - }
61 + if ( ! $row ) {
62 + $row = $wpdb->get_row( $wpdb->prepare("SELECT user_privacy FROM `{$meta_table}` WHERE user_id = %d", $user_id ), ARRAY_A );
63 + wp_cache_set( $obj_key, $row, 'uwp_usermeta_user_privacy' );
64 + }
84 65
85 - global $wpdb;
86 - $meta_table = get_usermeta_table_prefix() . 'uwp_usermeta';
66 + $value = 'yes';
87 67
88 - if (uwp_str_ends_with($key, '_privacy')) {
89 - $value = 'yes';
90 - $row = $wpdb->get_row($wpdb->prepare("SELECT user_privacy FROM {$meta_table} WHERE user_id = %d", $user_id), ARRAY_A);
91 - if (!empty($row)) {
92 - $output = isset($row['user_privacy']) ? $row['user_privacy'] : $default;
93 - $public_fields = explode(',', $output);
94 - if (in_array($key, $public_fields)) {
95 - $value = 'no';
96 - }
97 - }
98 - } else {
99 - $value = null;
100 - $user_data = get_userdata($user_id);
68 + if ( ! empty( $row ) ) {
69 + $output = isset( $row['user_privacy'] ) ? $row['user_privacy'] : $default;
70 + $public_fields = explode( ',', $output );
101 71
102 - switch ($key){
103 - case 'uwp_account_email': $value = $user_data->user_email; break;
104 - case 'uwp_account_username': $value = $user_data->user_login; break;
105 - case 'uwp_account_bio': $value = $user_data->description; break;
106 - default :
107 - $row = $wpdb->get_row($wpdb->prepare("SELECT {$key} FROM {$meta_table} WHERE user_id = %d", $user_id), ARRAY_A);
108 - if (!empty($row)) {
109 - $value = !empty($row[$key]) ? $row[$key] : $default;
110 - } else {
111 - $value = $default;
112 - }
113 - break;
114 - }
115 - }
72 + if ( in_array( $key, $public_fields ) ) {
73 + $value = 'no';
74 + }
75 + }
76 + }
77 + } else {
78 + $value = null;
79 + $user_data = get_userdata( $user_id );
116 80
117 - $value = uwp_maybe_unserialize($key, $value);
118 - $value = wp_unslash($value);
119 - $value = apply_filters( 'uwp_get_usermeta', $value, $user_id, $key, $default );
120 - return apply_filters( 'uwp_get_usermeta_' . $key, $value, $user_id, $key, $default );
121 - }
81 + if ( ! $user_data ) {
82 + return $value;
83 + }
122 84
85 + switch ( $key ) {
86 + case 'email': $value = $user_data->user_email; break;
87 + case 'username': $value = $user_data->user_login; break;
88 + case 'user_nicename': $value = $user_data->user_nicename; break;
89 + case 'bio': $value = $user_data->description; break;
90 + case 'uwp_language': $value = $user_data->locale; break;
91 + default :
92 + $obj_key = $user_id.'_'.$key;
93 + $row = wp_cache_get( $obj_key, 'uwp_usermeta' );
94 +
95 + if ( ! $row ) {
96 + if ( in_array( $key, array( 'user_id', 'user_ip', 'user_privacy', 'tabs_privacy', 'username', 'email', 'first_name', 'last_name', 'avatar_thumb', 'banner_thumb', 'display_name', 'user_url', 'bio' ) ) || uwp_column_exist( $meta_table, $key ) ) {
97 + $row = $wpdb->get_row( $wpdb->prepare( "SELECT `{$key}` FROM `{$meta_table}` WHERE user_id = %d", $user_id ), ARRAY_A );
98 + wp_cache_set( $obj_key, $row, 'uwp_usermeta' );
99 + }
100 + }
101 +
102 + if ( ! empty( $row ) ) {
103 + $value = isset( $row[ $key ] ) ? $row[ $key ] : $default;
104 + } else {
105 + $value = $default;
106 + }
107 + break;
108 + }
109 + }
110 +
111 + $value = uwp_maybe_unserialize($key, $value);
112 + $value = wp_unslash($value);
113 + $value = apply_filters( 'uwp_get_usermeta', $value, $user_id, $key, $default );
114 +
115 + return apply_filters( 'uwp_get_usermeta_' . $key, $value, $user_id, $key, $default );
116 + }
117 +
123 118 /**
124 119 * Updates UsersWP user meta value using key.
125 120 *
126 121 * @since 1.0.0
@@ -131,43 +126,70 @@
131 126 * @param string $value User meta Value.
132 127 *
133 128 * @return bool Update success or not?.
134 129 */
135 - public function update_usermeta( $user_id = false, $key, $value ) {
130 + public function update_usermeta( $user_id, $key, $value ) {
131 + global $wpdb;
136 132
137 - if (!$user_id || !$key ) {
138 - return false;
139 - }
133 + if ( ! $user_id || ! $key ) {
134 + return false;
135 + }
140 136
141 - global $wpdb;
142 - $meta_table = get_usermeta_table_prefix() . 'uwp_usermeta';
143 - $user_meta_info = $wpdb->get_col( $wpdb->prepare( "SELECT $key FROM $meta_table WHERE user_id = %d", $user_id ) );
137 + $meta_table = get_usermeta_table_prefix() . 'uwp_usermeta';
138 + $cache_group = 'uwp_usermeta';
139 + $obj_key = $user_id . '_' . $key;
144 140
145 - $value = apply_filters( 'uwp_update_usermeta', $value, $user_id, $key, $user_meta_info );
146 - $value = apply_filters( 'uwp_update_usermeta_' . $key, $value, $user_id, $key, $user_meta_info );
141 + if ( ! in_array( $key, array( 'user_id', 'user_ip', 'user_privacy', 'tabs_privacy', 'username', 'email', 'first_name', 'last_name', 'avatar_thumb', 'banner_thumb', 'display_name', 'user_url', 'bio' ) ) && ! uwp_column_exist( $meta_table, $key ) ) {
142 + return false;
143 + }
147 144
148 - do_action( 'uwp_before_update_usermeta', $user_id, $key, $value, $user_meta_info );
145 + if ( uwp_str_ends_with( $key, '_privacy' ) ) {
146 + if ( 'tabs_privacy' == $key ) {
147 + $obj_key = $user_id . '_tabs_privacy';
148 + $cache_group = 'uwp_usermeta_tabs_privacy';
149 + } elseif('user_privacy' == $key) {
150 + $obj_key = $user_id . '_user_privacy';
151 + $cache_group = 'uwp_usermeta_user_privacy';
152 + }
153 + }
149 154
150 - $value = uwp_maybe_serialize($key, $value);
155 + $user_meta_info = $wpdb->get_col( $wpdb->prepare( "SELECT `{$key}` FROM `{$meta_table}` WHERE user_id = %d", $user_id ) );
151 156
152 - if (!empty($user_meta_info)) {
153 - $wpdb->update(
154 - $meta_table,
155 - array($key => $value),
156 - array('user_id' => $user_id),
157 - array('%s'),
158 - array('%d')
159 - );
160 - } else {
161 - $wpdb->insert(
162 - $meta_table,
163 - array('user_id' => $user_id, $key => $value)
164 - );
165 - }
157 + $value = apply_filters( 'uwp_update_usermeta', $value, $user_id, $key, $user_meta_info );
158 + $value = apply_filters( 'uwp_update_usermeta_' . $key, $value, $user_id, $key, $user_meta_info );
166 159
167 - return true;
168 - }
160 + do_action( 'uwp_before_update_usermeta', $user_id, $key, $value, $user_meta_info );
169 161
162 + $value = uwp_maybe_serialize( $key, $value );
163 +
164 + if ( ! empty( $user_meta_info ) ) {
165 + $result = $wpdb->update(
166 + $meta_table,
167 + array( $key => $value ),
168 + array( 'user_id' => $user_id ),
169 + array('%s'),
170 + array('%d')
171 + );
172 +
173 + if ( ! $result ) {
174 + return false;
175 + }
176 + } else {
177 + $result = $wpdb->insert(
178 + $meta_table,
179 + array( 'user_id' => $user_id, $key => $value )
180 + );
181 +
182 + if ( ! $result ) {
183 + return false;
184 + }
185 + }
186 +
187 + wp_cache_delete( $obj_key, $cache_group );
188 +
189 + return true;
190 + }
191 +
170 192 /**
171 193 * Gets UsersWP user meta row using user ID.
172 194 *
173 195 * @since 1.0.0
@@ -184,9 +206,13 @@
184 206
185 207 global $wpdb;
186 208 $meta_table = get_usermeta_table_prefix() . 'uwp_usermeta';
187 209
188 - $row = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$meta_table} WHERE user_id = %d", $user_id));
210 + $row = wp_cache_get( $user_id, 'uwp_usermeta_row' );
211 + if ( ! $row ) {
212 + $row = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$meta_table} WHERE user_id = %d", $user_id));
213 + wp_cache_set( $user_id, $row, 'uwp_usermeta_row' );
214 + }
189 215
190 216 return $row;
191 217 }
192 218
@@ -206,9 +232,17 @@
206 232 }
207 233
208 234 global $wpdb;
209 235 $meta_table = get_usermeta_table_prefix() . 'uwp_usermeta';
210 - $wpdb->query($wpdb->prepare("DELETE FROM {$meta_table} WHERE user_id = %d", $user_id));
236 +
237 + $count = $wpdb->query($wpdb->prepare("DELETE FROM {$meta_table} WHERE user_id = %d", $user_id));
238 +
239 + if ( ! $count ) {
240 + return false;
241 + }
242 +
243 + wp_cache_delete( $user_id, 'uwp_usermeta_row' );
244 +
211 245 }
212 246
213 247 /**
214 248 * Syncs WP usermeta with UsersWP usermeta.
@@ -226,15 +260,21 @@
226 260 $user_data = get_userdata($user_id);
227 261 $meta_table = get_usermeta_table_prefix() . 'uwp_usermeta';
228 262
229 263 $user_meta = array(
230 - 'uwp_account_username' => $user_data->user_login,
231 - 'uwp_account_email' => $user_data->user_email,
232 - 'uwp_account_display_name' => $user_data->display_name,
233 - 'uwp_account_first_name' => $user_data->first_name,
234 - 'uwp_account_last_name' => $user_data->last_name,
264 + 'username' => $user_data->user_login,
265 + 'email' => $user_data->user_email,
266 + 'display_name' => $user_data->display_name,
267 + 'first_name' => $user_data->first_name,
268 + 'last_name' => $user_data->last_name,
269 + 'user_url' => $user_data->user_url,
270 + 'bio' => $user_data->description,
235 271 );
236 272
273 + foreach ($user_meta as $key => $meta){
274 + do_action('sync_usermeta_on_register', $user_id, $key, $meta); // for adding points via mycred add on.
275 + }
276 +
237 277 $users = $wpdb->get_var($wpdb->prepare("SELECT COUNT(user_id) FROM {$meta_table} WHERE user_id = %d", $user_id));
238 278
239 279 if($users){
240 280 $wpdb->update(
@@ -312,11 +352,10 @@
312 352 *
313 353 * @return void
314 354 */
315 355 public function save_user_ip_on_login( $user_login, $user ) {
316 -
317 - $ip = uwp_get_ip();
318 356 if (isset($user->ID)) {
357 + $ip = uwp_get_ip();
319 358 uwp_update_usermeta($user->ID, 'user_ip', $ip);
320 359 }
321 360 }
322 361
@@ -331,16 +370,18 @@
331 370 * @param string $key Custom field key.
332 371 *
333 372 * @return string Date string.
334 373 */
335 - public function modify_datepicker_value_on_update($value, $user_id, $key) {
336 - // modify timestamp to date
337 - if (is_int($value)) {
338 - $field_info = uwp_get_custom_field_info($key);
339 - if ($field_info->field_type == 'datepicker') {
340 - $value = date('Y-m-d', $value);
374 + public function modify_datepicker_value_on_update( $value, $user_id, $key ) {
375 + // Modify timestamp to date
376 + if ( is_int( $value ) ) {
377 + $field_info = uwp_get_custom_field_info( $key );
378 +
379 + if ( ! empty( $field_info ) && $field_info->field_type == 'datepicker' ) {
380 + $value = date( 'Y-m-d', $value );
341 381 }
342 382 }
383 +
343 384 return $value;
344 385 }
345 386
346 387 /**
@@ -356,112 +397,38 @@
356 397 * @return int Unix Timestamp.
357 398 */
358 399 public function modify_datepicker_value_on_get($value, $user_id, $key, $default) {
359 400 // modify date to timestamp
360 - if (is_string($value) && (strpos($value, '-') !== false)) {
361 - $field_info = uwp_get_custom_field_info($key);
362 - if (isset($field_info->field_type) && $field_info->field_type == 'datepicker') {
363 - $value = strtotime($value);
364 - }
365 - }
401 + $field_info = uwp_get_custom_field_info($key);
402 + if (isset($field_info->field_type) && $field_info->field_type == 'datepicker') {
403 + if (is_string($value) && (strpos($value, '-') !== false) && $value != '0000-00-00') {
404 + $value = strtotime( $value );
405 + } elseif($value === '0000-00-00'){$value = '';}
406 + }
407 +
366 408 return $value;
367 409 }
368 410
369 - public function uwp_user_row_actions($actions, $user_object){
370 - $user_id = $user_object->ID;
371 - $mod_value = get_user_meta( $user_id, 'uwp_mod', true );
372 - $delete_link = add_query_arg(
373 - array(
374 - 'user_id' => $user_id,
375 - 'action' => 'uwp_resend',
376 - '_nonce' => wp_create_nonce('uwp_resend'),
377 - ),
378 - admin_url( 'users.php' )
379 - );
380 - if ($mod_value == 'email_unconfirmed') {
381 - $actions['uwp_resend_activation'] = "<a class='' href='" . $delete_link . "'>" . __( 'Resend Activation','ultimate-member') . "</a>";
382 - }
411 + /**
412 + * Make UWP user meta available through the standard get_user_meta() function if prefixed with `user_`
413 + *
414 + * @param $metadata
415 + * @param $object_id
416 + * @param $meta_key
417 + * @param $single
418 + *
419 + * @return bool|mixed|null|string
420 + */
421 + public static function dynamically_add_user_meta( $metadata, $object_id, $meta_key, $single ) {
383 422
384 - return $actions;
385 - }
423 + if ( strpos( $meta_key, 'uwp_meta_' ) === 0 ) {
424 + $meta_key = substr( $meta_key, 9 );
425 + $maybe_meta = uwp_get_usermeta( $object_id, $meta_key, $single );
426 + if ( ! empty( $maybe_meta ) ) {
427 + $metadata = $maybe_meta;
428 + }
429 + }
386 430
387 - public function uwp_process_user_actions(){
388 - $user_id = isset($_REQUEST['user_id']) ? (int)$_REQUEST['user_id'] : 0;
389 - $action = isset($_REQUEST['action']) ? $_REQUEST['action'] : false;
390 - $nonce = isset($_REQUEST['_nonce']) ? $_REQUEST['_nonce'] : false;
391 -
392 - if($user_id && 'uwp_resend' == $action && wp_verify_nonce( $nonce,'uwp_resend')){
393 - $send_result = $this->uwp_resend_activation_mail($user_id);
394 - if(!is_admin()){
395 - global $uwp_notices;
396 -
397 - if($send_result) {
398 - $message = __('Activation email has been sent!', 'userswp');
399 - } else {
400 - $message = __('Error while processing request. Please contact site admin.', 'userswp');
401 - }
402 - $uwp_notices[] = '<div class="uwp-alert-success text-center">'.$message.'</div>';
403 - return;
404 - }
405 - if(!$send_result){
406 - wp_redirect( add_query_arg( 'update', 'err_uwp_resend', admin_url('users.php') ) );
407 - }
408 - wp_redirect( add_query_arg( 'update', 'uwp_resend', admin_url('users.php') ) );
409 - exit();
410 - }
411 - }
412 -
413 - public function uwp_users_bulk_actions($bulk_actions){
414 - $bulk_actions['uwp_resend'] = __( 'Resend Activation', 'userswp');
415 - return $bulk_actions;
416 - }
417 -
418 - public function uwp_handle_users_bulk_actions($redirect_to, $doaction, $user_ids){
419 - if ( 'uwp_resend' !== $doaction ) {
420 - return $redirect_to;
421 - }
422 -
423 - foreach ( $user_ids as $user_id ) {
424 - $this->uwp_resend_activation_mail($user_id);
425 - }
426 -
427 - $redirect_to = add_query_arg( 'update', 'uwp_resend', $redirect_to );
428 - return $redirect_to;
429 - }
430 -
431 - public function uwp_resend_activation_mail($user_id = 0){
432 - if(!$user_id){
433 - return false;
434 - }
435 - if( 'email_unconfirmed' == get_user_meta( $user_id, 'uwp_mod', true )){
436 - $email = new UsersWP_Mails();
437 - $send_result = $email->send( 'activate', $user_id );
438 - return $send_result;
439 - }
440 - return true;
441 - }
442 -
443 - public function uwp_show_update_messages(){
444 - if ( !isset($_REQUEST['update']) ) return;
445 -
446 - $update = $_REQUEST['update'];
447 - $messages = array();
448 -
449 - switch($update) {
450 - case 'uwp_resend':
451 - $messages['msg'] = __('Activation email has been sent!','userswp');
452 - break;
453 - case 'err_uwp_resend':
454 - $messages['err_msg'] = __('Error while sending activation email. Please try again.','userswp');
455 - break;
456 - }
457 -
458 - if ( !empty( $messages ) ) {
459 - if ( isset($messages['err_content'])) {
460 - echo '<div class="notice notice-error"><p>' . $messages['err_msg'] . '</p></div>';
461 - } else {
462 - echo '<div class="notice notice-success is-dismissible"><p>' . $messages['msg'] . '</p></div>';
463 - }
464 - }
465 - }
431 + return $metadata;
432 + }
466 433
467 434 }