PluginProbe
UsersWP – Front-end login form, User Registration, User Profile & Members Directory plugin for WP / 1.0.13
UsersWP – Front-end login form, User Registration, User Profile & Members Directory plugin for WP v1.0.13
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
userswp / includes / class-meta.php

class-meta.php in UsersWP – Front-end login form, User Registration, User Profile & Members Directory plugin for WP 1.0.13, at includes/class-meta.php

528 lines 17.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * UsersWP Meta functions
4 *
5 * All UsersWP related User Settings and Site settings can be created, updated and accessed via this class.
6 *
7 * @since 1.0.0
8 * @author GeoDirectory Team <info@wpgeodirectory.com>
9 */
10 class UsersWP_Meta {
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 }
34
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 = '') {
47
48 if (!$key ) {
49 return false;
50 }
51
52 $settings = get_option( 'uwp_settings', array());
53
54 if( !is_array( $settings ) ) {
55 $settings = array();
56 }
57
58 $settings[ $key ] = $value;
59
60 $settings = apply_filters( 'uwp_update_option', $settings, $key, $value );
61 $settings = apply_filters( 'uwp_update_option_' . $key, $settings, $key, $value );
62
63 update_option( 'uwp_settings', $settings );
64
65 return true;
66 }
67
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 }
84
85 $user_data = get_userdata($user_id);
86 $value = null;
87 $usermeta = false;
88
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 }
99
100 }
101 } else {
102 $usermeta = uwp_get_usermeta_row($user_id);
103 }
104
105
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 }
110
111 /**
112 * Updates UsersWP user meta value using key.
113 *
114 * @since 1.0.0
115 * @package userswp
116 *
117 * @param int|bool $user_id User ID.
118 * @param string|bool $key User meta Key.
119 * @param string $value User meta Value.
120 *
121 * @return bool Update success or not?.
122 */
123 public function update_usermeta( $user_id = false, $key, $value ) {
124
125 if (!$user_id || !$key ) {
126 return false;
127 }
128
129 global $wpdb;
130 $meta_table = uwp_get_table_prefix() . 'uwp_usermeta';
131 $user_meta_info = uwp_get_usermeta_row($user_id);
132
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 );
135
136 do_action( 'uwp_before_update_usermeta', $user_id, $key, $value, $user_meta_info );
137
138
139 $value = uwp_maybe_serialize($key, $value);
140
141 if (uwp_str_ends_with($key, '_privacy')) {
142 $key = 'user_privacy';
143 }
144
145 if (!empty($user_meta_info)) {
146 $wpdb->query(
147 $wpdb->prepare(
148
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(
159
160 "insert into " . $meta_table . " set {$key} = %s, user_id = %d",
161 array(
162 $value,
163 $user_id
164 )
165 )
166 );
167 }
168
169 return true;
170 }
171
172 /**
173 * Gets UsersWP user meta row using user ID.
174 *
175 * @since 1.0.0
176 * @package userswp
177 *
178 * @param int|bool $user_id User ID.
179 *
180 * @return object|bool User meta row object.
181 */
182 public function get_usermeta_row($user_id = false) {
183 if (!$user_id) {
184 return false;
185 }
186
187 global $wpdb;
188 $meta_table = uwp_get_table_prefix() . 'uwp_usermeta';
189
190 $row = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$meta_table} WHERE user_id = %d", $user_id));
191
192 return $row;
193 }
194
195 /**
196 * Deletes a UsersWP meta row using the user ID.
197 *
198 * @since 1.0.5
199 * @package UsersWP
200 *
201 * @param int|bool $user_id User ID.
202 *
203 * @return void
204 */
205 public function delete_usermeta_row($user_id = false) {
206 if (!$user_id) {
207 return;
208 }
209
210 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));
213 }
214
215 /**
216 * Syncs WP usermeta with UsersWP usermeta.
217 *
218 * @since 1.0.0
219 * @package userswp
220 *
221 * @param int $user_id User ID.
222 *
223 * @return void
224 */
225 public function sync_usermeta($user_id) {
226
227 $user_data = get_userdata($user_id);
228
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);
235
236 }
237
238 /**
239 * Delete UsersWP meta when user get deleted.
240 *
241 * @since 1.0.5
242 * @package UsersWP
243 *
244 * @param int $user_id User ID.
245 *
246 * @return void
247 */
248 public function delete_usermeta_for_user($user_id) {
249 $this->delete_usermeta_row($user_id);
250 }
251
252 /**
253 * Delete UsersWP meta when user get deleted from subsite of multisite network.
254 *
255 * @package UsersWP
256 *
257 * @param int $user_id User ID.
258 *
259 * @return void
260 */
261 public function remove_user_from_blog($user_id, $blog_id) {
262 switch_to_blog( $blog_id );
263 $this->delete_usermeta_row($user_id);
264 restore_current_blog();
265 }
266
267 /**
268 * Saves User IP during registration.
269 *
270 * @since 1.0.5
271 * @package userswp
272 *
273 * @param array $result Validated form result.
274 * @param string $type Form Type.
275 * @param int $user_id User ID.
276 *
277 * @return array Validated form result.
278 */
279 public function save_user_ip_on_register($result, $type, $user_id) {
280 if ($type == 'register') {
281 $ip = uwp_get_ip();
282 uwp_update_usermeta($user_id, 'user_ip', $ip);
283 }
284 return $result;
285 }
286
287 /**
288 * Saves the users IP on login.
289 *
290 * @since 1.0.0
291 * @package userswp
292 *
293 * @param string $user_login The users username.
294 * @param object $user The user object WP_User.
295 *
296 * @return void
297 */
298 public function save_user_ip_on_login( $user_login, $user ) {
299
300 $ip = uwp_get_ip();
301 if (isset($user->ID)) {
302 uwp_update_usermeta($user->ID, 'user_ip', $ip);
303 }
304 }
305
306 /**
307 * Modifies privacy value while updating into the db.
308 *
309 * @since 1.0.0
310 * @package userswp
311 * @param string $value Privacy value.
312 *
313 * @param int $user_id The User ID.
314 * @param string $key Custom field key.
315 * @param object $user_meta_info User meta row.
316 *
317 * @return string Modified privacy field string.
318 */
319 public function modify_privacy_value_on_update($value, $user_id, $key, $user_meta_info) {
320 if (uwp_str_ends_with($key, '_privacy')) {
321 $old_value = $user_meta_info->user_privacy;
322 if (!empty($old_value)) {
323 // Existing serialized value
324 if ($value == 'no') {
325 $public_fields = explode(',', $old_value);
326 if (!in_array($key, $public_fields)) {
327 $public_fields[] = $key;
328 }
329 $value = implode(',', $public_fields);
330 } else {
331 // Yes value
332 $public_fields = explode(',', $old_value);
333 if(($key = array_search($key, $public_fields)) !== false) {
334 unset($public_fields[$key]);
335 }
336 $value = implode(',', $public_fields);
337 }
338
339 } else {
340 // New Serialized value
341 if ($value == 'no') {
342 $public_fields = array();
343 $public_fields[] = $key;
344 $value = implode(',', $public_fields);
345 } else {
346 // For yes values no need to update since its a public field.
347 // We store only the private fields.
348 }
349
350 }
351 }
352 return $value;
353 }
354
355 /**
356 * Modifies privacy value while fetching from the db.
357 *
358 * @since 1.0.0
359 * @package userswp
360 *
361 * @param string $value Privacy value.
362 * @param int $user_id The User ID.
363 * @param string $key Custom field key.
364 * @param string $default Default value.
365 *
366 * @return string Modified privacy value.
367 */
368 public function modify_privacy_value_on_get($value, $user_id, $key, $default, $usermeta) {
369 if (uwp_str_ends_with($key, '_privacy')) {
370 $value = 'yes';
371 if (!empty($usermeta)) {
372 $output = $usermeta->user_privacy ? $usermeta->user_privacy : $default;
373 if ($output) {
374 $public_fields = explode(',', $output);
375 if (in_array($key, $public_fields)) {
376 $value = 'no';
377 }
378 }
379 }
380 }
381 return $value;
382 }
383
384 /**
385 * Modifies date value from unix timestamp to string while updating into the db.
386 *
387 * @since 1.0.0
388 * @package userswp
389 *
390 * @param int $value Unix Timestamp.
391 * @param int $user_id The User ID.
392 * @param string $key Custom field key.
393 *
394 * @return string Date string.
395 */
396 public function modify_datepicker_value_on_update($value, $user_id, $key) {
397 // modify timestamp to date
398 if (is_int($value)) {
399 $field_info = uwp_get_custom_field_info($key);
400 if ($field_info->field_type == 'datepicker') {
401 $value = date('Y-m-d', $value);
402 }
403 }
404 return $value;
405 }
406
407 /**
408 * Modifies date value from string to unix timestamp while fetching from the db.
409 *
410 * @since 1.0.0
411 * @package userswp
412 *
413 * @param string $value Date string.
414 * @param int $user_id The User ID.
415 * @param string $key Custom field key.
416 *
417 * @return int Unix Timestamp.
418 */
419 public function modify_datepicker_value_on_get($value, $user_id, $key, $default, $usermeta) {
420 // modify date to timestamp
421 if (is_string($value) && (strpos($value, '-') !== false)) {
422 $field_info = uwp_get_custom_field_info($key);
423 if (isset($field_info->field_type) && $field_info->field_type == 'datepicker') {
424 $value = strtotime($value);
425 }
426 }
427 return $value;
428 }
429
430 public function uwp_user_row_actions($actions, $user_object){
431 $user_id = $user_object->ID;
432 $mod_value = get_user_meta( $user_id, 'uwp_mod', true );
433 $delete_link = add_query_arg(
434 array(
435 'user_id' => $user_id,
436 'action' => 'uwp_resend',
437 '_nonce' => wp_create_nonce('uwp_resend'),
438 ),
439 admin_url( 'users.php' )
440 );
441 if ($mod_value == 'email_unconfirmed') {
442 $actions['uwp_resend_activation'] = "<a class='' href='" . $delete_link . "'>" . __( 'Resend Activation','ultimate-member') . "</a>";
443 }
444
445 return $actions;
446 }
447
448 public function uwp_process_user_actions(){
449 $user_id = isset($_REQUEST['user_id']) ? (int)$_REQUEST['user_id'] : 0;
450 $action = isset($_REQUEST['action']) ? $_REQUEST['action'] : false;
451 $nonce = isset($_REQUEST['_nonce']) ? $_REQUEST['_nonce'] : false;
452
453 if($user_id && 'uwp_resend' == $action && wp_verify_nonce( $nonce,'uwp_resend')){
454 $send_result = $this->uwp_resend_activation_mail($user_id);
455 if(!is_admin()){
456 global $uwp_notices;
457
458 if($send_result) {
459 $message = __('Activation email has been sent!', 'userswp');
460 } else {
461 $message = __('Error while processing request. Please contact site admin.', 'userswp');
462 }
463 $uwp_notices[] = '<div class="uwp-alert-success text-center">'.$message.'</div>';
464 return;
465 }
466 if(!$send_result){
467 wp_redirect( add_query_arg( 'update', 'err_uwp_resend', admin_url('users.php') ) );
468 }
469 wp_redirect( add_query_arg( 'update', 'uwp_resend', admin_url('users.php') ) );
470 exit();
471 }
472 }
473
474 public function uwp_users_bulk_actions($bulk_actions){
475 $bulk_actions['uwp_resend'] = __( 'Resend Activation', 'userswp');
476 return $bulk_actions;
477 }
478
479 public function uwp_handle_users_bulk_actions($redirect_to, $doaction, $user_ids){
480 if ( 'uwp_resend' !== $doaction ) {
481 return $redirect_to;
482 }
483
484 foreach ( $user_ids as $user_id ) {
485 $this->uwp_resend_activation_mail($user_id);
486 }
487
488 $redirect_to = add_query_arg( 'update', 'uwp_resend', $redirect_to );
489 return $redirect_to;
490 }
491
492 public function uwp_resend_activation_mail($user_id = 0){
493 if(!$user_id){
494 return false;
495 }
496 if( 'email_unconfirmed' == get_user_meta( $user_id, 'uwp_mod', true )){
497 $email = new UsersWP_Mails();
498 $send_result = $email->send( 'activate', $user_id );
499 return $send_result;
500 }
501 return true;
502 }
503
504 public function uwp_show_update_messages(){
505 if ( !isset($_REQUEST['update']) ) return;
506
507 $update = $_REQUEST['update'];
508 $messages = array();
509
510 switch($update) {
511 case 'uwp_resend':
512 $messages['msg'] = __('Activation email has been sent!','userswp');
513 break;
514 case 'err_uwp_resend':
515 $messages['err_msg'] = __('Error while sending activation email. Please try again.','userswp');
516 break;
517 }
518
519 if ( !empty( $messages ) ) {
520 if ( isset($messages['err_content'])) {
521 echo '<div class="notice notice-error"><p>' . $messages['err_msg'] . '</p></div>';
522 } else {
523 echo '<div class="notice notice-success is-dismissible"><p>' . $messages['msg'] . '</p></div>';
524 }
525 }
526 }
527
528 }