Spaces:
Running
Running
| ```php | |
| session_start(); | |
| include 'db.php'; | |
| if (!isset($_SESSION['user_id']) || $_SESSION['role'] !== 'admin') { | |
| header("Location: login.php"); | |
| exit(); | |
| } | |
| $user_id = (int)$_GET['user_id']; | |
| // Get user info | |
| $sql = "SELECT name, email FROM users WHERE id = $user_id"; | |
| $result = mysqli_query($conn, $sql); | |
| $user = mysqli_fetch_assoc($result); | |
| // Get all sessions for this user | |
| $sessions = []; | |
| $sql = "SELECT DISTINCT session_id FROM chat_logs WHERE user_id = $user_id ORDER BY session_id DESC"; | |
| $result = mysqli_query($conn, $sql); | |
| while ($row = mysqli_fetch_assoc($result)) { | |
| $sessions[] = $row['session_id']; | |
| } | |
| // Get messages for selected session | |
| $selected_session = isset($_GET['session']) ? (int)$_GET['session'] : ($sessions[0] ?? 0); | |
| $messages = []; | |
| if ($selected_session > 0) { | |
| $sql = "SELECT * FROM chat_logs | |
| WHERE user_id = $user_id AND session_id = $selected_session | |
| ORDER BY timestamp ASC"; | |
| $result = mysqli_query($conn, $sql); | |
| while ($row = mysqli_fetch_assoc($result)) { | |
| $messages[] = $row; | |
| } | |
| } | |
| <!DOCTYPE html> | |
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>User Chats - AdminBot BrainHub</title> | |
| <link rel="stylesheet" href="style.css"> | |
| <script src="https://cdn.tailwindcss.com"></script> | |
| <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script> | |
| <script src="components/navbar.js"></script> | |
| <script src="components/sidebar.js"></script> | |
| <style> | |
| .chat-container { | |
| max-height: 500px; | |
| overflow-y: auto; | |
| } | |
| .user-message { | |
| background-color: #e3f2fd; | |
| border-radius: 10px; | |
| padding: 10px; | |
| margin: 5px 0; | |
| max-width: 80%; | |
| margin-left: auto; | |
| } | |
| .bot-message { | |
| background-color: #f1f1f1; | |
| border-radius: 10px; | |
| padding: 10px; | |
| margin: 5px 0; | |
| max-width: 80%; | |
| } | |
| </style> | |
| </head> | |
| <body class="bg-gray-100"> | |
| <custom-navbar></custom-navbar> | |
| <div class="flex"> | |
| <custom-sidebar></custom-sidebar> | |
| <main class="flex-1 p-8"> | |
| <div class="mb-6"> | |
| <a href="admin.php" class="text-blue-500 hover:text-blue-700 flex items-center"> | |
| <i data-feather="arrow-left"></i> | |
| <span class="ml-2">Back to Admin</span> | |
| </a> | |
| <h1 class="text-2xl font-bold mt-4">Chat History for <?= htmlspecialchars($user['name']) ?></h1> | |
| <p class="text-gray-600"><?= htmlspecialchars($user['email']) ?></p> | |
| </div> | |
| <div class="grid grid-cols-1 lg:grid-cols-4 gap-6"> | |
| <!-- Session List --> | |
| <div class="lg:col-span-1 bg-white rounded-lg shadow p-4"> | |
| <h2 class="text-lg font-semibold mb-4">Chat Sessions</h2> | |
| <div class="space-y-2"> | |
| <?php foreach ($sessions as $session): ?> | |
| <a href="?user_id=<?= $user_id ?>&session=<?= $session ?>" | |
| class="block p-3 rounded-lg <?= $session == $selected_session ? 'bg-blue-100 text-blue-700' : 'hover:bg-gray-100' ?>"> | |
| Session #<?= $session ?> | |
| </a> | |
| <?php endforeach; ?> | |
| </div> | |
| </div> | |
| <!-- Chat Messages --> | |
| <div class="lg:col-span-3 bg-white rounded-lg shadow p-6"> | |
| <div class="chat-container"> | |
| <?php if (empty($messages)): ?> | |
| <p class="text-gray-500">No messages found in this session.</p> | |
| <?php else: ?> | |
| <?php foreach ($messages as $msg): ?> | |
| <div class="<?= $msg['type'] === 'user' ? 'user-message' : 'bot-message' ?>"> | |
| <p><?= htmlspecialchars($msg['message']) ?></p> | |
| <p class="text-xs text-gray-500 mt-1"> | |
| <?= date('M j, Y g:i A', strtotime($msg['timestamp'])) ?> | |
| </p> | |
| </div> | |
| <?php endforeach; ?> | |
| <?php endif; ?> | |
| </div> | |
| </div> | |
| </div> | |
| </main> | |
| </div> | |
| <script> | |
| feather.replace(); | |
| </script> | |
| <script src="script.js"></script> | |
| </body> | |
| </html> | |
| ``` |