PluginProbe
UsersWP – Front-end login form, User Registration, User Profile & Members Directory plugin for WP / 1.2.74
UsersWP – Front-end login form, User Registration, User Profile & Members Directory plugin for WP v1.2.74
1.2.74 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 All 174 releases
← All changes | includes/class-meta.php +243 -224 1.0.121.2.74 View file →
@@ -8,107 +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 - $user_data = get_userdata($user_id);
86 - $value = null;
87 - $usermeta = false;
66 + $value = 'yes';
88 67
89 - if (!uwp_str_ends_with($key, '_privacy')) {
90 - if ($key == 'uwp_account_email') {
91 - $value = $user_data->user_email;
92 - } else {
93 - $usermeta = uwp_get_usermeta_row($user_id);
94 - if (!empty($usermeta)) {
95 - $value = $usermeta->{$key} ? $usermeta->{$key} : $default;
96 - } else {
97 - $value = $default;
98 - }
68 + if ( ! empty( $row ) ) {
69 + $output = isset( $row['user_privacy'] ) ? $row['user_privacy'] : $default;
70 + $public_fields = explode( ',', $output );
99 71
100 - }
101 - } else {
102 - $usermeta = uwp_get_usermeta_row($user_id);
103 - }
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 );
104 80
81 + if ( ! $user_data ) {
82 + return $value;
83 + }
105 84
106 - $value = uwp_maybe_unserialize($key, $value);
107 - $value = apply_filters( 'uwp_get_usermeta', $value, $user_id, $key, $default, $usermeta );
108 - return apply_filters( 'uwp_get_usermeta_' . $key, $value, $user_id, $key, $default, $usermeta );
109 - }
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' );
110 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 +
111 118 /**
112 119 * Updates UsersWP user meta value using key.
113 120 *
114 121 * @since 1.0.0
@@ -119,57 +126,70 @@
119 126 * @param string $value User meta Value.
120 127 *
121 128 * @return bool Update success or not?.
122 129 */
123 - public function update_usermeta( $user_id = false, $key, $value ) {
130 + public function update_usermeta( $user_id, $key, $value ) {
131 + global $wpdb;
124 132
125 - if (!$user_id || !$key ) {
126 - return false;
127 - }
133 + if ( ! $user_id || ! $key ) {
134 + return false;
135 + }
128 136
129 - global $wpdb;
130 - $meta_table = uwp_get_table_prefix() . 'uwp_usermeta';
131 - $user_meta_info = uwp_get_usermeta_row($user_id);
137 + $meta_table = get_usermeta_table_prefix() . 'uwp_usermeta';
138 + $cache_group = 'uwp_usermeta';
139 + $obj_key = $user_id . '_' . $key;
132 140
133 - $value = apply_filters( 'uwp_update_usermeta', $value, $user_id, $key, $user_meta_info );
134 - $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 + }
135 144
136 - 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 + }
137 154
155 + $user_meta_info = $wpdb->get_col( $wpdb->prepare( "SELECT `{$key}` FROM `{$meta_table}` WHERE user_id = %d", $user_id ) );
138 156
139 - $value = uwp_maybe_serialize($key, $value);
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 );
140 159
141 - if (uwp_str_ends_with($key, '_privacy')) {
142 - $key = 'user_privacy';
143 - }
160 + do_action( 'uwp_before_update_usermeta', $user_id, $key, $value, $user_meta_info );
144 161
145 - if (!empty($user_meta_info)) {
146 - $wpdb->query(
147 - $wpdb->prepare(
162 + $value = uwp_maybe_serialize( $key, $value );
148 163
149 - "update " . $meta_table . " set {$key} = %s where user_id = %d",
150 - array(
151 - $value,
152 - $user_id
153 - )
154 - )
155 - );
156 - } else {
157 - $wpdb->query(
158 - $wpdb->prepare(
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 + );
159 172
160 - "insert into " . $meta_table . " set {$key} = %s, user_id = %d",
161 - array(
162 - $value,
163 - $user_id
164 - )
165 - )
166 - );
167 - }
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 + );
168 181
169 - return true;
170 - }
182 + if ( ! $result ) {
183 + return false;
184 + }
185 + }
171 186
187 + wp_cache_delete( $obj_key, $cache_group );
188 +
189 + return true;
190 + }
191 +
172 192 /**
173 193 * Gets UsersWP user meta row using user ID.
174 194 *
175 195 * @since 1.0.0
@@ -184,11 +204,15 @@
184 204 return false;
185 205 }
186 206
187 207 global $wpdb;
188 - $meta_table = uwp_get_table_prefix() . 'uwp_usermeta';
208 + $meta_table = get_usermeta_table_prefix() . 'uwp_usermeta';
189 209
190 - $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 + }
191 215
192 216 return $row;
193 217 }
194 218
@@ -207,10 +231,18 @@
207 231 return;
208 232 }
209 233
210 234 global $wpdb;
211 - $meta_table = uwp_get_table_prefix() . 'uwp_usermeta';
212 - $wpdb->query($wpdb->prepare("DELETE FROM {$meta_table} WHERE user_id = %d", $user_id));
235 + $meta_table = get_usermeta_table_prefix() . 'uwp_usermeta';
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 +
213 245 }
214 246
215 247 /**
216 248 * Syncs WP usermeta with UsersWP usermeta.
@@ -223,17 +255,42 @@
223 255 * @return void
224 256 */
225 257 public function sync_usermeta($user_id) {
226 258
259 + global $wpdb;
227 260 $user_data = get_userdata($user_id);
261 + $meta_table = get_usermeta_table_prefix() . 'uwp_usermeta';
228 262
229 - uwp_update_usermeta($user_id, 'uwp_account_username', $user_data->user_login);
230 - uwp_update_usermeta($user_id, 'uwp_account_email', $user_data->user_email);
231 - uwp_update_usermeta($user_id, 'uwp_account_display_name', $user_data->display_name);
232 - uwp_update_usermeta($user_id, 'uwp_account_first_name', $user_data->first_name);
233 - uwp_update_usermeta($user_id, 'uwp_account_last_name', $user_data->last_name);
234 - uwp_update_usermeta($user_id, 'uwp_account_bio', $user_data->description);
263 + $user_meta = array(
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,
271 + );
235 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 +
277 + $users = $wpdb->get_var($wpdb->prepare("SELECT COUNT(user_id) FROM {$meta_table} WHERE user_id = %d", $user_id));
278 +
279 + if($users){
280 + $wpdb->update(
281 + $meta_table,
282 + $user_meta,
283 + array('user_id' => $user_id)
284 + );
285 + } else {
286 + $user_meta['user_id'] = $user_id;
287 + $wpdb->insert(
288 + $meta_table,
289 + $user_meta
290 + );
291 + }
292 +
236 293 }
237 294
238 295 /**
239 296 * Delete UsersWP meta when user get deleted.
@@ -249,8 +306,23 @@
249 306 $this->delete_usermeta_row($user_id);
250 307 }
251 308
252 309 /**
310 + * Delete UsersWP meta when user get deleted from subsite of multisite network.
311 + *
312 + * @package UsersWP
313 + *
314 + * @param int $user_id User ID.
315 + *
316 + * @return void
317 + */
318 + public function remove_user_from_blog($user_id, $blog_id) {
319 + switch_to_blog( $blog_id );
320 + $this->delete_usermeta_row($user_id);
321 + restore_current_blog();
322 + }
323 +
324 + /**
253 325 * Saves User IP during registration.
254 326 *
255 327 * @since 1.0.5
256 328 * @package userswp
@@ -280,94 +352,15 @@
280 352 *
281 353 * @return void
282 354 */
283 355 public function save_user_ip_on_login( $user_login, $user ) {
284 -
285 - $ip = uwp_get_ip();
286 356 if (isset($user->ID)) {
357 + $ip = uwp_get_ip();
287 358 uwp_update_usermeta($user->ID, 'user_ip', $ip);
288 359 }
289 360 }
290 361
291 362 /**
292 - * Modifies privacy value while updating into the db.
293 - *
294 - * @since 1.0.0
295 - * @package userswp
296 - * @param string $value Privacy value.
297 - *
298 - * @param int $user_id The User ID.
299 - * @param string $key Custom field key.
300 - * @param object $user_meta_info User meta row.
301 - *
302 - * @return string Modified privacy field string.
303 - */
304 - public function modify_privacy_value_on_update($value, $user_id, $key, $user_meta_info) {
305 - if (uwp_str_ends_with($key, '_privacy')) {
306 - $old_value = $user_meta_info->user_privacy;
307 - if (!empty($old_value)) {
308 - // Existing serialized value
309 - if ($value == 'no') {
310 - $public_fields = explode(',', $old_value);
311 - if (!in_array($key, $public_fields)) {
312 - $public_fields[] = $key;
313 - }
314 - $value = implode(',', $public_fields);
315 - } else {
316 - // Yes value
317 - $public_fields = explode(',', $old_value);
318 - if(($key = array_search($key, $public_fields)) !== false) {
319 - unset($public_fields[$key]);
320 - }
321 - $value = implode(',', $public_fields);
322 - }
323 -
324 - } else {
325 - // New Serialized value
326 - if ($value == 'no') {
327 - $public_fields = array();
328 - $public_fields[] = $key;
329 - $value = implode(',', $public_fields);
330 - } else {
331 - // For yes values no need to update since its a public field.
332 - // We store only the private fields.
333 - }
334 -
335 - }
336 - }
337 - return $value;
338 - }
339 -
340 - /**
341 - * Modifies privacy value while fetching from the db.
342 - *
343 - * @since 1.0.0
344 - * @package userswp
345 - *
346 - * @param string $value Privacy value.
347 - * @param int $user_id The User ID.
348 - * @param string $key Custom field key.
349 - * @param string $default Default value.
350 - *
351 - * @return string Modified privacy value.
352 - */
353 - public function modify_privacy_value_on_get($value, $user_id, $key, $default, $usermeta) {
354 - if (uwp_str_ends_with($key, '_privacy')) {
355 - $value = 'yes';
356 - if (!empty($usermeta)) {
357 - $output = $usermeta->user_privacy ? $usermeta->user_privacy : $default;
358 - if ($output) {
359 - $public_fields = explode(',', $output);
360 - if (in_array($key, $public_fields)) {
361 - $value = 'no';
362 - }
363 - }
364 - }
365 - }
366 - return $value;
367 - }
368 -
369 - /**
370 363 * Modifies date value from unix timestamp to string while updating into the db.
371 364 *
372 365 * @since 1.0.0
373 366 * @package userswp
@@ -377,16 +370,18 @@
377 370 * @param string $key Custom field key.
378 371 *
379 372 * @return string Date string.
380 373 */
381 - public function modify_datepicker_value_on_update($value, $user_id, $key) {
382 - // modify timestamp to date
383 - if (is_int($value)) {
384 - $field_info = uwp_get_custom_field_info($key);
385 - if ($field_info->field_type == 'datepicker') {
386 - $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 );
387 381 }
388 382 }
383 +
389 384 return $value;
390 385 }
391 386
392 387 /**
@@ -400,16 +395,40 @@
400 395 * @param string $key Custom field key.
401 396 *
402 397 * @return int Unix Timestamp.
403 398 */
404 - public function modify_datepicker_value_on_get($value, $user_id, $key, $default, $usermeta) {
399 + public function modify_datepicker_value_on_get($value, $user_id, $key, $default) {
405 400 // modify date to timestamp
406 - if (is_string($value) && (strpos($value, '-') !== false)) {
407 - $field_info = uwp_get_custom_field_info($key);
408 - if (isset($field_info->field_type) && $field_info->field_type == 'datepicker') {
409 - $value = strtotime($value);
410 - }
411 - }
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 +
412 408 return $value;
413 409 }
410 +
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 ) {
422 +
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 + }
430 +
431 + return $metadata;
432 + }
414 433
415 434 }