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.