660c778c7fca259ce4ad13b83e1fc7a56d348ebd
[yaffs-website] / vendor / drupal / console / src / Utils / Create / Base.php
1 <?php
2
3 /**
4  * @file
5  * Contains \Drupal\Console\Utils\Generate\Base.
6  */
7
8 namespace Drupal\Console\Utils\Create;
9
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;
16
17 /**
18  * Class ContentNode
19  *
20  * @package Drupal\Console\Utils
21  */
22 abstract class Base
23 {
24     /* @var EntityTypeManagerInterface */
25     protected $entityTypeManager = null;
26
27     /* @var EntityFieldManagerInterface */
28     protected $entityFieldManager = null;
29
30     /* @var DateFormatterInterface */
31     protected $dateFormatter = null;
32
33     /* @var array */
34     protected $users = [];
35
36     /* @var Random $random */
37     protected $random = null;
38
39     /**
40      * ContentNode constructor.
41      *
42      * @param EntityTypeManagerInterface  $entityTypeManager
43      * @param EntityFieldManagerInterface $entityFieldManager
44      * @param DateFormatterInterface      $dateFormatter
45      */
46     public function __construct(
47         EntityTypeManagerInterface $entityTypeManager,
48         EntityFieldManagerInterface $entityFieldManager,
49         DateFormatterInterface $dateFormatter
50     ) {
51         $this->entityTypeManager = $entityTypeManager;
52         $this->entityFieldManager = $entityFieldManager;
53         $this->dateFormatter = $dateFormatter;
54     }
55
56     /**
57      * @param $entity
58      * @return array
59      */
60     private function getFields($entity)
61     {
62         $entityTypeId = $entity->getEntityType()->id();
63         $bundle = $entity->bundle();
64
65         $fields = array_filter(
66             $this->entityFieldManager->getFieldDefinitions($entityTypeId, $bundle), function ($fieldDefinition) {
67                 return $fieldDefinition instanceof FieldConfigInterface;
68             }
69         );
70
71         return $fields;
72     }
73
74     /**
75      * @param
76      * @param $entity
77      */
78     protected function generateFieldSampleData($entity)
79     {
80         $fields = $this->getFields($entity);
81
82         /* @var \Drupal\field\FieldConfigInterface[] $fields */
83         foreach ($fields as $field) {
84             $fieldName = $field->getFieldStorageDefinition()->getName();
85             $cardinality = $field->getFieldStorageDefinition()->getCardinality(
86             );
87             if ($cardinality == FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED) {
88                 $cardinality = rand(1, 5);
89             }
90
91             $entity->$fieldName->generateSampleItems($cardinality);
92         }
93     }
94
95     /**
96      * Returns the random data generator.
97      *
98      * @return \Drupal\Component\Utility\Random
99      *   The random data generator.
100      */
101     protected function getRandom()
102     {
103         if (!$this->random) {
104             $this->random = new Random();
105         }
106
107         return $this->random;
108     }
109
110     /**
111      * Retrieve a random Uid of enabled users.
112      *
113      * @return array
114      */
115     protected function getUserId()
116     {
117         if (!$this->users) {
118             $userStorage = $this->entityTypeManager->getStorage('user');
119
120             $this->users = $userStorage->loadByProperties(['status' => true]);
121         }
122
123         return array_rand($this->users);
124     }
125 }