3 declare(strict_types=1);
39 $this->db = $DIC->database();
40 $this->eventHandler = $DIC->event();
41 $this->obj_id = $a_obj_id;
51 $ilDB = $DIC->database();
52 $query =
'SELECT count(usr_id) num from crs_waiting_list WHERE obj_id = ' .
$ilDB->quote($a_obj_id,
'integer');
55 return (
int) $row->num;
64 $ilDB = $DIC->database();
66 $query =
"DELETE FROM crs_waiting_list WHERE obj_id = " .
$ilDB->quote($a_obj_id,
'integer') .
" ";
74 $ilDB = $DIC->database();
75 $query =
"DELETE FROM crs_waiting_list WHERE usr_id = " .
$ilDB->quote($a_usr_id,
'integer');
83 $ilDB = $DIC->database();
84 $query =
"DELETE FROM crs_waiting_list " .
85 "WHERE usr_id = " .
$ilDB->quote($a_usr_id,
'integer') .
' ' .
86 "AND obj_id = " .
$ilDB->quote($a_obj_id,
'integer');
100 $query =
"INSERT INTO crs_waiting_list (obj_id,usr_id,sub_time) " .
102 $this->db->quote($this->
getObjId(),
'integer') .
", " .
103 $this->db->quote($a_usr_id,
'integer') .
", " .
104 $this->db->quote(time(),
'integer') .
" " .
113 $query =
"UPDATE crs_waiting_list " .
114 "SET sub_time = " . $this->db->quote($a_subtime,
'integer') .
" " .
115 "WHERE usr_id = " . $this->db->quote($a_usr_id,
'integer') .
" " .
116 "AND obj_id = " . $this->db->quote($this->
getObjId(),
'integer') .
" ";
122 $query =
"DELETE FROM crs_waiting_list " .
123 " WHERE obj_id = " . $this->db->quote($this->
getObjId(),
'integer') .
" " .
124 " AND usr_id = " . $this->db->quote($a_usr_id,
'integer') .
" ";
125 $affected = $this->db->manipulate(
$query);
127 return $affected > 0;
132 return isset($this->users[$a_usr_id]);
135 public static function _isOnList(
int $a_usr_id,
int $a_obj_id): bool
139 $ilDB = $DIC[
'ilDB'];
140 if (isset(self::$is_on_list[$a_usr_id][$a_obj_id])) {
141 return self::$is_on_list[$a_usr_id][$a_obj_id];
144 $query =
"SELECT usr_id " .
145 "FROM crs_waiting_list " .
146 "WHERE obj_id = " .
$ilDB->quote($a_obj_id,
'integer') .
" " .
147 "AND usr_id = " .
$ilDB->quote($a_usr_id,
'integer');
149 return (
bool)
$res->numRows();
162 $ilDB = $DIC[
'ilDB'];
163 foreach ($a_usr_ids as $usr_id) {
164 foreach ($a_obj_ids as $obj_id) {
165 self::$is_on_list[$usr_id][
$obj_id] =
false;
168 $query =
"SELECT usr_id, obj_id " .
169 "FROM crs_waiting_list " .
171 $ilDB->in(
"obj_id", $a_obj_ids,
false,
"integer") .
" AND " .
172 $ilDB->in(
"usr_id", $a_usr_ids,
false,
"integer");
175 self::$is_on_list[(
int) $rec[
"usr_id"]][(
int) $rec[
"obj_id"]] =
true;
181 return count($this->users);
186 return isset($this->users[$a_usr_id]) ? $this->users[$a_usr_id][
'position'] : -1;
206 return $this->users[$a_usr_id] ?? [];
220 $query =
"SELECT * FROM crs_waiting_list " .
221 "WHERE obj_id = " . $this->db->quote($this->
getObjId(),
'integer') .
" ORDER BY sub_time";
227 $this->users[(
int) $row->usr_id][
'position'] = $counter;
228 $this->users[(
int) $row->usr_id][
'time'] = (
int) $row->sub_time;
229 $this->users[(
int) $row->usr_id][
'usr_id'] = (
int) $row->usr_id;
231 $this->user_ids[] = (
int) $row->usr_id;
removeFromList(int $a_usr_id)
getUser(int $a_usr_id)
get user
static _preloadOnListInfo(array $a_usr_ids, array $a_obj_ids)
Preload on list info.
getPosition(int $a_usr_id)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
__construct(int $a_obj_id)
static _deleteAll(int $a_obj_id)
getAllUsers()
get all users on waiting list public
static _deleteUser(int $a_usr_id)
static deleteUserEntry(int $a_usr_id, int $a_obj_id)
updateSubscriptionTime(int $a_usr_id, int $a_subtime)
static lookupListSize(int $a_obj_id)
static _isOnList(int $a_usr_id, int $a_obj_id)
ilAppEventHandler $eventHandler