query(" SELECT c.id, c.pesan, c.dibaca, c.created_at, u.nama_lengkap AS dari, u.username, t.nama_lengkap AS ke FROM chat c JOIN user u ON c.from_user = u.id LEFT JOIN user t ON c.to_user = t.id ORDER BY c.created_at DESC LIMIT $limit "); $rows = []; while ($r = $q->fetch_assoc()) $rows[] = $r; echo json_encode(array_reverse($rows), JSON_UNESCAPED_UNICODE); } // ===== KIRIM PESAN ===== elseif ($action === 'kirim') { $from = (int)$_POST['from_user']; $to = ($_POST['to_user'] ?? '') ? (int)$_POST['to_user'] : null; $pesan = trim($_POST['pesan'] ?? ''); if (!$from || !$pesan) { echo json_encode(['status'=>'error','msg'=>'Data tidak lengkap']); exit; } $stmt = $conn->prepare("INSERT INTO chat (from_user, to_user, pesan) VALUES (?,?,?)"); $stmt->bind_param("iis", $from, $to, $pesan); $stmt->execute() ? print json_encode(['status'=>'success','id'=>$conn->insert_id]) : print json_encode(['status'=>'error','msg'=>$stmt->error]); // Log aktivitas $log = $conn->prepare("INSERT INTO log_aktivitas (user_id, aksi, tabel, record_id, detail) VALUES (?,?,?,?,?)"); $aksi = 'kirim_chat'; $tbl = 'chat'; $rid = $conn->insert_id; $det = "Pesan: ".substr($pesan,0,80); $log->bind_param("issis", $from, $aksi, $tbl, $rid, $det); $log->execute(); } // ===== DAFTAR PENGURUS ===== elseif ($action === 'users') { $q = $conn->query("SELECT id, username, nama_lengkap, role_id FROM user WHERE aktif=1 ORDER BY nama_lengkap"); $rows = []; while ($r = $q->fetch_assoc()) $rows[] = $r; echo json_encode($rows, JSON_UNESCAPED_UNICODE); } ?>