You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
120 lines
4.0 KiB
120 lines
4.0 KiB
1 year ago
|
<?php
|
||
|
|
||
|
header("Cache-Control: no-cache, must-revalidate");
|
||
|
header("Expires: Sat, 6 May 1980 03:10:00 GMT");
|
||
|
|
||
|
/*===============================================*\
|
||
|
|| ############################################# ||
|
||
|
|| # JAKWEB.CH / Version 2.0.2 # ||
|
||
|
|| # ----------------------------------------- # ||
|
||
|
|| # Copyright 2022 JAKWEB All Rights Reserved # ||
|
||
|
|| ############################################# ||
|
||
|
\*===============================================*/
|
||
|
|
||
|
if (!file_exists('../config.php')) die('ajax/[available.php] config.php not exist');
|
||
|
require_once '../config.php';
|
||
|
|
||
|
if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) || !isset($_SESSION['groupchatid']) || !isset($_SESSION['gcuid'])) die("Nothing to see here");
|
||
|
|
||
|
if (!$_POST['msg']) die(json_encode(array("status" => 0, "html" => "")));
|
||
|
|
||
|
$row = $jakdb->get("groupchatuser", ["id", "groupchatid", "usr_avatar", "lastmsg", "banned"], ["id" => $_SESSION['gcuid']]);
|
||
|
|
||
|
if (isset($row) && !empty($row)) {
|
||
|
|
||
|
$message = html_entity_decode($_POST['msg']);
|
||
|
$message = strip_tags($message);
|
||
|
$message = filter_var($message, FILTER_SANITIZE_FULL_SPECIAL_CHARS);
|
||
|
|
||
|
// Ok we do need to remove our special signs for placeholder and new lines
|
||
|
$badstuff = array(":#!#:", ":!n:");
|
||
|
$goodstuff = array("", "");
|
||
|
|
||
|
$message = str_replace($badstuff, $goodstuff, $message);
|
||
|
$message = trim($message);
|
||
|
|
||
|
if (isset($message) && !empty($message) && $row['banned'] == 0) {
|
||
|
|
||
|
// Current time
|
||
|
$ctime = microtime(true);
|
||
|
|
||
|
// Flood time
|
||
|
$ftime = $ctime - 5;
|
||
|
|
||
|
// Check for duplicate messages and 5 second flood
|
||
|
if ($row["lastmsg"] > $ftime || (isset($_SESSION["lastmsg"]) && $_SESSION["lastmsg"] == $message)) {
|
||
|
// Now check the button id
|
||
|
if (file_exists($cacheopid)) {
|
||
|
|
||
|
// Import the language file
|
||
|
if ($groupchat[$_SESSION['groupchatid']]['lang'] && file_exists(APP_PATH.'lang/'.strtolower($groupchat[$_SESSION['groupchatid']]['lang']).'.php')) {
|
||
|
include_once(APP_PATH.'lang/'.strtolower($groupchat[$_SESSION['groupchatid']]['lang']).'.php');
|
||
|
} else {
|
||
|
include_once(APP_PATH.'lang/'.JAK_LANG.'.php');
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
$errormsg = $jkl['e17'];
|
||
|
if ($row["lastmsg"] > $ftime) $errormsg = $jkl['e18'];
|
||
|
|
||
|
die(json_encode(array("status" => 0, "html" => $errormsg)));
|
||
|
}
|
||
|
|
||
|
// the last message in a session
|
||
|
$_SESSION["lastmsg"] = $message;
|
||
|
|
||
|
// Check if we have a quote
|
||
|
$msgquote = "";
|
||
|
if (isset($_POST['msgquote']) && !empty($_POST['msgquote'])) $msgquote = filter_var($_POST['msgquote'], FILTER_SANITIZE_FULL_SPECIAL_CHARS);
|
||
|
|
||
|
// Insert the message into the text file
|
||
|
$groupchatfile = APP_PATH.JAK_CACHE_DIRECTORY.'/groupchat'.$row["groupchatid"].'.txt';
|
||
|
|
||
|
if (file_exists($groupchatfile)) {
|
||
|
|
||
|
// Check file size, if bigger than 500kb save to db and start fresh.
|
||
|
$gcfilesize = filesize($groupchatfile);
|
||
|
|
||
|
if ($gcfilesize > 500000) {
|
||
|
|
||
|
$chatfile = file_get_contents($groupchatfile);
|
||
|
|
||
|
// we have a chatfile
|
||
|
if (isset($chatfile) && !empty($chatfile)) {
|
||
|
|
||
|
// Insert into the database
|
||
|
$jakdb->insert("groupchatmsg", ["groupchatid" => $row["groupchatid"], "opid" => $opcacheid, "chathistory" => $chatfile, "operatorid" => 0, "created" => $jakdb->raw("NOW()")]);
|
||
|
|
||
|
// Finally remove the file and start fresh
|
||
|
unlink($groupchatfile);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
// We have an operator
|
||
|
$ismod = "false";
|
||
|
if (isset($_SESSION['gcopid'])) {
|
||
|
$ismod = "true";
|
||
|
}
|
||
|
|
||
|
// Modify the message with a time stamp
|
||
|
$cmsg = jak_string_encrypt_decrypt($ctime.':#!#:'.$row['id'].':#!#:'.$_SESSION['gcname'].':#!#:'.$row["usr_avatar"].':#!#:'.$message.':#!#:'.$msgquote.':#!#:'.$ismod).':!n:';
|
||
|
|
||
|
// Let's inform others that a new client has entered the chat
|
||
|
file_put_contents($groupchatfile, $cmsg, FILE_APPEND);
|
||
|
|
||
|
$jakdb->update("groupchatuser", ["lastmsg" => time()], ["id" => $row['id']]);
|
||
|
|
||
|
die(json_encode(array("status" => 1)));
|
||
|
|
||
|
} else {
|
||
|
die(json_encode(array("status" => 0)));
|
||
|
}
|
||
|
} else {
|
||
|
die(json_encode(array("status" => 0)));
|
||
|
}
|
||
|
?>
|