Version 1
[yaffs-website] / vendor / drupal / console / src / Utils / Create / Base.php
diff --git a/vendor/drupal/console/src/Utils/Create/Base.php b/vendor/drupal/console/src/Utils/Create/Base.php
new file mode 100644 (file)
index 0000000..660c778
--- /dev/null
@@ -0,0 +1,125 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\Console\Utils\Generate\Base.
+ */
+
+namespace Drupal\Console\Utils\Create;
+
+use Drupal\Component\Utility\Random;
+use Drupal\Core\Field\FieldStorageDefinitionInterface;
+use Drupal\field\FieldConfigInterface;
+use Drupal\Core\Entity\EntityTypeManagerInterface;
+use Drupal\Core\Entity\EntityFieldManagerInterface;
+use Drupal\Core\Datetime\DateFormatterInterface;
+
+/**
+ * Class ContentNode
+ *
+ * @package Drupal\Console\Utils
+ */
+abstract class Base
+{
+    /* @var EntityTypeManagerInterface */
+    protected $entityTypeManager = null;
+
+    /* @var EntityFieldManagerInterface */
+    protected $entityFieldManager = null;
+
+    /* @var DateFormatterInterface */
+    protected $dateFormatter = null;
+
+    /* @var array */
+    protected $users = [];
+
+    /* @var Random $random */
+    protected $random = null;
+
+    /**
+     * ContentNode constructor.
+     *
+     * @param EntityTypeManagerInterface  $entityTypeManager
+     * @param EntityFieldManagerInterface $entityFieldManager
+     * @param DateFormatterInterface      $dateFormatter
+     */
+    public function __construct(
+        EntityTypeManagerInterface $entityTypeManager,
+        EntityFieldManagerInterface $entityFieldManager,
+        DateFormatterInterface $dateFormatter
+    ) {
+        $this->entityTypeManager = $entityTypeManager;
+        $this->entityFieldManager = $entityFieldManager;
+        $this->dateFormatter = $dateFormatter;
+    }
+
+    /**
+     * @param $entity
+     * @return array
+     */
+    private function getFields($entity)
+    {
+        $entityTypeId = $entity->getEntityType()->id();
+        $bundle = $entity->bundle();
+
+        $fields = array_filter(
+            $this->entityFieldManager->getFieldDefinitions($entityTypeId, $bundle), function ($fieldDefinition) {
+                return $fieldDefinition instanceof FieldConfigInterface;
+            }
+        );
+
+        return $fields;
+    }
+
+    /**
+     * @param
+     * @param $entity
+     */
+    protected function generateFieldSampleData($entity)
+    {
+        $fields = $this->getFields($entity);
+
+        /* @var \Drupal\field\FieldConfigInterface[] $fields */
+        foreach ($fields as $field) {
+            $fieldName = $field->getFieldStorageDefinition()->getName();
+            $cardinality = $field->getFieldStorageDefinition()->getCardinality(
+            );
+            if ($cardinality == FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED) {
+                $cardinality = rand(1, 5);
+            }
+
+            $entity->$fieldName->generateSampleItems($cardinality);
+        }
+    }
+
+    /**
+     * Returns the random data generator.
+     *
+     * @return \Drupal\Component\Utility\Random
+     *   The random data generator.
+     */
+    protected function getRandom()
+    {
+        if (!$this->random) {
+            $this->random = new Random();
+        }
+
+        return $this->random;
+    }
+
+    /**
+     * Retrieve a random Uid of enabled users.
+     *
+     * @return array
+     */
+    protected function getUserId()
+    {
+        if (!$this->users) {
+            $userStorage = $this->entityTypeManager->getStorage('user');
+
+            $this->users = $userStorage->loadByProperties(['status' => true]);
+        }
+
+        return array_rand($this->users);
+    }
+}