aboutsummaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorArne Schröder, M. A <schroeder@data-quest.de>2025-03-26 11:26:46 +0000
committerThomas Hackl <hackl@data-quest.de>2025-03-28 13:14:15 +0100
commitbd6201de55e67c83f2185ec0495e375783e744db (patch)
treec4d03f3487319440b284c3be5a344e9bd14c60ae /app
parentd2b0799fe31c93cb0f21109d2a0e14fec578ca42 (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.php60
-rw-r--r--app/controllers/course/ilias_interface.php9
-rw-r--r--app/controllers/my_ilias_accounts.php3
-rw-r--r--app/views/admin/ilias_interface/edit_content.php20
-rw-r--r--app/views/admin/ilias_interface/index.php2
-rw-r--r--app/views/admin/ilias_interface/soap_methods.php8
-rw-r--r--app/views/course/ilias_interface/add_groups.php7
-rw-r--r--app/views/course/ilias_interface/add_object.php12
-rw-r--r--app/views/course/ilias_interface/index.php8
-rw-r--r--app/views/course/ilias_interface/view_object.php4
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 ?>