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

467 lines 15.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 global $wpdb;
86 $meta_table = get_usermeta_table_prefix() . 'uwp_usermeta';
87
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);
101
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 }
116
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 }
122
123 /**
124 * Updates UsersWP user meta value using key.
125 *
126 * @since 1.0.0
127 * @package userswp
128 *
129 * @param int|bool $user_id User ID.
130 * @param string|bool $key User meta Key.
131 * @param string $value User meta Value.
132 *
133 * @return bool Update success or not?.
134 */
135 public function update_usermeta( $user_id = false, $key, $value ) {
136
137 if (!$user_id || !$key ) {
138 return false;
139 }
140
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 ) );
144
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 );
147
148 do_action( 'uwp_before_update_usermeta', $user_id, $key, $value, $user_meta_info );
149
150 $value = uwp_maybe_serialize($key, $value);
151
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 }
166
167 return true;
168 }
169
170 /**
171 * Gets UsersWP user meta row using user ID.
172 *
173 * @since 1.0.0
174 * @package userswp
175 *
176 * @param int|bool $user_id User ID.
177 *
178 * @return object|bool User meta row object.
179 */
180 public function get_usermeta_row($user_id = false) {
181 if (!$user_id) {
182 return false;
183 }
184
185 global $wpdb;
186 $meta_table = get_usermeta_table_prefix() . 'uwp_usermeta';
187
188 $row = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$meta_table} WHERE user_id = %d", $user_id));
189
190 return $row;
191 }
192
193 /**
194 * Deletes a UsersWP meta row using the user ID.
195 *
196 * @since 1.0.5
197 * @package UsersWP
198 *
199 * @param int|bool $user_id User ID.
200 *
201 * @return void
202 */
203 public function delete_usermeta_row($user_id = false) {
204 if (!$user_id) {
205 return;
206 }
207
208 global $wpdb;
209 $meta_table = get_usermeta_table_prefix() . 'uwp_usermeta';
210 $wpdb->query($wpdb->prepare("DELETE FROM {$meta_table} WHERE user_id = %d", $user_id));
211 }
212
213 /**
214 * Syncs WP usermeta with UsersWP usermeta.
215 *
216 * @since 1.0.0
217 * @package userswp
218 *
219 * @param int $user_id User ID.
220 *
221 * @return void
222 */
223 public function sync_usermeta($user_id) {
224
225 global $wpdb;
226 $user_data = get_userdata($user_id);
227 $meta_table = get_usermeta_table_prefix() . 'uwp_usermeta';
228
229 $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,
235 );
236
237 $users = $wpdb->get_var($wpdb->prepare("SELECT COUNT(user_id) FROM {$meta_table} WHERE user_id = %d", $user_id));
238
239 if($users){
240 $wpdb->update(
241 $meta_table,
242 $user_meta,
243 array('user_id' => $user_id)
244 );
245 } else {
246 $user_meta['user_id'] = $user_id;
247 $wpdb->insert(
248 $meta_table,
249 $user_meta
250 );
251 }
252
253 }
254
255 /**
256 * Delete UsersWP meta when user get deleted.
257 *
258 * @since 1.0.5
259 * @package UsersWP
260 *
261 * @param int $user_id User ID.
262 *
263 * @return void
264 */
265 public function delete_usermeta_for_user($user_id) {
266 $this->delete_usermeta_row($user_id);
267 }
268
269 /**
270 * Delete UsersWP meta when user get deleted from subsite of multisite network.
271 *
272 * @package UsersWP
273 *
274 * @param int $user_id User ID.
275 *
276 * @return void
277 */
278 public function remove_user_from_blog($user_id, $blog_id) {
279 switch_to_blog( $blog_id );
280 $this->delete_usermeta_row($user_id);
281 restore_current_blog();
282 }
283
284 /**
285 * Saves User IP during registration.
286 *
287 * @since 1.0.5
288 * @package userswp
289 *
290 * @param array $result Validated form result.
291 * @param string $type Form Type.
292 * @param int $user_id User ID.
293 *
294 * @return array Validated form result.
295 */
296 public function save_user_ip_on_register($result, $type, $user_id) {
297 if ($type == 'register') {
298 $ip = uwp_get_ip();
299 uwp_update_usermeta($user_id, 'user_ip', $ip);
300 }
301 return $result;
302 }
303
304 /**
305 * Saves the users IP on login.
306 *
307 * @since 1.0.0
308 * @package userswp
309 *
310 * @param string $user_login The users username.
311 * @param object $user The user object WP_User.
312 *
313 * @return void
314 */
315 public function save_user_ip_on_login( $user_login, $user ) {
316
317 $ip = uwp_get_ip();
318 if (isset($user->ID)) {
319 uwp_update_usermeta($user->ID, 'user_ip', $ip);
320 }
321 }
322
323 /**
324 * Modifies date value from unix timestamp to string while updating into the db.
325 *
326 * @since 1.0.0
327 * @package userswp
328 *
329 * @param int $value Unix Timestamp.
330 * @param int $user_id The User ID.
331 * @param string $key Custom field key.
332 *
333 * @return string Date string.
334 */
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);
341 }
342 }
343 return $value;
344 }
345
346 /**
347 * Modifies date value from string to unix timestamp while fetching from the db.
348 *
349 * @since 1.0.0
350 * @package userswp
351 *
352 * @param string $value Date string.
353 * @param int $user_id The User ID.
354 * @param string $key Custom field key.
355 *
356 * @return int Unix Timestamp.
357 */
358 public function modify_datepicker_value_on_get($value, $user_id, $key, $default) {
359 // 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 }
366 return $value;
367 }
368
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 }
383
384 return $actions;
385 }
386
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 }
466
467 }