devel_create_users($num, $kill, $age = 0)Generate some random users.
$num Number of users to generate.
$kill Boolean that indicates if existing users should be removed first.
$age The max age of each randomly-generated user, in seconds.
sites/all/modules/devel/devel_generate.inc, line 17
<?php
function devel_create_users($num, $kill, $age = 0) {
$url = parse_url($GLOBALS['base_url']);
if ($kill) {
// TODO: deal with cancel API
db_delete('users')->condition('uid', 1, '>')->execute();
drupal_set_message(t('Users deleted.'));
}
// Determine if we should create user pictures.
$pic_config = FALSE;
module_load_include('inc', 'system', 'image.gd');
if (variable_get('user_pictures', 0) && function_exists('image_gd_check_settings') && image_gd_check_settings()) {
$pic_config['path'] = variable_get('user_picture_path', 'pictures');
list($pic_config['width'], $pic_config['height']) = explode('x', variable_get('user_picture_dimensions', '85x85'));
}
if ($num > 0) {
$names = array();
while (count($names) < $num) {
$name = devel_generate_word(mt_rand(6, 12));
$names[$name] = '';
}
foreach ($names as $name => $value) {
$edit = array(
'name' => $name,
'pass' => user_password(),
'mail' => $name . '@' . $url['host'],
'status' => 1,
'created' => REQUEST_TIME - mt_rand(0, $age),
);
$account = user_save(NULL, $edit);
if ($pic_config) {
// Since the image.module should scale the picture just pick an
// arbitrary size that it's too big for our font.
$im = imagecreatetruecolor(200, 200);
// Randomize the foreground using the md5 of the user id, then invert it
// for the background color so there's enough contrast to read the text.
$parts = array_map('hexdec', str_split(md5($account->uid), 2));
$fg = imagecolorallocate($im, $parts[1], $parts[3], $parts[5]);
$bg = imagecolorallocate($im, 255 - $parts[0], 255 - $parts[1], 255 - $parts[2]);
// Fill the background then print their user info.
imagefill($im, 0, 0, $bg);
imagestring($im, 5, 5, 5, "#" . $account->uid, $fg);
imagestring($im, 5, 5, 25, $account->name, $fg);
// Create an empty, managed file where we want the user's picture to
// be so we can have GD overwrite it with the image.
$picture_directory = variable_get('file_default_scheme', 'public') . '://' . variable_get('user_picture_path', 'pictures');
$destination = file_stream_wrapper_uri_normalize($picture_directory . '/picture-' . $account->uid . '.png');
$file = file_save_data('', $destination);
// GD doesn't like stream wrapped paths so convert the URI to a normal
// file system path.
if (isset($file) && $wrapper = file_stream_wrapper_get_instance_by_uri($file->uri)) {
imagepng($im, $wrapper->realpath());
}
imagedestroy($im);
// Clear the cached filesize, set the owner and MIME-type then re-save
// the file.
clearstatcache();
$file->uid = $account->uid;
$file->filemime = 'image/png';
$file = file_save($file);
// Save the user record with the new picture.
$edit = (array) $account;
$edit['picture'] = $file;
user_save($account, $edit);
}
}
}
drupal_set_message(t('!num_users created.', array('!num_users' => format_plural($num, '1 user', '@count users'))));
}
?>