aboutsummaryrefslogtreecommitdiff
path: root/lib/elearning/ConnectedUser.php
diff options
context:
space:
mode:
authorPhilipp Schüttlöffel <schuettloeffel@zqs.uni-hannover.de>2024-09-24 10:53:31 +0200
committerPhilipp Schüttlöffel <schuettloeffel@zqs.uni-hannover.de>2024-09-24 10:53:31 +0200
commit4459dd7917f4d1c34f40bb68f0e991e9c3d53e4c (patch)
tree5c07151ae61276d334e88f6309c30d439a85c12e /lib/elearning/ConnectedUser.php
parentda0022e5c1abbf9825ae76debaabdff7e8623bb4 (diff)
parent97a188592c679890a25c37ab78463add76a52ff7 (diff)
Merge branch 'main' into issue-3911issue-3911
Diffstat (limited to 'lib/elearning/ConnectedUser.php')
-rw-r--r--lib/elearning/ConnectedUser.php512
1 files changed, 512 insertions, 0 deletions
diff --git a/lib/elearning/ConnectedUser.php b/lib/elearning/ConnectedUser.php
new file mode 100644
index 0000000..3c74a14
--- /dev/null
+++ b/lib/elearning/ConnectedUser.php
@@ -0,0 +1,512 @@
+<?php
+# Lifter002: TODO
+# Lifter007: TODO
+# Lifter003: TODO
+# Lifter010: TODO
+
+DEFINE ("USER_TYPE_ORIGINAL" , "1");
+DEFINE ("USER_TYPE_CREATED", "0");
+
+/**
+* class to handle user-accounts
+*
+* This class contains methods to handle connected user-accounts.
+*
+* @author Arne Schröder <schroeder@data-quest.de>
+* @access public
+* @modulegroup elearning_interface_modules
+* @module ConnectedUser
+* @package ELearning-Interface
+*/
+class ConnectedUser
+{
+ var $cms_type;
+ var $id;
+ var $studip_id;
+ var $studip_login;
+ var $studip_password;
+ var $login;
+ var $external_password;
+ var $category;
+ var $gender;
+ var $title_front;
+ var $title_rear;
+ var $title;
+ var $firstname;
+ var $lastname;
+ var $institution;
+ var $department;
+ var $street;
+ var $city;
+ var $zipcode;
+ var $country;
+ var $phone_home;
+ var $fax;
+ var $matriculation;
+ var $email;
+ var $type;
+ var $is_connected;
+
+ var $db_class;
+ /**
+ * constructor
+ *
+ * init class. don't call directly, class is loaded by ConnectedCMS.
+ * @access public
+ * @param string $cms system-type
+ */
+ function __construct($cms, $user_id = false)
+ {
+ global $auth, $ELEARNING_INTERFACE_MODULES;
+
+ $this->studip_id = $user_id ? $user_id : $auth->auth["uid"];
+ $this->cms_type = $cms;
+
+ if ($ELEARNING_INTERFACE_MODULES[$this->cms_type]["RELATIVE_PATH_DB_CLASSES"] != false)
+ {
+ require_once("lib/elearning/" . $ELEARNING_INTERFACE_MODULES[$this->cms_type]["RELATIVE_PATH_DB_CLASSES"] . "/" . $ELEARNING_INTERFACE_MODULES[$this->cms_type]["db_classes"]["user"]["file"] );
+ $classname = $ELEARNING_INTERFACE_MODULES[$this->cms_type]["db_classes"]["user"]["classname"];
+ $this->db_class = new $classname();
+ }
+ $this->readData();
+ $this->getStudipUserData();
+ }
+
+ /**
+ * get data
+ *
+ * gets data from database
+ * @access public
+ * @return boolean returns false, if no data was found
+ */
+ function readData()
+ {
+ $query = "SELECT external_user_id, external_user_name, external_user_password, external_user_category, external_user_type
+ FROM auth_extern
+ WHERE studip_user_id = ? AND external_user_system_type = ?";
+ $statement = DBManager::get()->prepare($query);
+ $statement->execute([$this->studip_id, $this->cms_type]);
+ $data = $statement->fetch(PDO::FETCH_ASSOC);
+
+ if (!$data) {
+ $this->id = '';
+ $this->is_connected = false;
+ return false;
+ }
+
+ $this->id = $data['external_user_id'];
+ $this->login = $data['external_user_name'];
+ $this->external_password = $data['external_user_password'];
+ $this->category = $data['external_user_category'];
+ $this->type = $data['external_user_type'];
+ $this->is_connected = true;
+
+ return true;
+ }
+
+ /**
+ * get stud.ip-user-data
+ *
+ * gets stud.ip-user-data from database
+ * @access public
+ * @return boolean returns false, if no data was found
+ */
+ function getStudipUserData()
+ {
+ global $connected_cms;
+
+ $query = "SELECT username, password, title_front, title_rear, Vorname,
+ Nachname, Email, privatnr, privadr, geschlecht
+ FROM auth_user_md5
+ LEFT JOIN user_info USING (user_id)
+ WHERE user_id = ?";
+ $statement = DBManager::get()->prepare($query);
+ $statement->execute([$this->studip_id]);
+ $data = $statement->fetch(PDO::FETCH_ASSOC);
+
+ if (!$data) {
+ return false;
+ }
+
+ $this->studip_login = $data['username'];
+ if ($this->is_connected == false) {
+ $this->login = $connected_cms[$this->cms_type]->getUserPrefix() . $this->studip_login;
+ }
+
+ $this->studip_password = $data['password'];
+ $this->title_front = $data['title_front'];
+ $this->title_rear = $data['title_rear'];
+ $this->firstname = $data['Vorname'];
+ $this->lastname = $data['Nachname'];
+ $this->email = $data['Email'];
+ $this->phone_home = $data['privatnr'];
+ $this->street = $data['privadr'];
+ $this->gender = ($data['geschlecht'] == 2 ? 'f' : 'm');
+
+ if ($this->title_front != '') {
+ $this->title = $this->title_front;
+ }
+ if ($this->title_front != '' && $this->title_rear != '') {
+ $this->title .= ' ';
+ }
+ if ($this->title_rear != '') {
+ $this->title .= $this->title_rear;
+ }
+ return true;
+ }
+
+ /**
+ * create new user-account
+ *
+ * dummy-method. returns false. must be overwritten by subclass.
+ * @access public
+ * @return boolean returns false
+ */
+ function newUser()
+ {
+ return false;
+ }
+
+ /**
+ * update user-account
+ *
+ * dummy-method. must be overwritten by subclass.
+ */
+ public function updateUser()
+ {
+ }
+
+ /**
+ * delete user-account
+ *
+ * dummy-method. returns false. must be overwritten by subclass.
+ * @access public
+ * @return boolean returns false
+ */
+ function deleteUser()
+ {
+ return false;
+ }
+
+ /**
+ * get login-data of user-account
+ *
+ * dummy-method. returns false. must be overwritten by subclass.
+ * @access public
+ * @return boolean returns false
+ */
+ function getLoginData($username)
+ {
+ return false;
+ }
+
+ /**
+ * get id
+ *
+ * returns id
+ * @access public
+ * @return string id
+ */
+ function getId()
+ {
+ return $this->id;
+ }
+
+ /**
+ * get stud.ip user-id
+ *
+ * returns id
+ * @access public
+ * @return string stud.ip user-id
+ */
+ function getStudipId()
+ {
+ return $this->studip_id;
+ }
+
+ /**
+ * get username
+ *
+ * returns username
+ * @access public
+ * @return string username
+ */
+ function getUsername()
+ {
+ return $this->login;
+ }
+
+ /**
+ * set username
+ *
+ * sets username
+ * @access public
+ * @param string $user_login username
+ */
+ function setUsername($user_login)
+ {
+ $this->login = $user_login;
+ }
+
+ /**
+ * get password
+ *
+ * returns password
+ * @access public
+ * @return string password
+ */
+ function getPassword()
+ {
+ return $this->external_password;
+ }
+
+ /**
+ * set password
+ *
+ * sets password
+ * @access public
+ * @param string $user_password password
+ */
+ function setPassword($user_password)
+ {
+ $this->external_password = $user_password;
+ }
+
+ /**
+ * get user category
+ *
+ * returns id
+ * @access public
+ * @return string id
+ */
+ function getCategory()
+ {
+ return $this->category;
+ }
+
+ /**
+ * set user category
+ *
+ * sets user category
+ * @access public
+ * @param string $user_category category
+ */
+ function setCategory($user_category)
+ {
+ $this->category = $user_category;
+ }
+
+ /**
+ * get crypted password
+ *
+ * dummy-method. returns false. must be overwritten by subclass.
+ * @access public
+ * @return boolean returns false
+ */
+ function getCryptedPassword($password)
+ {
+ return false;
+ }
+
+ /**
+ * verify login data
+ *
+ * returns true, if login-data is valid
+ * @access public
+ * @param string $username username
+ * @param string $password password
+ * @return boolean login-validation
+ */
+ function verifyLogin($username, $password)
+ {
+ $this->getLoginData($username);
+ if (($username == "") OR ($password == ""))
+ return false;
+ if ( ($this->login == $username) AND ($this->external_password == $this->getCryptedPassword($password) ) )
+ return true;
+ return false;
+ }
+
+ /**
+ * get gender
+ *
+ * returns gender-setting
+ * @access public
+ * @return string gender-setting
+ */
+ function getGender()
+ {
+ return $this->gender;
+ }
+
+ /**
+ * set gender
+ *
+ * sets gender
+ * @access public
+ * @param string $user_gender gender-setting
+ */
+ function setGender($user_gender)
+ {
+ $this->gender = $user_gender;
+ }
+
+ /**
+ * get full name
+ *
+ * returns full name
+ * @access public
+ * @return string name
+ */
+ function getName()
+ {
+ if ($this->title != "")
+ return $this->title . ' ' . $this->firstname . ' ' . $this->lastname;
+ else
+ return $this->firstname . ' ' . $this->lastname;
+ }
+
+ /**
+ * get firstname
+ *
+ * returns firstname
+ * @access public
+ * @return string firstname
+ */
+ function getFirstname()
+ {
+ return $this->firstname;
+ }
+
+ /**
+ * set firstname
+ *
+ * sets firstname
+ * @access public
+ * @param string $user_firstname firstname
+ */
+ function setFirstname($user_firstname)
+ {
+ $this->firstname = $user_firstname;
+ }
+
+ /**
+ * get lastname
+ *
+ * returns lastname
+ * @access public
+ * @return string lastname
+ */
+ function getLastname()
+ {
+ return $this->lastname;
+ }
+
+ /**
+ * set lastname
+ *
+ * sets lastname
+ * @access public
+ * @param string $user_lastname lastname
+ */
+ function setLastname($user_lastname)
+ {
+ $this->lastname = $user_lastname;
+ }
+
+ /**
+ * get email-adress
+ *
+ * returns email-adress
+ * @access public
+ * @return string email-adress
+ */
+ function getEmail()
+ {
+ return $this->email;
+ }
+
+ /**
+ * set email-adress
+ *
+ * sets email-adress
+ * @access public
+ * @param string $user_email email-adress
+ */
+ function setEmail($user_email)
+ {
+ $this->email = $user_email;
+ }
+
+ /**
+ * get user-type
+ *
+ * returns user-type
+ * @access public
+ * @return string user-type
+ */
+ function getUserType()
+ {
+ return $this->type;
+ }
+
+ /**
+ * set user-type
+ *
+ * sets user-type
+ * @access public
+ * @param string $user_type user-type
+ */
+ function setUserType($user_type)
+ {
+ $this->type = $user_type;
+ }
+
+ /**
+ * save connection for user-account
+ *
+ * saves user-connection to database and sets type for actual user
+ * @param string $user_type user-type
+ */
+ public function setConnection($user_type)
+ {
+ $this->setUserType($user_type);
+
+ $query = "INSERT INTO auth_extern (studip_user_id, external_user_id, external_user_name,
+ external_user_password, external_user_category,
+ external_user_system_type, external_user_type)
+ VALUES (?, ?, ?, ?, ?, ?, ?)
+ ON DUPLICATE KEY
+ UPDATE external_user_name = VALUES(external_user_name),
+ external_user_password = VALUES(external_user_password),
+ external_user_category = VALUES(external_user_category),
+ external_user_id = VALUES(external_user_id),
+ external_user_type = VALUES(external_user_type)";
+ $statement = DBManager::get()->prepare($query);
+ $statement->execute([
+ (string)$this->studip_id,
+ (string)$this->id,
+ (string)$this->login,
+ (string)$this->external_password,
+ (string)$this->category,
+ (string)$this->cms_type,
+ (int)$this->type,
+ ]);
+
+ $this->is_connected = true;
+ $this->readData();
+ }
+
+ /**
+ * get connection-status
+ *
+ * returns true, if there is a connected user
+ * @access public
+ * @return boolean connection-status
+ */
+ function isConnected()
+ {
+ return $this->is_connected;
+ }
+}
+?>