From 79d3c716e38084beab01d34a5f49a5aee7e72526 Mon Sep 17 00:00:00 2001 From: Snap Date: Sat, 25 Apr 2015 22:30:21 -0700 Subject: Some work on the Chat. Fixed bug where user could chat as "SERVER" --- includes/chats.php | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'includes/chats.php') diff --git a/includes/chats.php b/includes/chats.php index 47ecd39..5bfd61f 100644 --- a/includes/chats.php +++ b/includes/chats.php @@ -108,6 +108,7 @@ function enterChannel($userID, $channel = 1) { $stmt->bind_param('ii', $userID, $channel); $stmt->execute(); $stmt->close(); + cleanupChannel(); return; } @@ -122,6 +123,14 @@ function exitChannel($userID, $channel = 1) { return; } +//User leaves the channel +function cleanupChannel($channel = 1) { + global $mysqli; + + $mysqli->query("DELETE FROM `chatUsers` WHERE TIME_TO_SEC(TIMEDIFF(NOW(), chatUsers.dateLastActive)) > 800"); + return; +} + function channelListUpdated($timeStamp) { global $mysqli; @@ -150,7 +159,8 @@ function getChannelList($channel = 1) { chatUsers.userID as 'ID', chatUsers.dateEntered, - TIME_TO_SEC(TIMEDIFF(NOW(), chatUsers.dateLastActive)) as dateLastActive, + TIME_TO_SEC(TIMEDIFF(NOW(), chatUsers.dateLastActive)) as secFromLastActive, + TIME_TO_SEC(TIMEDIFF(NOW(), users.dateChatGaggedUntil)) as secSinceGagged, chatUsers.isAdmin, chatUsers.isMod, @@ -160,9 +170,11 @@ function getChannelList($channel = 1) { users.wallColor, users.wallEmblem, users.wallOrientation + FROM `chatUsers` LEFT JOIN `users` ON chatUsers.userID = users.ID + WHERE TIME_TO_SEC(TIMEDIFF(NOW(), chatUsers.dateLastActive)) < 300 ORDER BY chatUsers.isMod DESC, chatUsers.dateEntered ASC "); -- cgit v1.2.3 From e90a8d192446fce277dc3efe4f2913d5fecca0dc Mon Sep 17 00:00:00 2001 From: Snap Date: Tue, 28 Apr 2015 15:53:05 -0700 Subject: Chat improvements. Fixed "&P" or ";P" bug. Reduced size of chat-request size considerably with use of header_remove(); --- ajax/chat.ajax.php | 1 + includes/chats.php | 1 + pages/chat.php | 18 +++++++++++------- 3 files changed, 13 insertions(+), 7 deletions(-) (limited to 'includes/chats.php') diff --git a/ajax/chat.ajax.php b/ajax/chat.ajax.php index 576ab39..2ffa878 100644 --- a/ajax/chat.ajax.php +++ b/ajax/chat.ajax.php @@ -6,6 +6,7 @@ session_start(); // exit; // } +header_remove(); //ini_set('display_errors',1); //ini_set('display_startup_errors',1); diff --git a/includes/chats.php b/includes/chats.php index 5bfd61f..d9616fd 100644 --- a/includes/chats.php +++ b/includes/chats.php @@ -160,6 +160,7 @@ function getChannelList($channel = 1) { chatUsers.dateEntered, TIME_TO_SEC(TIMEDIFF(NOW(), chatUsers.dateLastActive)) as secFromLastActive, + TIME_TO_SEC(TIMEDIFF(NOW(), chatUsers.dateEntered)) as secFromEntered, TIME_TO_SEC(TIMEDIFF(NOW(), users.dateChatGaggedUntil)) as secSinceGagged, chatUsers.isAdmin, diff --git a/pages/chat.php b/pages/chat.php index 4f10a1c..cc8d0eb 100644 --- a/pages/chat.php +++ b/pages/chat.php @@ -46,12 +46,13 @@ function getChatTimer() { //addChatMessage("Debug", "Chat timer called!"); } -pollChannelListTimer(); -function pollChannelListTimer() { - setTimeout("pollChannelListTimer()", channelTimerDelay); - pollChannelList(); -} +var pollChannelListTimer = setInterval(function () {pollChannelList()}, channelTimerDelay); +// pollChannelListTimer(); +// function pollChannelListTimer() { + // setTimeout("pollChannelListTimer()", channelTimerDelay); + // pollChannelList(); +// } var firstGetChat = true; function getChatDone(data) { @@ -212,7 +213,7 @@ function replaceSmileys(chat) { chat = chat.replace(/\:d/gi, ''); chat = chat.replace(/\:o/gi, ''); chat = chat.replace(/\:p/gi, ''); - chat = chat.replace(/;p/gi, ''); + chat = chat.replace(/;p/gi, ''); chat = chat.replace(/\:c/gi, ''); chat = chat.replace(/\:s/gi, ''); chat = chat.replace(/\>_\</g, ''); @@ -314,8 +315,11 @@ function channelListShow(JO) { // u.secFromLastActive could be used in here someplace.. + var dateEntered = new Date(); + dateEntered.setTime(dateEntered.getTime() + u.secFromEntered * 1000); + if (u.wallEmblem == undefined) u.wallEmblem = 'blank.png'; - p = p+ ""; + p = p+ ""; p = p+ ""; p = p+ "
"; -- cgit v1.2.3 From 1d1e7d369080702f82a4cf1cc528928a54e6a6b2 Mon Sep 17 00:00:00 2001 From: Snap Date: Tue, 5 May 2015 16:47:00 -0700 Subject: Partial multiple channels for chat implementation --- includes/chats.php | 29 ++++++++++++++++------------- js/chat.js | 5 +++++ 2 files changed, 21 insertions(+), 13 deletions(-) (limited to 'includes/chats.php') diff --git a/includes/chats.php b/includes/chats.php index d9616fd..92bd90e 100644 --- a/includes/chats.php +++ b/includes/chats.php @@ -34,27 +34,27 @@ function muteUser($userID, $numMinutes) { -function addChat($userID, $message) { +function addChat($userID, $message, $channel = 1) { global $mysqli; if ($message == '') return; $stmt = $mysqli->prepare("INSERT INTO `chat` - (`userID`, `message`) - VALUES (?, ?)"); - $stmt->bind_param('is', $userID, $message); + (`userID`, `message`, `channel`) + VALUES (?, ?, ?)"); + $stmt->bind_param('isi', $userID, $message, $channel); $stmt->execute(); $ID = $stmt->insert_id; $stmt->close(); //Turnicate messages. - $deleteFromID = $ID - CHAT_ROWS_TO_KEEP; - $mysqli->query("DELETE FROM `chat` WHERE `ID` < $deleteFromID"); + //$deleteFromID = $ID - CHAT_ROWS_TO_KEEP; + //$mysqli->query("DELETE FROM `chat` WHERE `ID` < $deleteFromID"); return $ID; } -function getChat($startID = 0) { +function getChat($startID = 0, $channel = 1) { global $mysqli; if (!is_numeric($startID)) return false; @@ -74,19 +74,22 @@ function getChat($startID = 0) { LEFT JOIN `users` ON chat.userID = users.ID WHERE chat.ID > '$startID' - ORDER BY chat.dateSent ASC, chat.ID ASC - ")) { - $array = array(); + AND chat.channel = '$channel' + ORDER BY chat.dateSent DESC, chat.ID DESC + LIMIT " . CHAT_ROWS_TO_KEEP) + ) { + $chatData = array(); if ($res->num_rows == 0) { $res->close(); return false; } while ($response = $res->fetch_assoc()) { - $array[] = $response; + $chatData[] = $response; } $res->close(); - if (count($array) < 1) return false; - return $array; + if (count($chatData) < 1) return false; + $chatData = array_reverse($chatData); + return $chatData; } else { printf("DError: %s\n", $mysqli->error); return false; diff --git a/js/chat.js b/js/chat.js index 1a2aed3..6ea5f8e 100644 --- a/js/chat.js +++ b/js/chat.js @@ -1,4 +1,6 @@ +//TODO: Add an initiateChat() function. + var lastID = 1; //Internet Explorer doesn't support "const" //CONSTANTS: ... @@ -11,8 +13,10 @@ var chatTimerDelayWindowHidden = 90000; var chatTimerDelay = chatTimerDelayDefault; var isChatWindowVisible = true; var skipNextGetChat = false; +var channel = 1; var chatBuffer = new Array(); + getChatTimer(); function getChatTimer() { setTimeout("getChatTimer()", chatTimerDelay); @@ -214,6 +218,7 @@ function prepChat(chat) { var chatIsBusy = false; function getChat(message) { var dataString = 'getChatFromID='+lastID; + dataString += '&channel='+channel; var backup = new Array(); var fncComplete = ''; -- cgit v1.2.3