File manager - Edit - /home/webapp69.cm.in.th/u69319090024/Shop24/chat_api.php
Back
<?php require_once __DIR__ . '/db.php'; header('Content-Type: application/json; charset=utf-8'); if (!is_logged_in()) { echo json_encode(['success' => false, 'error' => 'กรุณาเข้าสู่ระบบก่อนใช้งานแชท']); exit; } $user = current_user(); $current_user_id = $user['id']; $action = $_REQUEST['action'] ?? ''; // ------------------------------------------------------------ // 1. ส่งข้อความแชท (Send Message) // ------------------------------------------------------------ if ($action === 'send' && $_SERVER['REQUEST_METHOD'] === 'POST') { $order_id = filter_input(INPUT_POST, 'order_id', FILTER_VALIDATE_INT) ?: null; $receiver_id = filter_input(INPUT_POST, 'receiver_id', FILTER_VALIDATE_INT); $message = trim($_POST['message'] ?? ''); if (empty($message)) { echo json_encode(['success' => false, 'error' => 'กรุณากรอกข้อความ']); exit; } // หากไม่มี receiver_id ให้ค้นหาแอดมิน (หากคนส่งเป็น user) หรือหาผู้ซื้อของ order (หากคนส่งเป็น admin) if (!$receiver_id) { if (is_admin()) { if ($order_id) { $stmt = $pdo->prepare("SELECT user_id FROM orders WHERE id = ?"); $stmt->execute([$order_id]); $receiver_id = $stmt->fetchColumn(); } } else { // ดึง admin ตัวแรกในระบบ $stmt = $pdo->query("SELECT id FROM users WHERE role = 'admin' LIMIT 1"); $receiver_id = $stmt->fetchColumn(); } } if (!$receiver_id) { echo json_encode(['success' => false, 'error' => 'ไม่พบผู้รับข้อความ']); exit; } $stmt = $pdo->prepare(" INSERT INTO chat_messages (order_id, sender_id, receiver_id, message) VALUES (?, ?, ?, ?) "); $stmt->execute([$order_id, $current_user_id, $receiver_id, $message]); echo json_encode(['success' => true, 'message_id' => $pdo->lastInsertId()]); exit; } // ------------------------------------------------------------ // 2. ดึงข้อความแชท (Get Messages) // ------------------------------------------------------------ if ($action === 'get') { $order_id = filter_input(INPUT_GET, 'order_id', FILTER_VALIDATE_INT) ?: null; $other_user_id = filter_input(INPUT_GET, 'other_user_id', FILTER_VALIDATE_INT); // หากไม่มี other_user_id ให้หาจากคำสั่งซื้อ หรือหาแอดมิน if (!$other_user_id) { if (is_admin()) { if ($order_id) { $stmt = $pdo->prepare("SELECT user_id FROM orders WHERE id = ?"); $stmt->execute([$order_id]); $other_user_id = $stmt->fetchColumn(); } } else { $stmt = $pdo->query("SELECT id FROM users WHERE role = 'admin' LIMIT 1"); $other_user_id = $stmt->fetchColumn(); } } if (!$other_user_id) { echo json_encode(['success' => true, 'messages' => []]); exit; } // อัปเดตสถานะอ่านแล้วสำหรับข้อความที่ส่งมาหาเรา $stmt_read = $pdo->prepare(" UPDATE chat_messages SET is_read = 1 WHERE receiver_id = ? AND sender_id = ? "); $stmt_read->execute([$current_user_id, $other_user_id]); // ดึงประวัติข้อความสนทนา $where_order = $order_id ? "AND (order_id = ? OR order_id IS NULL)" : ""; $sql = " SELECT m.*, u.fullname AS sender_name, u.role AS sender_role FROM chat_messages m JOIN users u ON m.sender_id = u.id WHERE ((m.sender_id = ? AND m.receiver_id = ?) OR (m.sender_id = ? AND m.receiver_id = ?)) {$where_order} ORDER BY m.id ASC "; $params = [$current_user_id, $other_user_id, $other_user_id, $current_user_id]; if ($order_id) { $params[] = $order_id; } $stmt = $pdo->prepare($sql); $stmt->execute($params); $messages = $stmt->fetchAll(); $formatted = []; foreach ($messages as $msg) { $formatted[] = [ 'id' => $msg['id'], 'sender_id' => $msg['sender_id'], 'sender_name' => $msg['sender_name'], 'is_me' => ($msg['sender_id'] == $current_user_id), 'is_admin' => ($msg['sender_role'] === 'admin'), 'message' => htmlspecialchars($msg['message']), 'time' => date('H:i', strtotime($msg['created_at'])), 'date' => date('d/m/Y', strtotime($msg['created_at'])) ]; } echo json_encode(['success' => true, 'messages' => $formatted]); exit; } echo json_encode(['success' => false, 'error' => 'Invalid action']);
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.32 |
proxy
|
phpinfo
|
Settings