false, 'message' => 'Method not allowed']); exit; } // Database connection require_once '../db_connect.php'; // Adjust path if db_connect.php is in VIS_Grok_BackendFull/ // Get request body $input = file_get_contents('php://input'); error_log("log_activity.php input: " . $input); // Debug log $data = json_decode($input, true); // Validate required fields if (!isset($data['activity_type']) || !isset($data['details'])) { http_response_code(400); echo json_encode(['success' => false, 'message' => 'Activity type and details are required']); exit; } $user_id = isset($data['user_id']) ? $data['user_id'] : null; $activity_type = $data['activity_type']; $details = $data['details']; $ip_address = $_SERVER['REMOTE_ADDR']; try { // Create activity_logs table if it doesn't exist $pdo->exec(" CREATE TABLE IF NOT EXISTS activity_logs ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT, activity_type VARCHAR(50) NOT NULL, details TEXT, ip_address VARCHAR(45), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, INDEX (user_id), INDEX (activity_type) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; "); // Insert activity log $stmt = $pdo->prepare(" INSERT INTO activity_logs (user_id, activity_type, details, ip_address) VALUES (?, ?, ?, ?) "); $stmt->execute([$user_id, $activity_type, $details, $ip_address]); // Return success response echo json_encode(['success' => true, 'message' => 'Activity logged successfully']); } catch (PDOException $e) { // Log error error_log("Activity logging error: " . $e->getMessage()); // Return error response http_response_code(500); echo json_encode(['success' => false, 'message' => 'Failed to log activity']); } catch (Exception $e) { // Log unexpected errors error_log("Unexpected error in log_activity.php: " . $e->getMessage()); // Return error response http_response_code(500); echo json_encode(['success' => false, 'message' => 'Unexpected error']); } ?>