/** * {@inheritdoc} */ protected function generateElements(array $values) { $num = $values['num']; $kill = $values['kill']; $pass = $values['pass']; $age = $values['time_range']; $roles = $values['roles']; $url = parse_url($GLOBALS['base_url']); if ($kill) { $uids = db_select('users', 'u')->fields('u', array('uid'))->condition('uid', 1, '>')->execute()->fetchAllAssoc('uid'); user_delete_multiple(array_keys($uids)); $this->setMessage(\Drupal::translation()->formatPlural(count($uids), '1 user deleted', '@count users deleted.')); } if ($num > 0) { $names = array(); while (count($names) < $num) { //@todo add suport for devel_generate_word(mt_rand(6, 12)) in a class method $name = $this->generateWord(mt_rand(6, 12)); $names[$name] = ''; } if (empty($roles)) { $roles = array(DRUPAL_AUTHENTICATED_RID); } foreach ($names as $name => $value) { $edit = array('uid' => NULL, 'name' => $name, 'pass' => $pass, 'mail' => $name . '@example.com', 'status' => 1, 'created' => REQUEST_TIME - mt_rand(0, $age), 'roles' => array_combine($roles, $roles), 'devel_generate' => TRUE); $account = entity_create('user', $edit); // Populate all core fields on behalf of field.module DevelGenerateFieldBase::generateFields($account, 'user', 'user', 'register'); $account->save(); } } $this->setMessage(t('!num_users created.', array('!num_users' => format_plural($num, '1 user', '@count users')))); }
/** * {@inheritdoc} */ protected function generateElements(array $values) { $num = $values['num']; $kill = $values['kill']; if ($kill) { $this->setMessage(t('Old examples have been deleted.')); } //Creating user in order to demonstrate // how to override default business login generation. $edit = array('uid' => NULL, 'name' => 'example_devel_generate', 'pass' => '', 'mail' => '*****@*****.**', 'status' => 1, 'created' => REQUEST_TIME, 'roles' => '', 'devel_generate' => TRUE); $account = user_load_by_name('example_devel_generate'); if (!$account) { $account = entity_create('user', $edit); } // Populate all core fields on behalf of field.module DevelGenerateFieldBase::generateFields($account, 'user', 'user', 'register', 'devel_generate_example'); $account->save(); $this->setMessage(t('!num_examples created.', array('!num_examples' => \Drupal::translation()->formatPlural($num, '1 example', '@count examples')))); }
/** * Generates taxonomy terms for a list of given vocabularies. * * @param $records * int number of terms to create in total. * @param $vocabs * array list of vocabs to populate. * @param $maxlength * int maximum length per term. * @return * array the list of names of the created terms. */ function generateTerms($records, $vocabs, $maxlength = 12) { $terms = array(); // Insert new data: $max = db_query('SELECT MAX(tid) FROM {taxonomy_term_data}')->fetchField(); $start = time(); for ($i = 1; $i <= $records; $i++) { $values = array(); switch ($i % 2) { case 1: // Set vid and vocabulary_machine_name properties. $vocab = $vocabs[array_rand($vocabs)]; $values['vid'] = $vocab->vid; $values['vocabulary_machine_name'] = $vocab->vid; $values['parent'] = array(0); break; default: while (TRUE) { // Keep trying to find a random parent. $candidate = mt_rand(1, $max); $query = db_select('taxonomy_term_data', 't'); $parent = $query->fields('t', array('tid', 'vid'))->condition('t.vid', array_keys($vocabs), 'IN')->condition('t.tid', $candidate, '>=')->range(0, 1)->execute()->fetchAssoc(); if ($parent['tid']) { break; } } $values['parent'] = array($parent['tid']); // Slight speedup due to this property being set. $values['vocabulary_machine_name'] = $parent['vid']; $values['vid'] = $parent['vid']; break; } $values['name'] = $this->generateWord(mt_rand(2, $maxlength)); $values['description'] = "description of " . $values['name']; $values['format'] = filter_fallback_format(); $values['weight'] = mt_rand(0, 10); $values['langcode'] = Language::LANGCODE_NOT_SPECIFIED; $term = entity_create('taxonomy_term', $values); // Populate all core fields on behalf of field.module DevelGenerateFieldBase::generateFields($term, 'taxonomy_term', $values['vocabulary_machine_name']); if ($status = $term->save()) { $max += 1; if (function_exists('drush_log')) { $feedback = drush_get_option('feedback', 1000); if ($i % $feedback == 0) { $now = time(); drush_log(dt('Completed !feedback terms (!rate terms/min)', array('!feedback' => $feedback, '!rate' => $feedback * 60 / ($now - $start))), 'ok'); $start = $now; } } // Limit memory usage. Only report first 20 created terms. if ($i < 20) { $terms[] = $term->name->value; } unset($term); } } return $terms; }
/** * Create one node. Used by both batch and non-batch code branches. */ protected function develGenerateContentAddNode(&$results) { if (!isset($results['time_range'])) { $results['time_range'] = 0; } $users = $results['users']; $node_type = array_rand(array_filter($results['node_types'])); $type = node_type_load($node_type); $uid = $users[array_rand($users)]; $edit_node = array('nid' => NULL, 'type' => $node_type, 'uid' => $uid, 'revision' => mt_rand(0, 1), 'status' => TRUE, 'promote' => mt_rand(0, 1), 'created' => REQUEST_TIME - mt_rand(0, $results['time_range']), 'langcode' => $this->getLangcode($results)); // We should not use the random function if the value is not random if ($results['title_length'] < 2) { $edit_node['title'] = $this->createGreeking(1, TRUE); } else { $edit_node['title'] = $this->createGreeking(mt_rand(1, $results['title_length']), TRUE); } $node = entity_create('node', $edit_node); // A flag to let hook_node_insert() implementations know that this is a // generated node. $node->devel_generate = $results; // Populate all core fields on behalf of field.module DevelGenerateFieldBase::generateFields($node, 'node', $node->bundle()); // See devel_generate_node_insert() for actions that happen before and after // this save. $node->save(); }