aboutsummaryrefslogtreecommitdiff
path: root/lib/elearning/Ilias5Soap.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/elearning/Ilias5Soap.php')
-rw-r--r--lib/elearning/Ilias5Soap.php114
1 files changed, 114 insertions, 0 deletions
diff --git a/lib/elearning/Ilias5Soap.php b/lib/elearning/Ilias5Soap.php
new file mode 100644
index 0000000..cf8bd4c
--- /dev/null
+++ b/lib/elearning/Ilias5Soap.php
@@ -0,0 +1,114 @@
+<?php
+/**
+ * class to use ILIAS-5-Webservices
+ *
+ * This class contains methods to connect to the ILIAS-5-Soap-Server.
+ *
+ * @author Arne Schröder <schroeder@data-quest.de>
+ * @access public
+ * @modulegroup elearning_interface_modules
+ * @module Ilias5Soap
+ * @package ELearning-Interface
+ */
+class Ilias5Soap extends Ilias4Soap
+{
+ var $cms_type;
+ var $admin_sid;
+ var $user_sid;
+ var $user_type;
+ var $soap_cache;
+ var $separator_string;
+
+ /**
+ * call soap-function
+ *
+ * calls soap-function with given parameters
+ * @access public
+ * @param string method method-name
+ * @param string params parameters
+ * @return mixed result
+ */
+ function call($method, $params)
+ {
+ $index = md5($method . ":" . implode('-', $params));
+ // return false if no session_id is given
+ if (($method != "login") AND ($params["sid"] == ""))
+ return false;
+// echo $this->caching_active;
+ if (($this->caching_active == true) AND (isset($this->soap_cache[$index])))
+ {
+// echo $index;
+// echo " from Cache<br>";
+ $result = $this->soap_cache[$index];
+ }
+ else
+ {
+ $result = $this->_call($method, $params);
+ // if Session is expired, re-login and try again
+ if (($method != "login") AND $this->soap_client->fault AND in_array(mb_strtolower($this->faultstring), ["session not valid","session invalid", "session idled"]) )
+ {
+ $caching_status = $this->caching_active;
+ $this->caching_active = false;
+ $user_type = $this->user_type;
+ $this->user_type = 'admin';
+ $params["sid"] = $this->login();
+ $result = $this->_call($method, $params);
+ $this->caching_active = $caching_status;
+ $this->user_type = $user_type;
+ }
+ elseif (! $this->soap_client->fault)
+ $this->soap_cache[$index] = $result;
+ }
+ return $result;
+ }
+
+ /**
+ * login
+ *
+ * login to soap-webservice
+ * @access public
+ * @return string result
+ */
+ function login()
+ {
+ global $ELEARNING_INTERFACE_MODULES, $connected_cms;
+ if ($this->user_type == "admin") {
+ $param = [
+ 'client' => $ELEARNING_INTERFACE_MODULES[$this->cms_type]["soap_data"]["client"],
+ 'username' => $ELEARNING_INTERFACE_MODULES[$this->cms_type]["soap_data"]["username"],
+ 'password' => $ELEARNING_INTERFACE_MODULES[$this->cms_type]["soap_data"]["password"]
+ ];
+ $result = $this->call('login', $param);
+ } elseif ($this->user_type == "user") {
+ $param = [
+ 'sid' => $this->admin_sid,
+ 'user_id' => $connected_cms[$this->cms_type]->user->getId()
+ ];
+ $result = $this->call('loginStudipUser', $param);
+ }
+ if ($this->user_type == "admin")
+ $this->admin_sid = $result;
+ if ($this->user_type == "user")
+ $this->user_sid = $result;
+ return $result;
+ }
+
+ /**
+ * Check Auth
+ *
+ * login to soap-webservice
+ * @access public
+ * @return string result
+ */
+ function checkPassword($username, $password)
+ {
+ global $ELEARNING_INTERFACE_MODULES, $connected_cms;
+ $param = [
+ 'client' => $ELEARNING_INTERFACE_MODULES[$this->cms_type]["soap_data"]["client"],
+ 'username' => $username,
+ 'password' => $password
+ ];
+ $result = $this->call('login', $param);
+ return $result;
+ }
+}