aboutsummaryrefslogtreecommitdiff
path: root/lib/navigation/CourseNavigation.php
diff options
context:
space:
mode:
authorPhilipp Schüttlöffel <schuettloeffel@zqs.uni-hannover.de>2024-09-24 10:53:31 +0200
committerPhilipp Schüttlöffel <schuettloeffel@zqs.uni-hannover.de>2024-09-24 10:53:31 +0200
commit4459dd7917f4d1c34f40bb68f0e991e9c3d53e4c (patch)
tree5c07151ae61276d334e88f6309c30d439a85c12e /lib/navigation/CourseNavigation.php
parentda0022e5c1abbf9825ae76debaabdff7e8623bb4 (diff)
parent97a188592c679890a25c37ab78463add76a52ff7 (diff)
Merge branch 'main' into issue-3911issue-3911
Diffstat (limited to 'lib/navigation/CourseNavigation.php')
-rw-r--r--lib/navigation/CourseNavigation.php68
1 files changed, 41 insertions, 27 deletions
diff --git a/lib/navigation/CourseNavigation.php b/lib/navigation/CourseNavigation.php
index 6e37cf5..7db8019 100644
--- a/lib/navigation/CourseNavigation.php
+++ b/lib/navigation/CourseNavigation.php
@@ -15,28 +15,34 @@
class CourseNavigation extends Navigation
{
+ private $range;
+
/**
* Initialize a new Navigation instance.
*/
- public function __construct()
+ public function __construct(Range $range)
{
- global $user, $perm;
+ if (!($range instanceof Course) && !($range instanceof Institute)) {
+ throw new InvalidArgumentException('Invalid range type "' . get_class($range) . '" for course navigation');
+ }
+
+ $this->range = $range;
// check if logged in
- if (is_object($user) && $user->id != 'nobody') {
+ if (User::findCurrent()) {
$coursetext = _('Veranstaltungen');
$courseinfo = _('Meine Veranstaltungen & Einrichtungen');
$courselink = 'dispatch.php/my_courses';
} else {
- $coursetext = _('Freie');
+ $coursetext = _('Freie Veranstaltungen');
$courseinfo = _('Freie Veranstaltungen');
$courselink = 'dispatch.php/public_courses';
}
parent::__construct($coursetext, $courselink);
- if (is_object($user)) {
- $this->setImage(Icon::create('seminar', 'navigation', ["title" => $courseinfo]));
+ if (User::findCurrent()) {
+ $this->setImage(Icon::create('seminar', Icon::ROLE_NAVIGATION, ['title' => $courseinfo]));
}
}
@@ -48,21 +54,19 @@ class CourseNavigation extends Navigation
{
parent::initSubNavigation();
- $context = Context::get();
- if (!$context) {
- return;
- }
-
$admin_plugin_ids = [];
- $core_admin = PluginManager::getInstance()->getPlugin('CoreAdmin');
+
+ $core_admin = PluginManager::getInstance()->getPlugin(CoreAdmin::class);
if ($core_admin) {
$admin_plugin_ids[] = $core_admin->getPluginId();
}
- $core_studygroup_admin = PluginManager::getInstance()->getPlugin('CoreStudygroupAdmin');
+
+ $core_studygroup_admin = PluginManager::getInstance()->getPlugin(CoreStudygroupAdmin::class);
if ($core_studygroup_admin) {
$admin_plugin_ids[] = $core_studygroup_admin->getPluginId();
}
- $tools = $context->tools->getArrayCopy();
+
+ $tools = $this->range->tools->getArrayCopy();
usort($tools, function ($a, $b) use ($admin_plugin_ids) {
if (in_array($a['plugin_id'], $admin_plugin_ids)) {
return -1;
@@ -72,22 +76,32 @@ class CourseNavigation extends Navigation
}
return $a['position'] - $b['position'];
});
+
foreach ($tools as $tool) {
- if (Context::isInstitute() || Seminar_Perm::get()->have_studip_perm($tool->getVisibilityPermission(), $context->id)) {
- $studip_module = $tool->getStudipModule();
- if ($studip_module instanceof StudipModule) {
- $tool_nav = $studip_module->getTabNavigation($context->id) ?: [];
- foreach ($tool_nav as $nav_name => $navigation) {
- if ($nav_name && is_a($navigation, "Navigation")) {
- if ($tool->metadata['displayname']) {
- $navigation->setTitle($tool->getDisplayname());
- }
- $this->addSubNavigation($nav_name, $navigation);
- }
- }
+ if (
+ !($this->range instanceof Institute)
+ && !Seminar_Perm::get()->have_studip_perm($tool->getVisibilityPermission(), $this->range->id)
+ ) {
+ continue;
+ }
+
+ $studip_module = $tool->getStudipModule();
+ if (!($studip_module instanceof StudipModule)) {
+ continue;
+ }
+
+ $tool_nav = $studip_module->getTabNavigation($this->range->id) ?: [];
+
+ foreach ($tool_nav as $nav_name => $navigation) {
+ if (!$nav_name || !$navigation instanceof Navigation) {
+ continue;
+ }
+
+ if ($tool->metadata['displayname']) {
+ $navigation->setTitle($tool->getDisplayname());
}
+ $this->addSubNavigation($nav_name, $navigation);
}
}
}
-
}