'admin/user/generate',
'title' => t('Generate users'),
'callback' => 'drupal_get_form',
'description' => t('Generate a given number of users. Optionally delete current users.'),
'callback arguments' => array('devel_generate_users_form'),
'access' => user_access('administer users'),
'type' => MENU_NORMAL_ITEM
);
$items[] = array(
'path' => 'admin/content/generate',
'title' => t('Generate content'),
'description' => t('Generate a given number of nodes and comments. Optionally delete current items.'),
'callback' => 'drupal_get_form',
'callback arguments' => array('devel_generate_content_form'),
'access' => user_access('administer nodes'),
'type' => MENU_NORMAL_ITEM
);
$items[] = array(
'path' => 'admin/content/generate_taxonomy',
'title' => t('Generate categories'),
'description' => t('Generate a given number of vocabularies and terms. Optionally delete current categories.'),
'callback' => 'drupal_get_form',
'callback arguments' => array('devel_generate_taxonomy_form'),
'access' => user_access('administer nodes'),
'type' => MENU_NORMAL_ITEM
);
}
return $items;
}
/**
* Overview page for admin/generate page
*/
function devel_generate_overview() {
$menu = menu_get_item(NULL, 'admin/generate');
$content = system_admin_menu_block($menu);
$output = theme('admin_block_content', $content);
return $output;
}
function devel_generate_users_form() {
$form['num'] = array(
'#type' => 'textfield',
'#title' => t('How many users would you like to generate?'),
'#default_value' => 50,
'#size' => 10,
);
$form['kill_users'] = array(
'#type' => 'checkbox',
'#title' => t('Delete all users but user 1 before generating new users.'),
'#default_value' => FALSE,
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Do it!'),
);
return $form;
}
function devel_generate_users_form_submit($form_id, $form_values) {
require_once('devel_generate.inc');
devel_create_users($form_values['num'], $form_values['kill_users']);
}
function devel_generate_word($length){
srand((double)microtime()*1000000);
$vowels = array("a", "e", "i", "o", "u");
$cons = array("b", "c", "d", "g", "h", "j", "k", "l", "m", "n", "p", "r", "s", "t", "u", "v", "w", "tr",
"cr", "br", "fr", "th", "dr", "ch", "ph", "wr", "st", "sp", "sw", "pr", "sl", "cl", "sh");
$num_vowels = count($vowels);
$num_cons = count($cons);
while(strlen($word) < $length){
$word .= $cons[rand(0, $num_cons - 1)] . $vowels[rand(0, $num_vowels - 1)];
}
return substr($word, 0, $length);
}
function devel_generate_content_form() {
$form['num_nodes'] = array(
'#type' => 'textfield',
'#title' => t('How many nodes would you like to generate?'),
'#default_value' => 100,
'#size' => 10,
);
$form['num_comments'] = array(
'#type' => 'textfield',
'#title' => t('How many comments would you like to generate?'),
'#default_value' => 500,
'#size' => 10,
);
$form['kill_content'] = array(
'#type' => 'checkbox',
'#title' => t('Delete existing content before generating new content.'),
'#default_value' => FALSE,
);
$form['title_length'] = array(
'#type' => 'textfield',
'#title' => t('Max word length of titles'),
'#default_value' => 8,
'#size' => 10,
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Do it!'),
);
return $form;
}
function devel_generate_content_form_submit($form_id, $form_values) {
$path = drupal_get_path('module', 'devel');
require_once('devel_generate.inc');
if ($form_values['kill_content']) {
db_query("DELETE FROM {comments}");
db_query("DELETE FROM {node}");
db_query("DELETE FROM {node_revisions}");
db_query("DELETE FROM {node_comment_statistics}");
if (db_table_exists(forum)) { db_query("DELETE FROM {forum}"); }
db_query("DELETE FROM {url_alias}");
db_query("UPDATE {sequences} SET id = '0' WHERE name = 'node_nid'");
db_query("UPDATE {sequences} SET id = '0' WHERE name = 'comments_cid'");
db_query("ALTER TABLE {node} AUTO_INCREMENT = 1");
db_query("ALTER TABLE {comments} AUTO_INCREMENT = 1");
drupal_set_message(t('Content deleted.'));
}
else {
$next_nid = db_result(db_query("SELECT id FROM {sequences} WHERE name = '{node}_nid'"))+1;
}
// get user id
$users = devel_get_users();
$terms = devel_get_terms();
// create 100 pseudo-random nodes:
devel_create_nodes($form_values['num_nodes'], $users, $form_values['title_length']);
drupal_set_message(t('%num nodes created.', array('%num' => $form_values['num_nodes'])));
$nodes = devel_get_nodes($next_nid);
devel_add_terms($nodes, $terms);
$comments = devel_get_comments();
devel_create_comments($form_values['num_comments'], $users, $nodes, $comments);
drupal_set_message(t('%num comments created.', array('%num' => $form_values['num_comments'])));
}
function devel_generate_vocabs($records, $maxlength = 12) {
$types = array("story", "blog", "forum", "page");
// Insert new data:
for ($i = 1; $i <= $records; $i++) {
$voc = array();
$voc['name'] = devel_generate_word(rand(2, $maxlength));
$voc['description'] = "description of ". $voc['name'];
$voc['nodes'] = array_flip(array($types[array_rand($types)]));
foreach ($voc['nodes'] as $key => $value) {
$voc['nodes'][$key] = $key;
}
$voc['multiple'] = 1;
$voc['required'] = 0;
$voc['relations'] = 1;
$voc['hierarchy'] = 1;
$voc['weight'] = rand(0,10);
taxonomy_save_vocabulary($voc);
$output .= "created vocabulary ". $voc['name'];
}
return $output;
}
function devel_generate_terms($records, $vocs, $maxlength = 12) {
// Insert new data:
for ($i = 1; $i <= $records; $i++) {
switch ($i % 2) {
case 1:
$term['vid'] = $vocs[array_rand($vocs)];
// dont set a parent. handled by taxonomy_save_term()
// $term->parent = 0;
break;
case 2:
default:
$parent = db_fetch_object(db_query_range("SELECT t.tid, v.vid FROM {term_data} t INNER JOIN {vocabulary} v ON t.vid = v.vid ORDER BY RAND()", 0, 1));
$term['parent'] = array($parent->tid);
$term['vid'] = $parent->vid;
break;
}
$term['name'] = devel_generate_word(rand(2, $maxlength));
$term['description'] = "description of ". $term['name'];
$term['weight'] = rand(0,10);
$status = taxonomy_save_term($term);
if ($status) {
$output .= t("Created term @term", array('@term' => $term['name'])). "
";
}
else {
$output .= t("There was an error creating term @term", array('@term' => $term['name'])). "
";
}
unset($term);
}
return $output;
}
function devel_generate_get_vocabs() {
$vocs = array();
$result = db_query("SELECT vid FROM {vocabulary}");
while($voc = db_fetch_object($result)){
$vocs[] = $voc->vid;
}
return $vocs;
}
function devel_generate_taxonomy_form() {
$form['num_vocab'] = array(
'#type' => 'textfield',
'#title' => t('How many vocabularies would you like to generate?'),
'#default_value' => 3,
'#size' => 10,
);
$form['num_terms'] = array(
'#type' => 'textfield',
'#title' => t('How many terms would you like to generate?'),
'#default_value' => 50,
'#size' => 10,
);
$form['kill_taxonomy'] = array(
'#type' => 'checkbox',
'#title' => t('Delete existing terms and vocabularies before generating new content.'),
'#default_value' => FALSE,
);
$form['title_length'] = array(
'#type' => 'textfield',
'#title' => t('Max word length of term/vocab names'),
'#default_value' => 12,
'#size' => 10,
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Do it!'),
);
return $form;
}
function devel_generate_taxonomy_form_submit($form_id, $form_values) {
$vocs = array();
$result = db_query("SELECT vid FROM {vocabulary}");
while($voc = db_fetch_object($result)){
$vocs[] = $voc->vid;
}
if ($form_values['kill_taxonomy']) {
db_query("DELETE FROM {term_data}");
db_query("DELETE FROM {term_node}");
db_query("DELETE FROM {term_hierarchy}");
db_query("DELETE FROM {term_relation}");
db_query("DELETE FROM {term_synonym}");
db_query("DELETE FROM {vocabulary}");
db_query("DELETE FROM {vocabulary_node_types}");
db_query("UPDATE {sequences} SET id = '0' WHERE name = '{vocabulary_vid}'");
db_query("UPDATE {sequences} SET id = '0' WHERE name = '{term_data_tid}'");
}
$output = devel_generate_vocabs($form_values['num_vocab'], $form_values['title_length']);
$vocs = devel_generate_get_vocabs();
$output .= devel_generate_terms($form_values['num_terms'], $vocs, $form_values['title_length']);
drupal_set_message($output);
}