vendor/pimcore/pimcore/models/User/UserRole/Dao.php line 33

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\UserRole;
  15. use Pimcore\Model;
  16. use Pimcore\Model\Element;
  17. /**
  18.  * @internal
  19.  *
  20.  * @property \Pimcore\Model\User\UserRole\Folder $model
  21.  */
  22. class Dao extends Model\User\AbstractUser\Dao
  23. {
  24.     /**
  25.      * @param int $id
  26.      *
  27.      * @throws \Exception
  28.      */
  29.     public function getById($id)
  30.     {
  31.         parent::getById($id);
  32.         if (in_array($this->model->getType(), ['user''role'])) {
  33.             $this->loadWorkspaces();
  34.         }
  35.     }
  36.     /**
  37.      * @param string $name
  38.      *
  39.      * @throws \Exception
  40.      */
  41.     public function getByName($name)
  42.     {
  43.         parent::getByName($name);
  44.         if (in_array($this->model->getType(), ['user''role'])) {
  45.             $this->loadWorkspaces();
  46.         }
  47.     }
  48.     public function loadWorkspaces()
  49.     {
  50.         $types = ['asset''document''object'];
  51.         foreach ($types as $type) {
  52.             $workspaces = [];
  53.             $baseClassName Element\Service::getBaseClassNameForElement($type);
  54.             $className '\\Pimcore\\Model\\User\\Workspace\\' $baseClassName;
  55.             $result $this->db->fetchAllAssociative('SELECT * FROM users_workspaces_' $type ' WHERE userId = ?', [$this->model->getId()]);
  56.             foreach ($result as $row) {
  57.                 $workspace = new $className();
  58.                 $workspace->setValues($row);
  59.                 $workspaces[] = $workspace;
  60.             }
  61.             $this->model->{'setWorkspaces' ucfirst($type)}($workspaces);
  62.         }
  63.     }
  64.     public function emptyWorkspaces()
  65.     {
  66.         $this->db->delete('users_workspaces_asset', ['userId' => $this->model->getId()]);
  67.         $this->db->delete('users_workspaces_document', ['userId' => $this->model->getId()]);
  68.         $this->db->delete('users_workspaces_object', ['userId' => $this->model->getId()]);
  69.     }
  70. }