PluginProbe
UsersWP – Front-end login form, User Registration, User Profile & Members Directory plugin for WP / 1.0.10
UsersWP – Front-end login form, User Registration, User Profile & Members Directory plugin for WP v1.0.10
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 1.0.23 All 172 releases
userswp / includes / class-tools.php

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

640 lines 22.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * UsersWP tools functions
4 *
5 * All UsersWP tools related functions can be found here.
6 *
7 * @since 1.0.0
8 * @author GeoDirectory Team <info@wpgeodirectory.com>
9 */
10 class UsersWP_Tools {
11
12 public function uwp_fix_usermeta_table() {
13 // If table not available it will be created else synced
14 uwp_create_tables();
15 uwp101_create_tables();
16 }
17
18 public function uwp_fix_userdata($step) {
19 $this->uwp_fix_usermeta($step);
20 }
21
22 public function uwp_tools_wrap_error_message($message, $class) {
23 ob_start();
24 ?>
25 <div class="notice inline notice-<?php echo $class; ?> notice-alt">
26 <p><?php echo $message; ?></p>
27 </div>
28 <?php
29 $html = ob_get_clean();
30 return $html;
31 }
32
33 public function uwp_fix_field_columns() {
34 global $wpdb;
35 $errors = new WP_Error();
36
37 $form_type = 'account';
38 $table_name = uwp_get_table_prefix() . 'uwp_form_fields';
39 $fields = $wpdb->get_results($wpdb->prepare("SELECT * FROM " . $table_name . " WHERE form_type = %s ORDER BY sort_order ASC", array($form_type)));
40 $meta_table = uwp_get_table_prefix() . 'uwp_usermeta';
41
42 $excluded = uwp_get_excluded_fields();
43
44 if (!empty($fields)) {
45 foreach ($fields as $field) {
46 $htmlvar_name = $field->htmlvar_name;
47 if (in_array($htmlvar_name, $excluded)) {
48 continue;
49 }
50 $is_exists = uwp_column_exist($meta_table, $htmlvar_name);
51 if (!$is_exists) {
52 $meta_field_add = $this->uwp_sql_datatype_from_field($field);
53 $add_result = uwp_add_column_if_not_exist($meta_table, $htmlvar_name, $meta_field_add);
54 if ($add_result === false) {
55 $errors->add('creation_failed', __('Column creation failed, you may have too many columns or the default value does not match with field data type.', 'userswp'));
56 return $errors;
57 }
58 }
59 }
60 }
61 return true;
62 }
63
64 public function uwp_get_field_columns() {
65 global $wpdb;
66 $form_type = 'account';
67 $table_name = uwp_get_table_prefix() . 'uwp_form_fields';
68 $fields = $wpdb->get_results($wpdb->prepare("SELECT * FROM " . $table_name . " WHERE form_type = %s ORDER BY sort_order ASC", array($form_type)));
69
70 $excluded = uwp_get_excluded_fields();
71
72 $columns = array();
73
74 if (!empty($fields)) {
75 foreach ($fields as $field) {
76 $htmlvar_name = $field->htmlvar_name;
77 if (in_array($htmlvar_name, $excluded)) {
78 continue;
79 }
80 $columns[] = $htmlvar_name;
81 }
82 }
83
84 return $columns;
85
86 }
87
88 public function uwp_fix_usermeta($step) {
89
90 global $wpdb;
91
92
93 $items_per_page = 10;
94 $offset = (int) $step * $items_per_page;
95 // $end = $offset + $items_per_page;
96
97 $user_ids = $wpdb->get_col( $wpdb->prepare(
98 "SELECT $wpdb->users.ID FROM $wpdb->users LIMIT %d OFFSET %d",
99 $items_per_page, $offset ));
100
101 $total_users = $this->uwp_tools_total_users_count();
102
103 $max_step = ceil($total_users / $items_per_page) - 1;
104 $percent = (($step + 1)/ ($max_step+1)) * 100;
105
106 $columns = $this->uwp_get_field_columns();
107
108 //we got all the IDs, now loop through them to get individual IDs
109 $count = 0;
110 $message = '';
111 $table_sync_error = false;
112 $done = false;
113 $error = false;
114
115 if ($step == 0) {
116 $this->uwp_fix_usermeta_table();
117
118 $output = $this->uwp_fix_field_columns();
119 if (is_wp_error($output)) {
120 $table_sync_error = true;
121 $error = true;
122 $message = $this->uwp_tools_wrap_error_message($output->get_error_message(), 'error');
123 }
124 }
125
126 if (!$table_sync_error) {
127 foreach ( $user_ids as $user_id ) {
128
129 // get user info by calling get_userdata() on each id
130 $user_data = get_userdata($user_id);
131 $first_name = get_user_meta( $user_id, 'first_name', true );
132 $last_name = get_user_meta( $user_id, 'last_name', true );
133 $bio = get_user_meta( $user_id, 'description', true );
134 $usermeta = get_user_meta( $user_id, 'uwp_usermeta', true );
135
136 foreach ($columns as $column) {
137 switch ($column) {
138 case "uwp_account_username":
139 $value = $user_data->user_login;
140 break;
141 case "uwp_account_email":
142 $value = $user_data->user_email;
143 break;
144 case "uwp_account_first_name":
145 $value = $first_name;
146 break;
147 case "uwp_account_last_name":
148 $value = $last_name;
149 break;
150 case "uwp_account_bio":
151 $value = $bio;
152 break;
153 default:
154 if ($usermeta === false) {
155 $value = false;
156 } else {
157 $value = isset( $usermeta[ $column ] ) ? $usermeta[ $column ] : false;
158 }
159
160 }
161 if ($value !== false) {
162 uwp_update_usermeta($user_id, $column, $value);
163 }
164 }
165
166
167 //avatar and banner
168 $avatar_url = isset( $usermeta[ 'uwp_account_avatar_thumb' ] ) ? $usermeta[ 'uwp_account_avatar_thumb' ] : false;
169 if ($avatar_url !== false) {
170 uwp_update_usermeta($user_id, 'uwp_account_avatar_thumb', $avatar_url);
171 }
172 $banner_url = isset( $usermeta[ 'uwp_account_banner_thumb' ] ) ? $usermeta[ 'uwp_account_banner_thumb' ] : false;
173 if ($banner_url !== false) {
174 uwp_update_usermeta($user_id, 'uwp_account_banner_thumb', $banner_url);
175 }
176
177
178
179
180 $count++;
181 }
182
183 if ($step >= $max_step) {
184 $done = true;
185 $message = __("Processed Successfully", 'uwp-tools');
186 $message = $this->uwp_tools_wrap_error_message($message, 'success');
187 } else {
188 $done = false;
189 $step = $step + 1;
190 }
191 }
192
193 $output = array(
194 'done' => $done,
195 'error' => $error,
196 'message' => $message,
197 'step' => $step,
198 'percent' => intval($percent)
199 );
200 echo json_encode($output);
201
202 }
203
204 public function uwp_sql_datatype_from_field($field) {
205
206 switch ($field->field_type) {
207 case 'checkbox':
208 $data_type = 'TINYINT';
209
210 $meta_field_add = $data_type . "( 1 ) NOT NULL ";
211 if ((int)$field->default_value === 1) {
212 $meta_field_add .= " DEFAULT '1'";
213 }
214 break;
215 case 'multiselect':
216 case 'select':
217 $data_type = 'VARCHAR';
218 $op_size = '500';
219 $meta_field_add = $data_type . "( $op_size ) NULL ";
220 if ($field->default_value != '') {
221 $meta_field_add .= " DEFAULT '" . $field->default_value . "'";
222 }
223 break;
224 case 'textarea':
225 case 'html':
226 case 'url':
227 case 'file':
228 $data_type = 'TEXT';
229 $meta_field_add = $data_type . " NULL ";
230 break;
231 case 'datepicker':
232 $data_type = 'DATE';
233 $meta_field_add = $data_type . " NULL ";
234 break;
235 case 'time':
236 $data_type = 'TIME';
237 $meta_field_add = $data_type . " NULL ";
238 break;
239 default:
240 $data_type = $field->data_type;
241 $decimal_point = $field->decimal_point;
242 $default_value = $field->default_value;
243 if ($data_type != 'VARCHAR' && $data_type != '') {
244 $meta_field_add = $data_type . " NULL ";
245
246 if ($data_type == 'FLOAT' && $decimal_point > 0) {
247 $meta_field_add = "DECIMAL(11, " . (int)$decimal_point . ") NULL ";
248 }
249
250 if (is_numeric($default_value) && $default_value != '') {
251 $meta_field_add .= " DEFAULT '" . $default_value . "'";
252 }
253 } else {
254 $meta_field_add = " VARCHAR( 254 ) NULL ";
255
256 if ($default_value != '') {
257 $meta_field_add .= " DEFAULT '" . $default_value . "'";
258 }
259 }
260 }
261
262 return $meta_field_add;
263 }
264
265 public function uwp_tools_total_users_count() {
266 global $wpdb;
267 $sort= "user_registered";
268 $total_users = $wpdb->get_var( $wpdb->prepare(
269 "SELECT count(*) FROM $wpdb->users ORDER BY %s ASC"
270 , $sort ));
271 return $total_users;
272 }
273
274 public function uwp_tools_process_dummy_users() {
275 if (!current_user_can('manage_options')) {
276 return;
277 }
278
279 if (!isset($_GET['uwp_dummy_users']) || empty($_GET['uwp_dummy_users'])) {
280 return;
281 }
282
283 global $wpdb;
284
285 if ($_GET['uwp_dummy_users'] == 'create') {
286
287 $users_data = $this->uwp_dummy_users_data();
288 foreach ( $users_data as $user ) {
289 if ( username_exists( $user['login'] ) ) {
290 continue;
291 }
292 $user_id = wp_insert_user( array(
293 'user_login' => $user['login'],
294 'user_pass' => $user['pass'],
295 'display_name' => $user['display_name'],
296 'user_email' => $user['email'],
297 'user_registered' => uwp_get_random_date( 45, 1 ),
298 ) );
299 $query[] = $wpdb->last_query;
300
301 $name = explode( ' ', $user['display_name'] );
302 update_user_meta( $user_id, 'first_name', $name[0] );
303 update_user_meta( $user_id, 'uwp_dummy_user', '1' );
304 update_user_meta( $user_id, 'last_name', isset( $name[1] ) ? $name[1] : '' );
305
306 $users[] = $user_id;
307 }
308
309 wp_redirect(admin_url('users.php'));
310 exit();
311 }
312
313 if ($_GET['uwp_dummy_users'] == 'delete') {
314 //todo: add this feature
315 }
316 }
317
318 public function uwp_dummy_users_data() {
319
320 return array(
321 0 => array(
322 'login' => 'antawn',
323 'pass' => '1234567890',
324 'display_name' => 'Antawn Jamison',
325 'email' => 'uwp.dummy.user+1@gmail.com',
326 ),
327 1 => array(
328 'login' => 'chynna',
329 'pass' => '1234567890',
330 'display_name' => 'Chynna Phillips',
331 'email' => 'uwp.dummy.user+2@gmail.com',
332 ),
333 2 => array(
334 'login' => 'kiki',
335 'pass' => '1234567890',
336 'display_name' => 'Kiki Cuyler',
337 'email' => 'uwp.dummy.user+3@gmail.com',
338 ),
339 3 => array(
340 'login' => 'malivai',
341 'pass' => '1234567890',
342 'display_name' => 'MaliVai Washington',
343 'email' => 'uwp.dummy.user+4@gmail.com',
344 ),
345 4 => array(
346 'login' => 'matraca',
347 'pass' => '1234567890',
348 'display_name' => 'Matraca Berg',
349 'email' => 'uwp.dummy.user+5@gmail.com',
350 ),
351 5 => array(
352 'login' => 'ron',
353 'pass' => '1234567890',
354 'display_name' => 'Ron Faucheux',
355 'email' => 'uwp.dummy.user+6@gmail.com',
356 ),
357 6 => array(
358 'login' => 'michellie',
359 'pass' => '1234567890',
360 'display_name' => 'Michellie Jones',
361 'email' => 'uwp.dummy.user+7@gmail.com',
362 ),
363 7 => array(
364 'login' => 'monta',
365 'pass' => '1234567890',
366 'display_name' => 'Monta Ellis',
367 'email' => 'uwp.dummy.user+8@gmail.com',
368 ),
369 8 => array(
370 'login' => 'picabo',
371 'pass' => '1234567890',
372 'display_name' => 'Picabo Street',
373 'email' => 'uwp.dummy.user+9@gmail.com',
374 ),
375 9 => array(
376 'login' => 'ralph',
377 'pass' => '1234567890',
378 'display_name' => 'Ralph Fiennes',
379 'email' => 'uwp.dummy.user+10@gmail.com',
380 ),
381 10 => array(
382 'login' => 'seamus',
383 'pass' => '1234567890',
384 'display_name' => 'Seamus',
385 'email' => 'uwp.dummy.user+11@gmail.com',
386 ),
387 11 => array(
388 'login' => 'shan',
389 'pass' => '1234567890',
390 'display_name' => 'Shan Foster',
391 'email' => 'uwp.dummy.user+12@gmail.com',
392 ),
393 12 => array(
394 'login' => 'siobhan',
395 'pass' => '1234567890',
396 'display_name' => 'Siobhan',
397 'email' => 'uwp.dummy.user+13@gmail.com',
398 ),
399 13 => array(
400 'login' => 'stephen',
401 'pass' => '1234567890',
402 'display_name' => 'Stephen Curry',
403 'email' => 'uwp.dummy.user+14@gmail.com',
404 ),
405 14 => array(
406 'login' => 'wynonna',
407 'pass' => '1234567890',
408 'display_name' => 'Wynonna Judd',
409 'email' => 'uwp.dummy.user+15@gmail.com',
410 ),
411 15 => array(
412 'login' => 'john',
413 'pass' => '1234567890',
414 'display_name' => 'John Caius',
415 'email' => 'uwp.dummy.user+16@gmail.com',
416 ),
417 16 => array(
418 'login' => 'thomas',
419 'pass' => '1234567890',
420 'display_name' => 'Thomas Carew',
421 'email' => 'uwp.dummy.user+17@gmail.com',
422 ),
423 17 => array(
424 'login' => 'jason',
425 'pass' => '1234567890',
426 'display_name' => 'Jason Chaffetz',
427 'email' => 'uwp.dummy.user+18@gmail.com',
428 ),
429 18 => array(
430 'login' => 'mamah',
431 'pass' => '1234567890',
432 'display_name' => 'Mamah Cheney',
433 'email' => 'uwp.dummy.user+19@gmail.com',
434 ),
435 19 => array(
436 'login' => 'cecelia',
437 'pass' => '1234567890',
438 'display_name' => 'Cecelia Cichan ',
439 'email' => 'uwp.dummy.user+20@gmail.com',
440 ),
441 20 => array(
442 'login' => 'dan',
443 'pass' => '1234567890',
444 'display_name' => 'Dan Cortese ',
445 'email' => 'uwp.dummy.user+21@gmail.com',
446 ),
447 21 => array(
448 'login' => 'vernon',
449 'pass' => '1234567890',
450 'display_name' => 'Vernon Dahmer',
451 'email' => 'uwp.dummy.user+22@gmail.com',
452 ),
453 22 => array(
454 'login' => 'andre',
455 'pass' => '1234567890',
456 'display_name' => 'Andre Dubus',
457 'email' => 'uwp.dummy.user+23@gmail.com',
458 ),
459 23 => array(
460 'login' => 'justin',
461 'pass' => '1234567890',
462 'display_name' => 'Justin Duchscherer',
463 'email' => 'uwp.dummy.user+24@gmail.com',
464 ),
465 24 => array(
466 'login' => 'keir',
467 'pass' => '1234567890',
468 'display_name' => 'Keir Dullea ',
469 'email' => 'uwp.dummy.user+25@gmail.com',
470 ),
471 );
472
473 }
474
475 /**
476 * Adds the tools settings page menu as submenu.
477 *
478 * @since 1.0.0
479 * @package userswp
480 *
481 * @param callable $settings_page The function to be called to output the content for this page.
482 *
483 * @return void
484 */
485 public function uwp_add_admin_tools_sub_menu($settings_page) {
486
487 add_submenu_page(
488 "userswp",
489 __('Tools', 'uwp-tools'),
490 __('Tools', 'uwp-tools'),
491 'manage_options',
492 'uwp_tools',
493 $settings_page
494 );
495
496 }
497
498 public function uwp_tools_main_tab_content() {
499 ?>
500 <table class="form-table gd-tools-table">
501 <tbody>
502 <tr>
503 <td><strong><?php _e('Tool', 'uwp-tools');?></strong></td>
504 <td><strong><?php _e('Description', 'uwp-tools');?></strong></td>
505 <td style="text-align: right"><strong><?php _e('Action', 'uwp-tools');?></strong></td>
506 </tr>
507
508
509 <?php if (defined('USERSWP_VERSION')) { ?>
510 <tr>
511 <td><?php _e('Fix User Data', 'uwp-tools');?></td>
512 <td>
513 <div style="margin-bottom: 10px"><?php _e('Fixes User Data if you were using the Beta version.', 'uwp-tools');?></div>
514 </td>
515 <td style="text-align: right">
516 <?php
517 $total_users = $this->uwp_tools_total_users_count();
518 $items_per_page = 10;
519 if ($total_users > $items_per_page) {
520 $multiple = 'data-step="1"';
521 } else {
522 $multiple = "";
523 }
524 ?>
525 <input type="button" value="<?php _e('Run', 'uwp-tools');?>"
526 class="button-primary uwp_diagnosis_button" <?php echo $multiple; ?> data-diagnose="fix_user_data"/>
527 </td>
528 </tr>
529
530 <tr>
531 <td colspan="3">
532 <div id="uwp_diagnose_pb_fix_user_data" class="uwp-pb-wrapper">
533 <div id="progressBar" style="display: none;"><div></div></div>
534 </div>
535 <div id="uwp_diagnose_fix_user_data"></div>
536 </td>
537 </tr>
538
539 <tr>
540 <td><?php _e('Create Dummy Users', 'uwp-tools');?></td>
541 <td>
542 <div><?php _e('Dummy Users will be created for Testing. You can delete them later. Password for all dummy users: 1234567890', 'uwp-tools');?></div>
543 </td>
544 <td style="text-align: right">
545 <?php
546 $dummy_users_create_url = add_query_arg( array(
547 'uwp_dummy_users' => 'create',
548 ));
549
550 ?>
551 <a href="<?php echo $dummy_users_create_url; ?>" class="button-primary"><?php _e('Run', 'uwp-tools');?></a>
552 </td>
553 </tr>
554 <?php } ?>
555
556 </tbody>
557 </table>
558
559 <script type="text/javascript">
560 (function( $, window, undefined ) {
561 $(document).ready(function () {
562 $('.uwp_diagnosis_button').click(function (e) {
563 e.preventDefault();
564 var type = $(this).data('diagnose');
565
566 $("#uwp_diagnose_pb_" + type).find('#progressBar').show().progressbar({value: 0});
567
568 // start the process
569 uwp_process_diagnose_step( 0, type );
570
571 });
572 });
573 }( jQuery, window ));
574
575 function uwp_process_diagnose_step(step, type) {
576 jQuery.ajax({
577 url: ajaxurl,
578 type: 'POST',
579 dataType: 'json',
580 data: {
581 action: 'uwp_process_diagnosis',
582 step: step,
583 type: type
584 },
585 beforeSend: function() {},
586 success: function(response, textStatus, xhr) {
587 if(response.done === true || response.error === true ) {
588 jQuery("#uwp_diagnose_pb_" + type).find('#progressBar').hide();
589 jQuery("#uwp_diagnose_" + type).html(response.message);
590 } else {
591 tools_progress(response.percent, type);
592 setTimeout(function(){
593 uwp_process_diagnose_step(parseInt( response.step ), type)
594 }, 500);
595 }
596 },
597 error: function(xhr, textStatus, errorThrown) {
598 alert(textStatus);
599 }
600 }); // end of ajax
601
602
603 function tools_progress(percent, type) {
604 $element = jQuery("#uwp_diagnose_pb_" + type).find('#progressBar');
605 var progressBarWidth = percent * $element.width() / 100;
606 $element.find('div').animate({ width: progressBarWidth }, 500).html(percent + "% ");
607 }
608 }
609 </script>
610 <?php
611 }
612
613 function uwp_process_diagnosis_ajax() {
614
615 if (!is_user_logged_in()) {
616 return;
617 }
618
619 $type = strip_tags(esc_sql($_POST['type']));
620 $step = isset($_POST['step']) ? strip_tags(esc_sql($_POST['step'])) : 0;
621
622
623 if (!current_user_can('manage_options')) {
624 return;
625 }
626
627 $this->uwp_process_diagnosis($type, $step);
628
629 die();
630
631 }
632
633 function uwp_process_diagnosis($type, $step) {
634 switch ($type) {
635 case 'fix_user_data':
636 $this->uwp_fix_userdata($step);
637 }
638 }
639
640 }