From e5be38221fa9ddf453224417b2a7d9fe24fad633 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arne=20Schr=C3=B6der=2C=20M=2E=20A=2E?= Date: Thu, 19 Feb 2026 13:10:29 +0000 Subject: Resolve "ILIAS-Schnittstelle: Warnings, wenn Schnittstellenkonfiguration nicht abgeschlossen" Closes #6276 Merge request studip/studip!4748 --- app/controllers/admin/ilias_interface.php | 48 +++++------------------------- app/controllers/course/ilias_interface.php | 6 ++-- app/controllers/my_ilias_accounts.php | 12 ++++---- lib/ilias_interface/ConnectedIlias.php | 14 ++++++--- lib/modules/IliasInterfaceModule.php | 2 +- 5 files changed, 27 insertions(+), 55 deletions(-) diff --git a/app/controllers/admin/ilias_interface.php b/app/controllers/admin/ilias_interface.php index 4703cff..00dd82e 100644 --- a/app/controllers/admin/ilias_interface.php +++ b/app/controllers/admin/ilias_interface.php @@ -125,48 +125,12 @@ class Admin_IliasInterfaceController extends AuthenticatedController $this->ilias_version = ''; $this->ilias_version_date = ''; $this->ilias_clients = []; + + // default values + $ilias = new ConnectedIlias($index); + $this->ilias_config = $ilias->ilias_config; + if ($index === 'new') { - // default values - $this->ilias_config = [ - 'is_active' => false, - 'name' => '', - 'version' => '', - 'url' => _('https://'), - 'http_connection_timeout' => 1, - 'http_request_timeout' => 3, - 'client' => '', - 'ldap_enable' => '', - 'reconnect_accounts' => false, - 'no_account_updates' => false, - 'admin' => 'ilias_soap_admin', - 'admin_pw' => '', - - 'root_category_name' => '', - 'root_category' => '', - 'user_prefix' => 'studip_', - 'delete_ilias_users' => '', - 'delete_ilias_courses' => '', - 'user_data_category' => '', - 'matriculation' => '', - 'allow_change_account' => false, - 'category_create_on_add_module' => false, - 'category_to_desktop' => false, - 'cat_semester' => '', - 'cat_faculty' => '', - 'course_semester' => '', - 'course_veranstaltungsnummer' => false, - 'workgroup_category_name' => '', - 'workgroup_category' => '', - 'workgroup_perm' => '', - 'workgroup_role_name' => '', - 'workgroup_role' => '', - 'modules' => [], - - 'author_role_name' => 'Author', - 'author_role' => '', - 'author_perm' => 'tutor', - 'additional_roles' => [] - ]; // fetch existing indicies from previously connected ILIAS installations $this->existing_indices = ConnectedIlias::getExistingIndices(); @@ -306,6 +270,8 @@ class Admin_IliasInterfaceController extends AuthenticatedController CSRFProtection::verifyUnsafeRequest(); if (Request::submittedSome('submit', 'add_additional_role', 'remove_additional_role')) { + $connected_ilias = new ConnectedIlias($index); + $this->ilias_configs[$index] = $connected_ilias->ilias_config; // set basic server settings if (Request::getInstance()->offsetExists('ilias_name')) { $this->ilias_configs[$index]['name'] = Request::get('ilias_name'); diff --git a/app/controllers/course/ilias_interface.php b/app/controllers/course/ilias_interface.php index c631790..ddd4ed0 100644 --- a/app/controllers/course/ilias_interface.php +++ b/app/controllers/course/ilias_interface.php @@ -67,7 +67,7 @@ class Course_IliasInterfaceController extends AuthenticatedController $this->ilias_list = []; $module_count = 0; foreach (Config::get()->ILIAS_INTERFACE_SETTINGS as $ilias_index => $ilias_config) { - if ($ilias_config['is_active']) { + if (!empty($ilias_config['is_active'])) { $this->ilias_list[$ilias_index] = new ConnectedIlias($ilias_index); if ($GLOBALS['perm']->have_perm($this->ilias_list[$ilias_index]->ilias_config['author_perm'])) { $this->author_permission = true; @@ -267,7 +267,7 @@ class Course_IliasInterfaceController extends AuthenticatedController $this->mode = $mode; $this->keep_dialog = false; foreach (Config::get()->ILIAS_INTERFACE_SETTINGS as $ilias_index => $ilias_config) { - if ($ilias_config['is_active']) { + if (!empty($ilias_config['is_active'])) { $this->ilias_list[$ilias_index] = new ConnectedIlias($ilias_index); $last_ilias_index = $ilias_index; if (Request::get('ilias_index') == $ilias_index) { @@ -421,7 +421,7 @@ class Course_IliasInterfaceController extends AuthenticatedController // get active ILIAS installations $this->ilias_list = []; foreach (Config::get()->ILIAS_INTERFACE_SETTINGS as $ilias_index => $ilias_config) { - if ($ilias_config['is_active'] && IliasObjectConnections::getConnectionModuleId($this->seminar_id, "crs", $ilias_index)) { + if (!empty($ilias_config['is_active']) && IliasObjectConnections::getConnectionModuleId($this->seminar_id, "crs", $ilias_index)) { $this->ilias_list[$ilias_index] = new ConnectedIlias($ilias_index); $last_ilias_index = $ilias_index; if (Request::get('ilias_index') == $ilias_index) { diff --git a/app/controllers/my_ilias_accounts.php b/app/controllers/my_ilias_accounts.php index ad22248..d6495f3 100644 --- a/app/controllers/my_ilias_accounts.php +++ b/app/controllers/my_ilias_accounts.php @@ -50,7 +50,7 @@ class MyIliasAccountsController extends AuthenticatedController $this->ilias_list = []; foreach (Config::get()->ILIAS_INTERFACE_SETTINGS as $ilias_index => $ilias_config) { - if ($ilias_config['is_active']) { + if (!empty($ilias_config['is_active'])) { $this->ilias_list[$ilias_index] = new ConnectedIlias($ilias_index); $this->ilias_list[$ilias_index]->checkUser(); $this->ilias_list[$ilias_index]->soap_client->clearCache(); @@ -254,7 +254,7 @@ class MyIliasAccountsController extends AuthenticatedController // set up connected ilias classes $this->ilias_list = []; foreach (Config::get()->ILIAS_INTERFACE_SETTINGS as $ilias_index => $ilias_config) { - if ($ilias_config['is_active']) { + if (!empty($ilias_config['is_active'])) { $this->ilias_list[$ilias_index] = new ConnectedIlias($ilias_index); $this->ilias_list[$ilias_index]->checkUser(); $this->ilias_list[$ilias_index]->soap_client->clearCache(); @@ -442,7 +442,7 @@ class MyIliasAccountsController extends AuthenticatedController public function new_account_action($index) { $ilias_configs = Config::get()->ILIAS_INTERFACE_SETTINGS; - if ($ilias_configs[$index]['is_active']) { + if (!empty($ilias_configs[$index]['is_active'])) { $this->ilias = new ConnectedIlias($index); $this->ilias_index = $index; } @@ -455,7 +455,7 @@ class MyIliasAccountsController extends AuthenticatedController public function change_account_action($index, $mode) { $ilias_configs = Config::get()->ILIAS_INTERFACE_SETTINGS; - if ($ilias_configs[$index]['is_active']) { + if (!empty($ilias_configs[$index]['is_active'])) { $this->ilias = new ConnectedIlias($index); $this->ilias_index = $index; switch ($mode) { @@ -505,7 +505,7 @@ class MyIliasAccountsController extends AuthenticatedController } $ilias_configs = Config::get()->ILIAS_INTERFACE_SETTINGS; - if ($ilias_configs[$index]['is_active']) { + if (!empty($ilias_configs[$index]['is_active'])) { $this->ilias = new ConnectedIlias($index); $this->ilias_index = $index; $this->ilias_login = ''; @@ -563,7 +563,7 @@ class MyIliasAccountsController extends AuthenticatedController public function redirect_action($index, $target, $module_id = '', $module_type = '') { $ilias_configs = Config::get()->ILIAS_INTERFACE_SETTINGS; - if ($ilias_configs[$index]['is_active']) { + if (!empty($ilias_configs[$index]['is_active'])) { $this->ilias = new ConnectedIlias($index); $token = $this->ilias->user->getToken(); $session_id = $this->ilias->soap_client->loginUser($this->ilias->user->getUsername(), $token); diff --git a/lib/ilias_interface/ConnectedIlias.php b/lib/ilias_interface/ConnectedIlias.php index 27510bc..adec457 100644 --- a/lib/ilias_interface/ConnectedIlias.php +++ b/lib/ilias_interface/ConnectedIlias.php @@ -198,11 +198,17 @@ class ConnectedIlias 'author_role_name' => '', 'author_role' => '', - 'author_perm' => '' + 'author_perm' => 'tutor', + 'additional_roles' => [] ]; - foreach ($config_options as $option_key => $option_value) { - if (!array_key_exists($option_key, $ilias_configs[$this->index])) { - $ilias_configs[$this->index][$option_key] = $option_value; + + if (empty($ilias_configs[$this->index])) { + $ilias_configs[$this->index] = $config_options; + } else { + foreach ($config_options as $option_key => $option_value) { + if (!array_key_exists($option_key, $ilias_configs[$this->index])) { + $ilias_configs[$this->index][$option_key] = $option_value; + } } } diff --git a/lib/modules/IliasInterfaceModule.php b/lib/modules/IliasInterfaceModule.php index 0168e2b..d9575ff 100644 --- a/lib/modules/IliasInterfaceModule.php +++ b/lib/modules/IliasInterfaceModule.php @@ -20,7 +20,7 @@ class IliasInterfaceModule extends CorePlugin implements StudipModuleExtended, S $workgroups = false; $learning_objects = false; foreach (Config::get()->ILIAS_INTERFACE_SETTINGS as $ilias_index => $ilias_config) { - if ($ilias_config['is_active']) { + if (!empty($ilias_config['is_active'])) { if (!empty($ilias_config['workgroup_category']) && User::findCurrent()->hasPermissionLevel('tutor')) { $workgroups = true; } -- cgit v1.0