35 'object_id' =>
'integer',
36 'allow_anonymous' =>
'boolean',
37 'allow_custom_usernames' =>
'boolean',
38 'enable_history' =>
'boolean',
39 'restrict_history' =>
'boolean',
40 'autogen_usernames' =>
'string',
41 'room_type' =>
'string',
42 'allow_private_rooms' =>
'integer',
43 'display_past_msgs' =>
'integer',
44 'private_rooms_enabled' =>
'boolean'
57 return $this->
object->getTitle();
69 global $rbacsystem,
$lng;
71 if( !is_array($permissions) )
73 $permissions = array( $permissions );
76 foreach( $permissions as $permission )
78 if( !$rbacsystem->checkAccess( $permission,
$ref_id ) )
103 global $rbacsystem,
$lng;
105 if( !is_array($permissions) )
107 $permissions = array( $permissions );
110 foreach( $permissions as $permission )
112 if( !$rbacsystem->checkAccessOfUser($usr_id, $permission,
$ref_id ) )
128 return $this->
object->getDescription();
139 return $this->settings[$name];
150 $this->settings[$name] = $value;
176 if(is_array($message))
178 $subRoom = (int)$message[
'sub'];
180 else if(is_object($message))
182 $subRoom = (int)$message->sub;
185 $id =
$ilDB->nextId(self::$historyTable);
189 'hist_id' => array(
'integer', $id),
190 'room_id' => array(
'integer', $this->roomId),
191 'sub_room' => array(
'integer', $subRoom),
192 'message' => array(
'text', json_encode($message)),
193 'timestamp' => array(
'integer', time()),
222 $query =
'SELECT user_id FROM ' . self::$userTable .
' WHERE room_id = %s AND user_id = %s';
223 $types = array(
'integer',
'integer');
224 $values = array($this->roomId, $user->
getUserId());
233 'room_id' => array(
'integer', $this->roomId),
234 'user_id' => array(
'integer', $user->
getUserId())
237 'userdata' => array(
'text', json_encode($userdata)),
238 'connected' => array(
'integer', time()),
261 $query =
'SELECT userdata FROM ' . self::$userTable .
' WHERE room_id = %s';
262 $types = array(
'integer');
263 $values = array($this->roomId);
267 while(
$row =
$ilDB->fetchAssoc( $rset ) )
269 $users[] = json_decode(
$row[
'userdata'] );
299 $query =
'SELECT * FROM ' . self::$userTable .
' WHERE room_id = %s AND ' .
300 $ilDB->in(
'user_id', $userIds,
false,
'integer' );
302 $types = array(
'integer');
303 $values = array($this->roomId);
308 $query =
'SELECT proom_id FROM ' . self::$privateRoomsTable .
' WHERE parent_id = %s';
309 $rset_prooms =
$ilDB->queryF(
$query, array(
'integer'), array($this->roomId));
313 while($row_prooms =
$ilDB->fetchAssoc($rset_prooms)) {
314 $prooms[] = $row_prooms[
'proom_id'];
317 if (
true || $this->
getSetting(
'enable_history' )) {
318 $query =
'UPDATE ' . self::$privateSessionsTable .
' SET disconnected = %s WHERE ' .
$ilDB->in(
'user_id', $userIds,
false,
'integer') .
' AND ' .
$ilDB->in(
'proom_id', $prooms,
false,
'integer');
319 $ilDB->manipulateF(
$query, array(
'integer'), array(time()));
322 $query =
'DELETE FROM ' . self::$privateSessionsTable .
' WHERE ' .
$ilDB->in(
'user_id', $userIds,
false,
'integer') .
' AND ' .
$ilDB->in(
'proom_id', $prooms,
false,
'integer');
326 $query =
'DELETE FROM ' . self::$userTable .
' WHERE room_id = %s AND ' .
327 $ilDB->in(
'user_id', $userIds,
false,
'integer' );
329 $types = array(
'integer');
330 $values = array($this->roomId);
336 $id =
$ilDB->nextId(self::$sessionTable);
340 'sess_id' => array(
'integer', $id),
341 'room_id' => array(
'integer', $this->roomId),
342 'user_id' => array(
'integer',
$row[
'user_id']),
343 'userdata' => array(
'text',
$row[
'userdata']),
344 'connected' => array(
'integer',
$row[
'connected']),
345 'disconnected' => array(
'integer', time())
350 while(
$row =
$ilDB->fetchAssoc( $rset ) );
375 $localSettings = array();
377 foreach( $this->availableSettings as $setting => $type )
380 if ($type ==
'boolean') {
387 if (!$localSettings[
'room_type'][1]) {
388 $localSettings[
'room_type'][1] =
'repository';
394 self::$settingsTable,
396 array(
'room_id' => array(
'integer', $this->roomId) )
401 $this->roomId =
$ilDB->nextId( self::$settingsTable );
403 $localSettings[
'room_id'] = array(
404 $this->availableSettings[
'room_id'], $this->roomId
407 $ilDB->insert( self::$settingsTable, $localSettings );
431 $query =
'SELECT * FROM ' . self::$settingsTable .
' WHERE object_id = %s';
432 $types = array(
'integer');
433 $values = array($object_id);
439 $room->initialize(
$row );
451 public static function byRoomId($room_id, $initObject =
false)
455 $query =
'SELECT * FROM ' . self::$settingsTable .
' WHERE room_id = %s';
457 $types = array(
'integer');
458 $values = array($room_id);
465 $room->initialize(
$row );
483 $this->roomId = $rowdata[
'room_id'];
485 foreach( $this->availableSettings as $setting => $type )
487 if( isset($rowdata[$setting]) )
489 settype($rowdata[$setting], $this->availableSettings[$setting]);
490 $this->
setSetting( $setting, $rowdata[$setting] );
517 $query =
'SELECT count(user_id) as cnt FROM ' . self::$userTable .
518 ' WHERE room_id = %s AND user_id = %s';
520 $types = array(
'integer',
'integer');
521 $values = array($this->roomId, $chat_userid);
524 if( $rset && (
$row =
$ilDB->fetchAssoc( $rset )) &&
$row[
'cnt'] == 1 )
534 $query =
'SELECT count(user_id) cnt FROM ' . self::$privateRoomsAccessTable .
535 ' WHERE proom_id = %s AND user_id = %s';
537 $types = array(
'integer',
'integer');
538 $values = array($proom_id, $chat_userid);
541 if( $rset && (
$row =
$ilDB->fetchAssoc( $rset )) &&
$row[
'cnt'] == 1 )
544 $query =
'SELECT count(*) cnt FROM ' . self::$privateRoomsTable .
545 ' WHERE proom_id = %s AND owner = %s';
547 $types = array(
'integer',
'integer');
548 $values = array($proom_id, $chat_userid);
551 if( $rset && (
$row =
$ilDB->fetchAssoc( $rset )) &&
$row[
'cnt'] == 1 )
566 $ilDB->manipulate(
'DELETE FROM ' . self::$userTable );
567 $ilDB->manipulate(
'UPDATE ' . self::$privateRoomsTable .
' SET closed = ' .
$ilDB->quote( time() ,
'integer') .
' WHERE closed = 0 OR closed IS NULL');
568 $ilDB->manipulate(
'UPDATE ' . self::$privateSessionsTable .
' SET disconnected = ' .
$ilDB->quote( time() ,
'integer') .
' WHERE disconnected = 0');
592 'INNER JOIN ' . self::$privateSessionsTable .
' pSessionTable ' .
593 'ON pSessionTable.user_id = ' .$ilDB->quote( $restricted_session_userid,
'integer' ) .
' ' .
594 'AND pSessionTable.proom_id = historyTable.sub_room ' .
595 'AND timestamp >= pSessionTable.connected '.
596 'AND timestamp <= pSessionTable.disconnected ';
600 'SELECT historyTable.* ' .
601 'FROM ' . self::$historyTable .
' historyTable ' . $join .
' ' .
602 'WHERE historyTable.room_id = ' . $this->
getRoomId();
608 $filter[] =
'timestamp >= ' .
$ilDB->quote( $from->getUnixTime(),
'integer' );
613 $filter[] =
'timestamp <= ' .
$ilDB->quote( $to->getUnixTime(),
'integer' );
617 $query .=
' AND ' . join(
' AND ', $filter );
618 $query .=
' ORDER BY timestamp ASC';
623 while(
$row =
$ilDB->fetchAssoc( $rset ) )
625 $row[
'message'] = json_decode(
$row[
'message'] );
626 $row[
'message']->timestamp =
$row[
'timestamp'];
627 if (
$row[
'message']->
public !==
null && !
$row[
'message']->
public && !in_array(
$ilUser->getId(), explode(
',',
$row[
'recipients']))) {
639 $query =
'SELECT proom_id, title FROM ' . self::$privateRoomsTable .
' WHERE proom_id IN (
640 SELECT proom_id FROM '.self::$privateSessionsTable.
' WHERE connected >= %s AND disconnected <= %s AND user_id = %s
642 ) AND parent_id = %s';
644 $rset =
$ilDB->queryF(
$query, array(
'integer',
'integer',
'integer',
'integer'), array($from->getUnixTime(), $to->getUnixTime(), $user_id, $room_id));
646 while(
$row =
$ilDB->fetchAssoc( $rset ) )
665 $upload_id =
$ilDB->nextId( self::$uploadTable );
670 'upload_id' => array(
'integer', $upload_id),
671 'room_id' => array(
'integer', $this->roomId),
672 'user_id' => array(
'integer', $user_id),
674 'filetype' => array(
'text', $type),
675 'timestamp' => array(
'integer', time())
694 'room_id' => array(
'integer', $this->roomId),
695 'user_id' => array(
'integer', $user_id)
698 'timestamp' => array(
'integer', time()),
716 if(!is_array($user_id))
718 $user_id = array($user_id);
721 $query =
'DELETE FROM ' . self::$banTable .
' WHERE room_id = %s AND ' .
$ilDB->in(
'user_id', $user_id,
false,
'integer');
723 $types = array(
'integer');
726 return $ilDB->manipulateF(
$query, $types, $values);
741 $query =
'SELECT COUNT(user_id) cnt FROM ' . self::$banTable .
' WHERE user_id = %s AND room_id = %s';
743 $types = array(
'integer',
'integer');
744 $values = array($user_id, $this->
getRoomId());
748 if($rset && (
$row =
$ilDB->fetchAssoc($rset)) &&
$row[
'cnt'])
767 $query =
'SELECT chb.* FROM ' . self::$banTable .
' chb INNER JOIN usr_data ud ON chb.user_id = ud.usr_id WHERE chb.room_id = %s ';
768 $types = array(
'integer');
775 while(
$row =
$ilDB->fetchAssoc( $rset ) )
777 if(
$row[
'user_id'] > 0 )
781 'user_id' => $user->getId(),
782 'firstname' => $user->getFirstname(),
783 'lastname' => $user->getLastname(),
784 'login' => $user->getLogin(),
785 'remark' =>
$row[
'remark']
814 $query =
'SELECT * FROM ' . self::$sessionTable .
' WHERE user_id = ' .
816 ' ORDER BY connected DESC';
818 $ilDB->setLimit( 1 );
841 $query =
'SELECT * FROM ' . self::$sessionTable
842 .
' WHERE room_id = '.
844 ' ORDER BY connected DESC';
850 while(
$row =
$ilDB->fetchAssoc( $rset ) )
862 $nextId =
$ilDB->nextId(self::$privateRoomsTable);
864 self::$privateRoomsTable,
866 'proom_id' => array(
'integer', $nextId),
867 'parent_id' => array(
'integer', $this->roomId),
868 'title' => array(
'text', $title),
869 'owner' => array(
'integer', $owner->
getUserId()),
870 'created' => array(
'integer', time()),
871 'is_public' => array(
'integer',
$settings[
'public']),
883 'UPDATE ' . self::$privateRoomsTable .
' SET closed = %s WHERE proom_id = %s',
884 array(
'integer',
'integer'),
892 $query =
'SELECT proom_id FROM ' . self::$privateRoomsTable .
' WHERE proom_id = %s AND owner = %s';
893 $types = array(
'integer',
'integer');
894 $values = array($proom_id, $user_id);
898 if ($rset &&
$ilDB->fetchAssoc($rset)) {
908 public function inviteUserToPrivateRoom($user_id, $proom_id)
915 $query =
'DELETE FROM ' . self::$privateRoomsAccessTable .
' WHERE user_id = %s AND proom_id = %s';
916 $types = array(
'integer',
'integer');
917 $values = array($user_id, $proom_id);
921 $ilDB->insert(self::$privateRoomsAccessTable, array(
922 'user_id' => array(
'integer', $user_id),
923 'proom_id' => array(
'integer', $proom_id)
935 include_once
'Services/Link/classes/class.ilLink.php';
962 public function sendInvitationNotification($gui, $sender, $recipient_id, $subScope = 0, $invitationLink =
'')
969 if($gui && !$invitationLink)
971 $invitationLink = $this->
getChatURL($gui, $subScope);
974 if($recipient_id > 0 && !in_array(ANONYMOUS_USER_ID, array($recipient_id)))
976 if(is_numeric($sender) && $sender > 0)
978 $sender_id = $sender;
983 $public_name = $usr->getPublicName();
987 if($sender->getUserId() > 0)
989 $sender_id = $sender->getUserId();
993 $sender_id = ANONYMOUS_USER_ID;
995 $public_name = $sender->getUsername();
999 throw new InvalidArgumentException(
'$sender must be an instance of ilChatroomUser or an id of an ilObjUser instance');
1002 $lng->loadLanguageModule(
'mail');
1005 $bodyParams = array(
1006 'link' => $invitationLink,
1007 'inviter_name' => $public_name,
1009 'salutation' => $lng->txt(
'mail_salutation_' . $recipient->getGender()) .
' ' . $recipient->getFullname()
1017 require_once
'Services/Notifications/classes/class.ilNotificationConfig.php';
1019 $notification->setTitleVar(
'chat_invitation', $bodyParams,
'chatroom');
1020 $notification->setShortDescriptionVar(
'chat_invitation_short', $bodyParams,
'chatroom');
1021 $notification->setLongDescriptionVar(
'chat_invitation_long', $bodyParams,
'chatroom');
1022 $notification->setAutoDisable(
false);
1023 $notification->setLink($invitationLink);
1024 $notification->setIconPath(
'templates/default/images/icon_chtr.svg');
1028 $notification->setHandlerParam(
'mail.sender', $sender_id);
1030 $notification->notifyByUsers(array($recipient_id));
1037 $this->inviteUserToPrivateRoom($user_id, $proom_id);
1043 $query =
'SELECT title FROM ' . self::$privateRoomsTable .
' WHERE proom_id = %s';
1044 $types = array(
'integer');
1045 $values = array($proom_id);
1050 return $row[
'title'];
1061 SELECT roomtable.title, roomtable.proom_id, accesstable.user_id id, roomtable.owner rowner
1062 FROM ' . self::$privateRoomsTable .
' roomtable
1063 LEFT JOIN '.self::$privateRoomsAccessTable.
' accesstable
1064 ON roomtable.proom_id = accesstable.proom_id
1065 AND accesstable.user_id = %s
1066 WHERE parent_id = %s
1067 AND (closed = 0 OR closed IS NULL)
1068 AND (accesstable.user_id IS NOT NULL OR roomtable.owner = %s)';
1069 $types = array(
'integer',
'integer',
'integer');
1070 $values = array($userid, $this->roomId, $userid);
1074 while(
$row =
$ilDB->fetchAssoc( $rset ) )
1088 SELECT chatroom_users.user_id FROM ' . self::$privateSessionsTable .
'
1089 INNER JOIN chatroom_users ON chatroom_users.user_id = ' . self::$privateSessionsTable .
'.user_id WHERE proom_id = %s AND disconnected = 0
1091 $types = array(
'integer');
1092 $values = array($private_room_id);
1097 while (
$row =
$ilDB->fetchAssoc($rset)) {
1098 $users[
$row[
'user_id']] =
$row[
'user_id'];
1101 return array_values($users);
1108 $query =
'SELECT proom_id id FROM ' . self::$privateSessionsTable .
' WHERE user_id = %s AND proom_id = %s AND disconnected = 0';
1109 $types = array(
'integer',
'integer');
1110 $values = array($user_id, $room_id);
1112 if (
$ilDB->fetchAssoc($rset))
1123 $id =
$ilDB->nextId(self::$privateSessionsTable);
1125 self::$privateSessionsTable,
1127 'psess_id' => array(
'integer', $id),
1128 'proom_id' => array(
'integer', $room_id),
1129 'user_id' => array(
'integer', $user_id),
1130 'connected' => array(
'integer', time()),
1131 'disconnected' => array(
'integer', 0),
1148 self::$privateSessionsTable,
1150 'disconnected' => array(
'integer', time())
1153 'proom_id' => array(
'integer', $room_id),
1154 'user_id' => array(
'integer', $user_id)
1162 $query =
'SELECT count(user_id) as cnt FROM ' . self::$userTable .
1163 ' WHERE room_id = %s';
1165 $types = array(
'integer');
1166 $values = array($this->roomId);
1169 if( $rset && (
$row =
$ilDB->fetchAssoc( $rset )) &&
$row[
'cnt'] == 1 )
1178 $query =
'SELECT title FROM ' . self::$privateRoomsTable .
' WHERE parent_id = %s and closed = 0';
1179 $rset =
$ilDB->queryF(
$query, array(
'integer'), array($this->roomId));
1183 while(
$row =
$ilDB->fetchAssoc($rset)) {
1184 $titles[] =
$row[
'title'];
1190 if(!in_array($title . $suffix, $titles)) {
1197 $suffix =
' (' . $i .
')';
1207 SELECT private_rooms.proom_id id, MIN(disconnected) min_disconnected, MAX(disconnected) max_disconnected
1208 FROM ' . self::$privateSessionsTable .
' private_sessions
1209 INNER JOIN '.self::$privateRoomsTable.
' private_rooms
1210 ON private_sessions.proom_id = private_rooms.proom_id
1212 GROUP BY private_rooms.proom_id
1213 HAVING MIN(disconnected) > 0 AND MAX(disconnected) < %s';
1214 $rset =
$ilDB->queryF(
1217 array(time() + 60 * 5)
1222 while (
$row =
$ilDB->fetchAssoc($rset)) {
1226 $query =
'SELECT DISTINCT proom_id, room_id, object_id FROM ' . self::$privateRoomsTable
1227 .
' INNER JOIN ' . self::$settingsTable .
' ON parent_id = room_id '
1228 .
' WHERE ' .
$ilDB->in(
'proom_id', $rooms,
false,
'integer');
1232 while(
$row =
$ilDB->fetchAssoc($rset)) {
1234 'proom_id' =>
$row[
'proom_id'],
1235 'room_id' =>
$row[
'room_id'],
1236 'object_id' =>
$row[
'object_id']
1251 public function getAllRooms($user_id)
1259 SELECT room_id, od.title
1262 INNER JOIN " . self::$settingsTable .
"
1263 ON object_id = od.obj_id
1265 INNER JOIN " . self::$privateRoomsTable .
" prt
1268 WHERE od.type = 'chtr'
1271 $types = array(
'integer');
1272 $values = array($user_id);
1280 $room_id =
$row[
'room_id'];
1281 $rooms[$room_id] =
$row[
'title'];
1294 SELECT proom_id, parent_id
1295 FROM chatroom_prooms
1296 WHERE parent_id = %s
1301 $types = array(
'integer',
'integer' );
1302 $values = array( $parent_room, $user_id );
1306 $priv_rooms = array();
1310 $proom_id =
$row[
'proom_id'];
1311 $priv_rooms[$proom_id] =
$row[
'parent_id'];
1330 FROM object_reference objr
1332 INNER JOIN chatroom_settings cs
1333 ON cs.object_id = objr.obj_id
1335 INNER JOIN object_data od
1336 ON od.obj_id = cs.object_id
1338 WHERE cs.room_id = %s
1341 $types = array(
'integer' );
1342 $values = array( $room_id );
1348 return $row[
'ref_id'];
1357 $ilDB->setLimit($number * 2);
1358 $rset =
$ilDB->queryF(
'SELECT * FROM ' . self::$historyTable .
' WHERE room_id = %s AND sub_room = 0 ORDER BY timestamp DESC', array(
'integer'), array($this->roomId));
1362 while((
$row =
$ilDB->fetchAssoc($rset)) && $result_count < $number) {
1363 $tmp = json_decode(
$row[
'message']);
1364 if ($chatuser !==
null && $tmp->public == 0 && $tmp->recipients) {
1365 if (in_array($chatuser->getUserId(), explode(
',',$tmp->recipients))) {
1370 else if ($tmp->public == 1) {
1379 public function getLastMessagesForChatViewer($number, $chatuser =
null)
1386 $ilDB->setLimit($number);
1387 $rset =
$ilDB->query(
1389 FROM ' . self::$historyTable .
'
1390 WHERE room_id = '.
$ilDB->quote($this->roomId,
'integer').
'
1393 (' .
$ilDB->like(
'message',
'text',
'%"type":"message"%') .
' AND ' .
$ilDB->like(
'message',
'text',
'%"public":1%') .
' AND ' .
$ilDB->like(
'message',
'text',
'%"recipients":null%') .
')
1395 ' .
$ilDB->like(
'message',
'text',
'%"type":"%connected"%') .
')
1396 ORDER BY timestamp DESC'
1400 while((
$row =
$ilDB->fetchAssoc($rset)))
1402 $tmp = json_decode(
$row[
'message']);
1403 if($tmp->type !=
'message' &&
$row[
'timestamp'] && !is_numeric($tmp->timestamp))
1405 $tmp->timestamp =
$row[
'timestamp'] * 1000;
1417 'DELETE FROM ' . self::$historyTable .
' WHERE room_id = %s AND sub_room = %s',
1418 array(
'integer',
'integer'),
1419 array($this->roomId, (
int)$sub_room)
1425 'DELETE FROM ' . self::$privateSessionsTable .
' WHERE proom_id = %s AND disconnected < %s',
1426 array(
'integer',
'integer'),
1427 array($sub_room, time())
1433 'DELETE FROM ' . self::$sessionTable .
' WHERE room_id = %s AND disconnected < %s',
1434 array(
'integer',
'integer'),
1435 array($this->roomId, time())
1440 public static function getUntrashedChatReferences($filter = array())
1450 SELECT od.obj_id, od.title, ore.ref_id, od.type, odp.title parent_title
1452 INNER JOIN object_reference ore ON ore.obj_id = od.obj_id
1453 INNER JOIN tree t ON t.child = ore.ref_id
1454 INNER JOIN tree p ON p.child = t.parent
1455 INNER JOIN object_reference orep ON orep.ref_id = p.child
1456 INNER JOIN object_data odp ON odp.obj_id = orep.obj_id
1457 INNER JOIN object_reference pre ON pre.ref_id = t.parent
1458 INNER JOIN object_data pod ON pod.obj_id = pre.obj_id
1461 if(isset($filter[
'last_activity']))
1463 $threshold =
$ilDB->quote($filter[
'last_activity'],
'integer');
1465 INNER JOIN chatroom_settings ON chatroom_settings.object_id = od.obj_id
1466 INNER JOIN chatroom_history ON chatroom_history.room_id = chatroom_settings.room_id AND chatroom_history.timestamp > $threshold
1471 WHERE od.type = %s AND t.tree > 0 AND ore.deleted IS NULL
1472 GROUP BY od.obj_id, od.title, ore.ref_id, od.type, odp.title
getUserId()
Returns Ilias User ID.
getUsername()
Returns username from Object or SESSION.
getBannedUsers()
Returns an multidimensional array containing userdata from users having an entry in banTable with mat...
getPrivateRoomSessions(ilDateTime $from=null, ilDateTime $to=null, $user_id=0, $room_id=0)
inviteUserToPrivateRoomByLogin($login, $proom_id)
addHistoryEntry($message, $recipient=null, $publicMessage=true)
Inserts entry into historyTable.
isSubscribed($chat_userid)
Returns true if entry exists in userTable matching given $chat_userid and $this->roomId.
getRefIdByRoomId($room_id)
Returns ref_id of given room_id.
saveFileUploadToDb($user_id, $filename, $type)
Saves information about file uploads in DB.
initialize(array $rowdata)
Sets $this->roomId by given array $rowdata and calls setSetting method foreach available setting in $...
isUserBanned($user_id)
Returns true if there's an entry in banTable matching roomId and given $user_id.
static $privateRoomsTable
getHistory(ilDateTime $from=null, ilDateTime $to=null, $restricted_session_userid=null, $proom_id=0)
Returns array containing history data selected from historyTable by given ilDateTime,...
addPrivateRoom($title, ilChatroomUser $owner, $settings)
saveSettings(array $settings)
Saves settings into settingsTable using given settings array.
static lookupPrivateRoomTitle($proom_id)
disconnectAllUsersFromAllRooms()
Deletes all entrys from userTable.
static findDeletablePrivateRooms()
isOwnerOfPrivateRoom($user_id, $proom_id)
static checkPermissionsOfUser($usr_id, $permissions, $ref_id)
Checks user permissions in question for a given user id in relation to a given ref_id.
static byObjectId($object_id)
Returns ilChatroom object by given $object_id.
banUser($user_id, $comment='')
Inserts user into banTable, using given $user_id.
getConnectedUsers()
Returns an array of connected users.
static byRoomId($room_id, $initObject=false)
Returns ilChatroom by given $room_id.
save()
Saves settings using $this->settings.
userIsInPrivateRoom($room_id, $user_id)
static checkUserPermissions($permissions, $ref_id, $send_info=true)
Checks user permissions by given array and ref_id.
disconnectUsers(array $userIds)
Disconnects users by deleting userdata from userTable using given userId array.
getActivePrivateRooms($userid)
subscribeUserToPrivateRoom($room_id, $user_id)
getChatURL($gui, $scope_id=0)
@global ilCtrl $ilCtrl
listUsersInPrivateRoom($private_room_id)
getLastMessages($number, $chatuser=null)
static $privateRoomsAccessTable
setSetting($name, $value)
Sets given name and value as setting into $this->settings array.
getRoomId()
Returns roomID from $this->roomId.
unsubscribeUserFromPrivateRoom($room_id, $user_id)
@global ilDB $ilDB
getUniquePrivateRoomTitle($title)
getPrivateSubRooms($parent_room, $user_id)
disconnectUser($user_id)
Creates userId array by given $user object and calls disconnectUsers method.
unbanUser($user_id)
Deletes entry from banTable matching roomId and given $user_id and returns true if sucessful.
getSettings()
Returns $this->settings array.
getSetting($name)
Returns setting from $this->settings array by given name.
getSessions(ilChatroomUser $user)
Returns all session from user.
static $privateSessionsTable
isAllowedToEnterPrivateRoom($chat_userid, $proom_id)
getLastSession(ilChatroomUser $user)
Returns last session from user.
@classDescription Date and time handling
static _getStaticLink($a_ref_id, $a_type='', $a_fallback_goto=true, $append="")
Get static link.
Describes a notification and provides methods for publishing this notification.
static _lookupId($a_user_str)
Lookup id by login.
getInstanceByObjId($a_obj_id, $stop_on_error=true)
get an instance of an Ilias object by object id
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.