Admin_UserController::getAction PHP Метод

getAction() публичный Метод

public getAction ( )
    public function getAction()
    {
        if (intval($this->getParam("id")) < 1) {
            $this->_helper->json(["success" => false]);
        }
        $user = User::getById(intval($this->getParam("id")));
        if ($user->isAdmin() && !$this->getUser()->isAdmin()) {
            throw new \Exception("Only admin users are allowed to modify admin users");
        }
        // workspaces
        $types = ["asset", "document", "object"];
        foreach ($types as $type) {
            $workspaces = $user->{"getWorkspaces" . ucfirst($type)}();
            foreach ($workspaces as $workspace) {
                $el = Element\Service::getElementById($type, $workspace->getCid());
                if ($el) {
                    // direct injection => not nice but in this case ok ;-)
                    $workspace->path = $el->getRealFullPath();
                }
            }
        }
        // object <=> user dependencies
        $userObjects = Object\Service::getObjectsReferencingUser($user->getId());
        $userObjectData = [];
        foreach ($userObjects as $o) {
            $hasHidden = false;
            if ($o->isAllowed("list")) {
                $userObjectData[] = ["path" => $o->getRealFullPath(), "id" => $o->getId(), "subtype" => $o->getClass()->getName()];
            } else {
                $hasHidden = true;
            }
        }
        // get available permissions
        $availableUserPermissionsList = new User\Permission\Definition\Listing();
        $availableUserPermissions = $availableUserPermissionsList->load();
        // get available roles
        $roles = [];
        $list = new User\Role\Listing();
        $list->setCondition("`type` = ?", ["role"]);
        $list->load();
        $roles = [];
        if (is_array($list->getItems())) {
            foreach ($list->getItems() as $role) {
                $roles[] = [$role->getId(), $role->getName()];
            }
        }
        // unset confidential informations
        $userData = object2array($user);
        $contentLanguages = Tool\Admin::reorderWebsiteLanguages($user, Tool::getValidLanguages());
        $userData["contentLanguages"] = $contentLanguages;
        unset($userData["password"]);
        $availablePerspectives = \Pimcore\Config::getAvailablePerspectives(null);
        $conf = \Pimcore\Config::getSystemConfig();
        $this->_helper->json(["success" => true, "wsenabled" => $conf->webservice->enabled, "user" => $userData, "roles" => $roles, "permissions" => $user->generatePermissionList(), "availablePermissions" => $availableUserPermissions, "availablePerspectives" => $availablePerspectives, "validLanguages" => Tool::getValidLanguages(), "objectDependencies" => ["hasHidden" => $hasHidden, "dependencies" => $userObjectData]]);
    }