/home/techb158/workloadmatch.com/Master
Edit: /home/techb158/workloadmatch.com/Master/chat.php (16850B)
prepare("SELECT Admin_ID FROM master_profile WHERE Master_ID = ?");
$q->bind_param("s", $master_id);
$q->execute();
$q->bind_result($Admin_ID);
$q->fetch();
$q->close();
// Ensure manager_profile has last_activity column
$chk = $mysqli->query("SELECT COUNT(*) AS cnt FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '" . DATABASE . "' AND TABLE_NAME = 'manager_profile' AND COLUMN_NAME = 'last_activity'");
if ($chk) { $r = $chk->fetch_assoc(); if ((int)$r['cnt'] === 0) $mysqli->query("ALTER TABLE manager_profile ADD COLUMN last_activity DATETIME DEFAULT NULL"); }
$managers = [];
$stmt = $mysqli->prepare("
SELECT mp.Manager_ID, CONCAT(mp.First_Name, ' ', mp.Last_Name) AS name, COALESCE(mp.User_Img, 'avatar.png') AS User_Img,
CASE WHEN mp.last_activity IS NOT NULL AND mp.last_activity >= NOW() - INTERVAL 5 MINUTE THEN 'Online' ELSE 'Offline' END AS status_txt,
(SELECT COUNT(*) FROM chat_messages WHERE receiver_id = ? AND receiver_type = 'master' AND sender_id = mp.Manager_ID AND is_read = 0) AS unread,
(SELECT message FROM chat_messages WHERE (sender_id = ? AND sender_type = 'master' AND receiver_id = mp.Manager_ID) OR (sender_id = mp.Manager_ID AND sender_type = 'manager' AND receiver_id = ?) ORDER BY created_at DESC LIMIT 1) AS last_msg,
(SELECT created_at FROM chat_messages WHERE (sender_id = ? AND sender_type = 'master' AND receiver_id = mp.Manager_ID) OR (sender_id = mp.Manager_ID AND sender_type = 'manager' AND receiver_id = ?) ORDER BY created_at DESC LIMIT 1) AS last_msg_time
FROM manager_profile mp
WHERE mp.Admin_ID = ?
ORDER BY last_msg_time DESC
");
$stmt->bind_param("iiiiis", $master_id, $master_id, $master_id, $master_id, $master_id, $Admin_ID);
$stmt->execute();
$res = $stmt->get_result();
while ($row = $res->fetch_assoc()) {
$row['unread'] = (int)$row['unread'];
$managers[] = $row;
}
$stmt->close();
$totalUnread = 0;
foreach ($managers as $m) { $totalUnread += $m['unread']; }
function timeAgo($dt) {
if (!$dt) return '';
$ts = strtotime($dt);
$diff = time() - $ts;
if ($diff < 60) return 'now';
if ($diff < 3600) return floor($diff / 60) . 'm';
if ($diff < 86400) return floor($diff / 3600) . 'h';
if ($diff < 172800) return 'yesterday';
return date('M d', $ts);
}
?>
CMS | Chat