<?php
error_reporting(0);
ini_set('display_errors', 0);

ob_start();
header('Content-Type: application/json');

try {
    if (!@include_once '../config.php') {
        ob_clean();
        echo json_encode(['success' => false, 'message' => 'Configuration error']);
        ob_end_flush();
        exit;
    }
    
    // Check if user is logged in
    if (!isset($_SESSION['user_id'])) {
        ob_clean();
        echo json_encode(['success' => false, 'message' => 'You must be logged in to upload a logo']);
        ob_end_flush();
        exit;
    }
    
    // Check request method
    if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
        ob_clean();
        echo json_encode(['success' => false, 'message' => 'Invalid request method']);
        ob_end_flush();
        exit;
    }
    
    // No event ID validation needed since logo is account-wide
    
    // Create uploads directory if it doesn't exist
    $uploadDir = 'logos/';
    if (!file_exists($uploadDir)) {
        if (!@mkdir($uploadDir, 0755, true)) {
            ob_clean();
            echo json_encode(['success' => false, 'message' => 'Failed to create upload directory']);
            ob_end_flush();
            exit;
        }
    }
    
    // Check if a file was uploaded
    if (!isset($_FILES['logo']) || $_FILES['logo']['error'] !== UPLOAD_ERR_OK) {
        $errorMessage = 'No file uploaded or upload error';
        if (isset($_FILES['logo'])) {
            switch ($_FILES['logo']['error']) {
                case UPLOAD_ERR_INI_SIZE:
                case UPLOAD_ERR_FORM_SIZE:
                    $errorMessage = 'File is too large (max 2MB)';
                    break;
                case UPLOAD_ERR_PARTIAL:
                    $errorMessage = 'File was only partially uploaded';
                    break;
                case UPLOAD_ERR_NO_FILE:
                    $errorMessage = 'No file was uploaded';
                    break;
                default:
                    $errorMessage = 'Upload error code: ' . $_FILES['logo']['error'];
                    break;
            }
        }
        
        ob_clean();
        echo json_encode(['success' => false, 'message' => $errorMessage]);
        ob_end_flush();
        exit;
    }
    
    // Validate file size (2MB max)
    if ($_FILES['logo']['size'] > 2 * 1024 * 1024) {
        ob_clean();
        echo json_encode(['success' => false, 'message' => 'File is too large (max 2MB)']);
        ob_end_flush();
        exit;
    }
    
    // Validate file type
    $allowedTypes = ['image/jpeg', 'image/png', 'image/gif'];
    $fileInfo = @finfo_open(FILEINFO_MIME_TYPE);
    if (!$fileInfo) {
        ob_clean();
        echo json_encode(['success' => false, 'message' => 'Cannot validate file type']);
        ob_end_flush();
        exit;
    }
    
    $mimeType = @finfo_file($fileInfo, $_FILES['logo']['tmp_name']);
    @finfo_close($fileInfo);
    
    if (!in_array($mimeType, $allowedTypes)) {
        ob_clean();
        echo json_encode(['success' => false, 'message' => 'Invalid file type. Only JPG, PNG, and GIF are allowed']);
        ob_end_flush();
        exit;
    }
    
    // Generate a filename based on the user ID (not event ID)
    $filename = 'user_' . $_SESSION['user_id'] . '.png';
    $uploadPath = $uploadDir . $filename;
    
    // Simple file move instead of image processing for now
    if (@move_uploaded_file($_FILES['logo']['tmp_name'], $uploadPath)) {
        // Update the user's logo_url in the database
        $logoUrl = SITE_URL . '/embed/' . $uploadPath;
        
        $updateStmt = $conn->prepare("UPDATE users SET logo_url = ? WHERE id = ?");
        if (!$updateStmt) {
            ob_clean();
            echo json_encode(['success' => false, 'message' => 'Database error updating logo URL']);
            ob_end_flush();
            exit;
        }
        
        $updateStmt->bind_param("si", $logoUrl, $_SESSION['user_id']);
        if ($updateStmt->execute()) {
            ob_clean();
            echo json_encode([
                'success' => true,
                'message' => 'Logo uploaded successfully',
                'logo_url' => $logoUrl
            ]);
            ob_end_flush();
            exit;
        } else {
            // File was uploaded but database update failed - clean up
            @unlink($uploadPath);
            ob_clean();
            echo json_encode(['success' => false, 'message' => 'Failed to update logo URL in database']);
            ob_end_flush();
            exit;
        }
    } else {
        ob_clean();
        echo json_encode(['success' => false, 'message' => 'Failed to save the logo']);
        ob_end_flush();
        exit;
    }
    
} catch (Exception $e) {
    ob_clean();
    echo json_encode(['success' => false, 'message' => 'Server error: ' . $e->getMessage()]);
    ob_end_flush();
    exit;
} catch (Error $e) {
    ob_clean();
    echo json_encode(['success' => false, 'message' => 'Fatal error: ' . $e->getMessage()]);
    ob_end_flush();
    exit;
}
?>