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)) {
 
  177                $subRoom = (int) $message[
'sub'];
 
  179            else if (is_object($message)) {
 
  180                $subRoom = (int) $message->sub;
 
  186                    'room_id'   => array(
'integer', $this->roomId),
 
  187                    'sub_room'  => array(
'integer', $subRoom),
 
  188                    'message'   => array(
'text', json_encode($message)),
 
  189                    'timestamp' => array(
'integer', time()),
 
  218                $query = 
'SELECT user_id FROM ' . self::$userTable . 
' WHERE room_id = %s AND user_id = %s';
 
  219                $types  = array(
'integer', 
'integer');
 
  220                $values = array($this->roomId, $user->
getUserId());
 
  229                                        'room_id' => array(
'integer', $this->roomId),
 
  230                                        'user_id' => array(
'integer', $user->
getUserId())
 
  233                                        'userdata'  => array(
'text', json_encode($userdata)),
 
  234                                        'connected' => array(
'integer', time()),
 
  257                $query  = 
'SELECT userdata FROM ' . self::$userTable . 
' WHERE room_id = %s';
 
  258                $types  = array(
'integer');
 
  259                $values = array($this->roomId);
 
  263                while( 
$row = 
$ilDB->fetchAssoc( $rset ) )
 
  265                        $users[] = json_decode( 
$row[
'userdata'] );
 
  295                $query = 
'SELECT * FROM ' . self::$userTable . 
' WHERE room_id = %s AND ' .
 
  296                $ilDB->in( 
'user_id', $userIds, 
false, 
'integer' );
 
  298                $types  = array(
'integer');
 
  299                $values = array($this->roomId);
 
  304                        $query = 
'SELECT proom_id FROM ' . self::$privateRoomsTable . 
' WHERE parent_id = %s';
 
  305                        $rset_prooms = 
$ilDB->queryF(
$query, array(
'integer'), array($this->roomId));
 
  309                        while($row_prooms  = 
$ilDB->fetchAssoc($rset_prooms)) {
 
  310                                $prooms[] = $row_prooms[
'proom_id'];
 
  313                        if (
true || $this->
getSetting( 
'enable_history' )) {
 
  314                                $query = 
'UPDATE ' . self::$privateSessionsTable . 
' SET disconnected = %s WHERE ' . 
$ilDB->in(
'user_id', $userIds, 
false, 
'integer') . 
' AND ' . 
$ilDB->in(
'proom_id', $prooms, 
false, 
'integer');
 
  315                                $ilDB->manipulateF(
$query, array(
'integer'), array(time()));
 
  318                                $query = 
'DELETE FROM ' . self::$privateSessionsTable . 
' WHERE ' . 
$ilDB->in(
'user_id', $userIds, 
false, 
'integer') . 
' AND ' . 
$ilDB->in(
'proom_id', $prooms, 
false, 
'integer');
 
  322                        $query = 
'DELETE FROM ' . self::$userTable . 
' WHERE room_id = %s AND ' .
 
  323                        $ilDB->in( 
'user_id', $userIds, 
false, 
'integer' );
 
  325                        $types  = array(
'integer');
 
  326                        $values = array($this->roomId);
 
  335                                                                'room_id'               => array(
'integer', $this->roomId),
 
  336                                                                'user_id'               => array(
'integer', 
$row[
'user_id']),
 
  337                                                                'userdata'              => array(
'text', 
$row[
'userdata']),
 
  338                                                                'connected'             => array(
'integer', 
$row[
'connected']),
 
  339                                                                'disconnected'  => array(
'integer', time()),
 
  344                        while( 
$row = 
$ilDB->fetchAssoc( $rset ) );
 
  369                $localSettings = array();
 
  371                foreach( $this->availableSettings as $setting => $type )
 
  374                                if ($type == 
'boolean') {
 
  381                if (!$localSettings[
'room_type'][1]) {
 
  382                        $localSettings[
'room_type'][1] = 
'repository';
 
  388                            self::$settingsTable,
 
  390                            array( 
'room_id' => array(
'integer', $this->roomId) )
 
  395                        $this->roomId = 
$ilDB->nextId( self::$settingsTable );
 
  397                        $localSettings[
'room_id'] = array(
 
  398                        $this->availableSettings[
'room_id'], $this->roomId
 
  401                        $ilDB->insert( self::$settingsTable, $localSettings );
 
  425                $query  = 
'SELECT * FROM ' . self::$settingsTable . 
' WHERE object_id = %s';
 
  426                $types  = array(
'integer');
 
  427                $values = array($object_id);
 
  433                        $room->initialize( 
$row );
 
  445        public static function byRoomId($room_id, $initObject = 
false)
 
  449                $query = 
'SELECT * FROM ' . self::$settingsTable . 
' WHERE room_id = %s';
 
  451                $types = array(
'integer');
 
  452                $values = array($room_id);
 
  459                        $room->initialize( 
$row );
 
  477                $this->roomId = $rowdata[
'room_id'];
 
  479                foreach( $this->availableSettings as $setting => $type )
 
  481                        if( isset($rowdata[$setting]) )
 
  483                                settype($rowdata[$setting], $this->availableSettings[$setting]);
 
  484                                $this->
setSetting( $setting, $rowdata[$setting] );
 
  511                $query = 
'SELECT count(user_id) as cnt FROM ' . self::$userTable .
 
  512                                 ' WHERE room_id = %s AND user_id = %s';
 
  514                $types  = array(
'integer', 
'integer');
 
  515                $values = array($this->roomId, $chat_userid);
 
  518                if( $rset && (
$row = 
$ilDB->fetchAssoc( $rset )) && 
$row[
'cnt'] == 1 )
 
  528                $query = 
'SELECT count(user_id) cnt FROM ' . self::$privateRoomsAccessTable .
 
  529                                 ' WHERE proom_id = %s AND user_id = %s';
 
  531                $types  = array(
'integer', 
'integer');
 
  532                $values = array($proom_id, $chat_userid);
 
  535                if( $rset && (
$row = 
$ilDB->fetchAssoc( $rset )) && 
$row[
'cnt'] == 1 )
 
  538                $query = 
'SELECT count(*) cnt FROM ' . self::$privateRoomsTable .
 
  539                                 ' WHERE proom_id = %s AND owner = %s';
 
  541                $types  = array(
'integer', 
'integer');
 
  542                $values = array($proom_id, $chat_userid);
 
  545                if( $rset && (
$row = 
$ilDB->fetchAssoc( $rset )) && 
$row[
'cnt'] == 1 )
 
  560                $ilDB->manipulate( 
'DELETE FROM ' . self::$userTable );
 
  561                $ilDB->manipulate( 
'UPDATE ' . self::$privateRoomsTable . 
' SET closed = ' . 
$ilDB->quote( time() ,
'integer') . 
' WHERE closed = 0 OR closed IS NULL');
 
  562                $ilDB->manipulate( 
'UPDATE ' . self::$privateSessionsTable . 
' SET disconnected = ' . 
$ilDB->quote( time() ,
'integer') . 
' WHERE disconnected = 0 OR disconnected IS NULL');
 
  585                        $join .= 
' INNER JOIN ' . self::$privateSessionsTable .
 
  586                                ' pSessionTable ON pSessionTable.user_id = ' .
 
  587                                $ilDB->quote( $restricted_session_userid, 
'integer' ) .
 
  588                                ' AND historyTable.sub_room = pSessionTable.proom_id AND timestamp >= pSessionTable.connected AND timestamp <= pSessionTable.disconnected ';
 
  591                $query = 
'SELECT historyTable.* FROM ' . self::$historyTable . 
' historyTable ' .
 
  592                        $join . 
' WHERE historyTable.room_id = ' . $this->
getRoomId();
 
  598                        $filter[] = 
'timestamp >= ' . 
$ilDB->quote( $from->getUnixTime(), 
'integer' );
 
  603                        $filter[] = 
'timestamp <= ' . 
$ilDB->quote( $to->getUnixTime(), 
'integer' );
 
  607                $query .= 
' AND ' . join( 
' AND ', $filter );
 
  608                $query .= 
' ORDER BY timestamp ASC';
 
  613                while( 
$row = 
$ilDB->fetchAssoc( $rset ) )
 
  615                        $row[
'message'] = json_decode( 
$row[
'message'] );
 
  616                        $row[
'message']->timestamp = 
$row[
'timestamp'];
 
  617                        if (
$row[
'message']->
public !== 
null && !
$row[
'message']->
public && !in_array(
$ilUser->getId(), explode(
',', 
$row[
'recipients']))) {
 
  629                $query = 
'SELECT proom_id, title FROM ' . self::$privateRoomsTable . 
' WHERE proom_id IN ( 
  630                        SELECT proom_id FROM '.self::$privateSessionsTable.
' WHERE connected >= %s AND disconnected <= %s AND user_id = %s 
  632                ) AND parent_id = %s';
 
  634                $rset = 
$ilDB->queryF(
$query, array(
'integer',
'integer',
'integer',
'integer'), array($from->getUnixTime(), $to->getUnixTime(), $user_id, $room_id));
 
  636                while( 
$row = 
$ilDB->fetchAssoc( $rset ) )
 
  655                $upload_id      = 
$ilDB->nextId( self::$uploadTable );
 
  660                                        'upload_id'     => array(
'integer', $upload_id),
 
  661                                        'room_id'       => array(
'integer', $this->roomId),
 
  662                                        'user_id'       => array(
'integer', $user_id),
 
  664                                        'filetype'      => array(
'text', $type),
 
  665                                        'timestamp'     => array(
'integer', time())
 
  684                                        'room_id'       => array(
'integer', $this->roomId),
 
  685                                        'user_id'       => array(
'integer', $user_id),
 
  686                                        'timestamp' => array(
'integer', time()),
 
  687                                        'remark'        => array(
'text', 
$comment),
 
  704                if( !is_array( $user_id ) )
 
  705                $user_id = array($user_id);
 
  707                $query = 
'DELETE FROM ' . self::$banTable . 
' WHERE room_id = %s AND ' .
 
  708                $ilDB->in( 
'user_id', $user_id, 
false, 
'integer' );
 
  710                $types  = array(
'integer');
 
  713                return $ilDB->manipulateF( 
$query, $types, $values );
 
  728                $query = 
'SELECT count(user_id) cnt FROM ' . self::$banTable .
 
  729                                ' WHERE user_id = %s AND room_id = %s';
 
  731                $types  = array(
'integer', 
'integer');
 
  732                $values = array($user_id, $this->
getRoomId());
 
  736                if( $rset && (
$row = 
$ilDB->fetchAssoc( $rset )) && 
$row[
'cnt'] )
 
  753                $query  = 
'SELECT * FROM ' . self::$banTable . 
' WHERE room_id = %s ';
 
  754                $types  = array(
'integer');
 
  761                        while( 
$row = 
$ilDB->fetchAssoc( $rset ) )
 
  763                                if( 
$row[
'user_id'] > 0 )
 
  767                                                'user_id'       => $user->getId(),
 
  768                                                'firstname' => $user->getFirstname(),
 
  769                                                'lastname'      => $user->getLastname(),
 
  770                                                'login'         => $user->getLogin(),
 
  771                                                'remark'        => 
$row[
'remark']
 
  800                $query = 
'SELECT * FROM ' . self::$sessionTable . 
' WHERE user_id = ' .
 
  802                                 ' ORDER BY connected DESC';
 
  804                $ilDB->setLimit( 1 );
 
  827                $query = 
'SELECT * FROM ' . self::$sessionTable 
 
  828                . 
' WHERE room_id = '.
 
  830                                 ' ORDER BY connected DESC';
 
  836                while( 
$row = 
$ilDB->fetchAssoc( $rset ) )
 
  848                $nextId = 
$ilDB->nextId(
'chatroom_prooms');
 
  851                self::$privateRoomsTable,
 
  853                                        'proom_id'      => array(
'integer', $nextId),
 
  854                                        'parent_id'     => array(
'integer', $this->roomId),
 
  855                                        'title' => array(
'text', $title),
 
  856                                        'owner' => array(
'integer', $owner->
getUserId()),
 
  857                                        'created' => array(
'integer', time()),
 
  858                                        'is_public' => array(
'integer', 
$settings[
'public']),
 
  870                        'UPDATE ' . self::$privateRoomsTable . 
' SET closed = %s WHERE proom_id = %s',
 
  871                array(
'integer', 
'integer'),
 
  879                $query = 
'SELECT proom_id FROM ' . self::$privateRoomsTable . 
' WHERE proom_id = %s AND owner = %s';
 
  880                $types = array(
'integer', 
'integer');
 
  881                $values = array($proom_id, $user_id);
 
  885                if ($rset && 
$ilDB->fetchAssoc($rset)) {
 
  895        public function inviteUserToPrivateRoom($user_id, $proom_id)
 
  902                $query  = 
'DELETE FROM ' . self::$privateRoomsAccessTable . 
' WHERE user_id = %s AND proom_id = %s';
 
  903                $types  = array(
'integer', 
'integer');
 
  904                $values = array($user_id, $proom_id);
 
  908                $ilDB->insert(self::$privateRoomsAccessTable, array(
 
  909                        'user_id'  => array(
'integer', $user_id),
 
  910                        'proom_id' => array(
'integer', $proom_id)
 
  922                include_once 
'Services/Link/classes/class.ilLink.php';
 
  949        public function sendInvitationNotification($gui, $sender, $recipient_id, $subScope = 0, $invitationLink = 
'')
 
  956                if($gui && !$invitationLink)
 
  958                        $invitationLink = $this->
getChatURL($gui, $subScope);
 
  961                if($recipient_id > 0 && !in_array(ANONYMOUS_USER_ID, array($recipient_id)))
 
  963                        if(is_numeric($sender) && $sender > 0)
 
  965                                $sender_id = $sender;
 
  970                                $public_name = $usr->getPublicName();
 
  974                                if($sender->getUserId() > 0)
 
  976                                        $sender_id = $sender->getUserId();
 
  980                                        $sender_id = ANONYMOUS_USER_ID;
 
  982                                $public_name = $sender->getUsername();
 
  986                                throw new InvalidArgumentException(
'$sender must be an instance of ilChatroomUser or an id of an ilObjUser instance');
 
  989                        $lng->loadLanguageModule(
'mail');
 
  993                                'link'         => $invitationLink,
 
  994                                'inviter_name' => $public_name,
 
  996                                'salutation'   => $lng->txt(
'mail_salutation_' . $recipient->getGender()) . 
' ' . $recipient->getFullname()
 
 1004                        require_once 
'Services/Notifications/classes/class.ilNotificationConfig.php';
 
 1006                        $notification->setTitleVar(
'chat_invitation', $bodyParams, 
'chatroom');
 
 1007                        $notification->setShortDescriptionVar(
'chat_invitation_short', $bodyParams, 
'chatroom');
 
 1008                        $notification->setLongDescriptionVar(
'chat_invitation_long', $bodyParams, 
'chatroom');
 
 1009                        $notification->setAutoDisable(
false);
 
 1010                        $notification->setLink($invitationLink);
 
 1011                        $notification->setIconPath(
'templates/default/images/icon_chtr.svg');
 
 1012                        $notification->setValidForSeconds(0);
 
 1014                        $notification->setHandlerParam(
'mail.sender', $sender_id);
 
 1016                        $notification->notifyByUsers(array($recipient_id));
 
 1023                $this->inviteUserToPrivateRoom($user_id, $proom_id);
 
 1029                $query = 
'SELECT title FROM ' . self::$privateRoomsTable . 
' WHERE proom_id = %s';
 
 1030                $types = array(
'integer');
 
 1031                $values = array($proom_id);
 
 1036                        return $row[
'title'];
 
 1047                        SELECT roomtable.title, roomtable.proom_id, accesstable.user_id id, roomtable.owner owner FROM ' . self::$privateRoomsTable . 
' roomtable 
 1048                        LEFT JOIN '.self::$privateRoomsAccessTable.
' accesstable ON roomtable.proom_id = accesstable.proom_id AND accesstable.user_id = %s 
 1049                        WHERE parent_id = %s AND (closed = 0 OR closed IS NULL) AND (accesstable.user_id IS NOT NULL OR roomtable.owner = %s)';
 
 1050                $types  = array(
'integer', 
'integer', 
'integer');
 
 1051                $values = array($userid, $this->roomId, $userid);
 
 1055                while( 
$row = 
$ilDB->fetchAssoc( $rset ) )
 
 1069                        SELECT chatroom_users.user_id FROM ' . self::$privateSessionsTable . 
' 
 1070                        INNER JOIN chatroom_users ON chatroom_users.user_id = ' . self::$privateSessionsTable . 
'.user_id WHERE proom_id = %s AND disconnected = 0 
 1072                $types  = array(
'integer');
 
 1073                $values = array($private_room_id);
 
 1078                while (
$row = 
$ilDB->fetchAssoc($rset)) {
 
 1079                        $users[
$row[
'user_id']] = 
$row[
'user_id'];
 
 1082                return array_values($users);
 
 1089                $query  = 
'SELECT proom_id id FROM ' . self::$privateSessionsTable . 
' WHERE user_id = %s AND proom_id = %s AND disconnected = 0 OR disconnected IS NULL';
 
 1090                $types  = array(
'integer', 
'integer');
 
 1091                $values = array($user_id, $room_id);
 
 1093                if (
$ilDB->fetchAssoc($rset))
 
 1104                        self::$privateSessionsTable,
 
 1106                            'proom_id' => array(
'integer', $room_id),
 
 1107                            'user_id' => array(
'integer', $user_id),
 
 1108                            'connected' => array(
'integer', time()),
 
 1109                            'disconnected' => array(
'integer', 0),
 
 1126                self::$privateSessionsTable,
 
 1128                        'disconnected' => array(
'integer', time())
 
 1131                        'proom_id' => array(
'integer', $room_id),
 
 1132                        'user_id' => array(
'integer', $user_id),
 
 1140                $query = 
'SELECT count(user_id) as cnt FROM ' . self::$userTable .
 
 1141                                 ' WHERE room_id = %s';
 
 1143                $types  = array(
'integer');
 
 1144                $values = array($this->roomId);
 
 1147                if( $rset && (
$row = 
$ilDB->fetchAssoc( $rset )) && 
$row[
'cnt'] == 1 )
 
 1156                $query = 
'SELECT title FROM ' . self::$privateRoomsTable . 
' WHERE parent_id = %s and closed = 0';
 
 1157                $rset = 
$ilDB->queryF(
$query, array(
'integer'), array($this->roomId));
 
 1161                while(
$row = 
$ilDB->fetchAssoc($rset)) {
 
 1162                        $titles[] = 
$row[
'title'];
 
 1168                        if(!in_array($title . $suffix, $titles)) {
 
 1175                        $suffix = 
' (' . $i . 
')';
 
 1185                        SELECT private_rooms.proom_id id, MIN(disconnected) min_disconnected, MAX(disconnected) max_disconnected 
 1186                        FROM ' . self::$privateSessionsTable . 
' private_sessions 
 1187                        INNER JOIN '.self::$privateRoomsTable.
' private_rooms 
 1188                                ON private_sessions.proom_id = private_rooms.proom_id 
 1190                        GROUP BY private_rooms.proom_id 
 1191                        HAVING MIN(disconnected) > 0 AND MAX(disconnected) < %s';
 
 1192                $rset = 
$ilDB->queryF(
 
 1195                array(time() + 60 * 5)
 
 1200                while (
$row = 
$ilDB->fetchAssoc($rset)) {
 
 1204                $query = 
'SELECT DISTINCT proom_id, room_id, object_id FROM ' . self::$privateRoomsTable
 
 1205                . 
' INNER JOIN ' . self::$settingsTable . 
' ON parent_id = room_id ' 
 1206                . 
' WHERE ' . 
$ilDB->in(
'proom_id', $rooms, 
false, 
'integer');
 
 1210                while(
$row = 
$ilDB->fetchAssoc($rset)) {
 
 1212                    'proom_id' => 
$row[
'proom_id'],
 
 1213                    'room_id' => 
$row[
'room_id'],
 
 1214                    'object_id' => 
$row[
'object_id']
 
 1229   public function getAllRooms($user_id)
 
 1237       SELECT      room_id, od.title 
 1240       INNER JOIN  " . self::$settingsTable . 
" 
 1241           ON      object_id = od.obj_id 
 1243       INNER JOIN  " . self::$privateRoomsTable . 
" prt 
 1246       WHERE       od.type = 'chtr' 
 1249           $types  = array(
'integer');
 
 1250           $values = array($user_id);
 
 1258                   $room_id         = 
$row[
'room_id'];
 
 1259                   $rooms[$room_id] = 
$row[
'title'];
 
 1272       SELECT      proom_id, parent_id 
 1273       FROM        chatroom_prooms 
 1274       WHERE       parent_id = %s 
 1279       $types  = array( 
'integer', 
'integer' );
 
 1280       $values = array( $parent_room, $user_id );
 
 1284       $priv_rooms = array();
 
 1288       $proom_id       = 
$row[
'proom_id'];
 
 1289       $priv_rooms[$proom_id]  = 
$row[
'parent_id'];
 
 1308       FROM        object_reference    objr 
 1310       INNER JOIN  chatroom_settings   cs 
 1311           ON      cs.object_id = objr.obj_id 
 1313       INNER JOIN  object_data     od 
 1314           ON      od.obj_id = cs.object_id 
 1316       WHERE       cs.room_id = %s 
 1319       $types  = array( 
'integer' );
 
 1320       $values = array( $room_id );
 
 1326       return $row[
'ref_id'];
 
 1335        $ilDB->setLimit($number * 2);
 
 1336        $rset = 
$ilDB->queryF(
'SELECT * FROM ' . self::$historyTable . 
' WHERE room_id = %s AND sub_room = 0 ORDER BY timestamp DESC', array(
'integer'), array($this->roomId));
 
 1340        while((
$row = 
$ilDB->fetchAssoc($rset)) && $result_count < $number) {
 
 1341            $tmp = json_decode(
$row[
'message']);
 
 1342                if ($chatuser !== 
null && $tmp->public == 0 && $tmp->recipients) {
 
 1343                        if (in_array($chatuser->getUserId(), explode(
',',$tmp->recipients))) {
 
 1348                else if ($tmp->public == 1) {
 
 1357        public function getLastMessagesForChatViewer($number, $chatuser = 
null)
 
 1364                $ilDB->setLimit($number);
 
 1365                $rset = 
$ilDB->query(
 
 1367                        FROM ' . self::$historyTable . 
' 
 1368                        WHERE room_id = '.
$ilDB->quote($this->roomId, 
'integer').
' 
 1371                                        (' . 
$ilDB->like(
'message', 
'text', 
'%"type":"message"%') . 
' AND ' . 
$ilDB->like(
'message', 
'text', 
'%"public":1%') . 
' AND ' . 
$ilDB->like(
'message', 
'text', 
'%"recipients":null%') . 
')  
 1373                                        ' . 
$ilDB->like(
'message', 
'text', 
'%"type":"%connected"%') . 
') 
 1374                        ORDER BY timestamp DESC' 
 1378                while((
$row = 
$ilDB->fetchAssoc($rset)))
 
 1380                        $tmp       = json_decode(
$row[
'message']);
 
 1381                        if($tmp->type != 
'message' && 
$row[
'timestamp'] && !is_numeric($tmp->timestamp))
 
 1383                                $tmp->timestamp = 
$row[
'timestamp'] * 1000;
 
 1394                'DELETE FROM ' . self::$historyTable . 
' WHERE room_id = %s AND sub_room = %s',
 
 1395                array(
'integer', 
'integer'),
 
 1396                array($this->roomId, (
int)$sub_room)
 
 1401                    'DELETE FROM ' . self::$privateSessionsTable . 
' WHERE proom_id = %s AND disconnected < %s',
 
 1402                    array(
'integer', 
'integer'),
 
 1403                    array($sub_room, time())
 
 1408                    'DELETE FROM ' . self::$sessionTable . 
' WHERE room_id = %s AND disconnected < %s',
 
 1409                    array(
'integer', 
'integer'),
 
 1410                    array($this->roomId, time())
 
 1415        public static function getUntrashedChatReferences($filter = array())
 
 1425                        SELECT od.obj_id, od.title, ore.ref_id, od.type, odp.title parent_title 
 1427                        INNER JOIN object_reference ore ON ore.obj_id = od.obj_id 
 1428                        INNER JOIN tree t ON t.child = ore.ref_id 
 1429                        INNER JOIN tree p ON p.child = t.parent 
 1430                        INNER JOIN object_reference orep ON orep.ref_id = p.child 
 1431                        INNER JOIN object_data odp ON odp.obj_id = orep.obj_id 
 1432                        INNER JOIN object_reference pre ON pre.ref_id = t.parent 
 1433                        INNER JOIN object_data pod ON pod.obj_id = pre.obj_id 
 1436                if(isset($filter[
'last_activity']))
 
 1438                        $threshold = 
$ilDB->quote($filter[
'last_activity'], 
'integer');
 
 1440                                INNER JOIN chatroom_settings ON chatroom_settings.object_id = od.obj_id 
 1441                                INNER JOIN chatroom_history ON chatroom_history.room_id = chatroom_settings.room_id AND chatroom_history.timestamp > $threshold 
 1446                        WHERE od.type = %s AND t.tree > 0 AND ore.deleted IS NULL 
 1447                        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.