/** * Loads a list of users for the specified parameters, returns an array of User elements * @return array */ public function load() { $items = []; $usersData = $this->db->fetchAll("SELECT id,type FROM users" . $this->getCondition() . $this->getOrder() . $this->getOffsetLimit(), $this->model->getConditionVariables()); foreach ($usersData as $userData) { $className = Model\User\Service::getClassNameForType($userData["type"]); $item = $className::getById($userData["id"]); if ($item) { $items[] = $item; } } $this->model->setItems($items); return $items; }
/** * @param integer $id * @return AbstractUser */ public static function getById($id) { $cacheKey = "user_" . $id; try { if (\Zend_Registry::isRegistered($cacheKey)) { $user = \Zend_Registry::get($cacheKey); } else { $user = new static(); $user->getDao()->getById($id); if (get_class($user) == "Pimcore\\Model\\User\\AbstractUser") { $className = Service::getClassNameForType($user->getType()); $user = $className::getById($user->getId()); } \Zend_Registry::set($cacheKey, $user); } return $user; } catch (\Exception $e) { return false; } }
public function addAction() { $this->protectCSRF(); try { $type = $this->getParam("type"); $className = User\Service::getClassNameForType($type); $user = $className::create(["parentId" => intval($this->getParam("parentId")), "name" => trim($this->getParam("name")), "password" => "", "active" => $this->getParam("active")]); if ($this->getParam("rid")) { $rid = $this->getParam("rid"); $rObject = $className::getById($rid); if ($rObject) { if ($type == "user" || $type == "role") { $user->setParentId($rObject->getParentId()); if ($rObject->getClasses()) { $user->setClasses(implode(',', $rObject->getClasses())); } if ($rObject->getDocTypes()) { $user->setDocTypes(implode(',', $rObject->getDocTypes())); } $keys = ["asset", "document", "object"]; foreach ($keys as $key) { $getter = "getWorkspaces" . ucfirst($key); $setter = "setWorkspaces" . ucfirst($key); $workspaces = $rObject->{$getter}(); $clonedWorkspaces = []; if (is_array($workspaces)) { foreach ($workspaces as $workspace) { $vars = get_object_vars($workspace); $workspaceClass = "\\Pimcore\\Model\\User\\Workspace\\" . ucfirst($key); $newWorkspace = new $workspaceClass(); foreach ($vars as $varKey => $varValue) { $newWorkspace->{$varKey} = $varValue; } $newWorkspace->setUserId($user->getId()); $clonedWorkspaces[] = $newWorkspace; } } $user->{$setter}($clonedWorkspaces); } $user->setPermissions($rObject->getPermissions()); if ($type == "user") { $user->setAdmin(false); if ($this->getUser()->isAdmin()) { $user->setAdmin($rObject->getAdmin()); } $user->setActive($rObject->getActive()); $user->setRoles($rObject->getRoles()); $user->setWelcomeScreen($rObject->getWelcomescreen()); $user->setMemorizeTabs($rObject->getMemorizeTabs()); $user->setCloseWarning($rObject->getCloseWarning()); } $user->save(); } } } $this->_helper->json(["success" => true, "id" => $user->getId()]); } catch (\Exception $e) { $this->_helper->json(["success" => false, "message" => $e->getMessage()]); } $this->_helper->json(false); }