Skip to content
Snippets Groups Projects
Commit 6ed13d51 authored by Arne Schröder, M. A.'s avatar Arne Schröder, M. A. Committed by André Noack
Browse files

Resolve "Übergabe von Matrikelnummern und Studiengängen durch die ILIAS-Schnittstelle"

Closes #4271

Merge request studip/studip!3369
parent fb3184b6
No related branches found
No related tags found
No related merge requests found
...@@ -243,6 +243,15 @@ class Admin_IliasInterfaceController extends AuthenticatedController ...@@ -243,6 +243,15 @@ class Admin_IliasInterfaceController extends AuthenticatedController
{ {
$this->ilias_config = $this->ilias_configs[$index]; $this->ilias_config = $this->ilias_configs[$index];
$this->ilias_index = $index; $this->ilias_index = $index;
$this->ilias_datafields = [];
$connected_ilias = new ConnectedIlias($index);
if ($admin_id = $connected_ilias->soap_client->lookupUser($this->ilias_config['admin'])) {
$user = $connected_ilias->soap_client->getUser($admin_id);
if (array_key_exists('udfs', $user)) {
$this->ilias_datafields = $user['udfs'];
}
}
} }
/** /**
...@@ -315,6 +324,28 @@ class Admin_IliasInterfaceController extends AuthenticatedController ...@@ -315,6 +324,28 @@ class Admin_IliasInterfaceController extends AuthenticatedController
if (Request::getInstance()->offsetExists('ilias_matriculation')) { if (Request::getInstance()->offsetExists('ilias_matriculation')) {
$this->ilias_configs[$index]['matriculation'] = Request::get('ilias_matriculation'); $this->ilias_configs[$index]['matriculation'] = Request::get('ilias_matriculation');
} }
if (Request::getInstance()->offsetExists('ilias_discipline_1') && Request::getInstance()->offsetExists('ilias_discipline_2')) {
if ($admin_id = $connected_ilias->soap_client->lookupUser($this->ilias_configs[$index]['admin'])) {
$user = $connected_ilias->soap_client->getUser($admin_id);
if (array_key_exists('udfs', $user)) {
$this->ilias_datafields = $user['udfs'];
foreach ($this->ilias_datafields as $field) {
if (Request::option('ilias_discipline_1') == $field['id']) {
$this->ilias_configs[$index]['discipline_1'] = ['id' => $field['id'], 'name' => $field['name']];
}
if (Request::option('ilias_discipline_2') == $field['id']) {
$this->ilias_configs[$index]['discipline_2'] = ['id' => $field['id'], 'name' => $field['name']];
}
}
if (!Request::option('ilias_discipline_1')) {
unset($this->ilias_configs[$index]['discipline_1']);
}
if (!Request::option('ilias_discipline_2')) {
unset($this->ilias_configs[$index]['discipline_2']);
}
}
}
}
if (Request::getInstance()->offsetExists('ilias_cat_semester')) { if (Request::getInstance()->offsetExists('ilias_cat_semester')) {
$this->ilias_configs[$index]['cat_semester'] = Request::get('ilias_cat_semester'); $this->ilias_configs[$index]['cat_semester'] = Request::get('ilias_cat_semester');
} }
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
* @var string $ilias_index * @var string $ilias_index
* @var array $ilias_config * @var array $ilias_config
* @var array $modules_available * @var array $modules_available
* @var array $ilias_datafields
*/ */
?> ?>
<form class="default" action="<?= $controller->url_for('admin/ilias_interface/save/'.$ilias_index) ?>" method="post"> <form class="default" action="<?= $controller->url_for('admin/ilias_interface/save/'.$ilias_index) ?>" method="post">
...@@ -47,6 +48,26 @@ ...@@ -47,6 +48,26 @@
<span><?= _('Datenfeld (Name) mit Matrikelnummer (wenn leer, wird keine Matrikelnummer übergeben)') ?></span> <span><?= _('Datenfeld (Name) mit Matrikelnummer (wenn leer, wird keine Matrikelnummer übergeben)') ?></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="<?= htmlReady($ilias_config['matriculation']) ?>">
</label> </label>
<? if (count($ilias_datafields)) : ?>
<label>
<span><?= _('ILIAS-Datenfeld für Studiengang 1 (wenn leer, wird der Studiengang nicht übertragen)') ?></span>
<select name="ilias_discipline_1">
<option></option>
<? foreach ($ilias_datafields as $field) : ?>
<option value="<?=$field['id']?>" <?=$ilias_config['discipline_1']['id'] == $field['id'] ? 'selected' : ''?>><?=htmlReady($field['name'])?></option>
<? endforeach ?>
</select>
</label>
<label>
<span><?= _('ILIAS-Datenfeld für Studiengang 2 (wenn leer, wird der Studiengang nicht übertragen)') ?></span>
<select name="ilias_discipline_2">
<option></option>
<? foreach ($ilias_datafields as $field) : ?>
<option value="<?=$field['id']?>" <?=$ilias_config['discipline_2']['id'] == $field['id'] ? 'selected' : ''?>><?=htmlReady($field['name'])?></option>
<? endforeach ?>
</select>
</label>
<? endif ?>
<label> <label>
<span class="required"><?= _('Struktur für angelegte Kurse') ?></span> <span class="required"><?= _('Struktur für angelegte Kurse') ?></span>
</label> </label>
...@@ -82,11 +103,11 @@ ...@@ -82,11 +103,11 @@
<span><?= _('Veranstaltungsname (Semester)') ?></span> <span><?= _('Veranstaltungsname (Semester)') ?></span>
</label> </label>
<label> <label>
<input type="checkbox" name="ilias_course_veranstaltungsnummer" value="1" <?= $ilias_config['course_veranstaltungsnummer'] ? 'checked' : '' ?>> <input type="checkbox" name="ilias_course_veranstaltungsnummer" value="1" <?= !empty($ilias_config['course_veranstaltungsnummer']) ? 'checked' : '' ?>>
<span><?= _('Stud.IP-Veranstaltungsnummer im ILIAS-Kurstitel anzeigen') ?></span> <span><?= _('Stud.IP-Veranstaltungsnummer im ILIAS-Kurstitel anzeigen') ?></span>
</label> </label>
<label> <label>
<input type="checkbox" name="ilias_delete_ilias_courses" value="1" <?= $ilias_config['delete_ilias_courses'] ? 'checked' : '' ?>> <input type="checkbox" name="ilias_delete_ilias_courses" value="1" <?= !empty($ilias_config['delete_ilias_courses'] )? 'checked' : '' ?>>
<span><?= _('Beim Löschen von Stud.IP-Veranstaltungen ILIAS-Kurse ebenfalls löschen (alle untergeordneten Objekte werden gelöscht!)') ?></span> <span><?= _('Beim Löschen von Stud.IP-Veranstaltungen ILIAS-Kurse ebenfalls löschen (alle untergeordneten Objekte werden gelöscht!)') ?></span>
</label> </label>
<label> <label>
......
...@@ -934,6 +934,11 @@ class IliasSoap extends StudipSoapClient ...@@ -934,6 +934,11 @@ class IliasSoap extends StudipSoapClient
$user_array['email'] = (string)$user->Email; $user_array['email'] = (string)$user->Email;
$user_array['active'] = (string)$user->Active; $user_array['active'] = (string)$user->Active;
$user_array['authmode'] = (string)$user->AuthMode->attributes()->type; $user_array['authmode'] = (string)$user->AuthMode->attributes()->type;
if (isset($user->UserDefinedField)) {
foreach ($user->UserDefinedField as $field) {
$user_array['udfs'][] = ['id' => (string)$field->attributes()->Id, 'name' => (string)$field->attributes()->Name];
}
}
return $user_array; return $user_array;
} }
} }
...@@ -1021,7 +1026,9 @@ class IliasSoap extends StudipSoapClient ...@@ -1021,7 +1026,9 @@ class IliasSoap extends StudipSoapClient
{ {
$this->clearCache(); $this->clearCache();
foreach($user_data as $key => $value) { foreach($user_data as $key => $value) {
$user_data[$key] = htmlReady($user_data[$key]); if (!is_array($value)) {
$user_data[$key] = htmlReady($user_data[$key]);
}
} }
$update = $user_data["id"]; $update = $user_data["id"];
...@@ -1050,8 +1057,13 @@ class IliasSoap extends StudipSoapClient ...@@ -1050,8 +1057,13 @@ class IliasSoap extends StudipSoapClient
$usr_xml .= "<Look Skin=\"".$user_data["user_skin"]."\" Style=\"".$user_data["user_style"]."\"/>"; $usr_xml .= "<Look Skin=\"".$user_data["user_skin"]."\" Style=\"".$user_data["user_style"]."\"/>";
} }
$usr_xml .= "<AuthMode type=\"".$user_data["auth_mode"]."\"/> $usr_xml .= "<AuthMode type=\"".$user_data["auth_mode"]."\"/>
<ExternalAccount>".$user_data["external_account"]."</ExternalAccount> <ExternalAccount>".$user_data["external_account"]."</ExternalAccount>";
</User> if (array_key_exists('UDF', $user_data) && is_array($user_data['UDF'])) {
foreach ($user_data['UDF'] as $udf_id => $udf_content) {
$usr_xml .= "<UserDefinedField Id=\"{$udf_id}\" Name=\"".$udf_content['name']."\">".htmlReady($udf_content['value'])."</UserDefinedField>";
}
}
$usr_xml .= "</User>
</Users>"; </Users>";
$param = [ $param = [
......
...@@ -41,6 +41,7 @@ class IliasUser ...@@ -41,6 +41,7 @@ class IliasUser
public $phone_home; public $phone_home;
public $fax; public $fax;
public $matriculation; public $matriculation;
public $disciplines;
public $email; public $email;
public $type; public $type;
public $is_connected; public $is_connected;
...@@ -156,6 +157,20 @@ class IliasUser ...@@ -156,6 +157,20 @@ class IliasUser
if ($this->title_rear != '') { if ($this->title_rear != '') {
$this->title .= $this->title_rear; $this->title .= $this->title_rear;
} }
$disciplines = UserStudyCourse::findByUser($this->studip_id);
if (is_array($disciplines) && count($disciplines)) {
if ((array_key_exists('discipline_1', $this->ilias_config) && $this->ilias_config['discipline_1']) || (array_key_exists('discipline_2', $this->ilias_config) && $this->ilias_config['discipline_2'])) {
$discipline = reset($disciplines);
if ($discipline) {
$this->disciplines[] = $discipline->studycourse_name . ' ' . $discipline->degree_name;
}
$discipline = next($disciplines);
if ($discipline) {
$this->disciplines[] = $discipline->studycourse_name . ' ' . $discipline->degree_name;
}
}
}
return true; return true;
} }
...@@ -187,6 +202,15 @@ class IliasUser ...@@ -187,6 +202,15 @@ class IliasUser
$user_data['agree_date'] = date('Y-m-d H:i:s'); $user_data['agree_date'] = date('Y-m-d H:i:s');
$user_data['auth_mode'] = 'default'; $user_data['auth_mode'] = 'default';
$user_data['external_account'] = ''; $user_data['external_account'] = '';
$user_data['UDF'] = [];
if (is_array($this->disciplines)) {
if (is_array($this->ilias_config) && array_key_exists('discipline_1', $this->ilias_config) && array_key_exists(0, $this->disciplines)) {
$user_data['UDF'][$this->ilias_config['discipline_1']['id']] = ['name' => $this->ilias_config['discipline_1']['name'], 'value' => $this->disciplines[0]];
}
if (is_array($this->ilias_config) && array_key_exists('discipline_2', $this->ilias_config) && array_key_exists(1, $this->disciplines)) {
$user_data['UDF'][$this->ilias_config['discipline_2']['id']] = ['name' => $this->ilias_config['discipline_2']['name'], 'value' => $this->disciplines[1]];
}
}
return $user_data; return $user_data;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment