5 * Contains \Drupal\Console\Utils\Generate\Base.
8 namespace Drupal\Console\Utils\Create;
10 use Drupal\Component\Utility\Random;
11 use Drupal\Core\Field\FieldStorageDefinitionInterface;
12 use Drupal\field\FieldConfigInterface;
13 use Drupal\Core\Entity\EntityTypeManagerInterface;
14 use Drupal\Core\Entity\EntityFieldManagerInterface;
15 use Drupal\Core\Datetime\DateFormatterInterface;
20 * @package Drupal\Console\Utils
24 /* @var EntityTypeManagerInterface */
25 protected $entityTypeManager = null;
27 /* @var EntityFieldManagerInterface */
28 protected $entityFieldManager = null;
30 /* @var DateFormatterInterface */
31 protected $dateFormatter = null;
34 protected $users = [];
36 /* @var Random $random */
37 protected $random = null;
40 * ContentNode constructor.
42 * @param EntityTypeManagerInterface $entityTypeManager
43 * @param EntityFieldManagerInterface $entityFieldManager
44 * @param DateFormatterInterface $dateFormatter
46 public function __construct(
47 EntityTypeManagerInterface $entityTypeManager,
48 EntityFieldManagerInterface $entityFieldManager,
49 DateFormatterInterface $dateFormatter
51 $this->entityTypeManager = $entityTypeManager;
52 $this->entityFieldManager = $entityFieldManager;
53 $this->dateFormatter = $dateFormatter;
60 private function getFields($entity)
62 $entityTypeId = $entity->getEntityType()->id();
63 $bundle = $entity->bundle();
65 $fields = array_filter(
66 $this->entityFieldManager->getFieldDefinitions($entityTypeId, $bundle), function ($fieldDefinition) {
67 return $fieldDefinition instanceof FieldConfigInterface;
78 protected function generateFieldSampleData($entity)
80 $fields = $this->getFields($entity);
82 /* @var \Drupal\field\FieldConfigInterface[] $fields */
83 foreach ($fields as $field) {
84 $fieldName = $field->getFieldStorageDefinition()->getName();
85 $cardinality = $field->getFieldStorageDefinition()->getCardinality(
87 if ($cardinality == FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED) {
88 $cardinality = rand(1, 5);
91 $entity->$fieldName->generateSampleItems($cardinality);
96 * Returns the random data generator.
98 * @return \Drupal\Component\Utility\Random
99 * The random data generator.
101 protected function getRandom()
103 if (!$this->random) {
104 $this->random = new Random();
107 return $this->random;
111 * Retrieve a random Uid of enabled users.
115 protected function getUserId()
118 $userStorage = $this->entityTypeManager->getStorage('user');
120 $this->users = $userStorage->loadByProperties(['status' => true]);
123 return array_rand($this->users);