<?php
/**
 * Flickr OAuth Authorization Handler
 *
 * Usage:
 * 1. Visit flickr_auth.php to start authorization
 * 2. Authorize on Flickr
 * 3. Callback returns here with tokens saved
 */
session_start();

require_once __DIR__ . '/classes/FlickrOAuth.php';

// Load config
$configFile = __DIR__ . '/config.php';
if (!file_exists($configFile)) {
    die('Configuration not found');
}
$config = require $configFile;

if (empty($config['flickr']['api_key']) || empty($config['flickr']['api_secret'])) {
    die('Flickr API credentials not configured');
}

$oauth = new FlickrOAuth(
    $config['flickr']['api_key'],
    $config['flickr']['api_secret']
);

$action = $_GET['action'] ?? '';
$baseUrl = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https' : 'http')
    . '://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['SCRIPT_NAME']);

// Handle OAuth callback from Flickr
if (isset($_GET['oauth_token']) && isset($_GET['oauth_verifier'])) {
    try {
        $result = $oauth->handleCallback($_GET['oauth_token'], $_GET['oauth_verifier']);

        $message = "Авторизация успешна! Пользователь: " . htmlspecialchars($result['username'] ?? $result['user_nsid']);
        $success = true;
    } catch (Exception $e) {
        $message = "Ошибка авторизации: " . htmlspecialchars($e->getMessage());
        $success = false;
    }

    // Show result
    ?>
    <!DOCTYPE html>
    <html>
    <head>
        <title>Flickr OAuth</title>
        <style>
            body { font-family: -apple-system, BlinkMacSystemFont, sans-serif; padding: 40px; background: #f5f5f7; }
            .card { background: white; padding: 30px; border-radius: 16px; max-width: 500px; margin: 0 auto; box-shadow: 0 4px 20px rgba(0,0,0,0.1); }
            h1 { margin-top: 0; }
            .success { color: #34C759; }
            .error { color: #FF3B30; }
            .btn { display: inline-block; padding: 12px 24px; background: #007AFF; color: white; text-decoration: none; border-radius: 8px; margin-top: 20px; }
            .btn:hover { background: #0056CC; }
        </style>
    </head>
    <body>
        <div class="card">
            <h1 class="<?= $success ? 'success' : 'error' ?>"><?= $success ? '✓' : '✗' ?> <?= $message ?></h1>
            <?php if ($success): ?>
                <p>Теперь приложение может загружать фотографии в оригинальном качестве.</p>
            <?php endif; ?>
            <a href="index.php" class="btn">Вернуться в приложение</a>
        </div>
    </body>
    </html>
    <?php
    exit;
}

// Handle logout
if ($action === 'logout') {
    $oauth->clearTokens();
    header('Location: flickr_auth.php');
    exit;
}

// Check current status or start auth
$isAuthorized = $oauth->isAuthorized();

if ($action === 'authorize' && !$isAuthorized) {
    try {
        $callbackUrl = $baseUrl . '/flickr_auth.php';
        $authUrl = $oauth->getAuthorizationUrl($callbackUrl);
        header('Location: ' . $authUrl);
        exit;
    } catch (Exception $e) {
        $error = $e->getMessage();
    }
}

?>
<!DOCTYPE html>
<html>
<head>
    <title>Flickr OAuth Authorization</title>
    <style>
        body {
            font-family: -apple-system, BlinkMacSystemFont, sans-serif;
            padding: 40px;
            background: #f5f5f7;
            min-height: 100vh;
            margin: 0;
        }
        .card {
            background: white;
            padding: 30px;
            border-radius: 16px;
            max-width: 500px;
            margin: 0 auto;
            box-shadow: 0 4px 20px rgba(0,0,0,0.1);
        }
        h1 { margin-top: 0; font-size: 1.5rem; }
        .status {
            padding: 16px;
            border-radius: 8px;
            margin: 20px 0;
        }
        .status.authorized { background: #d4edda; color: #155724; }
        .status.not-authorized { background: #fff3cd; color: #856404; }
        .btn {
            display: inline-block;
            padding: 12px 24px;
            background: #007AFF;
            color: white;
            text-decoration: none;
            border-radius: 8px;
            border: none;
            cursor: pointer;
            font-size: 1rem;
        }
        .btn:hover { background: #0056CC; }
        .btn-danger { background: #FF3B30; }
        .btn-danger:hover { background: #CC2F27; }
        .btn-secondary { background: #8E8E93; }
        .error { color: #FF3B30; margin: 20px 0; }
        ul { padding-left: 20px; }
        li { margin: 8px 0; }
    </style>
</head>
<body>
    <div class="card">
        <h1>🔐 Flickr OAuth Authorization</h1>

        <?php if (isset($error)): ?>
            <div class="error">Ошибка: <?= htmlspecialchars($error) ?></div>
        <?php endif; ?>

        <?php if ($isAuthorized): ?>
            <div class="status authorized">
                ✓ <strong>Авторизован</strong> — доступ к оригиналам фото включён
            </div>
            <p>Приложение авторизовано и может загружать фотографии в оригинальном качестве.</p>
            <p>
                <a href="index.php" class="btn">Открыть приложение</a>
                <a href="?action=logout" class="btn btn-danger" style="margin-left: 10px;">Выйти</a>
            </p>
        <?php else: ?>
            <div class="status not-authorized">
                ⚠ <strong>Не авторизован</strong> — доступны только уменьшенные версии
            </div>

            <p>Для загрузки фотографий в оригинальном качестве необходимо авторизовать приложение:</p>

            <ul>
                <li>Вы будете перенаправлены на Flickr</li>
                <li>Flickr запросит разрешение на <strong>чтение</strong> ваших фото</li>
                <li>После подтверждения вернётесь обратно</li>
            </ul>

            <p>
                <a href="?action=authorize" class="btn">Авторизовать через Flickr</a>
                <a href="index.php" class="btn btn-secondary" style="margin-left: 10px;">Назад</a>
            </p>
        <?php endif; ?>
    </div>
</body>
</html>
