X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;f=web%2Fmodules%2Fcontrib%2Fdevel%2Fdevel_generate%2Fsrc%2FPlugin%2FDevelGenerate%2FUserDevelGenerate.php;fp=web%2Fmodules%2Fcontrib%2Fdevel%2Fdevel_generate%2Fsrc%2FPlugin%2FDevelGenerate%2FUserDevelGenerate.php;h=420ef8ff5fff677f2023de7677b43c5382f83bb2;hb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;hp=0000000000000000000000000000000000000000;hpb=57c063afa3f66b07c4bbddc2d6129a96d90f0aad;p=yaffs-website diff --git a/web/modules/contrib/devel/devel_generate/src/Plugin/DevelGenerate/UserDevelGenerate.php b/web/modules/contrib/devel/devel_generate/src/Plugin/DevelGenerate/UserDevelGenerate.php new file mode 100644 index 000000000..420ef8ff5 --- /dev/null +++ b/web/modules/contrib/devel/devel_generate/src/Plugin/DevelGenerate/UserDevelGenerate.php @@ -0,0 +1,191 @@ +userStorage = $entity_storage; + $this->dateFormatter = $date_formatter; + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { + return new static( + $configuration, $plugin_id, $plugin_definition, + $container->get('entity.manager')->getStorage('user'), + $container->get('date.formatter') + ); + } + + /** + * {@inheritdoc} + */ + public function settingsForm(array $form, FormStateInterface $form_state) { + $form['num'] = array( + '#type' => 'number', + '#title' => $this->t('How many users would you like to generate?'), + '#default_value' => $this->getSetting('num'), + '#required' => TRUE, + '#min' => 0, + ); + + $form['kill'] = array( + '#type' => 'checkbox', + '#title' => $this->t('Delete all users (except user id 1) before generating new users.'), + '#default_value' => $this->getSetting('kill'), + ); + + $options = user_role_names(TRUE); + unset($options[DRUPAL_AUTHENTICATED_RID]); + $form['roles'] = array( + '#type' => 'checkboxes', + '#title' => $this->t('Which roles should the users receive?'), + '#description' => $this->t('Users always receive the authenticated user role.'), + '#options' => $options, + ); + + $form['pass'] = array( + '#type' => 'textfield', + '#title' => $this->t('Password to be set'), + '#default_value' => $this->getSetting('pass'), + '#size' => 32, + '#description' => $this->t('Leave this field empty if you do not need to set a password'), + ); + + $options = array(1 => $this->t('Now')); + foreach (array(3600, 86400, 604800, 2592000, 31536000) as $interval) { + $options[$interval] = $this->dateFormatter->formatInterval($interval, 1) . ' ' . $this->t('ago'); + } + $form['time_range'] = array( + '#type' => 'select', + '#title' => $this->t('How old should user accounts be?'), + '#description' => $this->t('User ages will be distributed randomly from the current time, back to the selected time.'), + '#options' => $options, + '#default_value' => 604800, + ); + + return $form; + } + + /** + * {@inheritdoc} + */ + protected function generateElements(array $values) { + $num = $values['num']; + $kill = $values['kill']; + $pass = $values['pass']; + $age = $values['time_range']; + $roles = array_filter($values['roles']); + + if ($kill) { + $uids = $this->userStorage->getQuery() + ->condition('uid', 1, '>') + ->execute(); + $users = $this->userStorage->loadMultiple($uids); + $this->userStorage->delete($users); + + $this->setMessage($this->formatPlural(count($uids), '1 user deleted', '@count users deleted.')); + } + + if ($num > 0) { + $names = array(); + while (count($names) < $num) { + $name = $this->getRandom()->word(mt_rand(6, 12)); + $names[$name] = ''; + } + + if (empty($roles)) { + $roles = array(DRUPAL_AUTHENTICATED_RID); + } + foreach ($names as $name => $value) { + $account = $this->userStorage->create(array( + 'uid' => NULL, + 'name' => $name, + 'pass' => $pass, + 'mail' => $name . '@example.com', + 'status' => 1, + 'created' => REQUEST_TIME - mt_rand(0, $age), + 'roles' => array_values($roles), + // A flag to let hook_user_* know that this is a generated user. + 'devel_generate' => TRUE, + )); + + // Populate all fields with sample values. + $this->populateFields($account); + $account->save(); + } + } + $this->setMessage($this->t('@num_users created.', array('@num_users' => $this->formatPlural($num, '1 user', '@count users')))); + } + + /** + * {@inheritdoc} + */ + public function validateDrushParams($args) { + $values = array( + 'num' => array_shift($args), + 'roles' => drush_get_option('roles') ? explode(',', drush_get_option('roles')) : array(), + 'kill' => drush_get_option('kill'), + 'pass' => drush_get_option('pass', NULL), + 'time_range' => 0, + ); + return $values; + } + +}