예제 #1
0
 /**
  * Generate fake users
  *
  * This function is mostly for development.
  *
  * @todo Add function to remove dummy users.
  * @since 0.1
  *
  */
 static function do_fake_users($args = '')
 {
     global $wp_crm, $wpdb;
     $defaults = array('number' => 5, 'do_what' => 'generate');
     $full_meta_keys = $wp_crm['data_structure']['full_meta_keys'];
     $args = wp_parse_args($args, $defaults);
     $count = 0;
     if ($args['do_what'] == 'generate') {
         $names = array('Gilbert', 'James', 'Anthony', 'Mark', 'Kimberly', 'John', 'Bill', 'Randy', 'Mary', 'Jenna', 'Beth', 'Allyson', 'Samantha', 'Davis', 'Roberts', 'Campbell', 'Edwards', 'Martinez');
         $emails = array('gmail.com', 'yahoo.com', 'msn.com', 'acme.com', 'xyz.com', 'mac.com', 'microsoft.com', 'google.com');
         $words = explode(' ', 'Nunc vel augue diam Duis nec magna justo; eget mollis Cras nibh lectus mattis malesuada mattis metus Quisque scelerisque neque auctor vehicula justo odio dapibus semquis eleifend eros lectus eget odio! Donec sollicitudin; orciet cursus malesuada ligula nunc iaculis ligula eu suscipit diam purus inligula Class aptent taciti sociosqu ad litora torquent per conubia nostra per inceptos himenaeos In hac habitasse platea dictumst Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras sed dolorrhoncus malesuada Mauris lacus nibh fringilla iddictum venenatis anisl Morbi euismod turpis vitae tellus sagittis tristique erat iaculis Nam vel massa arcu Sed vehicula porttitor imperdiet');
         shuffle($words);
         while ($count <= $args['number'] - 1) {
             $count++;
             //** Change up order for each fake user */
             CRM_UD_F::shuffle_assoc($full_meta_keys);
             $meta_data = array();
             $done_attributes = array();
             $user_data['first_name'] = $names[array_rand($names, 1)];
             $user_data['last_name'] = $names[array_rand($names, 1)];
             $user_data['display_name'] = $user_data['first_name'] . ' ' . $user_data['last_name'];
             $user_data['user_email'] = $user_data['first_name'] . '.' . $user_data['last_name'] . '@' . $emails[array_rand($emails, 1)];
             $user_data['user_login'] = $user_data['user_email'];
             $main_keys = array_keys($user_data);
             foreach ($full_meta_keys as $full_key => $short_key) {
                 //** reset counts */
                 $i = 0;
                 $fake_messages = 0;
                 $this_attribute = $wp_crm['data_structure']['attributes'][$short_key];
                 if (!empty($this_attribute['has_options']) && $full_key == $short_key) {
                     continue;
                 }
                 //** 50/50 we put something into here, unless required or stored in main user table */
                 if (in_array($short_key, $main_keys) || mt_rand(0, 1) == 1 && !empty($this_attribute['required']) && $this_attribute['required'] != 'true') {
                     continue;
                 }
                 switch ($this_attribute['input_type']) {
                     case 'textarea':
                         while ($i <= mt_rand(15, 100)) {
                             if (empty($meta_data[$full_key])) {
                                 $meta_data[$full_key] = '';
                             }
                             $meta_data[$full_key] .= $words[array_rand($words, 1)] . ' ';
                             $i++;
                         }
                         $done_attributes[] = $short_key;
                         break;
                     case 'text':
                         while ($i <= mt_rand(3, 7)) {
                             if (empty($meta_data[$full_key])) {
                                 $meta_data[$full_key] = '';
                             }
                             $meta_data[$full_key] .= $words[array_rand($words, 1)] . ' ';
                             $i++;
                         }
                         $done_attributes[] = $short_key;
                         break;
                     case 'dropdown':
                         if (!in_array($short_key, $done_attributes)) {
                             $meta_data[$full_key] = 'on';
                             $done_attributes[] = $short_key;
                         }
                         break;
                     case 'checkbox':
                         $meta_data[$full_key] = 'on';
                         $done_attributes[] = $short_key;
                         break;
                 }
             }
             $user_data['user_pass'] = NULL;
             $user_id = wp_insert_user($user_data);
             $meta_data['wp_crm_fake_user'] = true;
             if ($user_id && !is_wp_error($user_id)) {
                 foreach ($meta_data as $meta_key => $meta_value) {
                     update_user_meta($user_id, $meta_key, trim($meta_value));
                 }
                 $generated_users[] = $user_id;
                 while ($fake_messages <= mt_rand(2, 10)) {
                     $fake_message = '';
                     $fake_words = 1;
                     while ($fake_words <= mt_rand(50, 300)) {
                         $fake_message .= $words[array_rand($words, 1)] . ' ';
                         $fake_words++;
                     }
                     trim($fake_message);
                     if (!empty($fake_message)) {
                         wp_crm_add_to_user_log($user_id, $fake_message);
                     }
                     echo "Adding message to {$user_id} : " . strlen($fake_message) . " \n";
                     $fake_messages++;
                 }
                 //** Delete e-mails from some users */
                 if (!empty($wp_crm['configuration']['allow_account_creation_with_no_email']) && $wp_crm['configuration']['allow_account_creation_with_no_email'] == 'true' && mt_rand(0, 10) > 7) {
                     $wpdb->update($wpdb->users, array('user_email' => ''), array('ID' => $user_id));
                 }
             } else {
                 /* echo $user_id->get_error_message(); */
             }
         }
         echo 'Generated ' . count($generated_users) . ' fake users. User IDs: ' . print_r($generated_users, true);
     }
     if ($args['do_what'] == 'remove') {
         //** Get all fake users */
         $fake_users = $wpdb->get_col("SELECT user_id FROM {$wpdb->usermeta} WHERE meta_key = 'wp_crm_fake_user' AND meta_value =1");
         if ($fake_users) {
             foreach ($fake_users as $user_id) {
                 if (wp_delete_user($user_id)) {
                     $deleted_user[] = true;
                 }
             }
             $deleted_user = count($deleted_user);
             echo "Fake users found. Deleted {$deleted_user} fake user(s)";
         } else {
             echo __('No fake users found.', 'wp_crm');
         }
     }
 }