Files
ultimatemember/addons/generate_random_users.php
T

261 lines
7.7 KiB
PHP
Raw Normal View History

2016-05-27 20:12:21 +08:00
<?php
class UM_ADDON_generate_random_users {
function __construct() {
add_action('admin_menu', array(&$this, 'admin_menu'), 1001);
add_action('admin_init', array(&$this, 'admin_init'), 1);
add_action('um_admin_addon_hook', array(&$this, 'um_admin_addon_hook') );
}
function admin_menu() {
global $ultimatemember;
$this->addon = $ultimatemember->addons['generate_random_users'];
add_submenu_page('ultimatemember', $this->addon[0], $this->addon[0], 'manage_options', 'generate_random_users', array(&$this, 'content') );
}
function um_admin_addon_hook( $hook ) {
global $ultimatemember;
switch ( $hook ) {
case 'generate_random_users':
$json_url = "https://randomuser.me/api/";
$arr_post_header = array( );
if( isset( $_GET['gender'] ) ){
$gender = $_GET['gender'];
if( $gender != 'both' ){
$json_url = add_query_arg('gender', $gender, $json_url );
$arr_post_header['gender'] = $gender;
}
}
if( isset( $_GET['nationality'] ) ){
$nationality = implode(",", $_GET['nationality']);
if( ! empty( $nationality ) ){
$json_url = add_query_arg('nat', $nationality, $json_url );
}
$arr_post_header['nat'] = $nationality;
}
if( isset( $_GET['total_users'] ) ){
$total_users = intval( $_GET['total_users'] );
$json_url = add_query_arg('results', $total_users, $json_url );
$arr_post_header['results'] = $total_users;
}
2016-09-27 21:40:30 +08:00
$response = wp_remote_get( $json_url, array('timeout' => 120 ) );
$json = '';
2016-05-27 20:12:21 +08:00
2016-09-27 21:40:30 +08:00
if( is_array($response) ) {
if( isset( $response['body'] ) && ! empty( $response['body'] ) ){
$json = json_decode( $response['body'] );
}
}
if( is_wp_error( $response ) ){
wp_die( $response->get_error_message() );
}
2016-08-27 19:25:55 +08:00
if( ! empty( $json ) ){
2016-05-27 20:12:21 +08:00
2016-08-27 19:25:55 +08:00
remove_action('um_after_new_user_register', 'um_after_new_user_register', 10, 2);
$failed_dummies = 0;
$default_role = um_get_option("default_role");
2016-05-27 20:12:21 +08:00
foreach( $json->results as $dummy ){
if( isset( $_GET['password'] ) && ! empty( $_GET['password'] ) ){
$password = $_GET['password'];
}else{
$password = wp_generate_password( 8, false );
}
2016-08-27 19:25:55 +08:00
$site_url = @$_SERVER['SERVER_NAME'];
$random_generate = wp_generate_password( 4, false );
if( username_exists( $dummy->login->username ) ){
$dummy->login->username = $dummy->login->username.'_'. $random_generate;
}
$dummy->login->email = $dummy->login->username."_dummy@{$site_url}";
if( email_exists( $dummy->login->email ) ){
$dummy->login->email = $dummy->login->username."_dummy_{$random_generate}@{$site_url}";
}
2016-05-27 20:12:21 +08:00
$userdata = array(
'display_name' => ucfirst( $dummy->name->first )." ".ucfirst( $dummy->name->last ),
'first_name' => ucfirst( $dummy->name->first ),
'last_name' => ucfirst( $dummy->name->last ),
2016-08-27 19:25:55 +08:00
'user_email' => $dummy->login->email,
2016-05-27 20:12:21 +08:00
'user_login' => $dummy->login->username,
'user_pass' => $password,
);
$user_id = wp_insert_user( $userdata );
2016-08-27 19:25:55 +08:00
if( is_wp_error( $user_id ) ){
$failed_dummies++;
}
2016-05-27 20:12:21 +08:00
$usermeta = array(
'synced_profile_photo' => $dummy->picture->large,
'gender' => ucfirst($dummy->gender),
2016-08-27 19:25:55 +08:00
'birth_date' => date("Y/m/d", strtotime( $dummy->dob) ),
'_um_last_login' => date("Y/m/d", strtotime( $dummy->registered ) ),
2016-05-27 20:12:21 +08:00
'mobile_number' => $dummy->cell,
'phone_number' => $dummy->phone,
'synced_gravatar_hashed_id' => md5( strtolower( trim( $dummy->email ) ) ),
'account_status' => 'approved',
2016-08-27 19:25:55 +08:00
'_um_profile_dummy' => true,
'role' => isset( $default_role ) ? $default_role: 'member'
2016-05-27 20:12:21 +08:00
);
if( isset( $_GET['add_cover_photo'] ) && $_GET['add_cover_photo'] == 1 ){
$rand = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f');
$color = $rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)];
$usermeta['synced_cover_photo'] = 'http://placehold.it/650x350/'.$color.'/'.$color;
}
foreach ( $usermeta as $key => $value ) {
update_user_meta( $user_id, $key, $value );
}
2016-08-27 19:25:55 +08:00
2016-05-27 20:12:21 +08:00
}
2016-08-27 19:25:55 +08:00
wp_redirect( admin_url("admin.php?page=generate_random_users") ); exit;
2016-05-27 20:12:21 +08:00
}
break;
case 'remove_random_users':
2016-08-27 19:25:55 +08:00
$dummies = new WP_User_Query(
array(
'fields' => array('ID'),
'meta_key' => '_um_profile_dummy',
'meta_value' => true,
'meta_compare' => '='
)
);
if( $dummies->total_users > 0 ){
foreach ( $dummies->get_results() as $dummy ) {
if( isset( $dummy->ID ) ){
wp_delete_user( $dummy->ID );
}
2016-06-10 22:07:19 +08:00
}
2016-05-27 20:12:21 +08:00
}
2016-08-27 19:25:55 +08:00
2016-05-27 20:12:21 +08:00
delete_option('um_generated_dumies');
2016-08-27 19:25:55 +08:00
wp_redirect( admin_url("admin.php?page=generate_random_users") );
exit;
2016-05-27 20:12:21 +08:00
break;
default:
break;
}
}
function admin_init() {
if ( isset( $_REQUEST['um-addon-hook'] ) ) {
$hook = $_REQUEST['um-addon-hook'];
do_action("um_admin_addon_hook", $hook );
}
}
function content() {
?>
<div class="wrap">
<h2>Ultimate Member <sup style="font-size:15px"><?php echo ultimatemember_version; ?></sup></h2>
<h3><?php echo $this->addon[0]; ?></h3>
<?php if ( isset( $this->content ) ) {
echo $this->content;
} else { ?>
<p>This tool allows you to add dummies as Ultimate Member users. </p>
2016-08-27 19:25:55 +08:00
<?php
$dummies = new WP_User_Query(
array(
'fields' => array('ID'),
'meta_key' => '_um_profile_dummy',
'meta_value' => true,
'meta_compare' => '='
)
);
?>
<?php if( $dummies->total_users > 0 ): ?>
<form method="get">
<p>
&nbsp;<input type="submit" class="button button-secondary" value="Remove Generated Dummies (<?php echo $dummies->total_users;?>)"/>
<input type="hidden" name="um-addon-hook" value="remove_random_users"/>
<input type="hidden" name="page" value="generate_random_users"/>
</form>
<br/>
<?php endif; ?>
<form method="get">
<label for="total_users">How many dummies? <br/><input type="text" name="total_users" value="30" /> <br/><br/>
2016-05-27 20:12:21 +08:00
<label for="gender">Gender:</label> <br/>
<label><input type='radio' name="gender" value="male"/> Male</label> <br/>
<label><input type='radio' name="gender" value="female"/> Female</label> <br/>
<label><input type='radio' checked="checked" name="gender" value="both"/> Both</label>
<br/><br/>
<label for="nationality">Available Nationalities:</label><br/>
<select style="width:150px" name="nationality[]" multiple>
<?php
$nationality = array( 'AU', 'BR', 'CA', 'CH', 'DE', 'DK', 'ES', 'FI', 'FR', 'GB', 'IE', 'IR', 'NL', 'NZ', 'TR', 'US' );
foreach ($nationality as $code ) {
$value = strtolower($code);
echo "<option value='".$value."'/> ".$code."</option>";
}
?>
</select>
<br/><br/>
<label for="add_cover_photo"><input type="checkbox" name="add_cover_photo" value="1" />
Add cover photos?</label>
<br/><small>Generates random colored cover photos</small>
<br/><br/>
<label for="password">
Account Passwords:
<input type="password" name="password" />
<br/><small>if you leave this blank, it will generate random strings password</small>
</label>
<br/>
2016-08-27 19:25:55 +08:00
<input type="submit" class="button button-primary" value="Start Generating Dummies"/>
<input type="hidden" name="um-addon-hook" value="generate_random_users"/>
<?php } ?>
</form>
2016-05-27 20:12:21 +08:00
</div><div class="clear"></div>
<?php
}
}
$UM_ADDON_generate_random_users = new UM_ADDON_generate_random_users ();