4 define(
"IL_PASSWD_PLAIN",
"plain");
5 define(
"IL_PASSWD_CRYPTED",
"crypted");
8 require_once
"./Services/Object/classes/class.ilObject.php";
9 require_once
'./Services/User/exceptions/class.ilUserException.php';
10 require_once
'./Modules/OrgUnit/classes/class.ilObjOrgUnit.php';
11 require_once
'./Modules/OrgUnit/classes/class.ilObjOrgUnitTree.php';
185 public function __construct($a_user_id = 0, $a_call_by_reference =
false)
190 $ilDB = $DIC[
'ilDB'];
197 parent::__construct($a_user_id, $a_call_by_reference);
198 $this->auth_mode =
"default";
207 if ($a_user_id > 0) {
208 $this->
setId($a_user_id);
213 $this->prefs = array();
215 $this->prefs[
"language"] = $this->
ilias->ini->readVariable(
"language",
"default");
218 $this->skin = $this->
ilias->ini->readVariable(
"layout",
"skin");
224 $this->prefs[
"style"] = $this->
ilias->ini->readVariable(
"layout",
"style");
237 $ilDB = $DIC[
'ilDB'];
244 $r =
$ilDB->queryF(
"SELECT * FROM usr_data " .
245 "WHERE usr_id= %s", array(
"integer"), array($this->
id));
266 if ($this->prefs[
"language"] ==
"") {
267 $this->prefs[
"language"] = $this->oldPrefs[
"language"];
271 include_once(
"./Services/Style/System/classes/class.ilStyleDefinition.php");
272 if ($this->prefs[
"skin"] ==
"" ||
274 $this->prefs[
"skin"] = $this->oldPrefs[
"skin"];
277 $this->skin = $this->prefs[
"skin"];
280 if ($this->prefs[
"style"] ==
"" ||
283 $this->prefs[
"style"] = $this->
ilias->ini->readVariable(
"layout",
"style");
286 if (empty($this->prefs[
"hits_per_page"])) {
287 $this->prefs[
"hits_per_page"] = 10;
290 $ilErr->raiseError(
"<b>Error: There is no dataset with id " .
291 $this->
id .
"!</b><br />class: " . get_class($this) .
"<br />Script: " . __FILE__ .
292 "<br />Line: " . __LINE__,
$ilErr->FATAL);
314 $this->password_encoding_type = $password_encryption_type;
343 $ilDB = $DIC[
'ilDB'];
348 if (!$a_data[
"passwd_type"]) {
349 $ilErr->raiseError(
"<b>Error: passwd_type missing in function assignData(). " .
350 $this->
id .
"!</b><br />class: " . get_class($this) .
"<br />Script: " 351 . __FILE__ .
"<br />Line: " . __LINE__,
$ilErr->FATAL);
353 if ($a_data[
"passwd"] !=
"********" and strlen($a_data[
'passwd'])) {
354 $this->
setPasswd($a_data[
"passwd"], $a_data[
"passwd_type"]);
362 if (!is_array($a_data[
'birthday'])) {
372 $this->
setCity($a_data[
"city"]);
379 $this->
setFax($a_data[
"fax"]);
398 $this->create_date = $a_data[
"create_date"];
399 $this->
setComment($a_data[
"referral_comment"]);
400 $this->approve_date = $a_data[
"approve_date"];
401 $this->active = $a_data[
"active"];
402 $this->agree_date = $a_data[
"agree_date"];
429 public function saveAsNew($a_from_formular =
true)
433 $ilAppEventHandler = $DIC[
'ilAppEventHandler'];
442 $ilDB = $DIC[
'ilDB'];
444 switch ($this->passwd_type) {
446 if (strlen($this->passwd)) {
447 require_once
'Services/User/classes/class.ilUserPasswordManager.php';
460 $ilErr->raiseError(
"<b>Error: passwd_type missing in function saveAsNew. " .
461 $this->
id .
"!</b><br />class: " . get_class($this) .
"<br />Script: " . __FILE__ .
462 "<br />Line: " . __LINE__,
$ilErr->FATAL);
465 if (!$this->active) {
471 $insert_array = array(
472 "usr_id" => array(
"integer", $this->
id),
473 "login" => array(
"text", $this->login),
474 "passwd" => array(
"text", $pw_value),
477 "firstname" => array(
"text", $this->firstname),
478 "lastname" => array(
"text", $this->lastname),
479 "title" => array(
"text", $this->utitle),
480 "gender" => array(
"text", $this->gender),
481 "email" => array(
"text", trim($this->email)),
482 "second_email" => array(
"text", trim($this->second_email)),
483 "hobby" => array(
"text", (
string) $this->hobby),
484 "institution" => array(
"text", $this->institution),
485 "department" => array(
"text", $this->department),
486 "street" => array(
"text", $this->street),
487 "city" => array(
"text", $this->city),
488 "zipcode" => array(
"text", $this->zipcode),
489 "country" => array(
"text", $this->country),
490 "sel_country" => array(
"text", $this->sel_country),
491 "phone_office" => array(
"text", $this->phone_office),
492 "phone_home" => array(
"text", $this->phone_home),
493 "phone_mobile" => array(
"text", $this->phone_mobile),
494 "fax" => array(
"text", $this->fax),
496 "last_login" => array(
"timestamp", null),
497 "first_login" => array(
"timestamp", null),
498 "last_profile_prompt" => array(
"timestamp", null),
499 "last_update" => array(
"timestamp",
ilUtil::now()),
500 "create_date" => array(
"timestamp",
ilUtil::now()),
501 "referral_comment" => array(
"text", $this->referral_comment),
502 "matriculation" => array(
"text", $this->matriculation),
503 "client_ip" => array(
"text", $this->client_ip),
504 "approve_date" => array(
"timestamp", $this->approve_date),
505 "agree_date" => array(
"timestamp", $this->agree_date),
506 "active" => array(
"integer", (
int) $this->active),
511 "auth_mode" => array(
"text", $this->
getAuthMode()),
514 "latitude" => array(
"text", $this->latitude),
515 "longitude" => array(
"text", $this->longitude),
516 "loc_zoom" => array(
"integer", (
int) $this->loc_zoom),
517 "last_password_change" => array(
"integer", (
int) $this->last_password_change_ts),
518 'inactivation_date' => array(
'timestamp', $this->inactivation_date),
519 'is_self_registered' => array(
'integer', (
int) $this->is_self_registered),
521 $ilDB->insert(
"usr_data", $insert_array);
531 include_once(
"Services/Mail/classes/class.ilMailbox.php");
533 $mbox->createDefaultFolder();
535 include_once
"Services/Mail/classes/class.ilMailOptions.php";
537 $mail_options->createMailOptionsEntry();
540 include_once
"./Services/Bookmarks/classes/class.ilBookmarkFolder.php";
542 $bmf->createNewBookmarkTree();
544 $ilAppEventHandler->raise(
547 array(
"user_obj" => $this)
564 $ilDB = $DIC[
'ilDB'];
565 $ilAppEventHandler = $DIC[
'ilAppEventHandler'];
571 } elseif ($this->active) {
575 $update_array = array(
576 "gender" => array(
"text", $this->gender),
577 "title" => array(
"text", $this->utitle),
578 "firstname" => array(
"text", $this->firstname),
579 "lastname" => array(
"text", $this->lastname),
580 "email" => array(
"text", trim($this->email)),
581 "second_email" => array(
"text", trim($this->second_email)),
583 "hobby" => array(
"text", $this->hobby),
584 "institution" => array(
"text", $this->institution),
585 "department" => array(
"text", $this->department),
586 "street" => array(
"text", $this->street),
587 "city" => array(
"text", $this->city),
588 "zipcode" => array(
"text", $this->zipcode),
589 "country" => array(
"text", $this->country),
590 "sel_country" => array(
"text", $this->sel_country),
591 "phone_office" => array(
"text", $this->phone_office),
592 "phone_home" => array(
"text", $this->phone_home),
593 "phone_mobile" => array(
"text", $this->phone_mobile),
594 "fax" => array(
"text", $this->fax),
595 "referral_comment" => array(
"text", $this->referral_comment),
596 "matriculation" => array(
"text", $this->matriculation),
597 "client_ip" => array(
"text", $this->client_ip),
598 "approve_date" => array(
"timestamp", $this->approve_date),
599 "active" => array(
"integer", $this->active),
606 "auth_mode" => array(
"text", $this->
getAuthMode()),
608 "latitude" => array(
"text", $this->latitude),
609 "longitude" => array(
"text", $this->longitude),
610 "loc_zoom" => array(
"integer", (
int) $this->loc_zoom),
611 "last_password_change" => array(
"integer", $this->last_password_change_ts),
612 "last_update" => array(
"timestamp",
ilUtil::now()),
613 'inactivation_date' => array(
'timestamp', $this->inactivation_date)
616 if (isset($this->agree_date) && (strtotime($this->agree_date) !==
false || $this->agree_date == null)) {
617 $update_array[
"agree_date"] = array(
"timestamp", $this->agree_date);
619 switch ($this->passwd_type) {
621 if (strlen($this->passwd)) {
622 require_once
'Services/User/classes/class.ilUserPasswordManager.php';
624 $update_array[
'passwd'] = array(
'text', $this->
getPasswd());
626 $update_array[
"passwd"] = array(
"text", (
string) $this->passwd);
631 $update_array[
"passwd"] = array(
"text", (
string) $this->passwd);
635 $ilErr->raiseError(
"<b>Error: passwd_type missing in function update()" . $this->
id .
"!</b><br />class: " .
636 get_class($this) .
"<br />Script: " . __FILE__ .
"<br />Line: " . __LINE__,
$ilErr->FATAL);
640 $update_array[
'passwd_salt'] = array(
'text', $this->
getPasswordSalt());
642 $ilDB->update(
"usr_data", $update_array, array(
"usr_id" => array(
"integer", $this->
id)));
652 parent::updateOwner();
656 $ilAppEventHandler->raise(
659 array(
"user_obj" => $this)
672 $ilDB = $DIC[
'ilDB'];
674 $ilDB->manipulateF(
"UPDATE usr_data SET agree_date = " .
$ilDB->now() .
675 " WHERE usr_id = %s", array(
"integer"), array($this->
getId()));
681 private static function _lookup($a_user_id, $a_field)
685 $ilDB = $DIC[
'ilDB'];
688 "SELECT " . $a_field .
" FROM usr_data WHERE usr_id = %s",
694 return $set[$a_field];
706 $ilDB = $DIC[
'ilDB'];
708 $set =
$ilDB->queryF(
709 "SELECT title, firstname, lastname FROM usr_data WHERE usr_id = %s",
714 if ($rec =
$ilDB->fetchAssoc($set)) {
718 if ($rec[
"firstname"]) {
721 if ($rec[
"lastname"]) {
775 $ilDB = $DIC[
'ilDB'];
778 "SELECT firstname, lastname, title, login FROM usr_data WHERE usr_id = %s",
783 return array(
"user_id" => $a_user_id,
784 "firstname" => $user_rec[
"firstname"],
785 "lastname" => $user_rec[
"lastname"],
786 "title" => $user_rec[
"title"],
787 "login" => $user_rec[
"login"]);
797 $ilDB = $DIC[
'ilDB'];
800 "SELECT * FROM usr_data WHERE usr_id = %s",
831 $ilDB = $DIC[
'ilDB'];
833 if (!is_array($a_user_str)) {
835 "SELECT usr_id FROM usr_data WHERE login = %s",
840 return $user_rec[
"usr_id"];
843 "SELECT usr_id FROM usr_data " .
844 " WHERE " .
$ilDB->in(
"login", $a_user_str,
false,
"text")
847 while ($rec =
$ilDB->fetchAssoc($set)) {
848 $ids[] = $rec[
"usr_id"];
880 $ilDB = $DIC[
'ilDB'];
883 "UPDATE usr_data SET " .
884 "last_login = " .
$ilDB->now() .
885 " WHERE usr_id = %s",
892 "UPDATE usr_data SET " .
893 "first_login = " .
$ilDB->now() .
894 " WHERE usr_id = %s",
909 public function resetPassword($raw, $raw_retype)
916 $ilDB = $DIC[
'ilDB'];
918 if (func_num_args() != 2) {
922 if (!isset($raw) || !isset($raw_retype)) {
926 if ($raw != $raw_retype) {
930 require_once
'Services/User/classes/class.ilUserPasswordManager.php';
935 SET passwd = %s, passwd_enc_type = %s, passwd_salt = %s 937 array(
'text',
'text',
'text',
'integer'),
958 $ilDB = $DIC[
'ilDB'];
962 SELECT * FROM loginname_history 968 return $ilDB->fetchAssoc(
$res) ? true :
false;
987 $ilDB = $DIC[
'ilDB'];
989 $ilDB->setLimit(1, 0);
992 SELECT login, history_date FROM loginname_history 993 WHERE usr_id = %s ORDER BY history_date DESC',
998 if (!is_array(
$row) || !count(
$row)) {
1003 $row[
'login'],
$row[
'history_date']
1018 $ilDB = $DIC[
'ilDB'];
1021 if (func_num_args() != 1) {
1025 if (!isset($a_login)) {
1029 $former_login = self::_lookupLogin($this->
getId());
1032 if (0 == strcmp($a_login, $former_login)) {
1039 $last_history_entry = null;
1043 if ((
int)
$ilSetting->get(
'allow_change_loginname') &&
1044 (int)
$ilSetting->get(
'reuse_of_loginnames') == 0 &&
1045 self::_doesLoginnameExistInHistory($a_login)) {
1046 throw new ilUserException($this->lng->txt(
'loginname_already_exists'));
1047 } elseif ((
int)
$ilSetting->get(
'allow_change_loginname') &&
1048 (int)
$ilSetting->get(
'loginname_change_blocking_time') &&
1049 is_array($last_history_entry) &&
1050 $last_history_entry[1] + (int)
$ilSetting->get(
'loginname_change_blocking_time') > time()) {
1051 include_once
'Services/Calendar/classes/class.ilDate.php';
1054 $this->lng->txt(
'changing_loginname_not_possible_info'),
1065 if ((
int)
$ilSetting->get(
'allow_change_loginname') &&
1066 (int)
$ilSetting->get(
'create_history_loginname')) {
1071 $this->login = $a_login;
1078 array(
'text',
'integer'),
1094 self::_writePref($this->
id, $a_keyword, $a_value);
1095 $this->
setPref($a_keyword, $a_value);
1106 self::_deletePref($this->
getId(), $a_keyword);
1114 public static function _deletePref($a_user_id, $a_keyword)
1121 $ilDB = $DIC[
'ilDB'];
1124 'DELETE FROM usr_pref WHERE usr_id = %s AND keyword = %s',
1125 array(
'integer',
'text'),
1126 array($a_user_id, $a_keyword)
1139 $ilDB = $DIC[
'ilDB'];
1142 "DELETE FROM usr_pref WHERE usr_id = %s",
1154 public static function _writePref($a_usr_id, $a_keyword, $a_value)
1158 $ilDB = $DIC[
'ilDB'];
1162 "usr_id" => array(
"integer", $a_usr_id),
1163 "keyword" => array(
"text", $a_keyword),
1166 "value" => array(
"text",$a_value)
1190 $ilDB = $DIC[
'ilDB'];
1193 foreach ($this->prefs as $keyword => $value) {
1194 self::_writePref($this->
id, $keyword, $value);
1209 include_once(
'Services/Calendar/classes/class.ilCalendarSettings.php');
1211 return $settings->getDefaultTimeZone();
1226 include_once(
'Services/Calendar/classes/class.ilCalendarSettings.php');
1228 return $settings->getDefaultTimeFormat();
1243 include_once(
'Services/Calendar/classes/class.ilCalendarSettings.php');
1245 return $settings->getDefaultDateFormat();
1257 if ($a_keyword !=
"") {
1258 $this->prefs[$a_keyword] = $a_value;
1269 if (array_key_exists($a_keyword, $this->prefs)) {
1270 return $this->prefs[$a_keyword];
1280 $ilDB = $DIC[
'ilDB'];
1282 $query =
"SELECT * FROM usr_pref WHERE usr_id = " .
$ilDB->quote($a_usr_id,
"integer") .
" " .
1283 "AND keyword = " .
$ilDB->quote($a_keyword,
"text");
1300 $ilDB = $DIC[
'ilDB'];
1302 if (is_array($this->prefs)) {
1314 public function delete()
1319 $ilDB = $DIC[
'ilDB'];
1322 include_once(
'Services/LDAP/classes/class.ilLDAPRoleGroupMapping.php');
1324 $mapping->deleteUser($this->
getId());
1327 include_once(
"Services/Mail/classes/class.ilMailbox.php");
1330 $mailbox->updateMailsOfDeletedUser($this->
getLogin());
1333 include_once(
"./Services/Block/classes/class.ilCustomBlock.php");
1335 $costum_block->setContextObjId($this->
getId());
1336 $costum_block->setContextObjType(
"user");
1337 $c_blocks = $costum_block->queryBlocksForContext();
1338 include_once(
"./Services/Feeds/classes/class.ilPDExternalFeedBlock.php");
1339 foreach ($c_blocks as $c_block) {
1340 if ($c_block[
"type"] ==
"pdfeed") {
1348 include_once(
"./Services/Block/classes/class.ilBlockSetting.php");
1353 "DELETE FROM usr_data WHERE usr_id = %s",
1355 array($this->
getId())
1366 include_once(
"./Services/Authentication/classes/class.ilSession.php");
1374 $q =
"DELETE FROM bookmark_tree WHERE tree = " .
1376 $ilDB->manipulate($q);
1378 $q =
"DELETE FROM bookmark_data WHERE user_id = " .
1380 $ilDB->manipulate($q);
1383 include_once
'./Modules/Forum/classes/class.ilObjForum.php';
1387 include_once
'./Services/LinkChecker/classes/class.ilLinkCheckNotify.php';
1391 include_once
'./Modules/Course/classes/class.ilObjCourse.php';
1395 include_once
'./Services/Tracking/classes/class.ilObjUserTracking.php';
1398 include_once
'Modules/Session/classes/class.ilEventParticipants.php';
1402 include_once
'Modules/Scorm2004/classes/ilSCORM13Package.php';
1406 include_once
'Modules/ScormAicc/classes/class.ilObjSCORMLearningModule.php';
1410 include_once
"./Services/Notification/classes/class.ilNotification.php";
1414 include_once
"./Modules/Portfolio/classes/class.ilObjPortfolio.php";
1418 include_once
"./Services/PersonalWorkspace/classes/class.ilWorkspaceTree.php";
1420 $tree->cascadingDelete();
1423 include_once
"./Services/DiskQuota/classes/class.ilDiskQuotaHandler.php";
1427 require_once
'Services/User/classes/class.ilCronDeleteInactiveUserReminderMail.php';
1431 include_once
"Services/Badge/classes/class.ilBadgeAssignment.php";
1436 $ilOrgUnitUserAssignmentQueries->deleteAllAssignmentsOfUser($this->
getId());
1450 $ilAppEventHandler = $DIC[
'ilAppEventHandler'];
1451 $ilAppEventHandler->raise(
1454 array(
'usr_id' => $this->
getId())
1471 public function setFullname($a_title =
"", $a_firstname =
"", $a_lastname =
"")
1473 $this->fullname =
"";
1477 } elseif ($this->utitle) {
1478 $this->fullname = $this->utitle .
" ";
1483 } elseif ($this->firstname) {
1484 $this->fullname .= $this->firstname .
" ";
1510 if (!$a_max_strlen) {
1514 if (strlen($this->fullname) <= $a_max_strlen) {
1518 if ((strlen($this->utitle) + strlen($this->lastname) + 4) <= $a_max_strlen) {
1519 return ilUtil::stripSlashes($this->utitle .
" " . substr($this->firstname, 0, 1) .
". " . $this->lastname);
1522 if ((strlen($this->firstname) + strlen($this->lastname) + 1) <= $a_max_strlen) {
1526 if ((strlen($this->lastname) + 3) <= $a_max_strlen) {
1540 $this->login = $a_str;
1559 $this->passwd = $a_str;
1592 $this->gender = substr($a_str, -1);
1613 $this->utitle = $a_str;
1634 $this->firstname = $a_str;
1653 $this->lastname = $a_str;
1672 $this->institution = $a_str;
1691 $this->department = $a_str;
1710 $this->street = $a_str;
1729 $this->city = $a_str;
1748 $this->zipcode = $a_str;
1768 $this->country = $a_str;
1788 $this->sel_country = $a_val;
1808 $this->phone_office = $a_str;
1827 $this->phone_home = $a_str;
1846 $this->phone_mobile = $a_str;
1865 $this->fax = $a_str;
1884 $this->client_ip = $a_str;
1903 $this->matriculation = $a_str;
1925 $ilDB = $DIC[
'ilDB'];
1927 $query =
"SELECT matriculation FROM usr_data " .
1928 "WHERE usr_id = " .
$ilDB->quote($a_usr_id);
1931 return $row->matriculation ?
$row->matriculation :
'';
1941 $this->email = $a_str;
1976 $this->hobby = $a_str;
1995 $this->
setPref(
"language", $a_str);
2006 return $this->prefs[
"language"];
2019 $this->
setPref(
"disk_quota", $a_disk_quota);
2033 return $this->prefs[
"disk_quota"] ? $this->prefs[
"disk_quota"] : 0;
2038 return $this->prefs[
"wsp_disk_quota"] ? $this->prefs[
"wsp_disk_quota"] : 0;
2043 $this->last_password_change_ts = $a_last_password_change_ts;
2056 $ilDB = $DIC->database();
2057 $lng = $DIC->language();
2059 $q =
"SELECT value FROM usr_pref WHERE usr_id= " .
2060 $ilDB->quote($a_usr_id,
"integer") .
" AND keyword = " .
2061 $ilDB->quote(
'language',
"text");
2065 return $row[
'value'];
2067 if (is_object(
$lng)) {
2068 return $lng->getDefaultLanguage();
2077 $ilDB = $DIC[
'ilDB'];
2080 "UPDATE usr_data " .
2081 " SET ext_account = %s WHERE usr_id = %s",
2082 array(
"text",
"integer"),
2083 array($a_ext_id, $a_usr_id)
2091 $ilDB = $DIC[
'ilDB'];
2094 "UPDATE usr_data " .
2095 " SET auth_mode = %s WHERE usr_id = %s",
2096 array(
"text",
"integer"),
2097 array($a_auth_mode, $a_usr_id)
2127 $this->last_login = $a_str;
2137 return $this->last_login;
2146 $this->first_login = $a_str;
2164 $this->last_profile_prompt = $a_str;
2183 $this->last_update = $a_str;
2197 $this->referral_comment = $a_str;
2217 $this->approve_date = $a_str;
2248 $this->agree_date = $a_str;
2288 $ilDB = $DIC[
'ilDB'];
2290 $query =
'SELECT usr_id FROM usr_data ' .
2291 'WHERE active = ' .
$ilDB->quote(1,
'integer') .
' ' .
2292 'AND usr_id = ' .
$ilDB->quote($a_usr_id,
'integer');
2313 if ($this->active) {
2317 if ((!empty($storedActive) && empty($currentActive)) ||
2318 (empty($storedActive) && !empty($currentActive))) {
2332 return $active ? true :
false;
2343 $this->skin = $a_str;
2348 $this->time_limit_owner = $a_owner;
2352 return $this->time_limit_owner ? $this->time_limit_owner : 7;
2356 $this->time_limit_from = $a_from;
2360 return $this->time_limit_from;
2364 $this->time_limit_until = $a_until;
2368 return $this->time_limit_until;
2372 $this->time_limit_unlimited = $a_unlimited;
2376 return $this->time_limit_unlimited;
2380 return $this->time_limit_message = $a_time_limit_message;
2384 return $this->time_limit_message;
2389 $this->login_attempts = $a_login_attempts;
2410 $this->profile_incomplete = (boolean) $a_prof_inc;
2414 if ($this->
id == ANONYMOUS_USER_ID) {
2417 return $this->profile_incomplete;
2425 if ($this->
id == ANONYMOUS_USER_ID) {
2429 if ($this->
id == SYSTEM_USER_ID) {
2430 require_once
'./Services/User/classes/class.ilUserPasswordManager.php';
2441 require_once(
'./Services/PrivacySecurity/classes/class.ilSecuritySettings.php');
2446 $security->isPasswordChangeOnFirstLoginEnabled() &&
2448 $this->is_self_registered == false
2458 if ($this->
id == ANONYMOUS_USER_ID) {
2462 require_once(
'./Services/PrivacySecurity/classes/class.ilSecuritySettings.php');
2465 $max_pass_age = $security->getPasswordMaxAge();
2466 if ($max_pass_age > 0) {
2467 $max_pass_age_ts = ($max_pass_age * 86400);
2469 $current_ts = time();
2471 if (($current_ts - $pass_change_ts) > $max_pass_age_ts) {
2484 $current_ts = time();
2486 $password_age = (int) (($current_ts - $pass_change_ts) / 86400);
2487 return $password_age;
2494 $ilDB = $DIC[
'ilDB'];
2498 $query =
"UPDATE usr_data SET last_password_change = %s " .
2499 "WHERE usr_id = %s";
2500 $affected =
$ilDB->manipulateF(
2502 array(
'integer',
'integer'),
2516 $ilDB = $DIC[
'ilDB'];
2518 $query =
"UPDATE usr_data SET last_password_change = 0 " .
2519 "WHERE usr_id = %s";
2520 $affected =
$ilDB->manipulateF(
2523 array($this->
getId())
2539 $this->latitude = $a_latitude;
2559 $this->longitude = $a_longitude;
2579 $this->loc_zoom = $a_locationzoom;
2602 $ilDB = $DIC[
'ilDB'];
2604 $set =
$ilDB->queryf(
2606 SELECT COUNT(*) session_count 2607 FROM usr_session WHERE user_id = %s AND expires > %s AND session_id != %s ',
2608 array(
'integer',
'integer',
'text'),
2609 array($a_user_id, time(), $a_session_id)
2612 return (
bool)
$row[
'session_count'];
2638 $uid =
$GLOBALS[
'DIC'][
'ilAuthSession']->getUserId();
2642 require_once(
'Services/WebDAV/classes/class.ilDAVActivationChecker.php');
2659 $pos = strrpos($a_login,
'/');
2660 $pos2 = strrpos($a_login,
'\\');
2661 if ($pos ===
false || $pos < $pos2) {
2664 if ($pos !==
false) {
2665 $a_login = substr($a_login, $pos + 1);
2679 $ilDB = $DIC[
'ilDB'];
2682 $set =
$ilDB->queryF(
2683 "SELECT active FROM usr_data WHERE login= %s",
2688 if ($rec =
$ilDB->fetchAssoc($set)) {
2689 if ($rec[
"active"]) {
2723 $ilDB = $DIC[
'ilDB'];
2726 "SELECT usr_id FROM usr_data " .
2727 "WHERE email = %s and active = 1",
2733 $ids[] =
$row->usr_id;
2750 $ilDB = $DIC->database();
2753 "SELECT login FROM usr_data " .
2754 "WHERE email = %s and active = 1",
2760 $ids[] =
$row->login;
2790 public static function searchUsers($a_search_str,
$active = 1, $a_return_ids_only =
false, $filter_settings =
false)
2795 $ilDB = $DIC[
'ilDB'];
2799 $query =
"SELECT usr_data.usr_id, usr_data.login, usr_data.firstname, usr_data.lastname, usr_data.email, usr_data.active FROM usr_data ";
2801 $without_anonymous_users =
true;
2804 $join_filter =
" WHERE ";
2805 if ($filter_settings !==
false && strlen($filter_settings)) {
2806 switch ($filter_settings) {
2809 $join_filter =
" LEFT JOIN obj_members ON usr_data.usr_id = obj_members.usr_id WHERE obj_members.usr_id IS NULL AND ";
2815 $join_filter =
" LEFT JOIN obj_members ON usr_data.usr_id = obj_members.usr_id WHERE obj_members.obj_id = " .
2816 "(SELECT obj_id FROM object_reference WHERE ref_id = " .
$ilDB->quote(
$ref_id,
"integer") .
") AND ";
2826 if (is_array($local_roles) && count($local_roles)) {
2827 $join_filter =
" LEFT JOIN rbac_ua ON usr_data.usr_id = rbac_ua.usr_id WHERE " .
2828 $ilDB->in(
"rbac_ua.rol_id", $local_roles,
false, $local_roles) .
" AND ";
2836 $rol_id =
$_SESSION[
"user_filter_data"];
2838 $join_filter =
" LEFT JOIN rbac_ua ON usr_data.usr_id = rbac_ua.usr_id WHERE rbac_ua.rol_id = " .
2839 $ilDB->quote($rol_id,
"integer") .
" AND ";
2840 $without_anonymous_users =
false;
2847 if (strtolower(substr($a_search_str, 0, 5)) ==
"role:") {
2848 $query =
"SELECT DISTINCT usr_data.usr_id,usr_data.login,usr_data.firstname,usr_data.lastname,usr_data.email " .
2849 "FROM object_data,rbac_ua,usr_data " .
2850 "WHERE " .
$ilDB->like(
"object_data.title",
"text",
"%" . substr($a_search_str, 5) .
"%") .
2851 " AND object_data.type = 'role' " .
2852 "AND rbac_ua.rol_id = object_data.obj_id " .
2853 "AND usr_data.usr_id = rbac_ua.usr_id " .
2854 "AND rbac_ua.usr_id != " .
$ilDB->quote(ANONYMOUS_USER_ID,
"integer");
2857 "(" .
$ilDB->like(
"usr_data.login",
"text",
"%" . $a_search_str .
"%") .
" " .
2858 "OR " .
$ilDB->like(
"usr_data.firstname",
"text",
"%" . $a_search_str .
"%") .
" " .
2859 "OR " .
$ilDB->like(
"usr_data.lastname",
"text",
"%" . $a_search_str .
"%") .
" " .
2860 "OR " .
$ilDB->like(
"usr_data.email",
"text",
"%" . $a_search_str .
"%") .
") ";
2862 if ($filter_settings !==
false && strlen($filter_settings)) {
2863 switch ($filter_settings) {
2865 $query .=
" AND usr_data.active = " .
$ilDB->quote(0,
"integer") .
" ";
2868 $query .=
" AND usr_data.active = " .
$ilDB->quote(1,
"integer") .
" ";
2871 $query .=
" AND usr_data.time_limit_unlimited = " .
$ilDB->quote(0,
"integer") .
" ";
2874 $date = strftime(
"%Y-%m-%d %H:%I:%S", mktime(0, 0, 0,
$_SESSION[
"user_filter_data"][
"m"],
$_SESSION[
"user_filter_data"][
"d"],
$_SESSION[
"user_filter_data"][
"y"]));
2875 $query .=
" AND last_login < " .
$ilDB->quote($date,
"timestamp") .
" ";
2880 if ($without_anonymous_users) {
2881 $query .=
"AND usr_data.usr_id != " .
$ilDB->quote(ANONYMOUS_USER_ID,
"integer");
2884 if (is_numeric(
$active) &&
$active > -1 && $filter_settings ===
false) {
2892 "usr_id" =>
$row->usr_id,
2893 "login" =>
$row->login,
2894 "firstname" =>
$row->firstname,
2895 "lastname" =>
$row->lastname,
2896 "email" =>
$row->email,
2897 "active" =>
$row->active);
2898 $ids[] =
$row->usr_id;
2900 if ($a_return_ids_only) {
2901 return $ids ? $ids : array();
2910 public static function getAllUserLogins()
2917 $ilDB = $DIC[
'ilDB'];
2922 "SELECT login FROM usr_data WHERE " .
$ilDB->in(
'usr_id', array(ANONYMOUS_USER_ID),
true,
'integer')
2925 $logins[] =
$row[
'login'];
2943 $ilDB = $DIC[
'ilDB'];
2944 $res =
$ilDB->query(
"SELECT * FROM usr_data WHERE " .
2945 $ilDB->in(
"usr_id", $a_user_ids,
false,
"integer"));
2947 $user_data[
"$row[usr_id]"] =
$row;
2949 return $user_data ? $user_data : array();
2964 $ilDB = $DIC[
'ilDB'];
2966 $result_arr = array();
2970 if ($a_fields !== null
and is_array($a_fields)) {
2971 if (count($a_fields) == 0) {
2974 if (($usr_id_field = array_search(
"usr_id", $a_fields)) !==
false) {
2975 unset($a_fields[$usr_id_field]);
2978 $select = implode(
",", $a_fields) .
",usr_data.usr_id";
2980 if (in_array(
'online_time', $a_fields)) {
2981 $select .=
",ut_online.online_time ";
2985 $q =
"SELECT " . $select .
" FROM usr_data ";
2989 if (in_array(
'online_time', $a_fields)) {
2990 $q .=
"LEFT JOIN ut_online ON usr_data.usr_id = ut_online.usr_id ";
2996 $q .=
"WHERE active = " .
$ilDB->quote(
$active,
"integer");
2999 $q .=
"WHERE time_limit_unlimited= " .
$ilDB->quote(0,
"integer");;
3002 $qtemp = $q .
", rbac_ua, object_data WHERE rbac_ua.rol_id = object_data.obj_id AND " .
3003 $ilDB->like(
"object_data.title",
"text",
"%crs%") .
" AND usr_data.usr_id = rbac_ua.usr_id";
3005 $course_users = array();
3007 array_push($course_users,
$row[
"usr_id"]);
3009 if (count($course_users)) {
3010 $q .=
" WHERE " .
$ilDB->in(
"usr_data.usr_id", $course_users,
true,
"integer") .
" ";
3016 $date = strftime(
"%Y-%m-%d %H:%I:%S", mktime(0, 0, 0,
$_SESSION[
"user_filter_data"][
"m"],
$_SESSION[
"user_filter_data"][
"d"],
$_SESSION[
"user_filter_data"][
"y"]));
3017 $q .=
" AND last_login < " .
$ilDB->quote($date,
"timestamp");
3022 $q .=
" LEFT JOIN obj_members ON usr_data.usr_id = obj_members.usr_id " .
3023 "WHERE obj_members.obj_id = (SELECT obj_id FROM object_reference " .
3024 "WHERE ref_id = " .
$ilDB->quote(
$ref_id,
"integer") .
") ";
3034 if (is_array($local_roles) && count($local_roles)) {
3035 $q .=
" LEFT JOIN rbac_ua ON usr_data.usr_id = rbac_ua.usr_id WHERE " .
3036 $ilDB->in(
"rbac_ua.rol_id", $local_roles,
false,
"integer") .
" ";
3041 $rol_id =
$_SESSION[
"user_filter_data"];
3043 $q .=
" LEFT JOIN rbac_ua ON usr_data.usr_id = rbac_ua.usr_id WHERE rbac_ua.rol_id = " .
3044 $ilDB->quote($rol_id,
"integer");
3051 $result_arr[] =
$row;
3065 $ilDB = $DIC[
'ilDB'];
3067 $q =
"SELECT count(*) as cnt FROM usr_pref up1, usr_pref up2 " .
3068 " WHERE up1.keyword= " .
$ilDB->quote(
"style",
"text") .
3069 " AND up1.value= " .
$ilDB->quote($a_style,
"text") .
3070 " AND up2.keyword= " .
$ilDB->quote(
"skin",
"text") .
3071 " AND up2.value= " .
$ilDB->quote($a_skin,
"text") .
3072 " AND up1.usr_id = up2.usr_id ";
3074 $cnt_set =
$ilDB->query($q);
3076 $cnt_rec =
$ilDB->fetchAssoc($cnt_set);
3078 return $cnt_rec[
"cnt"];
3088 $ilDB = $DIC[
'ilDB'];
3090 $q =
"SELECT DISTINCT up1.value style, up2.value skin FROM usr_pref up1, usr_pref up2 " .
3091 " WHERE up1.keyword = " .
$ilDB->quote(
"style",
"text") .
3092 " AND up2.keyword = " .
$ilDB->quote(
"skin",
"text") .
3093 " AND up1.usr_id = up2.usr_id";
3095 $sty_set =
$ilDB->query($q);
3098 while ($sty_rec =
$ilDB->fetchAssoc($sty_set)) {
3099 $styles[] = $sty_rec[
"skin"] .
":" . $sty_rec[
"style"];
3112 $ilDB = $DIC[
'ilDB'];
3114 $q =
"SELECT up1.usr_id usr_id FROM usr_pref up1, usr_pref up2 " .
3115 " WHERE up1.keyword= " .
$ilDB->quote(
"style",
"text") .
3116 " AND up1.value= " .
$ilDB->quote($a_from_style,
"text") .
3117 " AND up2.keyword= " .
$ilDB->quote(
"skin",
"text") .
3118 " AND up2.value= " .
$ilDB->quote($a_from_skin,
"text") .
3119 " AND up1.usr_id = up2.usr_id ";
3121 $usr_set =
$ilDB->query($q);
3123 while ($usr_rec =
$ilDB->fetchAssoc($usr_set)) {
3124 self::_writePref($usr_rec[
"usr_id"],
"skin", $a_to_skin);
3125 self::_writePref($usr_rec[
"usr_id"],
"style", $a_to_style);
3143 $ilDB = $DIC[
'ilDB'];
3145 $item_set =
$ilDB->queryF(
3146 "SELECT * FROM desktop_item WHERE " .
3147 "item_id = %s AND type = %s AND user_id = %s",
3148 array(
"integer",
"text",
"integer"),
3149 array($a_item_id,
$a_type, $a_usr_id)
3153 if (!
$ilDB->fetchAssoc($item_set)) {
3155 "INSERT INTO desktop_item (item_id, type, user_id, parameters) VALUES " .
3157 array(
"integer",
"text",
"integer",
"text"),
3158 array($a_item_id,
$a_type,$a_usr_id,$a_par)
3162 include_once
'./Services/Calendar/classes/class.ilCalendarCategories.php';
3190 $ilDB = $DIC[
'ilDB'];
3193 "UPDATE desktop_item SET parameters = %s " .
3194 " WHERE item_id = %s AND type = %s AND user_id = %s",
3195 array(
"text",
"integer",
"text",
"integer"),
3214 $ilDB = $DIC[
'ilDB'];
3217 "DELETE FROM desktop_item WHERE " .
3218 " item_id = %s AND type = %s AND user_id = %s",
3219 array(
"integer",
"text",
"integer"),
3220 array($a_item_id,
$a_type, $a_usr_id)
3223 include_once
'./Services/Calendar/classes/class.ilCalendarCategories.php';
3249 $ilDB = $DIC[
'ilDB'];
3252 "SELECT user_id FROM desktop_item WHERE item_id = %s",
3265 "DELETE FROM desktop_item WHERE item_id = %s",
3287 $ilDB = $DIC[
'ilDB'];
3289 if (self::$is_desktop_item_loaded[$a_usr_id .
":" . $a_item_id]) {
3290 return self::$is_desktop_item_cache[$a_usr_id .
":" . $a_item_id .
":" .
$a_type];
3292 $item_set =
$ilDB->queryF(
3293 "SELECT item_id FROM desktop_item WHERE " .
3294 "item_id = %s AND type = %s AND user_id = %s",
3295 array(
"integer",
"text",
"integer"),
3296 array($a_item_id,
$a_type, $a_usr_id)
3299 if (
$ilDB->fetchAssoc($item_set)) {
3316 $ilDB = $DIC[
'ilDB'];
3318 if (!is_array($a_item_ids)) {
3322 $item_ids = array();
3323 foreach ($a_item_ids as
$id) {
3324 if (!self::$is_desktop_item_loaded[$a_usr_id .
":" . $id]) {
3327 self::$is_desktop_item_loaded[$a_usr_id .
":" .
$id] =
true;
3330 if (count($item_ids) > 0) {
3331 $item_set =
$ilDB->query(
"SELECT item_id, type FROM desktop_item WHERE " .
3332 $ilDB->in(
"item_id", $item_ids,
false,
"integer") .
3333 " AND user_id = " .
$ilDB->quote($a_usr_id,
"integer"));
3334 while (
$r =
$ilDB->fetchAssoc($item_set)) {
3335 self::$is_desktop_item_cache[$a_usr_id .
":" .
$r[
"item_id"] .
":" .
$r[
"type"]]
3369 $rbacsystem = $DIC[
'rbacsystem'];
3370 $tree = $DIC[
'tree'];
3371 $ilDB = $DIC[
'ilDB'];
3373 if ($a_types ==
"") {
3376 $item_set =
$ilDB->queryF(
"SELECT obj.obj_id, obj.description, oref.ref_id, obj.title, obj.type " .
3377 " FROM desktop_item it, object_reference oref " .
3378 ", object_data obj" .
3380 "it.item_id = oref.ref_id AND " .
3381 "oref.obj_id = obj.obj_id AND " .
3382 "it.user_id = %s", array(
"integer"), array($user_id));
3383 $items = $all_parent_path = array();
3384 while ($item_rec =
$ilDB->fetchAssoc($item_set)) {
3385 if (
$tree->isInTree($item_rec[
"ref_id"])
3386 && $item_rec[
"type"] !=
"rolf" 3387 && $item_rec[
"type"] !=
"itgr") {
3388 $parent_ref =
$tree->getParentId($item_rec[
"ref_id"]);
3390 if (!isset($all_parent_path[$parent_ref])) {
3399 if ($parent_ref > 0) {
3400 $node =
$tree->getNodeData($parent_ref);
3401 $all_parent_path[$parent_ref] = $node[
"title"];
3403 $all_parent_path[$parent_ref] =
"";
3408 $parent_path = $all_parent_path[$parent_ref];
3412 $items[$parent_path .
$title . $item_rec[
"ref_id"]] =
3413 array(
"ref_id" => $item_rec[
"ref_id"],
3414 "obj_id" => $item_rec[
"obj_id"],
3415 "type" => $item_rec[
"type"],
3417 "description" =>
$desc,
3418 "parent_ref" => $parent_ref);
3424 if (!is_array($a_types)) {
3425 $a_types = array($a_types);
3428 $foundsurveys = array();
3429 foreach ($a_types as
$a_type) {
3430 if ($a_type ==
"itgr") {
3433 $item_set =
$ilDB->queryF(
3434 "SELECT obj.obj_id, obj.description, oref.ref_id, obj.title FROM desktop_item it, object_reference oref " .
3435 ", object_data obj WHERE " .
3436 "it.item_id = oref.ref_id AND " .
3437 "oref.obj_id = obj.obj_id AND " .
3438 "it.type = %s AND " .
3439 "it.user_id = %s " .
3441 array(
"text",
"integer"),
3442 array($a_type, $user_id)
3445 while ($item_rec =
$ilDB->fetchAssoc($item_set)) {
3448 $items[
$title . $a_type . $item_rec[
"ref_id"]] =
3449 array(
"ref_id" => $item_rec[
"ref_id"],
3450 "obj_id" => $item_rec[
"obj_id"],
"type" => $a_type,
3483 $ilDB = $DIC[
'ilDB'];
3486 $a_time = date(
"Y-m-d H:i:s", time());
3489 $item_set =
$ilDB->queryF(
3490 "SELECT * FROM personal_clipboard WHERE " .
3491 "parent = %s AND item_id = %s AND type = %s AND user_id = %s",
3492 array(
"integer",
"integer",
"text",
"integer"),
3497 if (!
$d = $item_set->fetchRow()) {
3499 "INSERT INTO personal_clipboard " .
3500 "(item_id, type, user_id, title, parent, insert_time, order_nr) VALUES " .
3501 " (%s,%s,%s,%s,%s,%s,%s)",
3502 array(
"integer",
"text",
"integer",
"text",
"integer",
"timestamp",
"integer"),
3503 array($a_item_id,
$a_type, $this->
getId(), $a_title, (
int) $a_parent, $a_time, (
int) $a_order_nr)
3507 "UPDATE personal_clipboard SET insert_time = %s " .
3508 "WHERE user_id = %s AND item_id = %s AND type = %s AND parent = 0",
3509 array(
"timestamp",
"integer",
"integer",
"text"),
3522 $ilDB = $DIC[
'ilDB'];
3524 $a_time = date(
"Y-m-d H:i:s", time());
3526 $ilDB->insert(
"personal_pc_clipboard", array(
3527 "user_id" => array(
"integer", $this->
getId()),
3529 "insert_time" => array(
"timestamp", $a_time),
3530 "order_nr" => array(
"integer", $a_nr)
3541 $ilDB = $DIC[
'ilDB'];
3543 $set =
$ilDB->queryF(
"SELECT MAX(insert_time) mtime FROM personal_pc_clipboard " .
3544 " WHERE user_id = %s", array(
"integer"), array($this->
getId()));
3547 $set =
$ilDB->queryF(
3548 "SELECT * FROM personal_pc_clipboard " .
3549 " WHERE user_id = %s AND insert_time = %s ORDER BY order_nr ASC",
3550 array(
"integer",
"timestamp"),
3554 while (
$row =
$ilDB->fetchAssoc($set)) {
3555 $content[] =
$row[
"content"];
3568 $ilDB = $DIC[
'ilDB'];
3570 $set =
$ilDB->queryF(
3571 "SELECT * FROM personal_clipboard WHERE " .
3572 "parent = %s AND type = %s AND user_id = %s",
3573 array(
"integer",
"text",
"integer"),
3576 if ($rec =
$ilDB->fetchAssoc($set)) {
3590 $ilDB = $DIC[
'ilDB'];
3593 "DELETE FROM personal_clipboard WHERE " .
3594 "type = %s AND user_id = %s",
3595 array(
"text",
"integer"),
3607 $ilDB = $DIC[
'ilDB'];
3609 $ilDB->manipulateF(
"DELETE FROM personal_clipboard WHERE " .
3610 "user_id = %s", array(
"integer"), array($this->
getId()));
3620 $ilDB = $DIC[
'ilDB'];
3623 if ($a_top_nodes_only) {
3624 $par =
" AND parent = " .
$ilDB->quote(0,
"integer") .
" ";
3630 $q =
"SELECT * FROM personal_clipboard WHERE " .
3631 "user_id = " .
$ilDB->quote($this->
getId(),
"integer") .
" " .
3633 " ORDER BY order_nr";
3634 $objs =
$ilDB->query($q);
3636 while ($obj =
$ilDB->fetchAssoc($objs)) {
3637 if ($obj[
"type"] ==
"mob") {
3640 if ($obj[
"type"] ==
"incl") {
3641 include_once(
"./Modules/MediaPool/classes/class.ilMediaPoolPage.php");
3644 $objects[] = array(
"id" => $obj[
"item_id"],
3645 "type" => $obj[
"type"],
"title" => $obj[
"title"],
3646 "insert_time" => $obj[
"insert_time"]);
3658 $ilDB = $DIC[
'ilDB'];
3661 $objs =
$ilDB->queryF(
3662 "SELECT * FROM personal_clipboard WHERE " .
3663 "user_id = %s AND parent = %s AND insert_time = %s " .
3664 " ORDER BY order_nr",
3665 array(
"integer",
"integer",
"timestamp"),
3666 array(
$ilUser->getId(), (int) $a_parent, $a_insert_time)
3669 while ($obj =
$ilDB->fetchAssoc($objs)) {
3670 if ($obj[
"type"] ==
"mob") {
3673 $objects[] = array(
"id" => $obj[
"item_id"],
3674 "type" => $obj[
"type"],
"title" => $obj[
"title"],
"insert_time" => $obj[
"insert_time"]);
3691 $ilDB = $DIC[
'ilDB'];
3693 $q =
"SELECT DISTINCT user_id FROM personal_clipboard WHERE " .
3694 "item_id = " .
$ilDB->quote($a_id,
"integer") .
" AND " .
3696 $user_set =
$ilDB->query($q);
3698 while ($user_rec =
$ilDB->fetchAssoc($user_set)) {
3699 $users[] = $user_rec[
"user_id"];
3716 $ilDB = $DIC[
'ilDB'];
3718 $q =
"DELETE FROM personal_clipboard WHERE " .
3719 "item_id = " .
$ilDB->quote($a_item_id,
"integer") .
3721 " AND user_id = " .
$ilDB->quote($this->
getId(),
"integer");
3722 $ilDB->manipulate($q);
3729 $ilDB = $DIC[
'ilDB'];
3731 $query =
"SELECT obj_id FROM object_data WHERE import_id = " .
3732 $ilDB->quote($i2_id,
"text");
3748 require_once(
'./Modules/OrgUnit/classes/PathStorage/class.ilOrgUnitPathStorage.php');
3749 return ilOrgUnitPathStorage::getTextRepresentationOfUsersOrgUnits($a_usr_id);
3758 return self::lookupOrgUnitsRepresentation($this->
getId());
3768 $this->auth_mode = $a_str;
3781 include_once(
'./Services/Authentication/classes/class.ilAuthUtils.php');
3794 $this->ext_account = $a_str;
3806 return $this->ext_account;
3824 $ilDB = $DIC[
'ilDB'];
3827 include_once(
'./Services/Authentication/classes/class.ilAuthUtils.php');
3828 $q =
"SELECT login,usr_id,ext_account,auth_mode FROM usr_data " .
3829 "WHERE auth_mode = %s";
3833 $q .=
" OR auth_mode = %s ";
3840 if (
$row->auth_mode ==
'default') {
3841 $accounts[
$row->usr_id] =
$row->login;
3843 $accounts[
$row->usr_id] =
$row->ext_account;
3846 return $accounts ? $accounts : array();
3860 $ilDB = $DIC[
'ilDB'];
3862 if (!is_array($a_usr_ids)) {
3868 $q =
"UPDATE usr_data SET active = 1, inactivation_date = NULL WHERE " .
3869 $ilDB->in(
"usr_id", $a_usr_ids,
false,
"integer");
3870 $ilDB->manipulate($q);
3872 $usrId_IN_usrIds =
$ilDB->in(
"usr_id", $a_usr_ids,
false,
"integer");
3874 $q =
"UPDATE usr_data SET active = 0 WHERE $usrId_IN_usrIds";
3875 $ilDB->manipulate($q);
3879 SET inactivation_date = %s 3880 WHERE inactivation_date IS NULL 3881 AND $usrId_IN_usrIds 3883 $ilDB->manipulateF($queryString, array(
'timestamp'), array(
ilUtil::now()));
3912 $settings =
$GLOBALS[
'DIC']->settings();
3916 "SELECT * FROM usr_data WHERE " .
3917 " ext_account = %s AND auth_mode = %s",
3918 array(
"text",
"text"),
3919 array($a_account, $a_auth)
3921 if ($usr =
$db->fetchAssoc(
$r)) {
3922 return $usr[
"login"];
3925 if (!$tryFallback) {
3931 "SELECT login FROM usr_data " .
3932 "WHERE login = %s AND auth_mode = %s AND (ext_account IS NULL OR ext_account = '') ",
3933 array(
"text",
"text"),
3934 array($a_account, $a_auth)
3936 if ($usr =
$db->fetchAssoc(
$res)) {
3937 return $usr[
'login'];
3943 "SELECT login FROM usr_data WHERE " .
3944 " ext_account = %s AND auth_mode = %s",
3945 array(
"text",
"text"),
3946 array($a_account,
"default")
3948 if ($usr =
$db->fetchAssoc(
$res)) {
3949 return $usr[
"login"];
3953 "SELECT login FROM usr_data " .
3954 "WHERE login = %s AND (ext_account IS NULL OR ext_account = '') AND auth_mode = %s",
3955 array(
"text",
"text"),
3956 array($a_account,
"default")
3958 if ($usr =
$db->fetchAssoc(
$res)) {
3959 return $usr[
"login"];
3972 $ilDB = $DIC[
'ilDB'];
3974 $r =
$ilDB->query(
"SELECT count(*) AS cnt, auth_mode FROM usr_data " .
3975 "GROUP BY auth_mode");
3977 while ($cnt =
$ilDB->fetchAssoc(
$r)) {
3978 $cnt_arr[$cnt[
"auth_mode"]] = $cnt[
"cnt"];
3993 $ilDB = $DIC[
'ilDB'];
3998 $q =
"SELECT * FROM usr_data WHERE " .
3999 " email = %s AND (auth_mode = %s ";
4000 $types = array(
"text",
"text");
4001 $values = array($a_email,
"local");
4004 $q .=
" OR auth_mode = %s";
4013 while ($usr_rec =
$ilDB->fetchAssoc($usr_set)) {
4014 $users[$usr_rec[
"usr_id"]] = $usr_rec[
"login"];
4031 $image_dir = $webspace_dir .
"/usr_images";
4032 $store_file =
"usr_" . $obj_id .
"." .
"jpg";
4033 $target_file = $image_dir .
"/$store_file";
4035 chmod($tmp_file, 0770);
4039 $show_file =
"$image_dir/usr_" . $obj_id .
".jpg";
4040 $thumb_file =
"$image_dir/usr_" . $obj_id .
"_small.jpg";
4041 $xthumb_file =
"$image_dir/usr_" . $obj_id .
"_xsmall.jpg";
4042 $xxthumb_file =
"$image_dir/usr_" . $obj_id .
"_xxsmall.jpg";
4045 ilUtil::execConvert($tmp_file .
"[0] -geometry 100x100 -quality 100 JPEG:" . $thumb_file);
4047 ilUtil::execConvert($tmp_file .
"[0] -geometry 30x30 -quality 100 JPEG:" . $xxthumb_file);
4050 self::_writePref($obj_id,
"profile_image", $store_file);
4066 if (isset(self::$personal_image_cache[$this->
getId()][$a_size][(
int) $a_force_pic])) {
4067 return self::$personal_image_cache[$this->
getId()][$a_size][(int) $a_force_pic];
4070 self::$personal_image_cache[$this->
getId()][$a_size][(int) $a_force_pic] = ilObjUser::_getPersonalPicturePath($this->
getId(), $a_size, $a_force_pic);
4072 return self::$personal_image_cache[$this->
getId()][$a_size][(int) $a_force_pic];
4084 public static function _getPersonalPicturePath(
4087 $a_force_pic =
false,
4088 $a_prevent_no_photo_image =
false 4093 $upload = $profile =
false;
4095 $in = $DIC->database()->in(
'usr_pref.keyword', array(
'public_upload',
'public_profile'),
false,
'text');
4096 $res = $DIC->database()->queryF(
4098 SELECT usr_pref.*, ud.login, ud.firstname, ud.lastname 4099 FROM usr_data ud LEFT JOIN usr_pref ON usr_pref.usr_id = ud.usr_id AND $in 4100 WHERE ud.usr_id = %s",
4104 while (
$row = $DIC->database()->fetchAssoc(
$res)) {
4109 switch (
$row[
'keyword']) {
4110 case 'public_upload':
4111 $upload =
$row[
'value'] ==
'y';
4113 case 'public_profile':
4114 $profile = (
$row[
'value'] ==
'y' ||
4115 $row[
'value'] ==
'g');
4122 if (defined(
'ILIAS_MODULE')) {
4123 $webspace_dir = (
'.' . $webspace_dir);
4127 $image_dir = $webspace_dir .
"/usr_images";
4129 if ($a_size ==
'big') {
4130 $thumb_file = $image_dir .
"/usr_" . $a_usr_id .
".jpg";
4132 $thumb_file = $image_dir .
"/usr_" . $a_usr_id .
"_" . $a_size .
".jpg";
4136 $random = new \ilRandom();
4137 if ((($upload && $profile) || $a_force_pic)
4138 && @is_file($thumb_file)) {
4139 $file = $thumb_file .
"?t=" . $random->int(1, 99999);
4141 if (!$a_prevent_no_photo_image) {
4143 if ($a_size ==
"small" || $a_size ==
"big") {
4154 $avatar = $DIC[
"user.avatar.factory"]->avatar($a_size);
4155 $avatar->setName($short);
4156 $avatar->setUsrId($a_usr_id);
4158 return $avatar->getUrl();
4162 require_once(
'./Services/WebAccessChecker/classes/class.ilWACSignedPath.php');
4174 $a_dir = trim(str_replace(
"..",
"", $a_dir));
4175 if ($a_dir ==
"" || !is_dir($a_dir)) {
4180 $image_dir = $webspace_dir .
"/usr_images";
4182 "upload_" . $a_user_id .
"pic",
4183 "usr_" . $a_user_id .
"." .
"jpg",
4184 "usr_" . $a_user_id .
"_small.jpg",
4185 "usr_" . $a_user_id .
"_xsmall.jpg",
4186 "usr_" . $a_user_id .
"_xxsmall.jpg",
4187 "upload_" . $a_user_id);
4188 foreach ($images as $image) {
4189 if (is_file($image_dir .
"/" . $image)) {
4190 copy($image_dir .
"/" . $image, $a_dir .
"/" . $image);
4202 $image_dir = $webspace_dir .
"/usr_images";
4203 $file = $image_dir .
"/usr_" . $this->getID() .
"." .
"jpg";
4204 $thumb_file = $image_dir .
"/usr_" . $this->getID() .
"_small.jpg";
4205 $xthumb_file = $image_dir .
"/usr_" . $this->getID() .
"_xsmall.jpg";
4206 $xxthumb_file = $image_dir .
"/usr_" . $this->getID() .
"_xxsmall.jpg";
4207 $upload_file = $image_dir .
"/upload_" . $this->getID();
4211 $this->
setPref(
"profile_image",
"");
4215 if (@is_file($file)) {
4218 if (@is_file($thumb_file)) {
4219 unlink($thumb_file);
4221 if (@is_file($xthumb_file)) {
4222 unlink($xthumb_file);
4224 if (@is_file($xxthumb_file)) {
4225 unlink($xxthumb_file);
4227 if (@is_file($upload_file)) {
4228 unlink($upload_file);
4235 if (!is_array($a_data)) {
4238 foreach ($a_data as $field =>
$data) {
4239 #$new_data[$field] = ilUtil::stripSlashes($data); 4241 $this->user_defined_data[
'f_' . $field] =
$data;
4243 #$this->user_defined_data = $new_data; 4250 return $this->user_defined_data ? $this->user_defined_data : array();
4257 $ilDB = $DIC[
'ilDB'];
4261 $field_def = array();
4263 include_once(
"./Services/User/classes/class.ilUserDefinedData.php");
4266 foreach ($this->user_defined_data as $field => $value) {
4267 if ($field !=
'usr_id') {
4269 $udata->set($field, $value);
4301 $ilDB = $DIC[
'ilDB'];
4303 include_once(
"./Services/User/classes/class.ilUserDefinedData.php");
4315 $this->user_defined_data = $udata->getAll();
4324 $ilDB = $DIC[
'ilDB'];
4341 $ilDB = $DIC[
'ilDB'];
4343 include_once(
"./Services/User/classes/class.ilUserDefinedData.php");
4359 public function getProfileAsString(&$a_language)
4361 include_once
'./Services/AccessControl/classes/class.ilObjRole.php';
4369 $language->loadLanguageModule(
'registration');
4396 if (strlen($this->
getCity())) {
4417 if (strlen($this->
getFax())) {
4441 $body .= (
$language->txt(
"create_date") .
": " . $date .
"\n");
4444 foreach (
$rbacreview->getGlobalRoles() as $role) {
4445 if (
$rbacreview->isAssigned($this->getId(), $role)) {
4450 $body .= (
$language->txt(
'reg_role_info') .
': ' . implode(
',', $gr) .
"\n");
4455 $body .= (
$language->txt(
'time_limit') .
": " .
$language->txt(
'crs_unlimited') .
"\n");
4472 include_once
'./Services/User/classes/class.ilUserDefinedFields.php';
4479 foreach ($user_defined_fields->getDefinitions() as $field_id => $definition) {
4481 if (strlen(
$data)) {
4483 $data = preg_replace(
'/<br(\s*)?\/?>/i',
"\n",
$data);
4487 $body .= $definition[
'field_name'] .
': ' .
$data .
"\n";
4501 $ilDB = $DIC[
'ilDB'];
4503 if ($a_user_id > 0) {
4504 $set =
$ilDB->queryF(
4505 "SELECT feed_hash from usr_data WHERE usr_id = %s",
4509 if ($rec =
$ilDB->fetchAssoc($set)) {
4510 if (strlen($rec[
"feed_hash"]) == 32) {
4511 return $rec[
"feed_hash"];
4512 } elseif ($a_create) {
4513 $random = new \ilRandom();
4514 $hash = md5($random->int(1, 9999999) + str_replace(
" ",
"", (
string) microtime()));
4516 "UPDATE usr_data SET feed_hash = %s" .
4517 " WHERE usr_id = %s",
4518 array(
"text",
"integer"),
4519 array($hash, $a_user_id)
4538 $ilDB = $DIC[
'ilDB'];
4540 if ($a_user_id > 0) {
4555 $ilDB = $DIC[
'ilDB'];
4560 ($a_password ==
"") ?
"" : md5($a_password)
4577 $ilDB = $DIC[
'ilDB'];
4579 $q =
"SELECT DISTINCT login, usr_id FROM usr_data " .
4584 if ($a_user_id != 0) {
4585 $q .=
" AND usr_id != %s ";
4586 $types[] =
"integer";
4593 return $row[
'usr_id'];
4612 $ilDB = $DIC[
'ilDB'];
4615 "SELECT * FROM usr_data " .
4616 "WHERE ext_account = %s AND auth_mode = %s",
4617 array(
"text",
"text"),
4618 array($a_external_account, $a_auth_mode)
4620 return $ilDB->fetchAssoc(
$res) ? true :
false;
4634 $ilDB = $DIC[
'ilDB'];
4640 if (count($ids) == 0) {
4644 $query =
"SELECT usr_data.*, usr_pref.value AS language 4646 LEFT JOIN usr_pref ON usr_pref.usr_id = usr_data.usr_id AND usr_pref.keyword = %s 4647 WHERE " .
$ilDB->in(
"usr_data.usr_id", $ids,
false,
"integer");
4653 $query .=
" AND usr_data.active = %s";
4655 $types[] =
"integer";
4658 $query .=
" ORDER BY usr_data.lastname, usr_data.firstname ";
4678 $ilDB = $DIC[
'ilDB'];
4680 $query =
"SELECT usr_data.*, usr_pref.value AS language FROM usr_data LEFT JOIN usr_pref ON usr_pref.usr_id = usr_data.usr_id and usr_pref.keyword = %s WHERE 1 = 1 ";
4685 $query .=
" AND usr_data.active = %s";
4687 $types[] =
"integer";
4691 $query .=
" AND usr_data.time_limit_owner = %s";
4693 $types[] =
"integer";
4696 $query .=
" AND usr_data.usr_id != %s ";
4697 $values[] = ANONYMOUS_USER_ID;
4698 $types[] =
"integer";
4700 $query .=
" ORDER BY usr_data.lastname, usr_data.firstname ";
4734 $ilDB = $DIC[
'ilDB'];
4736 $query =
"SELECT usr_data.*, usr_pref.value AS language 4738 LEFT JOIN usr_pref ON usr_pref.usr_id = usr_data.usr_id AND usr_pref.keyword = %s 4739 WHERE " .
$ilDB->in(
"usr_data.usr_id", $a_mem_ids,
false,
"integer") .
" 4740 AND usr_data.usr_id != %s";
4743 $values[] = ANONYMOUS_USER_ID;
4744 $types[] =
"integer";
4747 $query .=
" AND active = %s";
4749 $types[] =
"integer";
4752 if ($timelimitowner !=
USER_FOLDER_ID && $timelimitowner != -1) {
4753 $query .=
" AND usr_data.time_limit_owner = %s";
4755 $types[] =
"integer";
4758 $query .=
" ORDER BY usr_data.lastname, usr_data.firstname ";
4765 return $mem_arr ? $mem_arr : array();
4779 $ilDB = $DIC[
'ilDB'];
4782 if (is_array($a_internalids)) {
4783 foreach ($a_internalids as $internalid) {
4784 if (is_numeric($internalid)) {
4785 $ids[] = $internalid;
4788 if (is_numeric($parsedid) && $parsedid > 0) {
4794 if (count($ids) == 0) {
4798 $query =
"SELECT usr_data.*, usr_pref.value AS language 4801 ON usr_pref.usr_id = usr_data.usr_id AND usr_pref.keyword = %s 4802 WHERE " .
$ilDB->in(
"usr_data.usr_id", $ids,
false,
"integer");
4806 $query .=
" ORDER BY usr_data.lastname, usr_data.firstname ";
4826 $ilDB = $DIC[
'ilDB'];
4831 "SELECT * FROM usr_pref WHERE usr_id = %s",
4856 $ilDB = $DIC[
'ilDB'];
4859 $set =
$ilDB->query(
4860 "SELECT usr_id FROM usr_pref " .
4861 " WHERE keyword = " .
$ilDB->quote($a_keyword,
"text") .
4862 " AND " .
$ilDB->in(
"usr_id", $a_user_ids,
false,
"integer") .
4863 " AND value = " .
$ilDB->quote($a_val,
"text")
4865 while ($rec =
$ilDB->fetchAssoc($set)) {
4866 $users[] = $rec[
"usr_id"];
4876 $ilDB = $DIC[
'ilDB'];
4878 $query =
"UPDATE usr_data SET login_attempts = 0 WHERE usr_id = %s";
4879 $affected =
$ilDB->manipulateF(
$query, array(
'integer'), array($a_usr_id));
4892 $ilDB = $DIC[
'ilDB'];
4894 $query =
"SELECT login_attempts FROM usr_data WHERE usr_id = %s";
4906 $ilDB = $DIC[
'ilDB'];
4908 $query =
"UPDATE usr_data SET login_attempts = (login_attempts + 1) WHERE usr_id = %s";
4909 $affected =
$ilDB->manipulateF(
$query, array(
'integer'), array($a_usr_id));
4922 $ilDB = $DIC[
'ilDB'];
4924 $query =
"UPDATE usr_data SET active = 0, inactivation_date = %s WHERE usr_id = %s";
4941 return in_array($this->
getPref(
"public_profile"), array(
"y",
"g"));
4962 $ilDB = $DIC[
'ilDB'];
4967 'SELECT * FROM loginname_history WHERE usr_id = %s AND login = %s AND history_date = %s',
4968 array(
'integer',
'text',
'integer'),
4975 INSERT INTO loginname_history 4976 (usr_id, login, history_date) 4977 VALUES (%s, %s, %s)',
4978 array(
'integer',
'text',
'integer'),
4993 public static function _getUsersOnline($a_user_id = 0, $a_no_anonymous =
false)
5000 $ilDB = $DIC->database();
5006 $atime = $pd_set->get(
'user_activity_time') * 60;
5011 if ($a_user_id == 0) {
5012 $where[] =
'user_id > 0';
5013 } elseif (is_array($a_user_id)) {
5014 $where[] =
$ilDB->in(
"user_id", $a_user_id,
false,
"integer");
5016 $where[] =
'user_id = ' .
$ilDB->quote($a_user_id,
'integer');
5019 if ($a_no_anonymous) {
5020 $where[] =
'user_id != ' .
$ilDB->quote(ANONYMOUS_USER_ID,
'integer');
5023 include_once
'Services/User/classes/class.ilUserAccountSettings.php';
5025 include_once
'Services/User/classes/class.ilUserFilter.php';
5029 $where[] =
'expires > ' .
$ilDB->quote($ctime,
'integer');
5030 $where[] =
'(p.value IS NULL OR NOT p.value = ' .
$ilDB->quote(
'y',
'text') .
')';
5032 $where =
'WHERE ' . implode(
' AND ', $where);
5036 SELECT COUNT(user_id) num, user_id, firstname, lastname, title, login, last_login, MAX(ctime) ctime, context, agree_date 5038 LEFT JOIN usr_data u 5039 ON user_id = u.usr_id 5040 LEFT JOIN usr_pref p 5041 ON (p.usr_id = u.usr_id AND p.keyword = %s) 5043 GROUP BY user_id, firstname, lastname, title, login, last_login, context, agree_date 5044 ORDER BY lastname, firstname 5047 array(
'hide_own_online_status')
5050 $log->debug(
"Query: " . $q);
5054 if ($atime <= 0 ||
$user[
'ctime'] + $atime > $ctime) {
5059 $log->debug(
"Found users: " . count(
$users));
5061 require_once
'Services/TermsOfService/classes/class.ilTermsOfServiceHelper.php';
5064 if (
$user[
'agree_date'] ||
$user[
'user_id'] == SYSTEM_USER_ID ||
'root' ===
$user[
'login']) {
5071 $log->debug(
"TOS filtered to users: " . count(
$users));
5087 $ilDB = $DIC[
'ilDB'];
5092 $random = new \ilRandom();
5093 $hashcode = substr(md5(uniqid($random->int(),
true)), 0, 16);
5097 SELECT COUNT(usr_id) cnt FROM usr_data 5098 WHERE reg_hash = %s',
5103 if (
$row->cnt > 0) {
5118 array(
'text',
'integer'),
5119 array($hashcode, (
int) $a_usr_id)
5140 $ilDB = $DIC[
'ilDB'];
5144 SELECT usr_id, create_date FROM usr_data 5145 WHERE reg_hash = %s',
5150 require_once
'Services/Registration/classes/class.ilRegistrationSettings.php';
5153 if ((
int) $oRegSettigs->getRegistrationHashLifetime() != 0 &&
5154 time() - (int) $oRegSettigs->getRegistrationHashLifetime() > strtotime(
$row[
'create_date'])) {
5155 require_once
'Services/Registration/exceptions/class.ilRegConfirmationLinkExpiredException.php';
5164 array(
'text',
'integer'),
5165 array(
'', (
int)
$row[
'usr_id'])
5168 return (
int) $row[
'usr_id'];
5171 require_once
'Services/Registration/exceptions/class.ilRegistrationHashNotFoundException.php';
5177 if (strlen($a_birthday)) {
5181 $this->birthday = null;
5200 if (!(
int) $period) {
5206 $ilDB = $DIC[
'ilDB'];
5208 $date = date(
'Y-m-d H:i:s', (time() - ((
int) $period * 24 * 60 * 60)));
5210 $query =
"SELECT usr_id FROM usr_data WHERE last_login < %s OR (ISNULL(last_login) AND create_date < %s)";
5212 $res =
$ilDB->queryF(
$query, array(
'timestamp',
'timestamp'), array($date, $date));
5216 $ids[] =
$row->usr_id;
5233 $field =
'inactivation_date';
5236 if (!(
int) $period) {
5242 $ilDB = $DIC[
'ilDB'];
5244 $date = date(
'Y-m-d H:i:s', (time() - ((
int) $period * 24 * 60 * 60)));
5246 $query =
"SELECT usr_id FROM usr_data WHERE $field < %s AND active = %s";
5248 $res =
$ilDB->queryF(
$query, array(
'timestamp',
'integer'), array($date, 0));
5252 $ids[] =
$row->usr_id;
5269 if ($a_last_login !== null) {
5270 $last_login = $a_last_login;
5272 $last_login = date(
'Y-m-d H:i:s');
5277 $ilDB = $DIC[
'ilDB'];
5279 $query =
"UPDATE usr_data SET last_login = %s WHERE usr_id = %s";
5280 $affected =
$ilDB->manipulateF(
$query, array(
'timestamp',
'integer'), array($last_login, $a_usr_id));
5282 $query =
"UPDATE usr_data SET first_login = %s WHERE usr_id = %s AND first_login IS NULL";
5283 $ilDB->manipulateF(
$query, array(
'timestamp',
'integer'), array($last_login, $a_usr_id));
5297 $ilDB = $DIC[
'ilDB'];
5299 $query =
"UPDATE object_data SET owner = 0 " .
5300 "WHERE owner = " .
$ilDB->quote($this->
getId(),
'integer');
5317 $ilDB = $DIC[
'ilDB'];
5319 $q =
"SELECT DISTINCT " .
$ilDB->upper(
$ilDB->substr(
"lastname", 1, 1)) .
" let" .
5321 " WHERE usr_id <> " .
$ilDB->quote(ANONYMOUS_USER_ID,
"integer") .
5323 $let_set =
$ilDB->query($q);
5326 while ($let_rec =
$ilDB->fetchAssoc($let_set)) {
5327 $let[$let_rec[
"let"]] = $let_rec[
"let"];
5337 $ilDB = $DIC[
'ilDB'];
5339 $query =
'SELECT count(*) num FROM object_data od ' .
5340 'JOIN usr_data ud ON obj_id = usr_id ' .
5341 'WHERE ' .
$ilDB->in(
'obj_id', $a_usr_ids,
false,
'integer') .
' ';
5344 return $num_rows == count((array) $a_usr_ids);
5353 return (
boolean)
$_SESSION[
"user_captcha_verified"];
5363 $_SESSION[
"user_captcha_verified"] = $a_val;
5374 include_once(
"./Services/Export/classes/class.ilExport.php");
5397 include_once(
"./Services/Export/classes/class.ilExport.php");
5399 if (!is_dir($dir)) {
5403 if (is_int(strpos($entry[
"entry"],
".zip"))) {
5404 return $entry[
"entry"];
5419 include_once(
"./Services/Export/classes/class.ilExport.php");
5422 if (is_file($file)) {
5441 include_once(
"./Services/Export/classes/class.ilImport.php");
5443 if (!$a_profile_data) {
5444 $imp->addSkipEntity(
"Services/User",
"usr_profile");
5447 $imp->addSkipEntity(
"Services/User",
"usr_setting");
5449 if (!$a_bookmarks) {
5450 $imp->addSkipEntity(
"Services/Bookmarks",
"bookmarks");
5453 $imp->addSkipEntity(
"Services/Notes",
"user_notes");
5456 $imp->addSkipEntity(
"Services/Calendar",
"calendar");
5459 $a_file[
"tmp_name"],
5475 $ilDB = $DIC[
'ilDB'];
5477 $NOW =
$ilDB->now();
5479 $usrId_IN_usrIds =
$ilDB->in(
'usr_id', $usrIds,
false,
'integer');
5483 SET inactivation_date = $NOW 5484 WHERE inactivation_date IS NULL 5485 AND $usrId_IN_usrIds 5488 $ilDB->manipulate($queryString);
5500 $ilDB = $DIC[
'ilDB'];
5502 $usrId_IN_usrIds =
$ilDB->in(
'usr_id', $usrIds,
false,
'integer');
5506 SET inactivation_date = NULL 5507 WHERE $usrId_IN_usrIds 5510 $ilDB->manipulate($queryString);
5538 require_once
'Services/TermsOfService/classes/class.ilTermsOfServiceHelper.php';
5542 null == $this->agree_date &&
5543 'root' != $this->login &&
5544 !in_array($this->
getId(), array(ANONYMOUS_USER_ID, SYSTEM_USER_ID))
5556 public static function hasUserToAcceptTermsOfService($a_username)
5563 $ilDB = $DIC[
'ilDB'];
5565 require_once
'Services/TermsOfService/classes/class.ilTermsOfServiceHelper.php';
5571 $in =
$ilDB->in(
'usr_id', array(ANONYMOUS_USER_ID, SYSTEM_USER_ID),
true,
'integer');
5573 "SELECT usr_id FROM usr_data WHERE login = %s AND agree_date IS NULL $in",
5577 return $ilDB->fetchAssoc(
$res) ? true :
false;
5591 $ilDB = $DIC[
'ilDB'];
5593 $date_is = ($a_agreed)
5597 $users = (is_array($a_users))
5598 ?
" AND " .
$ilDB->in(
"usr_id", $a_users,
false,
"integer")
5601 $set =
$ilDB->query(
"SELECT usr_id FROM usr_data " .
5602 " WHERE agree_date " . $date_is .
5605 while ($rec =
$ilDB->fetchAssoc($set)) {
5606 $ret[] = $rec[
"usr_id"];
5618 if (null === $status) {
5622 require_once
'Services/TermsOfService/classes/class.ilTermsOfServiceHelper.php';
5633 return self::_isAnonymous($this->
getId());
5642 return $usr_id == ANONYMOUS_USER_ID;
5657 return (
bool) $this->
getPref(
"delete_flag");
5665 $this->is_self_registered = (bool) $status;
5685 $this->interests_general = $value;
5715 $this->interests_help_offered = $value;
5745 $this->interests_help_looking = $value;
5789 $ilDB = $DIC[
'ilDB'];
5791 if (!$this->
getId()) {
5795 $set =
$ilDB->query(
"SELECT field_id,value" .
5796 " FROM usr_data_multi" .
5797 " WHERE usr_id = " .
$ilDB->quote($this->getId(),
"integer") .
5799 while (
$row =
$ilDB->fetchAssoc($set)) {
5803 if (isset(
$values[
"interests_general"])) {
5808 if (isset(
$values[
"interests_help_offered"])) {
5813 if (isset(
$values[
"interests_help_looking"])) {
5829 $ilDB = $DIC[
'ilDB'];
5831 if (!$this->
getId()) {
5848 $value = trim($value);
5850 $uniq_id =
$ilDB->nextId(
'usr_data_multi');
5852 $ilDB->manipulate(
"INSERT usr_data_multi" .
5853 " (id,usr_id,field_id,value) VALUES" .
5854 " (" .
$ilDB->quote($uniq_id,
"integer") .
5855 "," .
$ilDB->quote($this->
getId(),
"integer") .
5857 "," .
$ilDB->quote($value,
"text") .
5872 $ilDB = $DIC[
'ilDB'];
5874 if (!$this->
getId()) {
5878 $ilDB->manipulate(
"DELETE FROM usr_data_multi" .
5879 " WHERE usr_id = " .
$ilDB->quote($this->getId(),
"integer"));
5882 public static function findInterests($a_term, $a_user_id = null, $a_field_id = null)
5886 $ilDB = $DIC[
'ilDB'];
5890 $sql =
"SELECT DISTINCT(value)" .
5891 " FROM usr_data_multi" .
5892 " WHERE " .
$ilDB->like(
"value",
"text",
"%" . $a_term .
"%");
5894 $sql .=
" AND field_id = " .
$ilDB->quote($a_field_id,
"text");
5897 $sql .=
" AND usr_id <> " .
$ilDB->quote($a_user_id,
"integer");
5899 $sql .=
" ORDER BY value";
5900 $set =
$ilDB->query($sql);
5901 while (
$row =
$ilDB->fetchAssoc($set)) {
5921 $ilDB = $DIC->database();
5923 $set =
$ilDB->query(
5924 "SELECT * FROM usr_pref " .
5925 " WHERE keyword = " .
$ilDB->quote(
"public_profile",
"text") .
5926 " AND " .
$ilDB->in(
"usr_id", $a_user_ids,
false,
"integer")
5929 "global" => array(),
5931 "public" => array(),
5932 "not_public" => array()
5934 while ($rec =
$ilDB->fetchAssoc($set)) {
5935 if ($rec[
"value"] ==
"g") {
5936 $r[
"global"][] = $rec[
"usr_id"];
5937 $r[
"public"][] = $rec[
"usr_id"];
5939 if ($rec[
"value"] ==
"y") {
5940 $r[
"local"][] = $rec[
"usr_id"];
5941 $r[
"public"][] = $rec[
"usr_id"];
5944 foreach ($a_user_ids as
$id) {
5945 if (!in_array($id,
$r[
"public"])) {
5946 $r[
"not_public"][] =
$id;
getCurrentLanguage()
returns the current language (may differ from user's pref setting!)
static _lookupLogin($a_user_id)
lookup login
static _lookupName($a_user_id)
lookup user name
Class for user related exception handling in ILIAS.
static getUserIdsByEmail($a_email)
STATIC METHOD get all user_ids of an email address.
static _getUserIdsByInactivationPeriod($period)
get ids of all users that have been inactivated since at least the given period
static getUserIdByLogin($a_login)
static toUsernameWithoutDomain($a_login)
Static function removes Microsoft domain name from username webdav related.
setActive($a_active, $a_owner=0)
set user active state and updates system fields appropriately public
Class ilMailOptions this class handles user mails.
dropDesktopItem($a_item_id, $a_type)
drop an item from user's personal desktop
static _lookupExternalAccount($a_user_id)
lookup external account for login and authmethod
getClipboardObjects($a_type="", $a_top_nodes_only=false)
get all clipboard objects of user and specified type
static $is_desktop_item_loaded
static _getInstance()
get singleton instance
static _lookupSecondEmail($a_user_id)
Lookup second e-mail.
setInstitution($a_str)
set institution public
refreshLogin()
updates the login data of a "user" // TODO set date with now() should be enough public ...
static initInactivationDate($usrIds)
type $ilDB
static _getNumberOfUsersForStyle($a_skin, $a_style)
skins and styles
getAuthMode($a_auth_key=false)
get auth mode public
setLatitude($a_latitude)
Set Latitude.
getLogin()
get login / username public
setOfferingHelp(array $value=null)
Set help offering.
getActive()
get user active state public
addUserDefinedFieldEntry()
static _getInstance()
Get instance.
static _deleteUser($a_usr_id)
clipboardDeleteAll()
Delete objects of type for user.
static preloadIsDesktopItem($a_usr_id, $a_item_ids)
Preload desktop item information.
static lookupMatriculation($a_usr_id)
Lookup matriculation.
getTimeZone()
get timezone of user
setDepartment($a_str)
set department public
static _deleteSettingsOfUser($a_user)
Delete block settings of user.
static hasActiveSession($a_user_id, $a_session_id)
Check for simultaneous login.
getFirstname()
get firstname public
setSelectedCountry($a_val)
Set selected country (selection drop down)
getLoginByUserId($a_userid)
static getProfileStatusOfUsers($a_user_ids)
Get profile status.
setLoginAttempts($a_login_attempts)
getLastProfilePrompt()
returns user's last profile prompt
setCaptchaVerified($a_val)
Set captcha verified.
getMatriculation()
get matriculation number public
static _getFeedPass($a_user_id)
Lookup news feed password for user.
isPasswordChangeDemanded()
getGeneralInterestsAsText()
Get general interests as plain text.
setLanguage($a_str)
set user language public
removeUserPicture($a_do_update=true)
Remove user picture.
setFullname($a_title="", $a_firstname="", $a_lastname="")
builds a string with title + firstname + lastname method is used to build fullname in member variable...
getOrgUnitsRepresentation()
getDesktopItems($a_types="")
static _writePref($a_usr_id, $a_keyword, $a_value)
static _lookupFullname($a_user_id)
Lookup Full Name.
Class for user related exception handling in ILIAS.
setLastLogin($a_str)
set user's last login public
static _getUsersForClipboadObject($a_type, $a_id)
get all users, that have a certain object within their clipboard
getInactivationDate()
getter for inactivation date
setProfileIncomplete($a_prof_inc)
Custom block for external feeds on personal desktop.
getDepartment()
get department public
setAuthMode($a_str)
set auth mode public
setFirstLogin($a_str)
set user's first login
static deleteByOwner($a_owner_id)
Delete all entries for owner.
static _incrementLoginAttempts($a_usr_id)
$login
all user related data in single vars public
static get($a_var)
Get a value.
getLocationZoom()
Get Location Zoom.
setId($a_id)
set object id public
static _getExternalAccountsByAuthMode($a_auth_mode, $a_read_auth_default=false)
Get list of external account by authentication method Note: If login == ext_account for two user with...
setLastProfilePrompt($a_str)
set user's last profile prompt
setDesktopItemParameters($a_item_id, $a_type, $a_par)
set parameters of a desktop item entry
static set($a_var, $a_val)
Set a value.
static getDir($a_dir, $a_rec=false, $a_sub_dir="")
get directory
static resetToDefaults()
reset to defaults
static _getUserIdsByInactivityPeriod($period)
get ids of all users that have been inactive for at least the given period
static _getLastHistoryDataByUserId($a_usr_id)
Returns the last used loginname and the changedate of the passed user_id.
static _lookupId($a_user_str)
Lookup id by login.
getInstitution()
get institution public
setTimeLimitOwner($a_owner)
static setUseRelativeDates($a_status)
set use relative dates
assignData($a_data)
loads a record "user" from array public
static _lookupTitle($a_id)
lookup object title
static $personal_image_cache
static _isActive()
Static getter.
static deletePDItemsCache($a_usr_id)
Delete cache (add remove desktop item)
static _lookupClientIP($a_user_id)
Lookup client ip.
setLastname($a_str)
set lastame public
getCreateDate()
get create date public
Base class for nested set path based trees.
getLongitude()
Get Longitude.
getPhoneOffice()
get office phone public
static _needsExternalAccountByAuthMode($a_auth_mode)
Check if chosen auth mode needs an external account entry.
getStreet()
get street public
static subStr($a_str, $a_start, $a_length=null)
static userExists($a_usr_ids=array())
static getInstance()
Singelton get instance.
static _lookupGender($a_user_id)
Lookup gender.
setIsSelfRegistered($status)
getCountry()
Get country (free text)
static _resetLoginAttempts($a_usr_id)
static _getAuthMode($a_auth_mode, $a_db_handler='')
getPref($a_keyword)
get a user preference
static _getAuthModeName($a_auth_key)
static now()
Return current timestamp in Y-m-d H:i:s format.
static _getLoginAttempts($a_usr_id)
static _toggleActiveStatusOfUsers($a_usr_ids, $a_status)
Toggle active status of users.
static formatDate(ilDateTime $date, $a_skip_day=false, $a_include_wd=false, $include_seconds=false)
Format a date public.
static lookupTitle($a_page_id)
Lookup title.
read()
loads a record "user" from database private
getPublicName()
returns firstname lastname and login if profile is public, login otherwise
deleteUserDefinedFieldEntries()
setCountry($a_str)
Set country (free text)
static _readUsersProfileData($a_user_ids)
STATIC METHOD get user data of selected users.
getLookingForHelp()
Get help looking for.
setPhoneHome($a_str)
set home phone public
getOfferingHelpAsText()
Get help offering as plain text.
setTimeLimitUnlimited($a_unlimited)
static styleExistsForSkinId($skin_id, $style_id)
Tree handler for personal workspace.
setPref($a_keyword, $a_value)
set a user preference
static _verifyRegistrationHash($a_hash)
Verifies a registration hash.
static _getImportedUserId($i2_id)
updateUserDefinedFields()
setInactivationDate($inactivation_date)
setter for inactivation date
setZipcode($a_str)
set zipcode public
setDiskQuota($a_disk_quota)
Sets the minimal disk quota imposed by this user account.
static _externalAccountExists($a_external_account, $a_auth_mode)
Check if an external account name already exists.
getDateFormat()
get date format
isDesktopItem($a_item_id, $a_type)
check wether an item is on the users desktop or not
addDesktopItem($a_item_id, $a_type, $a_par="")
add an item to user's personal desktop
setAgreeDate($a_str)
set date the user account was accepted by the user nullindicates that the user has not accepted his a...
static setLanguage($a_lng)
set language
getAgreeDate()
get the date when the user accepted the user agreement public
static removeForUser($user_id)
Remove all notifications for given user.
static _getInstance()
Get singleton instance of this class.
static _loginExists($a_login, $a_user_id=0)
check if a login name already exists You may exclude a user from the check by giving his user id as 2...
static _removeTrackingDataForUser($user_id)
static _lookupFirstLogin($a_user_id)
lookup first login
setEmail($a_str)
set email public
getGeneralInterests()
Get general interests.
writeAccepted()
write accept date of user agreement to db
setPasswd($a_str, $a_type=IL_PASSWD_PLAIN)
set password public
static _removeItemFromDesktops($a_id)
removes object from all user's desktops public
static lookupOrgUnitsRepresentation($a_usr_id)
lokup org unit representation
getExternalAccount()
get external account
resetLastPasswordChange()
setTimeLimitUntil($a_until)
getPersonalWorkspaceDiskQuota()
setLogin($a_str)
set login / username public
getZipcode()
get zipcode public
getEmail()
get email address public
static _getAllUserData($a_fields=null, $active=-1)
STATIC METHOD get all user data.
setUserDefinedData($a_data)
static copyProfilePicturesToDirectory($a_user_id, $a_dir)
Get profile picture direcotory.
getLastname()
get lastname public
setOwner($a_owner)
set object owner
foreach($_POST as $key=> $value) $res
static execConvert($args)
execute convert command
static getUserLoginsByEmail($a_email)
get all user login names of an email address
setExternalAccount($a_str)
set external account
getId()
get object id public
getLastPasswordChangeTS()
exportPersonalData()
Export personal data.
static getLoginFromAuth()
Gets the username from $ilAuth, and converts it into an ILIAS login name.
static _getLocalAccountsForEmail($a_email)
check whether external account and authentication method matches with a user
setComment($a_str)
set referral comment public
getDiskQuota()
Returns the minimal disk quota imposed by this user account.
static _lookup($a_user_id, $a_field)
Private function for lookup methods.
static _lookupDescription($a_id)
lookup object description
Mail Box class Base class for creating and handling mail boxes.
importPersonalData( $a_file, $a_profile_data, $a_settings, $a_bookmarks, $a_notes, $a_calendar)
Import personal data.
static _getNumberOfUsersPerAuthMode()
get number of users per auth mode
static _deleteByUser($a_usr_id)
clipboardDeleteObjectsOfType($a_type)
Delete objects of type for user.
deletePref($a_keyword)
Deletes a userpref value of the user from the database public.
syncActive()
synchronizes current and stored user active values for the owner value to be set correctly, this function should only be called when an admin is approving a user account public
setHobby($a_str)
set hobby public
static searchUsers($a_search_str, $active=1, $a_return_ids_only=false, $filter_settings=false)
STATIC METHOD get the user_ids which correspond a search string.
setLocationZoom($a_locationzoom)
Set Location Zoom.
setMatriculation($a_str)
set matriculation number public
writePref($a_keyword, $a_value)
write userpref to user table private
setTimeLimitMessage($a_time_limit_message)
isCaptchaVerified()
Is user captcha verified?
getLastLogin()
returns last login date public
static _dropDesktopItem($a_usr_id, $a_item_id, $a_type)
drop an item from user's personal desktop
clipboardHasObjectsOfType($a_type)
Check whether clipboard has objects of a certain type.
getOfferingHelp()
Get help offering.
redirection script todo: (a better solution should control the processing via a xml file) ...
getLookingForHelpAsText()
Get help looking for as plain text.
setSecondEmail($second_email)
static _removeTrackingDataForUser($user_id)
static $is_desktop_item_cache
static _setFeedPass($a_user_id, $a_password)
Set news feed password for user.
static stripSlashes($a_str, $a_strip_html=true, $a_allow="")
strip slashes if magic qoutes is enabled
__construct($a_user_id=0, $a_call_by_reference=false)
Constructor public.
setGender($a_str)
set gender public
static signFile($path_to_file)
static _uploadPersonalPicture($tmp_file, $obj_id)
Create a personal picture image file from a temporary image file.
writePrefs()
write all userprefs private
static _destroyByUserId($a_user_id)
Destroy session.
static skinExists($skin_id, ilSystemStyleConfig $system_style_config=null)
Check whether a skin exists.
sendPersonalDataFile()
Send personal data file.
getUTitle()
get user title (note: don't mix up this method with getTitle() that is derived from ilObject and gets...
getPersonalPicturePath($a_size="small", $a_force_pic=false)
Get path to personal picture.
static deleteEntriesOfUser($a_user_id)
Delete data of user.
updateMultiTextFields($a_create=false)
Write multi-text values to DB.
setTimeLimitFrom($a_from)
static _getUsersForFolder($ref_id, $active)
get users for a category or from system folder
addObjectToClipboard( $a_item_id, $a_type, $a_title, $a_parent=0, $a_time=0, $a_order_nr=0)
add an item to user's personal clipboard
setCity($a_str)
set city public
getPCClipboardContent()
Add a page content item to PC clipboard (should go to another class)
static _checkExternalAuthAccount($a_auth, $a_account, $tryFallback=true)
check whether external account and authentication method matches with a user
This is the super class of all custom blocks.
if(php_sapi_name() !='cli') $in
setPhoneOffice($a_str)
set office phone public
update($pash, $contents, Config $config)
setLastPasswordChangeTS($a_last_password_change_ts)
getLatitude()
Get Latitude.
foreach($mandatory_scripts as $file) $timestamp
static getUserSubsetByPreferenceValue($a_user_ids, $a_keyword, $a_val)
For a given set of user IDs return a subset that has a given user preference set. ...
getSelectedCountry()
Get selected country (selection drop down)
getComment()
get referral comment public
buildTextFromArray($a_attr)
Convert multi-text values to plain text.
deleteMultiTextFields()
Remove multi-text values from DB.
setClientIP($a_str)
set client ip number public
getPersonalDataExportFile()
Get personal data export file.
static _lookupAuthMode($a_usr_id)
lookup auth mode
static _addDesktopItem($a_usr_id, $a_item_id, $a_type, $a_par="")
add an item to user's personal desktop
static _lookupDesktopItems($user_id, $a_types="")
get all desktop items of user and specified type
static _setUserInactive($a_usr_id)
getFullname($a_max_strlen=0)
get fullname public
static _isAnonymous($usr_id)
static _lookupLanguage($a_usr_id)
static formatPeriod(ilDateTime $start, ilDateTime $end, $a_skip_starting_day=false)
Format a period of two date Shows: 14.
setFirstname($a_str)
set firstname public
getPasswdType()
get password type
static _getUsersForGroup($a_mem_ids, $active=-1)
return user data for group members
removeObjectFromClipboard($a_item_id, $a_type)
remove object from user's personal clipboard
static _deleteUser($a_usr_id)
setGeneralInterests(array $value=null)
Set general interests.
bookmark folder (note: this class handles personal bookmarks folders only)
static resetInactivationDate($usrIds)
type $ilDB
static _lookupEmail($a_user_id)
Lookup email.
static getInstance()
Singelton get instance.
static _lookupPref($a_usr_id, $a_keyword)
getTimeFormat()
get time format
static _generateRegistrationHash($a_usr_id)
Generates a unique hashcode for activating a user profile after registration.
setLookingForHelp(array $value=null)
Set help looking for.
static _lookupFeedHash($a_user_id, $a_create=false)
Lookup news feed hash for user.
static getFirstLettersOfLastnames()
Get first letters of all lastnames.
setFax($a_str)
set fax public
static removeSingleUserFromTable($usr_id)
getPhoneHome()
get home phone public
static _getUsersForIds($a_mem_ids, $active=-1, $timelimitowner=-1)
return user data for given user id
static _deleteUser($a_usr_id)
getHobby()
get hobby public
setPasswordSalt($password_salt)
static _getExportDirectory($a_obj_id, $a_type="xml", $a_obj_type="", $a_entity="")
Get export directory for an repository object.
static _updateLastLogin($a_usr_id, $a_last_login=null)
STATIC METHOD updates the last_login field of user with given id to given or current date...
getGender()
get gender public
const USER_FOLDER_ID
Class ilObjUserFolder.
getFirstLogin()
returns first login date
setLastPasswordChangeToNow()
static findInterests($a_term, $a_user_id=null, $a_field_id=null)
setUTitle($a_str)
set user title (note: don't mix up this method with setTitle() that is derived from ilObject and sets...
static getLogger($a_component_id)
Get component logger.
setSkin($a_str)
set user skin (template set) public
setApproveDate($a_str)
set date the user account was activated null indicates that the user has not yet been activated publ...
static _moveUsersToStyle($a_from_skin, $a_from_style, $a_to_skin, $a_to_style)
skins and styles
setPasswordEncodingType($password_encryption_type)
static _lookupActive($a_usr_id)
Check user account active.
getStoredActive($a_id)
get user active state
getClipboardChilds($a_parent, $a_insert_time)
Get childs of an item.
static _lookupFields($a_user_id)
lookup fields (deprecated; use more specific methods instead)
static _writeAuthMode($a_usr_id, $a_auth_mode)
getApproveDate()
get the date when the user account was approved public
setStreet($a_str)
set street public
static _getUsersForRole($role_id, $active=-1)
return array of complete users which belong to a specific role
update()
update object in db
setPhoneMobile($a_str)
set mobile phone public
Class for user related exception handling in ILIAS.
static getUsersAgreed($a_agreed=true, $a_users=null)
Get users that have or have not agreed to the user agreement.
getClientIP()
get client ip number public
static deleteByUserId($a_user_id)
setLastUpdate($a_str)
set last update of user data set public
static _getPreferences($user_id)
get preferences for user
hasToAcceptTermsOfService()
readMultiTextFields()
Fetch multi-text values from DB.
static delDir($a_dir, $a_clean_only=false)
removes a dir and all its content (subdirs and files) recursively
static getWebspaceDir($mode="filesystem")
get webspace directory
static __extractId($ilias_id, $inst_id)
extract ref id from role title, e.g.
getLanguage()
returns a 2char-language-string public
static _getInstance()
Get instance of ilSecuritySettings.
static _getUserData($a_internalids)
return user data for given user ids
getPasswordEncodingType()
static deleteUserPortfolios($a_user_id)
Delete all portfolio data for user.
static getInstance()
Single method to reduce footprint (included files, created instances)
hasToAcceptTermsOfServiceInSession($status=null)
static _writeHistory($a_usr_id, $a_login)
setCurrentLanguage($a_val)
Set current language.
static _writeExternalAccount($a_usr_id, $a_ext_id)
hasPublicProfile()
returns true if public is profile, false otherwise
static _getAllUserAssignedStyles()
skins and styles
for($i=6; $i< 13; $i++) for($i=1; $i< 13; $i++) $d
$GLOBALS['JPEG_Segment_Names']
Global Variable: XMP_tag_captions.
static _doesLoginnameExistInHistory($a_login)
Checks wether the passed loginname already exists in history.
addToPCClipboard($a_content, $a_time, $a_nr)
Add a page content item to PC clipboard (should go to another class)
updateLogin($a_login)
update login name
static _deleteAllPref($a_user_id)
Deletes a userpref value of the user from the database public.
static deliverFile( $a_file, $a_filename, $a_mime='', $isInline=false, $removeAfterDelivery=false, $a_exit_after=true)
deliver file for download via browser.
static _deleteUser($a_usr_id)
setLongitude($a_longitude)
Set Longitude.
static _isDesktopItem($a_usr_id, $a_item_id, $a_type)
check wether an item is on the users desktop or not
readPrefs()
get all user preferences private
getPhoneMobile()
get mobile phone public
static _lookupLastLogin($a_user_id)
lookup last login