Jakweb.ch stuff
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.
clouddesk/rest/talk.php

250 lines
8.1 KiB

1 year ago
<?php
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 6 May 1998 03:10:00 GMT");
/*===============================================*\
|| ############################################# ||
|| # JAKWEB.CH / Version 2.0.2 # ||
|| # ----------------------------------------- # ||
|| # Copyright 2022 JAKWEB All Rights Reserved # ||
|| ############################################# ||
\*===============================================*/
if (!file_exists('config.php')) die('rest_api config.php not exist');
require_once 'config.php';
// include the PHP library (if not autoloaded)
require(APP_PATH.'class/class.emoji.php');
$userid = $loginhash = $chatid = $message = "";
$task = false;
if (isset($_REQUEST['userid']) && !empty($_REQUEST['userid']) && is_numeric($_REQUEST['userid'])) $userid = $_REQUEST['userid'];
if (isset($_REQUEST['loginhash']) && !empty($_REQUEST['loginhash'])) $loginhash = $_REQUEST['loginhash'];
if (isset($_REQUEST['chatid']) && !empty($_REQUEST['chatid'])) $chatid = $_REQUEST['chatid'];
if (isset($_REQUEST['task']) && !empty($_REQUEST['task'])) $task = $_REQUEST['task'];
if (!empty($userid) && !empty($loginhash) && !empty($chatid) && is_numeric($chatid)) {
// Let's check if we are logged in
$usr = $jakuserlogin->jakCheckrestlogged($userid, $loginhash);
if ($usr) {
// Select the user fields
$jakuser = new JAK_user($usr);
// Check if a sibling has logged in
if ($jakuser->getVar("opid") != 0) {
$opcacheid = $jakuser->getVar("opid");
} else {
$opcacheid = $jakuser->getVar("id");
}
// Cache stuff
if (file_exists(APP_PATH.JAK_CACHE_DIRECTORY.'/opcache'.$opcacheid.'.php')) include_once APP_PATH.JAK_CACHE_DIRECTORY.'/opcache'.$opcacheid.'.php';
// timezone from server
date_default_timezone_set(JAK_TIMEZONESERVER);
$jakdb->query('SET time_zone = "'.date("P").'"');
$USER_LANGUAGE = strtolower($jakuser->getVar("language"));
// Import the language file
if ($USER_LANGUAGE && file_exists(APP_PATH.JAK_OPERATOR_LOC.'/lang/'.$USER_LANGUAGE.'.php')) {
include_once APP_PATH.JAK_OPERATOR_LOC.'/lang/'.$USER_LANGUAGE.'.php';
$lang = $USER_LANGUAGE;
} else {
include_once(APP_PATH.JAK_OPERATOR_LOC.'/lang/'.JAK_LANG.'.php');
$lang = JAK_LANG;
}
// Typing status
if ($task == "typing") {
$result = $jakdb->update("checkstatus", ["typeo" => 1], ["convid" => $chatid]);
if ($result) {
// Take the chat go to chat
die(json_encode(array('status' => true, 'task' => "typing")));
}
// Take the chat go to chat
die(json_encode(array('status' => false, 'task' => 7)));
}
// Typing status false
if ($task == "untyping") {
$result = $jakdb->update("checkstatus", ["typeo" => 0], ["convid" => $chatid]);
if ($result) {
// Take the chat go to chat
die(json_encode(array('status' => true, 'task' => "untyping")));
}
// Take the chat go to chat
die(json_encode(array('status' => false, 'task' => 7)));
}
// Save the message
if ($task == "new") {
$message = trim($_REQUEST['message']);
if (!empty($message)) {
$row = $jakdb->get("checkstatus", ["convid", "hide"], ["convid" => $chatid]);
if (isset($row) && !empty($row)) {
// We sanitize the input
$message = strip_tags($message);
$message = filter_var($message, FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$message = trim($message);
// Convert the smilies to shortcode
$message = Emojione\Emojione::toShort($message);
if (!$row['hide']) {
// Check if we have to quote
$msgquote = 0;
if (isset($_REQUEST['msgid']) && !empty($_REQUEST['msgid']) && is_numeric($_REQUEST['msgid'])) $msgquote = $_REQUEST['msgid'];
$jakdb->insert("transcript", [
"name" => $jakuser->getVar("name"),
"message" => $message,
"user" => $userid.'::'.$jakuser->getVar("username"),
"operatorid" => $userid,
"convid" => $row['convid'],
"quoted" => $msgquote,
"class" => "admin",
"time" => $jakdb->raw("NOW()")]);
// Update the status after answer
$jakdb->update("checkstatus", ["newc" => 1, "typeo" => 0, "newo" => 0, "statuso" => time()], ["convid" => $row['convid']]);
// Take the chat go to chat
die(json_encode(array('status' => true, 'task' => "sendmsg")));
} elseif ($row['hide']) {
if (!empty($HD_ANSWERS) && is_array($HD_ANSWERS)) foreach ($HD_ANSWERS as $v) {
if ($v["msgtype"] == 4 && $v["lang"] == $lang) {
$phold = array("%operator%","%client%","%email%");
$replace = array($jakuser->getVar("name"), $jakuser->getVar("username"), JAK_EMAIL);
$message = str_replace($phold, $replace, $v["message"]);
$jakdb->insert("transcript", [
"name" => $jakuser->getVar("name"),
"message" => $message,
"convid" => $row['convid'],
"class" => "notice",
"time" => $jakdb->raw("NOW()")]);
}
}
// Take the chat go to chat
die(json_encode(array('status' => true, 'task' => "sendmsg")));
}
}
}
die(json_encode(array('status' => false, 'errorcode' => 11)));
}
// Edit a message
if ($task == "edit") {
$message = trim($_REQUEST['message']);
if (!empty($message) && isset($_REQUEST['msgid']) && is_numeric($_REQUEST['msgid'])) {
// We sanitize the input
$message = strip_tags($message);
$message = filter_var($message, FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$message = trim($message);
// update the message
$jakdb->update("transcript", ["message" => $message, "editoid" => $userid, "edited" => $jakdb->raw("NOW()")], ["AND" => ["id" => $_REQUEST['msgid'], "convid" => $chatid]]);
// send to client
$jakdb->update("checkstatus", ["msgedit" => $_REQUEST['msgid'], "typeo" => 0], ["convid" => $chatid]);
// Take the chat go to chat
die(json_encode(array('status' => true, 'task' => "editmsg")));
}
die(json_encode(array('status' => false, 'errorcode' => 7)));
}
// Starred Message
if ($task == "starred") {
// message = starred
if (isset($_REQUEST['message']) && isset($_REQUEST['msgid']) && is_numeric($_REQUEST['msgid'])) {
if ($_REQUEST['message'] == 1) {
$starred = 0;
} else {
$starred = 1;
}
$update = $jakdb->update("transcript", ["starred" => $starred], ["AND" => ["id" => $_REQUEST['msgid'], "convid" => $chatid]]);
// Take the chat go to chat
die(json_encode(array('status' => true, 'task' => "starrmsg")));
}
die(json_encode(array('status' => false, 'errorcode' => 7)));
}
// Delete a message
if ($task == "delete") {
// message = plevel
if (isset($_REQUEST['message']) && isset($_REQUEST['msgid']) && is_numeric($_REQUEST['msgid'])) {
if ($_REQUEST['message'] == 1) {
$plevel = 2;
} else {
$plevel = 1;
}
// Update the plevel in the transcript table
$update = $jakdb->update("transcript", ["plevel" => $plevel], ["AND" => ["id" => $_REQUEST['msgid'], "convid" => $chatid]]);
// Update the status page
$jakdb->update("checkstatus", ["typeo" => 0, "msgdel" => $_REQUEST['msgid']], ["convid" => $chatid]);
// Take the chat go to chat
die(json_encode(array('status' => true, 'task' => "deletemsg")));
}
die(json_encode(array('status' => false, 'errorcode' => 7)));
}
} else {
die(json_encode(array('status' => false, 'errorcode' => 1)));
}
}
die(json_encode(array('status' => false, 'errorcode' => 7)));
?>