From 7e476d97fbeec17c87f1a3445de3842d9e5f0872 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Noack?= <noack@data-quest.de>
Date: Wed, 20 Dec 2023 14:40:44 +0000
Subject: [PATCH] =?UTF-8?q?Resolve=20#3595=20"ILIAS-Schnittstelle:=20Anleg?=
 =?UTF-8?q?en=20von=20neuen=20Nutzern=20schl=C3=A4gt=20fehl=20mit=20Ilias?=
 =?UTF-8?q?=208"?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Closes #3595

Merge request studip/studip!2486
---
 lib/ilias_interface/ConnectedIlias.class.php | 23 ++++++++++----------
 lib/ilias_interface/IliasSoap.class.php      |  4 ++--
 2 files changed, 14 insertions(+), 13 deletions(-)

diff --git a/lib/ilias_interface/ConnectedIlias.class.php b/lib/ilias_interface/ConnectedIlias.class.php
index 4303c2e5a43..dff41c892f3 100644
--- a/lib/ilias_interface/ConnectedIlias.class.php
+++ b/lib/ilias_interface/ConnectedIlias.class.php
@@ -359,7 +359,6 @@ class ConnectedIlias
         } else {
             $role_id = 4;
         }
-
         $this->soap_client->setCachingStatus(false);
         $this->soap_client->clearCache();
         $user_id = $this->soap_client->addUser($user_data, $role_id);
@@ -1046,17 +1045,19 @@ class ConnectedIlias
      */
     public function checkUser()
     {
-        $user_exists = $this->soap_client->getUser($this->user->getId());
-        if (!is_array($user_exists)) {
-            $admin_user_id = $this->soap_client->lookupUser($this->ilias_config['admin']);
-            $admin_user_exists = $this->soap_client->getUser($admin_user_id);
-            if (is_array($admin_user_exists)) {
-                $this->user->unsetConnection(true);
-                if ($this->newUser()) {
-                    PageLayout::postSuccess(_("Neue Verknüpfung zu ILIAS-User angelegt."));
+        if ($this->user->getId()) {
+            $user_exists = $this->soap_client->getUser($this->user->getId());
+            if (!is_array($user_exists)) {
+                $admin_user_id = $this->soap_client->lookupUser($this->ilias_config['admin']);
+                $admin_user_exists = $this->soap_client->getUser($admin_user_id);
+                if (is_array($admin_user_exists)) {
+                    $this->user->unsetConnection(true);
+                    if ($this->newUser()) {
+                        PageLayout::postSuccess(_("Neue Verknüpfung zu ILIAS-User angelegt."));
+                    }
                 }
-            }
-        } else return true;
+            } else return true;
+        }
         return false;
     }
 
diff --git a/lib/ilias_interface/IliasSoap.class.php b/lib/ilias_interface/IliasSoap.class.php
index 32aadd6dd38..d5647f4d73e 100644
--- a/lib/ilias_interface/IliasSoap.class.php
+++ b/lib/ilias_interface/IliasSoap.class.php
@@ -1030,7 +1030,7 @@ class IliasSoap extends StudipSoapClient
         $update = $user_data["id"];
 
         $usr_xml = "<Users>
-<User".($update ? ' Id="'.$user_data["id"].'"' : '')." Action=".($update ? '"Update"' : '"Insert"').">
+<User ".($update ? 'Id="'.$user_data["id"].'"' : 'Id=""')." Action=".($update ? '"Update"' : '"Insert"').">
 <UDFDefinitions></UDFDefinitions>
 <Login>".$user_data["login"]."</Login>
 <Password Type=\"PLAIN\">".$user_data["passwd"]."</Password>
@@ -1062,7 +1062,7 @@ class IliasSoap extends StudipSoapClient
                         'sid' => $this->getSID(),
                         'folder_id' => -1,
                         'usr_xml' => $usr_xml,
-                        'conflict_role' => 1,
+                        'conflict_rule' => 1,
                         'send_account_mail' => 0
         ];
         $result = $this->call('importUsers', $param);
-- 
GitLab