Example #1
0
 /**
  * {@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'))));
 }
Example #3
0
 /**
  * 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();
 }