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

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