public static function getRuntimePerspective()
{
$currentUser = Tool\Admin::getCurrentUser();
$currentConfigName = $currentUser->getActivePerspective() ? $currentUser->getActivePerspective() : $currentUser->getFirstAllowedPerspective();
$config = self::getPerspectivesConfig()->toArray();
$result = [];
if ($config[$currentConfigName]) {
$result = $config[$currentConfigName];
} else {
$availablePerspectives = self::getAvailablePerspectives($currentUser);
if ($availablePerspectives) {
$currentPerspective = reset($availablePerspectives);
$currentConfigName = $currentPerspective["name"];
if ($currentConfigName && $config[$currentConfigName]) {
$result = $config[$currentConfigName];
}
}
}
if ($result && $currentConfigName != $currentUser->getActivePerspective()) {
$currentUser->setActivePerspective($currentConfigName);
$currentUser->save();
}
$result["elementTree"] = self::getRuntimeElementTreeConfig($currentConfigName);
return $result;
}