58 lines
1.9 KiB
PHP
58 lines
1.9 KiB
PHP
<?php
|
|
include 'koneksi.php';
|
|
header('Content-Type: application/json');
|
|
|
|
$action = $_GET['action'] ?? $_POST['action'] ?? 'list';
|
|
|
|
// ===== LIST PESAN =====
|
|
if ($action === 'list') {
|
|
$limit = (int)($_GET['limit'] ?? 50);
|
|
$q = $conn->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);
|
|
}
|
|
?>
|