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());
226 if(!$ilDB->fetchAssoc($ilDB->queryF($query, $types, $values)))
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);
264 $rset = $ilDB->queryF(
$query, $types, $values );
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);
304 $rset = $ilDB->queryF(
$query, $types, $values );
306 if(
$row = $ilDB->fetchAssoc( $rset ) )
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');
323 $ilDB->manipulate(
$query);
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);
331 $ilDB->manipulateF(
$query, $types, $values );
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 )
379 if( isset( $settings[$setting] ) ) {
380 if ($type ==
'boolean') {
381 $settings[$setting] = (boolean)$settings[$setting];
383 $localSettings[$setting] = array($this->
phpTypeToMDBType($type), $settings[$setting]);
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);
434 $rset = $ilDB->queryF(
$query, $types, $values );
436 if(
$row = $ilDB->fetchAssoc( $rset ) )
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);
460 $rset = $ilDB->queryF(
$query, $types, $values );
462 if(
$row = $ilDB->fetchAssoc( $rset ) )
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);
522 $rset = $ilDB->queryF(
$query, $types, $values );
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);
539 $rset = $ilDB->queryF(
$query, $types, $values );
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);
549 $rset = $ilDB->queryF(
$query, $types, $values );
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';
620 $rset = $ilDB->query(
$query );
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());
746 $rset = $ilDB->queryF(
$query, $types, $values);
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');
770 $rset = $ilDB->queryF(
$query, $types, $values );
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 = ' .
815 $ilDB->quote( $user->
getUserId(),
'integer' ) .
816 ' ORDER BY connected DESC';
818 $ilDB->setLimit( 1 );
819 $rset = $ilDB->query(
$query );
821 if(
$row = $ilDB->fetchAssoc( $rset ) )
841 $query =
'SELECT * FROM ' . self::$sessionTable
842 .
' WHERE room_id = '.
843 $ilDB->quote( $this->
getRoomId(),
'integer' ) .
844 ' ORDER BY connected DESC';
846 $rset = $ilDB->query(
$query );
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);
896 $rset = $ilDB->queryF(
$query, $types, $values);
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);
919 $ilDB->manipulateF(
$query, $types, $values);
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()
1014 $bodyParams[
'room_name'] .=
' - ' . self::lookupPrivateRoomTitle($subScope);
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);
1047 $rset = $ilDB->queryF(
$query, $types, $values);
1049 if (
$row = $ilDB->fetchAssoc($rset)) {
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);
1071 $rset = $ilDB->queryF(
$query, $types, $values );
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);
1093 $rset = $ilDB->queryF(
$query, $types, $values );
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);
1111 $rset = $ilDB->queryF(
$query, $types, $values );
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);
1167 $rset = $ilDB->queryF(
$query, $types, $values );
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)) {
1223 $rooms[
$row[
'id']] = $row[
'id'];
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');
1230 $rset = $ilDB->query(
$query);
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);
1274 $res = $ilDB->queryF(
$query, $types, $values);
1278 while(
$row = $ilDB->fetchAssoc(
$res))
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 );
1304 $res = $ilDB->queryF(
$query, $types, $values );
1306 $priv_rooms = array();
1308 while(
$row = $ilDB->fetchAssoc(
$res ) )
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 );
1344 $res = $ilDB->queryF(
$query, $types, $values );
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 1475 $res = $ilDB->queryF(
$query, array(
'text'), array(
'chtr'));
1478 while(
$row = $ilDB->fetchAssoc(
$res))
setSetting($name, $value)
Sets given name and value as setting into $this->settings array.
static $privateRoomsTable
getUserId()
Returns Ilias User ID.
getActivePrivateRooms($userid)
getUniquePrivateRoomTitle($title)
getPrivateSubRooms($parent_room, $user_id)
banUser($user_id, $comment='')
Inserts user into banTable, using given $user_id.
getRoomId()
Returns roomID from $this->roomId.
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, $restricted_session_userid and matching roomId.
isUserBanned($user_id)
Returns true if there's an entry in banTable matching roomId and given $user_id.
static _getStaticLink($a_ref_id, $a_type='', $a_fallback_goto=true, $append="")
Get static link.
getLastMessages($number, $chatuser=null)
getSettings()
Returns $this->settings array.
getLastSession(ilChatroomUser $user)
Returns last session from user.
getRefIdByRoomId($room_id)
Returns ref_id of given room_id.
getSetting($name)
Returns setting from $this->settings array by given name.
isSubscribed($chat_userid)
Returns true if entry exists in userTable matching given $chat_userid and $this->roomId.
static byRoomId($room_id, $initObject=false)
Returns ilChatroom by given $room_id.
getPrivateRoomSessions(ilDateTime $from=null, ilDateTime $to=null, $user_id=0, $room_id=0)
disconnectUsers(array $userIds)
Disconnects users by deleting userdata from userTable using given userId array.
static _lookupId($a_user_str)
Lookup id by login.
unsubscribeUserFromPrivateRoom($room_id, $user_id)
ilDB $ilDB
userIsInPrivateRoom($room_id, $user_id)
getChatURL($gui, $scope_id=0)
ilCtrl $ilCtrl
Describes a notification and provides methods for publishing this notification.
listUsersInPrivateRoom($private_room_id)
save()
Saves settings using $this->settings.
isOwnerOfPrivateRoom($user_id, $proom_id)
static $privateSessionsTable
static checkUserPermissions($permissions, $ref_id, $send_info=true)
Checks user permissions by given array and ref_id.
getBannedUsers()
Returns an multidimensional array containing userdata from users having an entry in banTable with mat...
addPrivateRoom($title, ilChatroomUser $owner, $settings)
getSessions(ilChatroomUser $user)
Returns all session from user.
static findDeletablePrivateRooms()
addHistoryEntry($message, $recipient=null, $publicMessage=true)
Inserts entry into historyTable.
static lookupPrivateRoomTitle($proom_id)
getConnectedUsers()
Returns an array of connected users.
subscribeUserToPrivateRoom($room_id, $user_id)
saveFileUploadToDb($user_id, $filename, $type)
Saves information about file uploads in DB.
getInstanceByObjId($a_obj_id, $stop_on_error=true)
get an instance of an Ilias object by object id
unbanUser($user_id)
Deletes entry from banTable matching roomId and given $user_id and returns true if sucessful...
disconnectUser($user_id)
Creates userId array by given $user object and calls disconnectUsers method.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
static $privateRoomsAccessTable
disconnectAllUsersFromAllRooms()
Deletes all entrys from userTable.
inviteUserToPrivateRoomByLogin($login, $proom_id)
static byObjectId($object_id)
Returns ilChatroom object by given $object_id.
getUsername()
Returns username from Object or SESSION.
initialize(array $rowdata)
Sets $this->roomId by given array $rowdata and calls setSetting method foreach available setting in $...
static checkPermissionsOfUser($usr_id, $permissions, $ref_id)
Checks user permissions in question for a given user id in relation to a given ref_id.
saveSettings(array $settings)
Saves settings into settingsTable using given settings array.
isAllowedToEnterPrivateRoom($chat_userid, $proom_id)