diff options
| author | Arne Schröder, M. A <schroeder@data-quest.de> | 2025-03-26 11:26:46 +0000 |
|---|---|---|
| committer | Thomas Hackl <hackl@data-quest.de> | 2025-03-28 13:14:15 +0100 |
| commit | bd6201de55e67c83f2185ec0495e375783e744db (patch) | |
| tree | c4d03f3487319440b284c3be5a344e9bd14c60ae /app | |
| parent | d2b0799fe31c93cb0f21109d2a0e14fec578ca42 (diff) | |
Resolve "ILIAS-Schnittstelle: Inkompatibilität mit ILIAS 9"
Closes #4995
Merge request studip/studip!3888
Diffstat (limited to 'app')
| -rw-r--r-- | app/controllers/admin/ilias_interface.php | 60 | ||||
| -rw-r--r-- | app/controllers/course/ilias_interface.php | 9 | ||||
| -rw-r--r-- | app/controllers/my_ilias_accounts.php | 3 | ||||
| -rw-r--r-- | app/views/admin/ilias_interface/edit_content.php | 20 | ||||
| -rw-r--r-- | app/views/admin/ilias_interface/index.php | 2 | ||||
| -rw-r--r-- | app/views/admin/ilias_interface/soap_methods.php | 8 | ||||
| -rw-r--r-- | app/views/course/ilias_interface/add_groups.php | 7 | ||||
| -rw-r--r-- | app/views/course/ilias_interface/add_object.php | 12 | ||||
| -rw-r--r-- | app/views/course/ilias_interface/index.php | 8 | ||||
| -rw-r--r-- | app/views/course/ilias_interface/view_object.php | 4 |
10 files changed, 73 insertions, 60 deletions
diff --git a/app/controllers/admin/ilias_interface.php b/app/controllers/admin/ilias_interface.php index 37b1664..c327c29 100644 --- a/app/controllers/admin/ilias_interface.php +++ b/app/controllers/admin/ilias_interface.php @@ -124,7 +124,7 @@ class Admin_IliasInterfaceController extends AuthenticatedController $this->valid_url = false; $this->ilias_version = ''; $this->ilias_version_date = ''; - $this->clients = []; + $this->ilias_clients = []; if ($index === 'new') { // default values $this->ilias_config = [ @@ -170,7 +170,7 @@ class Admin_IliasInterfaceController extends AuthenticatedController // get ILIAS server info if (Request::get('ilias_url')) { $info = ConnectedIlias::getIliasInfo(Request::get('ilias_url')); - if (count($info)) { + if (is_array($info) && count($info)) { $this->valid_url = true; $this->ilias_config['url'] = Request::get('ilias_url'); $this->ilias_config['http_connection_timeout'] = (int) Request::get('ilias_http_connection_timeout'); @@ -247,8 +247,18 @@ class Admin_IliasInterfaceController extends AuthenticatedController */ public function edit_content_action($index) { - $this->ilias_config = $this->ilias_configs[$index]; $this->ilias_index = $index; + $this->ilias_datafields = []; + + $connected_ilias = new ConnectedIlias($index); + $this->ilias_config = $connected_ilias->ilias_config; + + if ($admin_id = $connected_ilias->soap_client->lookupUser($this->ilias_config['admin'])) { + $user = $connected_ilias->soap_client->getUser($admin_id); + if (!empty($user) && array_key_exists('udfs', $user)) { + $this->ilias_datafields = $user['udfs']; + } + } } /** @@ -257,8 +267,11 @@ class Admin_IliasInterfaceController extends AuthenticatedController */ public function edit_permissions_action($index) { - $this->ilias_config = $this->ilias_configs[$index]; $this->ilias_index = $index; + + $connected_ilias = new ConnectedIlias($index); + $this->ilias_config = $connected_ilias->ilias_config; + $this->global_roles = $connected_ilias->soap_client->getRoles('global', -1); } /** @@ -420,28 +433,31 @@ class Admin_IliasInterfaceController extends AuthenticatedController */ public function soap_methods_action($index) { - if ($this->ilias_configs[$index]['is_active']) { - $ilias = new ConnectedIlias($index); - $this->soap_methods = $ilias->getSoapMethods(); - ksort($this->soap_methods); - $this->ilias_index = $index; - if (Request::get('ilias_soap_method')) { - $this->ilias_soap_method = Request::get('ilias_soap_method'); - foreach ($this->soap_methods[Request::get('ilias_soap_method')] as $param) { - switch ($param) { - case "sid" : $this->params[$param] = $ilias->soap_client->getSID(); - break; - case "user_id" : $this->params[$param] = $ilias->user->getId(); - break; - } + $ilias = new ConnectedIlias($index); + + $this->soap_methods = $ilias->getSoapMethods(); + ksort($this->soap_methods); + $this->ilias_index = $index; + if (Request::get('ilias_soap_method')) { + $this->ilias_soap_method = Request::get('ilias_soap_method'); + foreach ($this->soap_methods[Request::get('ilias_soap_method')] as $param) { + switch ($param) { + case "sid" : $this->params[$param] = $ilias->soap_client->getSID(); + break; + case "user_id" : $this->params[$param] = is_object($ilias->user) ? $ilias->user->getId() : ''; + break; } - } elseif (Request::get('ilias_call')) { - $params = []; - foreach ($this->soap_methods[Request::get('ilias_call')] as $param) { + } + } elseif (Request::get('ilias_call')) { + $params = []; + foreach ($this->soap_methods[Request::get('ilias_call')] as $param) { + if ($param === 'user_ids') { + $params[$param] = [Request::get('ilias_soap_param_'.$param)]; + } else { $params[$param] = Request::get('ilias_soap_param_'.$param); } - $this->result = $ilias->soap_client->call(Request::get('ilias_call'), $params); } + $this->result = $ilias->soap_client->call(Request::get('ilias_call'), $params); } } } diff --git a/app/controllers/course/ilias_interface.php b/app/controllers/course/ilias_interface.php index 96196da..ee34048 100644 --- a/app/controllers/course/ilias_interface.php +++ b/app/controllers/course/ilias_interface.php @@ -26,9 +26,8 @@ class Course_IliasInterfaceController extends AuthenticatedController { parent::before_filter($action, $args); - if (Request::isXhr()) { - $this->dialog = true; - } + $this->dialog = Request::isXhr(); + if (!Config::Get()->ILIAS_INTERFACE_ENABLE ) { throw new AccessDeniedException(_('ILIAS-Interface ist nicht aktiviert.')); } else @@ -173,7 +172,7 @@ class Course_IliasInterfaceController extends AuthenticatedController Icon::create('group2') )->asDialog('size=auto'); } - if ($this->author_permission) { + if ($this->author_permission && !empty($this->ilias_interface_config['show_tools_page'])) { $widget->addLink( _('Externe Accounts verwalten'), $this->url_for('my_ilias_accounts'), @@ -380,7 +379,7 @@ class Course_IliasInterfaceController extends AuthenticatedController } // exclude all modules that are already assigned to course foreach ($this->ilias_modules as $module_id => $module) { - if ($course_modules[$this->ilias_index][$module_id]) { + if (!empty($course_modules[$this->ilias_index][$module_id])) { unset($this->ilias_modules[$module_id]); } } diff --git a/app/controllers/my_ilias_accounts.php b/app/controllers/my_ilias_accounts.php index fc4c00d..01ce191 100644 --- a/app/controllers/my_ilias_accounts.php +++ b/app/controllers/my_ilias_accounts.php @@ -217,8 +217,7 @@ class MyIliasAccountsController extends AuthenticatedController } // refer to ILIAS target file - header('Location: '. $this->ilias->getTargetFile() . $parameters); - $this->render_nothing(); + $this->redirect($this->ilias->getTargetFile() . $parameters); } } } diff --git a/app/views/admin/ilias_interface/edit_content.php b/app/views/admin/ilias_interface/edit_content.php index ce48668..a45c5fc 100644 --- a/app/views/admin/ilias_interface/edit_content.php +++ b/app/views/admin/ilias_interface/edit_content.php @@ -11,43 +11,43 @@ <input type="hidden" name="ilias_content_settings" size="50" maxlength="255" value="1"> <label> <span class="required"><?= _('Wurzelkategorie für Stud.IP-Daten') ?></span> - <? if ($ilias_config['root_category']) : ?> + <? if (!empty($ilias_config['root_category'])) : ?> <div><?=htmlReady($ilias_config['root_category_name']).' (ID '.htmlReady($ilias_config['root_category']).')'?></div> <? else : ?> - <input type="text" name="ilias_root_category_name" size="50" maxlength="255" value="<?= htmlReady($ilias_config['root_category_name']) ?>" required> + <input type="text" name="ilias_root_category_name" size="50" maxlength="255" value="<?= empty($ilias_config['root_category_name']) ? '' : htmlReady($ilias_config['root_category_name']) ?>" required> <? endif ?> </label> - <? if ($ilias_config['user_data_category']) : ?> + <? if (!empty($ilias_config['user_data_category'])) : ?> <label> <span class="required"><?= _('Kategorie mit User-Daten') ?></span> <div><?= _('User_daten').' (ID '.htmlReady($ilias_config['user_data_category']).')'?></div> </label> <? endif ?> <label> - <input type="checkbox" name="ilias_category_create_on_add_module" value="1" <?= $ilias_config['category_create_on_add_module'] ? 'checked' : '' ?>> + <input type="checkbox" name="ilias_category_create_on_add_module" value="1" <?= !empty($ilias_config['category_create_on_add_module']) ? 'checked' : '' ?>> <span><?= _('Persönliche ILIAS-Kategorie erst erzeugen, wenn Lernobjekte angelegt werden') ?></span> </label> <? if (array_key_exists('version', $ilias_config) && (ConnectedIlias::getIntVersion($ilias_config['version']) >= 50400) && (ConnectedIlias::getIntVersion($ilias_config['version']) < 60000)) : ?> <label> - <input type="checkbox" name="ilias_category_to_desktop" value="1" <?= $ilias_config['category_to_desktop'] ? 'checked' : '' ?>> + <input type="checkbox" name="ilias_category_to_desktop" value="1" <?= !empty($ilias_config['category_to_desktop']) ? 'checked' : '' ?>> <span><?= _('Persönliche ILIAS-Kategorie auf den Schreibtisch legen') ?></span> </label> <? endif ?> <label> - <input type="checkbox" name="ilias_delete_ilias_users" value="1" <?= $ilias_config['delete_ilias_users'] ? 'checked' : '' ?>> + <input type="checkbox" name="ilias_delete_ilias_users" value="1" <?= !empty($ilias_config['delete_ilias_users']) ? 'checked' : '' ?>> <span><?= _('Beim Löschen von Stud.IP-Accounts ILIAS-Accounts ebenfalls löschen (alle zugehörigen Objekte werden gelöscht!)') ?></span> </label> <label> <span><?= _('Prefix für automatisch angelegte Usernamen') ?></span> <? if ($ilias_config['is_active']) : ?> - <div><?=$ilias_config['user_prefix'] ? htmlReady($ilias_config['user_prefix']) : _('Kein Präfix')?></div> + <div><?=!empty($ilias_config['user_prefix']) ? htmlReady($ilias_config['user_prefix']) : _('Kein Präfix')?></div> <? else : ?> - <input type="text" name="ilias_user_prefix" size="50" maxlength="255" value="<?= htmlReady($ilias_config['user_prefix']) ?>"> + <input type="text" name="ilias_user_prefix" size="50" maxlength="255" value="<?= empty($ilias_config['user_prefix']) ? '' : htmlReady($ilias_config['user_prefix']) ?>"> <? endif ?> </label> <label> <span><?= _('Datenfeld (Name) mit Matrikelnummer (nur ausfüllen, wenn die Matrikelnummer in einem Datenfeld gespeichert wird)') ?></span> - <input type="text" name="ilias_matriculation" size="50" maxlength="255" value="<?= htmlReady($ilias_config['matriculation']) ?>"> + <input type="text" name="ilias_matriculation" size="50" maxlength="255" value="<?= empty($ilias_config['matriculation']) ? '' : htmlReady($ilias_config['matriculation']) ?>"> </label> <label> <span class="required"><?= _('Struktur für angelegte Kurse') ?></span> @@ -97,7 +97,7 @@ <label> <? foreach ($modules_available as $module_index => $module_name) : ?> <label> - <input type="checkbox" name="ilias_modules_<?=$module_index?>" value="1" <?=$ilias_config['modules'][$module_index] ? ' checked':''?>> + <input type="checkbox" name="ilias_modules_<?=$module_index?>" value="1" <?=!empty($ilias_config['modules'][$module_index]) ? ' checked':''?>> <?=htmlReady($module_name)?> </label> <? endforeach ?> diff --git a/app/views/admin/ilias_interface/index.php b/app/views/admin/ilias_interface/index.php index d786a97..8bee478 100644 --- a/app/views/admin/ilias_interface/index.php +++ b/app/views/admin/ilias_interface/index.php @@ -33,7 +33,7 @@ <? foreach ($ilias_configs as $ilias_index => $ilias_config) : ?> <tr id="ilias-<?= htmlReady($ilias_index)?>"> <td> - <? if ($ilias_config['is_active']) { + <? if (!empty($ilias_config['is_active'])) { $text = _('Diese ILIAS-Installation ist aktiv. Klicken Sie hier, um sie zu deaktivieren.'); $img = 'checkbox-checked'; $cmd = 'deactivate'; diff --git a/app/views/admin/ilias_interface/soap_methods.php b/app/views/admin/ilias_interface/soap_methods.php index 1901074..aa84917 100644 --- a/app/views/admin/ilias_interface/soap_methods.php +++ b/app/views/admin/ilias_interface/soap_methods.php @@ -9,7 +9,7 @@ */ ?> <form class="default" action="<?= $controller->url_for('admin/ilias_interface/soap_methods/'.$ilias_index) ?>" method="post"> - <? if ($result) : ?> + <? if (!empty($result)) : ?> <article class="studip"> <section><?=_('Ergebnis')?></section> <? if (is_array($result)) : ?> @@ -22,7 +22,7 @@ </article> <? endif ?> <?= CSRFProtection::tokenTag() ?> - <? if (!$ilias_soap_method) : ?> + <? if (empty($ilias_soap_method)) : ?> <label> <span class="required"><?= _('SOAP-Methode') ?></span> <select name="ilias_soap_method"> @@ -36,12 +36,12 @@ <? foreach ($soap_methods[$ilias_soap_method] as $param) : ?> <label> <span> <?= $param ?></span> - <input type="text" name="ilias_soap_param_<?=$param?>" size="50" value="<?=$params[$param]?>"> + <input type="text" name="ilias_soap_param_<?=$param?>" size="50" value="<?=!empty($params[$param]) ? $params[$param] : ''?>"> </label> <? endforeach ?> <? endif ?> <footer> - <? if (!$ilias_soap_method) : ?> + <? if (empty($ilias_soap_method)) : ?> <?= Studip\Button::createAccept(_('Weiter'), 'submit') ?> <? else : ?> <?= Studip\Button::createAccept(_('Ausführen'), 'submit') ?> diff --git a/app/views/course/ilias_interface/add_groups.php b/app/views/course/ilias_interface/add_groups.php index 495aa5f..2a6bc2f 100644 --- a/app/views/course/ilias_interface/add_groups.php +++ b/app/views/course/ilias_interface/add_groups.php @@ -1,6 +1,6 @@ <form class="default" action="<?= $controller->url_for('course/ilias_interface/add_groups/'.$ilias_index) ?>" method="post"> <?= CSRFProtection::tokenTag() ?> - <? if (!$ilias_index) : ?> + <? if (empty($ilias_index)) : ?> <label> <span class="required"><?= _('ILIAS-Installation auswählen') ?></span> <select name="ilias_index" required> @@ -10,7 +10,6 @@ <? endforeach ?> </select> </label> - <? elseif ($mode == 'add_groups') : ?> <? else : ?> <div> <input type="hidden" name="cmd" value="create_groups"> @@ -24,8 +23,8 @@ </div> <? endif ?> <footer data-dialog-button> - <? if ($ilias->isActive() && $submit_text) : ?> - <?= Studip\Button::create($submit_text, 'submit', ($dialog && ! $ilias_index) ? ['data-dialog' => 'size=auto'] : []) ?> + <? if ($ilias->isActive() && !empty($submit_text)) : ?> + <?= Studip\Button::create($submit_text, 'submit', ($dialog && empty($ilias_index)) ? ['data-dialog' => 'size=auto'] : []) ?> <? endif ?> <?= Studip\Button::createCancel(_('Schließen'), 'cancel', $dialog ? ['data-dialog' => 'close'] : []) ?> </footer> diff --git a/app/views/course/ilias_interface/add_object.php b/app/views/course/ilias_interface/add_object.php index 8550337..ddb4fed 100644 --- a/app/views/course/ilias_interface/add_object.php +++ b/app/views/course/ilias_interface/add_object.php @@ -1,6 +1,6 @@ <form class="default" action="<?= $controller->url_for('course/ilias_interface/add_object/'.$mode.'/'.$ilias_index) ?>" method="post"> <?= CSRFProtection::tokenTag() ?> -<? if (!$ilias_index) : ?> +<? if (empty($ilias_index)) : ?> <label> <span class="required"><?= _('ILIAS-Installation auswählen') ?></span> <select name="ilias_index" required> @@ -41,7 +41,7 @@ <? elseif ($mode === 'assign_own_course') : ?> <div> <input type="hidden" name="cmd" value="assign_course"> - <? if ($submit_text) : ?> + <? if (!empty($submit_text)) : ?> <label> <span><?= _('ILIAS-Kurs wählen') ?></span> <select name="ilias_course_id" required> @@ -90,7 +90,7 @@ ]) ?> </td> <td> - <a href="<?= $controller->link_for($module->getRoute('view_course'), compact('ilias_search', 'mode')) ?>" <?= $dialog ? 'data-dialog=""' : ''?>> + <a href="<?= $controller->link_for($module->getRoute('view_course'), ['ilias_search' => !empty($ilias_search) ? $ilias_search : '', 'mode' => !empty($mode) ? $mode : '']) ?>" <?= !empty($dialog) ? 'data-dialog=""' : ''?>> <?= htmlReady($module->getTitle()) ?> </a> </td> @@ -102,7 +102,7 @@ Icon::create('info-circle'), [ 'title' => _('Info'), - 'formaction' => $controller->url_for($module->getRoute('view_course') .'?ilias_search='.urlencode($ilias_search)), + 'formaction' => $controller->url_for($module->getRoute('view_course') . (!empty($ilias_search) ? '?ilias_search='.urlencode($ilias_search) : '')), 'data-dialog' => '' ] )->condition($edit_permission)->addButton( @@ -122,8 +122,8 @@ </table> <? endif ?> <footer data-dialog-button> - <? if ($ilias && $ilias->isActive() && $submit_text) : ?> - <?= Studip\Button::create($submit_text, 'submit', ($dialog && $keep_dialog) ? ['data-dialog' => 'size=auto;reload-on-close'] : []) ?> + <? if (!empty($ilias) && $ilias->isActive() && !empty($submit_text)) : ?> + <?= Studip\Button::create($submit_text, 'submit', ($dialog && !empty($keep_dialog)) ? ['data-dialog' => 'size=auto;reload-on-close'] : []) ?> <? endif ?> <?= Studip\Button::createCancel(_('Schließen'), 'cancel', $dialog ? ['data-dialog' => 'close'] : []) ?> </footer> diff --git a/app/views/course/ilias_interface/index.php b/app/views/course/ilias_interface/index.php index 7d33f20..f713580 100644 --- a/app/views/course/ilias_interface/index.php +++ b/app/views/course/ilias_interface/index.php @@ -1,7 +1,7 @@ <form method="post"> -<? foreach($ilias_list as $ilias_index => $ilias) : ?> - <? if (!count($ilias->getCourseModules()) && !$courses[$ilias_index] && !$edit_permission) continue; ?> - <? if ($anker_target == $ilias_index) : ?> +<? foreach ($ilias_list as $ilias_index => $ilias) : ?> + <? if (!count($ilias->getCourseModules()) && empty($courses[$ilias_index]) && empty($edit_permission)) continue; ?> + <? if (!empty($anker_target) && ($anker_target === $ilias_index)) : ?> <a name='anker'></a> <? endif?> <table class="default"> @@ -80,7 +80,7 @@ </td> </tr> <? endforeach ?> - <? elseif (!$courses[$ilias_index]) : ?> + <? elseif (empty($courses[$ilias_index])) : ?> <tr> <td colspan="4"> <?= _('Es sind keine Lernobjekte mit dieser Veranstaltung verknüpft.')?> diff --git a/app/views/course/ilias_interface/view_object.php b/app/views/course/ilias_interface/view_object.php index 457e07e..d05669d 100644 --- a/app/views/course/ilias_interface/view_object.php +++ b/app/views/course/ilias_interface/view_object.php @@ -5,11 +5,11 @@ <input type="hidden" name="ilias_ref_id" value="<?=htmlReady($module_id)?>"> <?= $this->render_partial('my_ilias_accounts/_ilias_module.php') ?> <footer data-dialog-button> - <? if ($ilias->isActive() && $mode && $edit_permission) : ?> + <? if ($ilias->isActive() && !empty($mode) && $edit_permission) : ?> <?= Studip\LinkButton::create(_('Zurück'), $controller->url_for('course/ilias_interface/add_object/'.$mode.'/'.$ilias_index.'?ilias_search=' . $ilias_search), $dialog ? ['data-dialog' => 'size=auto'] : []) ?> <?= Studip\LinkButton::create(_('Hinzufügen'), $controller->url_for($module->getRoute('add') .'?ilias_search=' . $ilias_search), $dialog ? ['data-dialog' => ''] : []) ?> <? endif ?> - <? if ($ilias->isActive() && !$mode) : ?> + <? if ($ilias->isActive() && empty($mode)) : ?> <? if ($edit_permission && $module->isAllowed('delete')) : ?> <?= Studip\LinkButton::create(_('Entfernen'), $controller->url_for($module->getRoute('remove') . '?ilias_search=' . $ilias_search), ['data-confirm' => $module->siblings_count < 2 ? sprintf(_('Dies ist die einzige Instanz des Objekts "%s". Durch das Entfernen aus dem Kurs wird das Objekt unwiderruflich gelöscht! Wollen Sie das Objekt wirklich löschen?'), $module->getTitle()) : sprintf(_('Wollen Sie das Objekt "%s" jetzt entfernen?'), $module->getTitle())]) ?> <? endif ?> |
