function sendChatroomMessage($to = 0, $message = '', $notsilent = 1)
{
    global $userid;
    global $cookiePrefix;
    global $chromeReorderFix;
    global $bannedUserIDs;
    global $lang;
    $stickersflag = 0;
    if ($to == 0 && empty($_POST['currentroom']) || $message == '' && $notsilent == 0 || isset($_POST['message']) && $_POST['message'] == '' || empty($userid) || in_array($userid, $bannedUserIDs)) {
        return;
    }
    if (isset($_POST['message']) && !empty($_POST['currentroom'])) {
        $to = mysqli_real_escape_string($GLOBALS['dbh'], $_POST['currentroom']);
        $message = $_POST['message'];
    }
    if (isset($message) && $message != '') {
        if (strpos($message, 'CC^CONTROL_') !== false) {
            $message = str_ireplace('CC^CONTROL_', '', $message);
            $message = sanitize($message);
            $controlparameters = json_decode($message, true);
            $chatroommode = $controlparameters['params']['chatroommode'];
            switch ($controlparameters['name']) {
                case 'avchat':
                    $grp = $controlparameters['params']['grp'];
                    switch ($controlparameters['method']) {
                        case 'endcall':
                            $message = 'CC^CONTROL_PLUGIN_AVCHAT_ENDCALL_' . $grp . '_' . $chatroommode;
                            break;
                        case 'rejectcall':
                            $message = 'CC^CONTROL_PLUGIN_AVCHAT_REJECTCALL_' . $grp . '_' . $chatroommode;
                            break;
                        case 'noanswer':
                            $message = 'CC^CONTROL_PLUGIN_AVCHAT_NOANSWER_' . $grp . '_' . $chatroommode;
                            break;
                        case 'canceloutgoingcall':
                            $message = 'CC^CONTROL_PLUGIN_AVCHAT_CANCELCALL_' . $grp . '_' . $chatroommode;
                            break;
                        case 'busycall':
                            $message = 'CC^CONTROL_PLUGIN_AVCHAT_BUSYCALL_' . $grp . '_' . $chatroommode;
                            break;
                        default:
                            $message = '';
                            break;
                    }
                    break;
                case 'audiochat':
                    $grp = $controlparameters['params']['grp'];
                    switch ($controlparameters['method']) {
                        case 'endcall':
                            $message = 'CC^CONTROL_PLUGIN_AUDIOCHAT_ENDCALL_' . $grp . '_' . $chatroommode;
                            break;
                        case 'rejectcall':
                            $message = 'CC^CONTROL_PLUGIN_AUDIOCHAT_REJECTCALL_' . $grp . '_' . $chatroommode;
                            break;
                        case 'noanswer':
                            $message = 'CC^CONTROL_PLUGIN_AUDIOCHAT_NOANSWER_' . $grp . '_' . $chatroommode;
                            break;
                        case 'canceloutgoingcall':
                            $message = 'CC^CONTROL_PLUGIN_AUDIOCHAT_CANCELCALL_' . $grp . '_' . $chatroommode;
                            break;
                        case 'busycall':
                            $message = 'CC^CONTROL_PLUGIN_AUDIOCHAT_BUSYCALL_' . $grp . '_' . $chatroommode;
                            break;
                        default:
                            $message = '';
                            break;
                    }
                    break;
                case 'broadcast':
                    $grp = $controlparameters['params']['grp'];
                    switch ($controlparameters['method']) {
                        case 'endcall':
                            $message = 'CC^CONTROL_PLUGIN_BROADCAST_ENDCALL_' . $grp . '_' . $chatroommode;
                            break;
                        default:
                            $message = '';
                            break;
                    }
                    break;
                case 'stickers':
                    $stickersflag = 1;
                    $message = 'CC^CONTROL_' . $message;
                    break;
                case 'chatroom':
                    $delid = $controlparameters['params']['id'];
                    switch ($controlparameters['method']) {
                        case 'deletemessage':
                            $message = 'CC^CONTROL_deletemessage_' . $delid;
                            break;
                        case 'kicked':
                            $message = 'CC^CONTROL_kicked_' . $delid;
                            break;
                        case 'banned':
                            $message = 'CC^CONTROL_banned_' . $delid;
                            break;
                        default:
                            $message = '';
                            break;
                    }
                    break;
                default:
                    break;
            }
        }
    }
    if ($notsilent !== 0 && $stickersflag == 0) {
        $message = str_ireplace('CC^CONTROL_', '', $message);
        $message = sanitize($message);
    }
    $styleStart = '';
    $styleEnd = '';
    if (!empty($_COOKIE[$cookiePrefix . 'chatroomcolor']) && preg_match('/^[a-f0-9]{6}$/i', $_COOKIE[$cookiePrefix . 'chatroomcolor']) && $notsilent == 1 && $stickersflag == 0) {
        $styleStart = '<span style="color:#' . mysqli_real_escape_string($GLOBALS['dbh'], $_COOKIE[$cookiePrefix . 'chatroomcolor']) . '">';
        $styleEnd = '</span>';
    }
    $timestamp = getTimeStamp();
    if (empty($_SESSION['cometchat']['cometchat_chatroom_' . $to])) {
        $_SESSION['cometchat']['cometchat_chatroom_' . $to] = array();
    }
    if (USE_COMET == 1 && COMET_CHATROOMS == 1) {
        if (empty($_SESSION['cometchat']['username'])) {
            $name = '';
            $sql = getUserDetails($userid);
            if ($userid > 10000000) {
                $sql = getGuestDetails($userid);
            }
            $result = mysqli_query($GLOBALS['dbh'], $sql);
            if ($row = mysqli_fetch_assoc($result)) {
                if (function_exists('processName')) {
                    $row['username'] = processName($row['username']);
                }
                $name = $row['username'];
            }
            $_SESSION['cometchat']['username'] = $name;
        } else {
            $name = $_SESSION['cometchat']['username'];
        }
        if (!empty($name)) {
            $sql = "insert into cometchat_chatroommessages (userid,chatroomid,message,sent) values ('" . mysqli_real_escape_string($GLOBALS['dbh'], $userid) . "', '" . mysqli_real_escape_string($GLOBALS['dbh'], $to) . "','" . mysqli_real_escape_string($GLOBALS['dbh'], $styleStart) . mysqli_real_escape_string($GLOBALS['dbh'], $message) . mysqli_real_escape_string($GLOBALS['dbh'], $styleEnd) . "','" . $timestamp . "')";
            $query = mysqli_query($GLOBALS['dbh'], $sql);
            $insertedid = mysqli_insert_id($GLOBALS['dbh']);
            $channel = md5('chatroom_' . $to . KEY_A . KEY_B . KEY_C);
            $comet = new Comet(KEY_A, KEY_B);
            if (method_exists($comet, 'processChannel')) {
                $channel = processChannel($channel);
            }
            if (defined('DEV_MODE') && DEV_MODE == '1') {
                echo mysqli_error($GLOBALS['dbh']);
            }
            $info = $comet->publish(array('channel' => $channel, 'message' => array("id" => $insertedid, "from" => $name, "fromid" => $userid, "message" => $styleStart . $message . $styleEnd, "sent" => $timestamp * 1000, "roomid" => $to)));
            $_SESSION['cometchat']['cometchat_chatroom_' . $to][$insertedid] = array('id' => $insertedid, 'from' => $_SESSION['cometchat']['username'], 'fromid' => $userid, 'chatroomid' => $to, 'message' => $styleStart . $message . $styleEnd, 'sent' => $timestamp);
            krsort($_SESSION['cometchat']['cometchat_chatroom_' . $to]);
            if ($notsilent == 1) {
                sendCCResponse(json_encode(array("id" => $insertedid, "m" => $styleStart . $message . $styleEnd, "sent" => $timestamp)));
            }
        }
    } else {
        $sql = "insert into cometchat_chatroommessages (userid,chatroomid,message,sent) values ('" . mysqli_real_escape_string($GLOBALS['dbh'], $userid) . "', '" . mysqli_real_escape_string($GLOBALS['dbh'], $to) . "','" . mysqli_real_escape_string($GLOBALS['dbh'], $styleStart) . mysqli_real_escape_string($GLOBALS['dbh'], $message) . mysqli_real_escape_string($GLOBALS['dbh'], $styleEnd) . "','" . mysqli_real_escape_string($GLOBALS['dbh'], $timestamp) . "')";
        $query = mysqli_query($GLOBALS['dbh'], $sql);
        $insertedid = mysqli_insert_id($GLOBALS['dbh']);
        if (defined('DEV_MODE') && DEV_MODE == '1') {
            echo mysqli_error($GLOBALS['dbh']);
        }
        $name = '';
        $sql = getUserDetails($userid);
        if ($userid > 10000000) {
            $sql = getGuestDetails($userid);
        }
        $result = mysqli_query($GLOBALS['dbh'], $sql);
        if ($row = mysqli_fetch_assoc($result)) {
            if (function_exists('processName')) {
                $row['username'] = processName($row['username']);
            }
            $name = $row['username'];
        }
        $_SESSION['cometchat']['cometchat_chatroom_' . $to][$insertedid] = array('id' => $insertedid, 'from' => $name, 'fromid' => $userid, 'chatroomid' => $to, 'message' => $styleStart . $message . $styleEnd, 'sent' => $timestamp);
        krsort($_SESSION['cometchat']['cometchat_chatroom_' . $to]);
        if ($notsilent == 1) {
            sendCCResponse(json_encode(array("id" => $insertedid, "m" => $styleStart . $message . $styleEnd, "sent" => $timestamp)));
        }
    }
    $parsedmessage = $message;
    if (strpos($message, 'BROADCAST_ENDCALL') !== false || strpos($message, 'jqcc.ccbroadcast.join') !== false) {
        include_once dirname(__FILE__) . DIRECTORY_SEPARATOR . "plugins" . DIRECTORY_SEPARATOR . "broadcast" . DIRECTORY_SEPARATOR . "lang" . DIRECTORY_SEPARATOR . $lang . ".php";
        global $broadcast_language;
        if (strpos($message, 'BROADCAST_ENDCALL') !== false) {
            $parsedmessage = $broadcast_language[24];
        }
        //This broadcast has ended
        if (strpos($message, 'jqcc.ccbroadcast.join') !== false) {
            $parsedmessage = $broadcast_language[17];
        }
        //has started a video broadcast.
    } elseif (strpos($message, 'jqcc.ccavchat.join') !== false) {
        include_once dirname(__FILE__) . DIRECTORY_SEPARATOR . "plugins" . DIRECTORY_SEPARATOR . "avchat" . DIRECTORY_SEPARATOR . "lang" . DIRECTORY_SEPARATOR . $lang . ".php";
        global $avchat_language;
        $parsedmessage = $avchat_language[19];
        //has started a video conversation.
    } elseif (strpos($message, 'jqcc.ccaudiochat.join') !== false) {
        include_once dirname(__FILE__) . DIRECTORY_SEPARATOR . "plugins" . DIRECTORY_SEPARATOR . "audiochat" . DIRECTORY_SEPARATOR . "lang" . DIRECTORY_SEPARATOR . $lang . ".php";
        global $audiochat_language;
        $parsedmessage = $audiochat_language[19];
        //has started a audio conversation.
    } elseif (strpos($message, 'CC^CONTROL_{"type":"plugins","name":"stickers","method":"sendSticker"') !== false) {
        include_once dirname(__FILE__) . DIRECTORY_SEPARATOR . "plugins" . DIRECTORY_SEPARATOR . "stickers" . DIRECTORY_SEPARATOR . "lang" . DIRECTORY_SEPARATOR . $lang . ".php";
        global $stickers_language;
        $parsedmessage = $stickers_language[2];
        //has sent a sticker.
    } elseif (strpos($message, 'CC^CONTROL_kicked_kicked') !== false || strpos($message, 'CC^CONTROL_banned_') !== false) {
        include_once dirname(__FILE__) . DIRECTORY_SEPARATOR . "modules" . DIRECTORY_SEPARATOR . "chatrooms" . DIRECTORY_SEPARATOR . "lang" . DIRECTORY_SEPARATOR . $lang . ".php";
        global $chatrooms_language;
        if (strpos($message, 'CC^CONTROL_kicked_kicked') !== false) {
            $parsedmessage = $chatrooms_language[36];
        }
        //You have been kicked from this chatroom.
        if (strpos($message, 'CC^CONTROL_banned_') !== false) {
            $parsedmessage = $chatrooms_language[37];
        }
        //You have been banned from chatroom
    } elseif (strpos($message, 'jqcc.ccwhiteboard.accept') !== false) {
        include_once dirname(__FILE__) . DIRECTORY_SEPARATOR . "plugins" . DIRECTORY_SEPARATOR . "whiteboard" . DIRECTORY_SEPARATOR . "lang" . DIRECTORY_SEPARATOR . $lang . ".php";
        global $whiteboard_language;
        $parsedmessage = $whiteboard_language[7];
        //has shared a whiteboard.
    } elseif (strpos($message, 'jqcc.ccwriteboard.accept') !== false) {
        include_once dirname(__FILE__) . DIRECTORY_SEPARATOR . "plugins" . DIRECTORY_SEPARATOR . "writeboard" . DIRECTORY_SEPARATOR . "lang" . DIRECTORY_SEPARATOR . $lang . ".php";
        global $writeboard_language;
        $parsedmessage = $writeboard_language[2];
        //has shared a writeboard.
    } elseif (strpos($message, 'jqcc.ccscreenshare.accept') !== false) {
        include_once dirname(__FILE__) . DIRECTORY_SEPARATOR . "plugins" . DIRECTORY_SEPARATOR . "screenshare" . DIRECTORY_SEPARATOR . "lang" . DIRECTORY_SEPARATOR . $lang . ".php";
        global $screenshare_language;
        $parsedmessage = $screenshare_language[2];
        //has shared his/her screen with you.
    } elseif (strpos($message, '/writable/handwrite/uploads/') !== false) {
        include_once dirname(__FILE__) . DIRECTORY_SEPARATOR . "plugins" . DIRECTORY_SEPARATOR . "handwrite" . DIRECTORY_SEPARATOR . "lang" . DIRECTORY_SEPARATOR . $lang . ".php";
        global $handwrite_language;
        $parsedmessage = $handwrite_language[1];
        //has successfully sent a handwritten message
    } elseif (strpos($message, 'plugins/filetransfer/download.php') !== false) {
        include_once dirname(__FILE__) . DIRECTORY_SEPARATOR . "plugins" . DIRECTORY_SEPARATOR . "filetransfer" . DIRECTORY_SEPARATOR . "lang" . DIRECTORY_SEPARATOR . $lang . ".php";
        global $filetransfer_language;
        $parsedmessage = $filetransfer_language[9];
        //has shared a file
    }
    pushMobileNotification($to, $insertedid, $parsedmessage, '1', 0, $timestamp);
    $sql = "update cometchat_chatrooms set lastactivity = '" . mysqli_real_escape_string($GLOBALS['dbh'], $timestamp) . "' where id = '" . mysqli_real_escape_string($GLOBALS['dbh'], $to) . "'";
    $query = mysqli_query($GLOBALS['dbh'], $sql);
    if ($notsilent == 0) {
        return $insertedid;
    }
}
function sendChatroomMessage($to = 0, $message = '', $notsilent = 1)
{
    global $userid;
    global $cookiePrefix;
    global $bannedUserIDs;
    if ($to == 0 && empty($_POST['currentroom']) || $message == '' && $notsilent == 0 || isset($_POST['message']) && $_POST['message'] == '' || empty($userid) || in_array($userid, $bannedUserIDs)) {
        return;
    }
    if (isset($_POST['message']) && !empty($_POST['currentroom'])) {
        $to = mysqli_real_escape_string($GLOBALS['dbh'], $_POST['currentroom']);
        //$message = mysqli_real_escape_string($GLOBALS['dbh'],$_POST['message']);
        $message = $_POST['message'];
    }
    if (isset($message) && $message != '') {
        if (strpos($message, 'CC^CONTROL_') !== false) {
            $message = str_ireplace('CC^CONTROL_', '', $message);
            $message = sanitize($message);
            $controlparameters = json_decode($message, true);
            switch ($controlparameters['name']) {
                case 'avchat':
                    $grp = $controlparameters['params']['grp'];
                    switch ($controlparameters['method']) {
                        case 'endcall':
                            $message = 'CC^CONTROL_AVCHAT_END_CHATROOM_CALL' . $grp;
                            break;
                        case 'rejectcall':
                            $message = 'CC^CONTROL_AVCHAT_REJECT_CHATROOM_CALL' . $grp;
                            break;
                        case 'noanswer':
                            $message = 'CC^CONTROL_AVCHAT_NO_ANSWER_CHATROOM' . $grp;
                            break;
                        case 'canceloutgoingcall':
                            $message = 'CC^CONTROL_AVCHAT_CANCEL_CALL' . $grp;
                            break;
                        case 'busycall':
                            $message = 'CC^CONTROL_AVCHAT_BUSY_CALL' . $grp;
                            break;
                        default:
                            $message = '';
                            break;
                    }
                    break;
                case 'audiochat':
                    $grp = $controlparameters['params']['grp'];
                    switch ($controlparameters['method']) {
                        case 'endcall':
                            $message = 'CC^CONTROL_AUDIOCHAT_END_CHATROOM_CALL' . $grp;
                            break;
                        case 'rejectcall':
                            $message = 'CC^CONTROL_AUDIOCHAT_REJECT_CHATROOM_CALL' . $grp;
                            break;
                        case 'noanswer':
                            $message = 'CC^CONTROL_AUDIOCHAT_NO_ANSWER_CHATROOM' . $grp;
                            break;
                        case 'canceloutgoingcall':
                            $message = 'CC^CONTROL_AUDIOCHAT_CANCEL_CALL' . $grp;
                            break;
                        case 'busycall':
                            $message = 'CC^CONTROL_AUDIOCHAT_BUSY_CALL' . $grp;
                            break;
                        default:
                            $message = '';
                            break;
                    }
                    break;
                case 'broadcast':
                    $grp = $controlparameters['params']['grp'];
                    switch ($controlparameters['method']) {
                        case 'endcall':
                            $message = 'CC^CONTROL_BROADCAST_END_CHATROOM_CALL' . $grp;
                            break;
                        default:
                            $message = '';
                            break;
                    }
                    break;
                case 'chatroom':
                    $delid = $controlparameters['params']['id'];
                    switch ($controlparameters['method']) {
                        case 'deletemessage':
                            $message = 'CC^CONTROL_deletemessage_' . $delid;
                            break;
                        case 'kicked':
                            $message = 'CC^CONTROL_kicked_' . $delid;
                            break;
                        case 'banned':
                            $message = 'CC^CONTROL_banned_' . $delid;
                            break;
                        default:
                            $message = '';
                            break;
                    }
                    break;
                default:
                    break;
            }
        }
    }
    if ($notsilent !== 0) {
        $message = str_ireplace('CC^CONTROL_', '', $message);
        $message = sanitize($message);
    }
    $styleStart = '';
    $styleEnd = '';
    if (!empty($_COOKIE[$cookiePrefix . 'chatroomcolor']) && preg_match('/^[a-f0-9]{6}$/i', $_COOKIE[$cookiePrefix . 'chatroomcolor']) && $notsilent == 1) {
        $styleStart = '<span style="color:#' . mysqli_real_escape_string($GLOBALS['dbh'], $_COOKIE[$cookiePrefix . 'chatroomcolor']) . '">';
        $styleEnd = '</span>';
    }
    if (USE_COMET == 1 && COMET_CHATROOMS == 1) {
        $comet = new Comet(KEY_A, KEY_B);
        if (empty($_SESSION['cometchat']['username'])) {
            $name = '';
            $sql = getUserDetails($userid);
            if ($userid > 10000000) {
                $sql = getGuestDetails($userid);
            }
            $result = mysqli_query($GLOBALS['dbh'], $sql);
            if ($row = mysqli_fetch_assoc($result)) {
                if (function_exists('processName')) {
                    $row['username'] = processName($row['username']);
                }
                $name = $row['username'];
            }
            $_SESSION['cometchat']['username'] = $name;
        } else {
            $name = $_SESSION['cometchat']['username'];
        }
        if (!empty($name)) {
            $sql = "insert into cometchat_chatroommessages (userid,chatroomid,message,sent) values ('" . mysqli_real_escape_string($GLOBALS['dbh'], $userid) . "', '" . mysqli_real_escape_string($GLOBALS['dbh'], $to) . "','" . mysqli_real_escape_string($GLOBALS['dbh'], $styleStart) . mysqli_real_escape_string($GLOBALS['dbh'], $message) . mysqli_real_escape_string($GLOBALS['dbh'], $styleEnd) . "','" . getTimeStamp() . "')";
            $query = mysqli_query($GLOBALS['dbh'], $sql);
            $insertedid = mysqli_insert_id($GLOBALS['dbh']);
            if (defined('DEV_MODE') && DEV_MODE == '1') {
                echo mysqli_error($GLOBALS['dbh']);
            }
            $timestamp = getTimeStamp();
            $info = $comet->publish(array('channel' => md5('chatroom_' . $to . KEY_A . KEY_B . KEY_C), 'message' => array("id" => $insertedid, "from" => $name, "fromid" => $userid, "message" => $styleStart . $message . $styleEnd, "sent" => getTimeStamp())));
            if ($notsilent == 1) {
                sendCCResponse(json_encode(array("id" => $insertedid, "m" => $styleStart . $message . $styleEnd)));
            }
        }
    } else {
        $sql = "insert into cometchat_chatroommessages (userid,chatroomid,message,sent) values ('" . mysqli_real_escape_string($GLOBALS['dbh'], $userid) . "', '" . mysqli_real_escape_string($GLOBALS['dbh'], $to) . "','" . mysqli_real_escape_string($GLOBALS['dbh'], $styleStart) . mysqli_real_escape_string($GLOBALS['dbh'], $message) . mysqli_real_escape_string($GLOBALS['dbh'], $styleEnd) . "','" . mysqli_real_escape_string($GLOBALS['dbh'], getTimeStamp()) . "')";
        $query = mysqli_query($GLOBALS['dbh'], $sql);
        $insertedid = mysqli_insert_id($GLOBALS['dbh']);
        if (defined('DEV_MODE') && DEV_MODE == '1') {
            echo mysqli_error($GLOBALS['dbh']);
        }
        if ($notsilent == 1) {
            sendCCResponse(json_encode(array("id" => $insertedid, "m" => $styleStart . $message . $styleEnd)));
        }
    }
    parsePusher($to, $insertedid, $message, '1');
    $sql = "update cometchat_chatrooms set lastactivity = '" . mysqli_real_escape_string($GLOBALS['dbh'], getTimeStamp()) . "' where id = '" . mysqli_real_escape_string($GLOBALS['dbh'], $to) . "'";
    $query = mysqli_query($GLOBALS['dbh'], $sql);
    if ($notsilent == 0) {
        return $insertedid;
    }
}
Exemple #3
0
function deleteChatroomMessage()
{
    $id = $_REQUEST['currentroom'];
    $delid = $_REQUEST['delid'];
    global $allowdelete;
    global $userid;
    $deleteflag = 0;
    if (!empty($_SESSION['cometchat']['isModerator'])) {
        $deleteflag = 1;
    } elseif (empty($allowdelete)) {
        $sql = "select userid from cometchat_chatroommessages where id='" . mysqli_real_escape_string($GLOBALS['dbh'], $delid) . "'";
        $query = mysqli_query($GLOBALS['dbh'], $sql);
        $row = mysqli_fetch_assoc($query);
        if ($row['userid'] == $userid) {
            $deleteflag = 1;
        }
    }
    if (empty($deleteflag)) {
        echo 0;
        exit;
    } else {
        sendCCResponse(1);
    }
    $del = $delid;
    $sql = "delete from cometchat_chatroommessages where id='" . mysqli_real_escape_string($GLOBALS['dbh'], $del) . "' and chatroomid = '" . mysqli_real_escape_string($GLOBALS['dbh'], $id) . "'";
    $query = mysqli_query($GLOBALS['dbh'], $sql);
    $controlparameters = array('type' => 'modules', 'name' => 'chatroom', 'method' => 'deletemessage', 'params' => array('id' => $delid));
    $controlparameters = json_encode($controlparameters);
    sendChatroomMessage($id, 'CC^CONTROL_' . $controlparameters, 0);
}
 }
 if ($userid > 0) {
     if (!in_array($userid, $bannedUserIDs) && !in_array($_SERVER['REMOTE_ADDR'], $bannedUserIPs)) {
         if (empty($_REQUEST['broadcast'])) {
             $response = sendMessage($to, $message, 0);
         } else {
             $response = broadcastMessage($broadcast);
         }
         if (!empty($_REQUEST['callbackfn']) && $_REQUEST['callbackfn'] == 'mobileapp' && empty($_REQUEST['v2'])) {
             $response = $response['id'];
         }
         if (!empty($_GET['callback'])) {
             header('content-type: application/json; charset=utf-8');
             sendCCResponse($_GET['callback'] . '(' . json_encode($response) . ')');
         } else {
             sendCCResponse(json_encode($response));
         }
         if (empty($_REQUEST['broadcast'])) {
             parsePusher($to, $response['id'], $_SESSION['cometchat']['user']['n'] . ": " . $response['m']);
         } else {
             if (USE_COMET == '1') {
                 publishCometMessages($broadcast, $response[0]['id']);
             }
             foreach ($response as $rkey => $rvalue) {
                 parsePusher($rvalue['from'], $rvalue['id'], $_SESSION['cometchat']['user']['n'] . ": " . $rvalue['m']);
             }
         }
     } else {
         if (empty($_REQUEST['broadcast'])) {
             $sql = "insert into cometchat (cometchat.from,cometchat.to,cometchat.message,cometchat.sent,cometchat.read,cometchat.direction) values ('" . mysqli_real_escape_string($GLOBALS['dbh'], $userid) . "', '" . mysqli_real_escape_string($GLOBALS['dbh'], $to) . "','" . mysqli_real_escape_string($GLOBALS['dbh'], sanitize($bannedMessage)) . "','" . mysqli_real_escape_string($GLOBALS['dbh'], getTimeStamp()) . "',0,2)";
             $query = mysqli_query($GLOBALS['dbh'], $sql);
Exemple #5
0
function sendbroadcast()
{
    global $userid;
    global $bannedUserIDs;
    global $bannedUserIPs;
    $message = $_REQUEST['message'];
    $broadcast_toids = explode(",", $_REQUEST['to']);
    $message = sanitize($_REQUEST['message']);
    $broadcast = array();
    if (!in_array($userid, $bannedUserIDs) && !in_array($_SERVER['REMOTE_ADDR'], $bannedUserIPs)) {
        for ($i = 0; $i < sizeof($broadcast_toids); $i++) {
            $tempMsg = array('to' => $broadcast_toids[$i], 'message' => $message, 'dir' => 0);
            array_push($broadcast, $tempMsg);
        }
        $_REQUEST['broadcast'] = 1;
        $response = broadcastMessage($broadcast, $broadcast_toids);
        if (isset($_GET['callback'])) {
            header('content-type: application/json; charset=utf-8');
            sendCCResponse($_GET['callback'] . '(' . json_encode($response) . ')');
        } else {
            sendCCResponse(json_encode($response));
        }
        publishCometMessages($broadcast);
        foreach ($response as $rkey => $rvalue) {
            parsePusher($to, $rvalue['id'], $_SESSION['cometchat']['user']['n'] . ": " . $rvalue['m']);
        }
    }
}
	software piracy, and patents held by individuals, corporations, or other entities. 
If any of the terms of this Agreement are violated, Inscripts reserves the right 
	to revoke the Software license at any time. 
The above copyright notice and this permission notice shall be included in
	all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
	IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
	FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
	AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
	LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
	OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
	THE SOFTWARE.
*/
include_once dirname(dirname(dirname(__FILE__))) . DIRECTORY_SEPARATOR . "cometchat_init.php";
if (!empty($_REQUEST['channel'])) {
    sendCCResponse(1);
}
include_once dirname(__FILE__) . DIRECTORY_SEPARATOR . "config.php";
include_once dirname(__FILE__) . DIRECTORY_SEPARATOR . "emoji.php";
$cookiefile = dirname(dirname(dirname(__FILE__))) . DIRECTORY_SEPARATOR . 'cache' . DIRECTORY_SEPARATOR . 'cookie.txt';
$pushUsername = '******' . $_SERVER['HTTP_HOST'];
$pushPassword = md5($pushUsername);
if (empty($pushAPIKey)) {
    $pushAPIKey = 'BGJbP31xBhGvXzt4fQsxtfmzMb5eYxcb';
}
if (empty($notificationName)) {
    $notificationName = 'CometChat';
}
if (isset($_REQUEST['chatroommode']) && isset($_REQUEST['displayname'])) {
    pushMobileNotification($_REQUEST['message'], $_REQUEST['displayname'], $_REQUEST['channel'], $_REQUEST['channel']);
} else {
function sendChatroomMessage($to = 0, $message = '', $notsilent = 1)
{
    global $userid;
    global $cookiePrefix;
    global $bannedUserIDs;
    if ($to == 0 && empty($_POST['currentroom']) || $message == '' && $notsilent == 0 || isset($_POST['message']) && $_POST['message'] == '' || empty($userid) || in_array($userid, $bannedUserIDs)) {
        return;
    }
    if (isset($_POST['message']) && !empty($_POST['currentroom'])) {
        $to = $_POST['currentroom'];
        $message = $_POST['message'];
    }
    if ($notsilent !== 0) {
        $message = str_ireplace('CC^CONTROL_', '', $message);
        $message = sanitize($message);
    }
    $styleStart = '';
    $styleEnd = '';
    if (!empty($_COOKIE[$cookiePrefix . 'chatroomcolor']) && preg_match('/^[a-f0-9]{6}$/i', $_COOKIE[$cookiePrefix . 'chatroomcolor']) && $notsilent == 1) {
        $styleStart = '<span style="color:#' . $_COOKIE[$cookiePrefix . 'chatroomcolor'] . '">';
        $styleEnd = '</span>';
    }
    if (USE_COMET == 1 && COMET_CHATROOMS == 1) {
        $insertedid = getTimeStamp() . rand(100, 999);
        if ($notsilent == 1) {
            sendCCResponse(json_encode(array("id" => $insertedid, "m" => $styleStart . $message . $styleEnd)));
        }
        $comet = new Comet(KEY_A, KEY_B);
        if (empty($_SESSION['cometchat']['username'])) {
            $name = '';
            $sql = getUserDetails($userid);
            if ($userid > 10000000) {
                $sql = getGuestDetails($userid);
            }
            $result = mysqli_query($GLOBALS['dbh'], $sql);
            if ($row = mysqli_fetch_assoc($result)) {
                if (function_exists('processName')) {
                    $row['username'] = processName($row['username']);
                }
                $name = $row['username'];
            }
            $_SESSION['cometchat']['username'] = $name;
        } else {
            $name = $_SESSION['cometchat']['username'];
        }
        if (!empty($name)) {
            $info = $comet->publish(array('channel' => md5('chatroom_' . $to . KEY_A . KEY_B . KEY_C), 'message' => array("from" => $name, "fromid" => $userid, "message" => $styleStart . $message . $styleEnd, "sent" => $insertedid)));
            if (defined('SAVE_LOGS') && SAVE_LOGS == 1) {
                $sql = "insert into cometchat_chatroommessages (userid,chatroomid,message,sent) values ('" . mysqli_real_escape_string($GLOBALS['dbh'], $userid) . "', '" . mysqli_real_escape_string($GLOBALS['dbh'], $to) . "','" . $styleStart . mysqli_real_escape_string($GLOBALS['dbh'], $message) . $styleEnd . "','" . getTimeStamp() . "')";
                $query = mysqli_query($GLOBALS['dbh'], $sql);
            }
        }
    } else {
        $sql = "insert into cometchat_chatroommessages (userid,chatroomid,message,sent) values ('" . mysqli_real_escape_string($GLOBALS['dbh'], $userid) . "', '" . mysqli_real_escape_string($GLOBALS['dbh'], $to) . "','" . $styleStart . mysqli_real_escape_string($GLOBALS['dbh'], $message) . $styleEnd . "','" . getTimeStamp() . "')";
        $query = mysqli_query($GLOBALS['dbh'], $sql);
        $insertedid = mysqli_insert_id($GLOBALS['dbh']);
        if ($notsilent == 1) {
            sendCCResponse(json_encode(array("id" => $insertedid, "m" => $styleStart . $message . $styleEnd)));
        }
        if (defined('DEV_MODE') && DEV_MODE == '1') {
            echo mysqli_error($GLOBALS['dbh']);
        }
    }
    parsePusher($to, $insertedid, $message, '1');
    $sql = "update cometchat_chatrooms set lastactivity = '" . getTimeStamp() . "' where id = '" . mysqli_real_escape_string($GLOBALS['dbh'], $to) . "'";
    $query = mysqli_query($GLOBALS['dbh'], $sql);
    if ($notsilent != 0) {
        return $insertedid;
    }
}
function deleteChatroomMessage()
{
    $id = $_REQUEST['currentroom'];
    $delid = $_REQUEST['delid'];
    global $allowdelete;
    global $userid;
    $deleteflag = 0;
    if (!empty($_SESSION['cometchat']['isModerator'])) {
        $deleteflag = 1;
    } elseif (empty($allowdelete)) {
        if (USE_COMET == 1 && COMET_CHATROOMS == 1) {
            $sql = "select message from cometchat_comethistory where message like '%s:13:\"" . mysqli_real_escape_string($GLOBALS['dbh'], $delid) . "\";%' ";
            $query = mysqli_query($GLOBALS['dbh'], $sql);
            $row = mysqli_fetch_assoc($query);
            $message = unserialize($row['message']);
            if ($message['fromid'] == $userid) {
                $deleteflag = 1;
            }
        } else {
            $sql = "select userid from cometchat_chatroommessages where id='" . mysqli_real_escape_string($GLOBALS['dbh'], $delid) . "'";
            $query = mysqli_query($GLOBALS['dbh'], $sql);
            $row = mysqli_fetch_assoc($query);
            if ($row['userid'] == $userid) {
                $deleteflag = 1;
            }
        }
    }
    if (empty($deleteflag)) {
        echo 0;
        exit;
    } else {
        sendCCResponse(1);
    }
    if (USE_COMET == 1 && COMET_CHATROOMS == 1) {
        $sql = "delete from cometchat_comethistory where message like '%s:13:\"" . mysqli_real_escape_string($GLOBALS['dbh'], $delid) . "\";%' ";
        $query = mysqli_query($GLOBALS['dbh'], $sql);
    } else {
        $del = $delid;
        $sql = "delete from cometchat_chatroommessages where id='" . mysqli_real_escape_string($GLOBALS['dbh'], $del) . "' and chatroomid = '" . mysqli_real_escape_string($GLOBALS['dbh'], $id) . "'";
        $query = mysqli_query($GLOBALS['dbh'], $sql);
    }
    sendChatroomMessage($id, 'CC^CONTROL_deletemessage_' . $delid, 0);
}