<?php
function logs_list_action($params) {
$site = $params["site"];
$before = date("Y-m-d H:i:s", time() - intval($params["period"]) * 24 * 3600);
$per_page = 25;
$pagenum = isset($params["pagenum"]) ? intval($params["pagenum"]) : 1;
$offset = $per_page * ($pagenum - 1);
$site = ($site == "*") ? "%%" : $site;
$query = db() -> prepare("SELECT * FROM `adm_logs` WHERE `site` LIKE :site AND `create_at`>:before ORDER BY `id` DESC LIMIT {$offset}, {$per_page}");
$query -> execute([
":site" => $site,
":before" => $before
]);
$result = $query -> fetchAll(PDO::FETCH_ASSOC);
// total rows
$query = db() -> prepare("SELECT COUNT(*) FROM `adm_logs` WHERE `site` LIKE :site AND `create_at`>:before");
$query -> execute([
":site" => $site,
":before" => $before
]);
$result_count = $query -> fetch(PDO::FETCH_ASSOC);
$total = (int)$result_count["COUNT(*)"];
echo json_encode([
"status" => true,
"logs" => $result,
"paginator" => [
"total" => $total,
"per_page" => $per_page,
"pagenum" => $pagenum,
"total_pages" => ceil($total / $per_page)
]
]);
}
function logs_dialog_action($params) {
header('Content-Type: text/html');
$chat_id = intval($params["chat_id"]);
if(!$chat_id) {
return die("Nothing found");
}
$query = db() -> prepare("SELECT * FROM `history` WHERE `chat_id`=:chat_id ORDER BY `id` ASC");
$query -> execute([
":chat_id" => $chat_id
]);
$result = $query -> fetchAll(PDO::FETCH_ASSOC);
echo '
<style>
.container {
box-sizing: border-box;
padding: 20px;
max-width: 600px;
}
</style>
';
echo '<div class="container">';
echo "<h1>CHAT ID: {$chat_id}</h1>";
foreach($result as $msg) {
echo "<p><strong>{$msg["role"]}</strong> [{$msg["create_at"]}]<br>{$msg["content"]}</p>";
}
echo "</div>";
}
function get_chat_id_by_channel($channel_name) {
$query = db() -> prepare("SELECT `id` FROM `channel` WHERE `name`=:channel_name LIMIT 1");
$query -> execute([
":channel_name" => $channel_name
]);
$res = $query -> fetch(\PDO::FETCH_ASSOC);
$channel_id = $res["id"];
$query = db() -> prepare("SELECT `chat_id` FROM `chat_channel` WHERE `channel_id`=:channel_id LIMIT 1");
$query -> execute([
":channel_id" => $channel_id
]);
$res = $query -> fetch(\PDO::FETCH_ASSOC);
if($res) {
return $res["chat_id"];
}
return false;
}
function logs_rating_action($params) {
$chat_id = get_chat_id_by_channel($params["channel_name"]);
if(!$chat_id) {
die(json_encode([
"status" => false
]));
}
$query = db() -> prepare("UPDATE `adm_logs` SET `rating`=:rating WHERE `chat_id`=:chat_id LIMIT 1");
$query -> execute([
":chat_id" => $chat_id,
":rating" => $params["rating"]
]);
echo json_encode([
"status" => true
]);
}