Admin_UserController::addAction PHP Метод

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

public addAction ( )
    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);
    }