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

Resolve "ILIAS-Schnittstelle: verwendete SOAP-Methoden getUser und deleteUser...

Resolve "ILIAS-Schnittstelle: verwendete SOAP-Methoden getUser und deleteUser existieren in ILIAS 8 nicht mehr"

Closes #3279

Merge request studip/studip!2213
parent ccbcc9c6
No related branches found
No related tags found
No related merge requests found
......@@ -9,14 +9,14 @@
*
*/
/* ILIAS Version 4.4.x */
/* ILIAS Version 7.x */
if(file_exists("./ilias.ini.php")){
require_once("./Services/Init/classes/class.ilIniFile.php");
$ilIliasIniFile = new ilIniFile("./ilias.ini.php");
$ilIliasIniFile->read();
$serverSettings = $ilIliasIniFile->readGroup("server");
if ($serverSettings["studip"] != 1)
if (isset($serverSettings["studip"]) && $serverSettings["studip"] != 1)
{
echo 'Option "studip" in ilias.ini.php is not enabled. You need to add studip = "1" to the server section.';
exit();
......@@ -40,7 +40,7 @@ if(file_exists("./ilias.ini.php")){
require_once "./include/inc.header.php";
$base_url= "ilias.php?baseClass=ilPersonalDesktopGUI";
$base_url= "ilias.php?baseClass=ilDashboardGUI";
// redirect to specified page
......@@ -121,4 +121,4 @@ if(file_exists("./ilias.ini.php")){
exit();
}
}
?>
\ No newline at end of file
<?php
/* Copyright (c) 1998-2014 ILIAS open source, Extended GPL, see docs/LICENSE */
/**
* redirect script for studip-users
*
* @author Arne Schroeder <schroeder@data-quest.de>
* @author Andre Noack <noack@data-quest.de>
*
*/
/* ILIAS Version 8.x */
if(file_exists("./ilias.ini.php")){
require_once("./Services/Init/classes/class.ilIniFile.php");
$ilIliasIniFile = new ilIniFile("./ilias.ini.php");
$ilIliasIniFile->read();
$serverSettings = $ilIliasIniFile->readGroup("server");
if (isset($serverSettings["studip"]) && $serverSettings["studip"] != 1)
{
echo 'Option "studip" in ilias.ini.php is not enabled. You need to add studip = "1" to the server section.';
exit();
}
$cookie_path = dirname($_SERVER['PHP_SELF']);
if (substr($cookie_path,-1) != "/") {
$cookie_path .= "/";
}
if (isset($_GET['sess_id']))
{
setcookie('PHPSESSID',$_GET['sess_id'],0, $cookie_path);
$_COOKIE['PHPSESSID'] = $_GET['sess_id'];
}
if (isset($_GET['client_id']))
{
setcookie('ilClientId',$_GET['client_id'],0, $cookie_path);
$_COOKIE['ilClientId'] = $_GET['client_id'];
}
require_once "./include/inc.header.php";
$base_url= "ilias.php?baseClass=ilDashboardGUI";
// redirect to specified page
$redirect = false;
switch($_GET['target'])
{
case 'start':
switch($_GET['type'])
{
case 'lm':
$base_url= "ilias.php?baseClass=ilLMPresentationGUI";
break;
case 'tst':
$base_url= "ilias.php?cmd=infoScreen&cmdClass=ilobjtestgui&baseClass=ilRepositoryGUI";
break;
case 'svy':
$base_url= "ilias.php?cmd=infoScreen&cmdClass=ilObjSurveyGUI&baseClass=ilRepositoryGUI";
break;
case 'exc':
$base_url= "ilias.php?cmd=infoScreen&cmdClass=ilExerciseHandlerGUI&baseClass=ilRepositoryGUI";
break;
case 'sahs':
$base_url = "ilias.php?baseClass=ilSAHSPresentationGUI";
break;
case 'htlm':
$base_url = "ilias.php?baseClass=ilHTLMPresentationGUI";
break;
case 'glo':
$base_url = "ilias.php?baseClass=ilGlossaryPresentationGUI";
break;
case 'cat':
case 'crs':
$base_url= "ilias.php?cmd=render&cmdClass=ilrepositorygui&baseClass=ilRepositoryGUI";
break;
case 'webr':
$base_url= "ilias.php?cmd=calldirectlink&baseClass=ilLinkResourceHandlerGUI";
break;
}
break;
case 'new':
$base_url = "ilias.php?baseClass=ilRepositoryGUI&cmd=create&new_type=".preg_replace('/[^a-z]/', '', $_GET['type']);
break;
case 'edit':
switch($_GET['type'])
{
case 'lm':
$base_url = "ilias.php?baseClass=ilLMEditorGUI";
break;
case 'tst':
$base_url = "ilias.php?baseClass=ilObjTestGUI";
break;
case 'sahs':
$base_url = "ilias.php?baseClass=ilSAHSEditGUI";
break;
case 'htlm':
$base_url = "ilias.php?baseClass=ilHTLMEditorGUI";
break;
case 'glo':
$base_url = "ilias.php?baseClass=ilGlossaryEditorGUI";
break;
case 'svy':
$base_url = "ilias.php?baseClass=ilObjSurveyGUI";
break;
case 'exc':
$base_url = "ilias.php?baseClass=ilExerciseHandlerGUI";
break;
case 'webr':
$base_url = "ilias.php?baseClass=ilLinkResourceHandlerGUI";
break;
}
break;
}
if ($base_url)
{
$base_url .= "&ref_id=".(int)$_GET['ref_id'];
$token_repository = new ilCtrlTokenRepository();
$token = $token_repository->getToken();
$base_url .= '&' . ilCtrlInterface::PARAM_CSRF_TOKEN . '=' . $token->getToken();
header("Location: " . $base_url);
exit();
}
}
......@@ -217,13 +217,13 @@ class ConnectedIlias
public function getConnectionSettingsStatus()
{
// check ILIAS version
if (($this->ilias_int_version < 30000) || ($this->ilias_int_version > 80000)) {
if (($this->ilias_int_version < 30000)) {
$this->error[] = _('Die ILIAS-Version ist ungültig.');
return false;
}
// check if url exists
$check = @get_headers($this->ilias_config['url'] . 'login.php');
$check = @get_headers($this->ilias_config['url'] . 'webservice/soap/server.php');
if (strpos($check[0], '200') === false) {
$this->error[] = sprintf(_('Die URL "%s" ist nicht erreichbar.'), $this->ilias_config['url']);
return false;
......
......@@ -372,10 +372,10 @@ class IliasSoap extends StudipSoapClient
'sid' => $this->getSID(),
'types' => $types,
'key' => $key,
'combination' => $combination
'combination' => $combination,
'user_id' => (int)$user_id
];
if ($user_id != "")
$param["user_id"] = $user_id;
$result = $this->call('searchObjects', $param);
if ($result)
{
......@@ -398,10 +398,10 @@ class IliasSoap extends StudipSoapClient
{
$param = [
'sid' => $this->getSID(),
'reference_id' => $ref
'reference_id' => $ref,
'user_id' => (int)$user_id
];
if ($user_id != "")
$param["user_id"] = $user_id;
$result = $this->call('getObjectByReference', $param);
if ($result != false)
{
......@@ -425,7 +425,8 @@ class IliasSoap extends StudipSoapClient
{
$param = [
'sid' => $this->getSID(),
'title' => $key
'title' => $key,
'user_id' => 0
];
$result = $this->call('getObjectsByTitle', $param);
if ($result != false)
......@@ -459,9 +460,11 @@ class IliasSoap extends StudipSoapClient
{
$param = [
'sid' => $this->getSID(),
'title' => $key
'title' => $key,
'user_id' => 0
];
$result = $this->call('getObjectsByTitle', $param);
if ($result != false)
{
$objects = $this->parseIliasObject($result);
......@@ -501,7 +504,7 @@ class IliasSoap extends StudipSoapClient
$xml = "<!DOCTYPE Objects SYSTEM \"http://www.ilias.uni-koeln.de/download/dtd/ilias_object_0_1.dtd\">
<Objects>
<Object type=\"$type\">
<Object type=\"$type\" obj_id=\"\" >
<Title>
$title
</Title>
......@@ -594,11 +597,10 @@ class IliasSoap extends StudipSoapClient
$param = [
'sid' => $this->getSID(),
'ref_id' => $ref_id,
'types' => $types
'types' => $types,
'user_id' => (int)$user_id
];
if ($user_id != "") {
$param["user_id"] = $user_id;
}
$result = $this->call('getTreeChilds', $param);
$tree_childs = [];
if ($result != false) {
......@@ -897,17 +899,47 @@ class IliasSoap extends StudipSoapClient
*
* gets user-data for given user-id
* @access public
* @param string user_id user-id
* @param string $user_id user-id
* @return array user-data
*/
function getUser($user_id)
{
$param = [
'sid' => $this->getSID(),
'user_id' => $user_id,
if ($this->ilias_version < 80000) {
$param = [
'sid' => $this->getSID(),
'user_id' => $user_id
];
$result = $this->call('getUser', $param); // returns user data array
return $result;
$result = $this->call('getUser', $param); // returns user data array
return $result;
} else {
$param = [
'sid' => $this->getSID(),
'user_ids' => [$user_id],
'attach_roles' => 0,
];
$result = $this->call('getUserXML', $param); // returns user xml data
if ($result) {
$s = simplexml_load_string($result);
$user_array = [];
foreach ($s->User as $user) {
$id_parts = explode('usr_', $user->attributes()->Id);
if ($id_parts[1] == $user_id) {
$user_array['usr_id'] = $user_id;
$user_array['user_language'] = (string)$user->attributes()->Language;
$user_array['login'] = (string)$user->Login;
$user_array['firstname'] = (string)$user->Firstname;
$user_array['lastname'] = (string)$user->Lastname;
$user_array['title'] = (string)$user->Title;
$user_array['email'] = (string)$user->Email;
$user_array['active'] = (string)$user->Active;
$user_array['authmode'] = (string)$user->AuthMode->attributes()->type;
return $user_array;
}
}
}
return false;
}
}
/**
......@@ -1227,17 +1259,45 @@ class IliasSoap extends StudipSoapClient
*
* deletes user-account
* @access public
* @param string user_id user-id
* @param string $user_id user-id
* @return string result
*/
function deleteUser($user_id)
{
$this->clearCache();
$param = [
'sid' => $this->getSID(),
'user_id' => $user_id
if ($this->ilias_version < 80000) {
$param = [
'sid' => $this->getSID(),
'user_id' => $user_id
];
return $this->call('deleteUser', $param); // returns boolean
} else {
$user_data = $this->getUser($user_id);
if (!$user_data['login']) {
return false;
}
$usr_xml = '<Users>
<User Id="il_0_usr_' . $user_id . '" Action="Delete">
<UDFDefinitions></UDFDefinitions><Login>' . $user_data['login'] . '</Login>
</User>
</Users>';
$param = [
'sid' => $this->getSID(),
'folder_id' => -1,
'usr_xml' => $usr_xml,
'conflict_rule' => 1,
'send_account_mail' => 0
];
return $this->call('deleteUser', $param); // returns boolean
$result = $this->call('importUsers', $param);
$s = simplexml_load_string($result);
if ((string)$s->rows->row->column[3] == "successful") {
return (string)$s->rows->row->column[0];
}
return false;
}
}
////////////////////////////
......@@ -1453,7 +1513,7 @@ class IliasSoap extends StudipSoapClient
<Course>
<MetaData>
<General Structure=\"Hierarchical\">
<Identifier Catalog=\"ILIAS\"/>
<Identifier Catalog=\"ILIAS\" Entry=\"\"/>
<Title Language=\"$crs_language\">
$crs_title
</Title>
......
......@@ -19,7 +19,7 @@ class StudipSoapClient
try {
$this->soap_client = new SoapClient($path, ['trace' => 0]);
} catch (SoapFault $fault) {
$this->error = "<b>Soap Constructor Error</b><br>" . $fault->faultcode . ": ".$fault->faultstring."<br><br>";
$this->error = "Soap Constructor Error " . $fault->faultcode . ": ".$fault->faultstring;
}
}
......@@ -33,7 +33,8 @@ class StudipSoapClient
} catch (SoapFault $fault) {
$this->faultstring = $fault->faultstring;
if (!in_array(mb_strtolower($this->faultstring), ["session not valid","session invalid", "session idled"])) {
$this->error .= "<hr><font size=\"-1\"><b>" . sprintf(_("SOAP-Fehler, Funktion \"%s\":"), $method) . "</b> " . $fault->faultstring . " (" . $fault->faultcode . ")<br>".print_r($params,1).'</font><hr>';
unset($params['password']);
$this->error .= sprintf(_("SOAP-Fehler, Funktion \"%s\":"), $method) . " " . $fault->faultstring . " (" . $fault->faultcode . ")".print_r($params,1);
error_log($this->error);
}
$this->soap_client->fault = true;
......@@ -60,4 +61,3 @@ class StudipSoapClient
return false;
}
}
?>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment