ExampleDevelGenerate.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. namespace Drupal\devel_generate_example\Plugin\DevelGenerate;
  3. use Drupal\devel_generate\DevelGenerateBase;
  4. use Drupal\Core\Form\FormStateInterface;
  5. /**
  6. * Provides a ExampleDevelGenerate plugin.
  7. *
  8. * @DevelGenerate(
  9. * id = "devel_generate_example",
  10. * label = "Example",
  11. * description = "Generate a given number of examples. Optionally delete current examples.",
  12. * url = "devel_generate_example",
  13. * permission = "administer devel_generate",
  14. * settings = {
  15. * "num" = 50,
  16. * "kill" = FALSE
  17. * }
  18. * )
  19. */
  20. class ExampleDevelGenerate extends DevelGenerateBase {
  21. public function settingsForm(array $form, FormStateInterface $form_state) {
  22. $form['num'] = array(
  23. '#type' => 'textfield',
  24. '#title' => $this->t('How many examples would you like to generate?'),
  25. '#default_value' => $this->getSetting('num'),
  26. '#size' => 10,
  27. );
  28. $form['kill'] = array(
  29. '#type' => 'checkbox',
  30. '#title' => $this->t('Delete all examples before generating new examples.'),
  31. '#default_value' => $this->getSetting('kill'),
  32. );
  33. return $form;
  34. }
  35. /**
  36. * {@inheritdoc}
  37. */
  38. protected function generateElements(array $values) {
  39. $num = $values['num'];
  40. $kill = $values['kill'];
  41. if ($kill) {
  42. $this->setMessage($this->t('Old examples have been deleted.'));
  43. }
  44. //Creating user in order to demonstrate
  45. // how to override default business login generation.
  46. $edit = array(
  47. 'uid' => NULL,
  48. 'name' => 'example_devel_generate',
  49. 'pass' => '',
  50. 'mail' => 'example_devel_generate@example.com',
  51. 'status' => 1,
  52. 'created' => REQUEST_TIME,
  53. 'roles' => '',
  54. 'devel_generate' => TRUE // A flag to let hook_user_* know that this is a generated user.
  55. );
  56. $account = user_load_by_name('example_devel_generate');
  57. if (!$account) {
  58. $account = entity_create('user', $edit);
  59. }
  60. // Populate all fields with sample values.
  61. $this->populateFields($node);
  62. $account->save();
  63. $this->setMessage($this->t('@num_examples created.', array('@num_examples' => $this->formatPlural($num, '1 example', '@count examples'))));
  64. }
  65. public function validateDrushParams($args) {
  66. $values = array(
  67. 'num' => array_shift($args),
  68. 'kill' => drush_get_option('kill'),
  69. );
  70. return $values;
  71. }
  72. }