Security update for Core, with self-updated composer
[yaffs-website] / vendor / drupal / console / src / Command / User / UserBase.php
diff --git a/vendor/drupal/console/src/Command/User/UserBase.php b/vendor/drupal/console/src/Command/User/UserBase.php
new file mode 100644 (file)
index 0000000..6239347
--- /dev/null
@@ -0,0 +1,102 @@
+<?php
+
+namespace Drupal\Console\Command\User;
+
+use Drupal\Core\Entity\EntityTypeManagerInterface;
+use Drupal\Console\Core\Command\Command;
+
+/**
+ * Class UserBase
+ *
+ * @package Drupal\Console\Command\User
+ */
+class UserBase extends Command
+{
+    /**
+     * @var EntityTypeManagerInterface
+     */
+    protected $entityTypeManager;
+
+
+    /**
+     * Base constructor.
+     *
+     * @param EntityTypeManagerInterface $entityTypeManager
+     */
+    public function __construct(
+        EntityTypeManagerInterface $entityTypeManager
+    ) {
+        $this->entityTypeManager = $entityTypeManager;
+        parent::__construct();
+    }
+
+    /**
+     * @param $user mixed
+     *
+     * @return mixed
+     */
+    public function getUserEntity($user)
+    {
+        if (is_numeric($user)) {
+            $userEntity = $this->entityTypeManager
+                ->getStorage('user')
+                ->load($user);
+        } else {
+            $userEntity = reset(
+                $this->entityTypeManager
+                    ->getStorage('user')
+                    ->loadByProperties(['name' => $user])
+            );
+        }
+
+        return $userEntity;
+    }
+
+    /***
+     * @return array users from site
+     */
+    public function getUsers()
+    {
+        $userStorage =  $this->entityTypeManager->getStorage('user');
+        $users = $userStorage->loadMultiple();
+
+        $userList = [];
+        foreach ($users as $userId => $user) {
+            $userList[$userId] = $user->getUsername();
+        }
+
+        return $userList;
+    }
+
+    private function userQuestion($user)
+    {
+        if (!$user) {
+            $user = $this->getIo()->choiceNoList(
+                $this->trans('commands.user.password.reset.questions.user'),
+                $this->getUsers()
+            );
+        }
+
+        return $user;
+    }
+
+    public function getUserOption()
+    {
+        $input = $this->getIo()->getInput();
+
+        $user = $this->userQuestion($input->getOption('user'));
+        $input->setOption('user', $user);
+
+        return $user;
+    }
+
+    public function getUserArgument()
+    {
+        $input = $this->getIo()->getInput();
+
+        $user = $this->userQuestion($input->getArgument('user'));
+        $input->setArgument('user', $user);
+
+        return $user;
+    }
+}