<?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 ]); }