vendor/pimcore/pimcore/models/User/AbstractUser/Dao.php line 38

Open in your IDE?
  1. <?php
  2. /**
  3.  * Pimcore
  4.  *
  5.  * This source file is available under two different licenses:
  6.  * - GNU General Public License version 3 (GPLv3)
  7.  * - Pimcore Commercial License (PCL)
  8.  * Full copyright and license information is available in
  9.  * LICENSE.md which is distributed with this source code.
  10.  *
  11.  *  @copyright  Copyright (c) Pimcore GmbH (http://www.pimcore.org)
  12.  *  @license    http://www.pimcore.org/license     GPLv3 and PCL
  13.  */
  14. namespace Pimcore\Model\User\AbstractUser;
  15. use Pimcore\Logger;
  16. use Pimcore\Model;
  17. /**
  18.  * @internal
  19.  *
  20.  * @property \Pimcore\Model\User\AbstractUser $model
  21.  */
  22. class Dao extends Model\Dao\AbstractDao
  23. {
  24.     use Model\Element\ChildsCompatibilityTrait;
  25.     /**
  26.      * @param int $id
  27.      *
  28.      * @throws Model\Exception\NotFoundException
  29.      */
  30.     public function getById($id)
  31.     {
  32.         if ($this->model->getType()) {
  33.             $data $this->db->fetchAssociative('SELECT * FROM users WHERE `type` = ? AND id = ?', [$this->model->getType(), $id]);
  34.         } else {
  35.             $data $this->db->fetchAssociative('SELECT * FROM users WHERE `id` = ?', [$id]);
  36.         }
  37.         if ($data) {
  38.             $this->assignVariablesToModel($data);
  39.         } else {
  40.             throw new Model\Exception\NotFoundException("user doesn't exist");
  41.         }
  42.     }
  43.     /**
  44.      * @param string $name
  45.      *
  46.      * @throws Model\Exception\NotFoundException
  47.      */
  48.     public function getByName($name)
  49.     {
  50.         $data $this->db->fetchAssociative('SELECT * FROM users WHERE `type` = ? AND `name` = ?', [$this->model->getType(), $name]);
  51.         if ($data) {
  52.             $this->assignVariablesToModel($data);
  53.         } else {
  54.             throw new Model\Exception\NotFoundException(sprintf('User with name "%s" does not exist'$name));
  55.         }
  56.     }
  57.     public function create()
  58.     {
  59.         $this->db->insert('users', [
  60.             'name' => $this->model->getName(),
  61.             'type' => $this->model->getType(),
  62.         ]);
  63.         $this->model->setId((int) $this->db->lastInsertId());
  64.     }
  65.     /**
  66.      * Quick test if there are children
  67.      *
  68.      * @return bool
  69.      */
  70.     public function hasChildren()
  71.     {
  72.         if (!$this->model->getId()) {
  73.             return false;
  74.         }
  75.         $c $this->db->fetchOne('SELECT id FROM users WHERE parentId = ?', [$this->model->getId()]);
  76.         return (bool) $c;
  77.     }
  78.     /**
  79.      * @throws \Exception
  80.      */
  81.     public function update()
  82.     {
  83.         if (strlen($this->model->getName()) < 2) {
  84.             throw new \Exception('Name of user/role must be at least 2 characters long');
  85.         }
  86.         $data = [];
  87.         $dataRaw $this->model->getObjectVars();
  88.         foreach ($dataRaw as $key => $value) {
  89.             if (in_array($key$this->getValidTableColumns('users'))) {
  90.                 if (is_bool($value)) {
  91.                     $value = (int) $value;
  92.                 } elseif (in_array($key, ['permissions''roles''docTypes''classes''perspectives''websiteTranslationLanguagesEdit''websiteTranslationLanguagesView'])) {
  93.                     // permission and roles are stored as csv
  94.                     if (is_array($value)) {
  95.                         $value implode(','$value);
  96.                     }
  97.                 } elseif (in_array($key, ['twoFactorAuthentication'])) {
  98.                     $value json_encode($value);
  99.                 }
  100.                 $data[$key] = $value;
  101.             }
  102.         }
  103.         $this->db->update('users'$data, ['id' => $this->model->getId()]);
  104.     }
  105.     /**
  106.      * @throws \Exception
  107.      */
  108.     public function delete()
  109.     {
  110.         $userId $this->model->getId();
  111.         Logger::debug('delete user with ID: ' $userId);
  112.         $this->db->delete('users', ['id' => $userId]);
  113.     }
  114.     /**
  115.      * @throws \Exception
  116.      */
  117.     public function setLastLoginDate()
  118.     {
  119.         $data['lastLogin'] = (new \DateTime())->getTimestamp();
  120.         $this->db->update('users'$data, ['id' => $this->model->getId()]);
  121.     }
  122. }