From bce4fd828ec7ca81f872e58b0afa05ca0ae36ea7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arne=20Schr=C3=B6der=2C=20M=2E=20A=2E?= Date: Tue, 23 Sep 2025 11:09:47 +0000 Subject: =?UTF-8?q?Resolve=20"ILIAS-Schnittstelle:=20Pr=C3=BCfung=20nach?= =?UTF-8?q?=20bestehender=20Einrichtung=20schl=C3=A4gt=20fehl"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #5882 Merge request studip/studip!4485 --- lib/ilias_interface/ConnectedIlias.php | 47 +++++++++++++++------------------- 1 file changed, 20 insertions(+), 27 deletions(-) diff --git a/lib/ilias_interface/ConnectedIlias.php b/lib/ilias_interface/ConnectedIlias.php index 78538e5..e6c4f27 100644 --- a/lib/ilias_interface/ConnectedIlias.php +++ b/lib/ilias_interface/ConnectedIlias.php @@ -1319,7 +1319,7 @@ class ConnectedIlias if ( !empty($this->ilias_config['cat_faculty']) && empty($faculty_ref_id) - && $course->home_institut->id !== $course->home_institut->fakultaets_id + && !$course->home_institut->isFaculty() ) { $object_data['title'] = $course->home_institut->faculty->name; $object_data['description'] = sprintf(_('Hier befinden sich die Einrichtungen der Stud.IP-Fakultät "%s".'), $course->home_institut->faculty->name); @@ -1332,16 +1332,12 @@ class ConnectedIlias $parent_type = 'faculty'; $parent_id = $course->home_institut->fakultaets_id; $ref_id = $faculty_ref_id; - $institute_ref_id = IliasObjectConnections::getExactConnectionModuleId($course->home_institut->id, $parent_id, 'cat', $this->index) - ?: IliasObjectConnections::getExactConnectionModuleId($course->home_institut->id, '', 'cat', $this->index); } else { $this->error[] = sprintf(_('ILIAS-Kategorie %s konnte nicht angelegt werden.'), $object_data["title"]); } } - $institute_ref_id = IliasObjectConnections::getExactConnectionModuleId($course->home_institut->id, $parent_id, 'cat', $this->index); - if (!$institute_ref_id) { - $institute_ref_id = IliasObjectConnections::getExactConnectionModuleId($course->home_institut->id, '', 'cat', $this->index); - } + $institute_ref_id = IliasObjectConnections::getExactConnectionModuleId($course->home_institut->id, $parent_id, 'cat', $this->index) + ?: IliasObjectConnections::getExactConnectionModuleId($course->home_institut->id, '', 'cat', $this->index); if (!$institute_ref_id) { $object_data['title'] = $course->home_institut->name; $object_data['description'] = sprintf(_('Hier befinden sich die Veranstaltungsdaten zur Stud.IP-Einrichtung "%s".'), $course->home_institut->name); @@ -1371,28 +1367,25 @@ class ConnectedIlias $parent_id = $course->home_institut->fakultaets_id; $ref_id = $faculty_ref_id; } - } else { - $institute_ref_id = IliasObjectConnections::getExactConnectionModuleId($course->home_institut->id, 'root_category', 'cat', $this->index) - ?: IliasObjectConnections::getExactConnectionModuleId($course->home_institut->id, '', 'cat', $this->index); - } - if (!empty($this->ilias_config['cat_faculty']) && empty($faculty_ref_id) && ($course->home_institut->id != $course->home_institut->fakultaets_id)) { - $object_data['title'] = $course->home_institut->faculty->name; - $object_data['description'] = sprintf(_('Hier befinden sich die Einrichtungen der Stud.IP-Fakultät "%s".'), $course->home_institut->faculty->name); - $object_data['type'] = 'cat'; - $object_data['owner'] = $this->soap_client->LookupUser($this->ilias_config['admin']); - $faculty_ref_id = $this->soap_client->addObject($object_data, $ref_id); - if ($faculty_ref_id) { - // store faculty category - IliasObjectConnections::setConnection($course->home_institut->fakultaets_id, $faculty_ref_id, 'cat', $this->index, 'faculty', $parent_id, $parent_type); - $parent_type = 'faculty'; - $parent_id = $course->home_institut->fakultaets_id; - $ref_id = $faculty_ref_id; - $institute_ref_id = IliasObjectConnections::getExactConnectionModuleId($course->home_institut->id, $parent_id, 'cat', $this->index) - ?: IliasObjectConnections::getExactConnectionModuleId($course->home_institut->id, '', 'cat', $this->index); - } else { - $this->error[] = sprintf(_('ILIAS-Kategorie %s konnte nicht angelegt werden.'), $object_data["title"]); + if (empty($faculty_ref_id) && !$course->home_institut->isFaculty()) { + $object_data['title'] = $course->home_institut->faculty->name; + $object_data['description'] = sprintf(_('Hier befinden sich die Einrichtungen der Stud.IP-Fakultät "%s".'), $course->home_institut->faculty->name); + $object_data['type'] = 'cat'; + $object_data['owner'] = $this->soap_client->LookupUser($this->ilias_config['admin']); + $faculty_ref_id = $this->soap_client->addObject($object_data, $ref_id); + if ($faculty_ref_id) { + // store faculty category + IliasObjectConnections::setConnection($course->home_institut->fakultaets_id, $faculty_ref_id, 'cat', $this->index, 'faculty', $parent_id, $parent_type); + $parent_type = 'faculty'; + $parent_id = $course->home_institut->fakultaets_id; + $ref_id = $faculty_ref_id; + } else { + $this->error[] = sprintf(_('ILIAS-Kategorie %s konnte nicht angelegt werden.'), $object_data["title"]); + } } } + $institute_ref_id = IliasObjectConnections::getExactConnectionModuleId($course->home_institut->id, $parent_id, 'cat', $this->index) + ?: IliasObjectConnections::getExactConnectionModuleId($course->home_institut->id, '', 'cat', $this->index); if (!$institute_ref_id) { $object_data['title'] = $course->home_institut->name; $object_data['description'] = sprintf(_('Hier befinden sich die Veranstaltungsdaten zur Stud.IP-Einrichtung "%s".'), $course->home_institut->name); -- cgit v1.0