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

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