Pimcore\Config::getAvailablePerspectives PHP Method

getAvailablePerspectives() public static method

Returns a list of available perspectives for the given user
public static getAvailablePerspectives ( User $user ) : array
$user Pimcore\Model\User
return array
    public static function getAvailablePerspectives($user)
    {
        $currentConfigName = null;
        $masterConfig = self::getPerspectivesConfig()->toArray();
        if ($user instanceof Model\User) {
            if ($user->isAdmin()) {
                $config = self::getPerspectivesConfig()->toArray();
            } else {
                $config = [];
                $roleIds = $user->getRoles();
                $userIds = [$user->getId()];
                $userIds = array_merge($userIds, $roleIds);
                foreach ($userIds as $userId) {
                    if (in_array($userId, $roleIds)) {
                        $userOrRoleToCheck = Model\User\Role::getById($userId);
                    } else {
                        $userOrRoleToCheck = Model\User::getById($userId);
                    }
                    $perspectives = $userOrRoleToCheck->getPerspectives();
                    if ($perspectives) {
                        foreach ($perspectives as $perspectiveName) {
                            $masterDef = $masterConfig[$perspectiveName];
                            if ($masterDef) {
                                $config[$perspectiveName] = $masterDef;
                            }
                        }
                    }
                }
                if (!$config) {
                    $config = self::getPerspectivesConfig()->toArray();
                }
            }
            if ($config) {
                $tmpConfig = [];
                $validPerspectiveNames = array_keys($config);
                // sort the stuff
                foreach ($masterConfig as $masterConfigName => $masterConfiguration) {
                    if (in_array($masterConfigName, $validPerspectiveNames)) {
                        $tmpConfig[$masterConfigName] = $masterConfiguration;
                    }
                }
                $config = $tmpConfig;
            }
            $currentConfigName = $user->getActivePerspective();
            if ($config && !in_array($currentConfigName, array_keys($config))) {
                $currentConfigName = reset(array_keys($config));
            }
        } else {
            $config = self::getPerspectivesConfig()->toArray();
        }
        $result = [];
        foreach ($config as $configName => $configItem) {
            $item = ["name" => $configName, "icon" => isset($configItem["icon"]) ? $configItem["icon"] : null, "iconCls" => isset($configItem["iconCls"]) ? $configItem["iconCls"] : null];
            if ($user) {
                $item["active"] = $configName == $currentConfigName;
            }
            $result[] = $item;
        }
        return $result;
    }

Usage Example

Example #1
0
 /**
  * Returns the first perspective name
  *
  * @return string
  */
 public function getFirstAllowedPerspective()
 {
     $perspectives = $this->getMergedPerspectives();
     if (!empty($perspectives)) {
         return $perspectives[0];
     } else {
         // all perspectives are allowed
         $perspectives = \Pimcore\Config::getAvailablePerspectives($this);
         return $perspectives[0]["name"];
     }
 }
All Usage Examples Of Pimcore\Config::getAvailablePerspectives