<?php
// Inclure la configuration
require_once '../includes/config.php';

// Vérifier que la requête est faite par AJAX
if (!isset($_SERVER['HTTP_X_REQUESTED_WITH']) || strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) !== 'xmlhttprequest') {
    http_response_code(403); // Accès non autorisé
    echo json_encode(['error' => 'Accès non autorisé']);
    exit;
}

// Récupérer les paramètres
$type = isset($_GET['type']) ? $_GET['type'] : '';
$page = isset($_GET['page']) ? intval($_GET['page']) : 1;
$categoryId = isset($_GET['category']) ? intval($_GET['category']) : 0;

// Vérifier que le type est valide
if (!in_array($type, ['recent', 'trending', 'independence', 'category'])) {
    http_response_code(400); // Requête incorrecte
    echo json_encode(['error' => 'Type de vidéos non valide']);
    exit;
}

// Vérifier que la catégorie est fournie si le type est 'category'
if ($type === 'category' && $categoryId <= 0) {
    http_response_code(400); // Requête incorrecte
    echo json_encode(['error' => 'ID de catégorie manquant ou invalide']);
    exit;
}

// Récupérer les vidéos en fonction du type
$videos = [];
$offset = $page * LOAD_MORE_COUNT;

switch ($type) {
    case 'recent':
        // Récupérer les vidéos récentes
        $data = callPeerTubeApi('videos', [
            'sort' => '-publishedAt',
            'count' => LOAD_MORE_COUNT,
            'start' => $offset,
            'isLocal' => true
        ]);
        $videos = formatVideosData($data['data'] ?? []);
        break;

    case 'trending':
        // Récupérer les vidéos tendances
        $data = callPeerTubeApi('videos', [
            'sort' => '-views',
            'count' => LOAD_MORE_COUNT,
            'start' => $offset,
            'isLocal' => true
        ]);
        $videos = formatVideosData($data['data'] ?? []);
        break;

    case 'independence':
        // Récupérer les vidéos sur l'indépendance
        $data = callPeerTubeApi('videos', [
            'tagsOneOf' => TAG_INDEPENDENCE,
            'count' => LOAD_MORE_COUNT,
            'start' => $offset,
            'isLocal' => true
        ]);
        $videos = formatVideosData($data['data'] ?? []);
        break;
        
    case 'category':
        // Récupérer les vidéos de la catégorie
        $data = callPeerTubeApi('videos', [
            'categoryOneOf' => $categoryId,
            'count' => LOAD_MORE_COUNT,
            'start' => $offset,
            'sort' => '-publishedAt', // Les plus récentes d'abord
            'isLocal' => true
        ]);
        $videos = formatVideosData($data['data'] ?? []);
        break;
}

// Préparer la réponse HTML
$html = '';

foreach ($videos as $video) {
    $html .= '<div class="video-card" data-video-id="' . $video['id'] . '">';
    $html .= '    <div class="video-thumbnail">';
    $html .= '        <img src="' . $video['thumbnail'] . '" alt="' . htmlspecialchars($video['title']) . '">';
    $html .= '        <div class="video-play-icon">';
    $html .= '            <i class="fas fa-play-circle"></i>';
    $html .= '        </div>';
    $html .= '        <div class="video-duration">' . formatDuration($video['duration']) . '</div>';
    $html .= '    </div>';
    $html .= '    <div class="video-info">';
    $html .= '        <h3 class="video-title">' . htmlspecialchars($video['title']) . '</h3>';
    $html .= '        <div class="video-channel">' . htmlspecialchars($video['channel']) . '</div>';
    $html .= '        <div class="video-metadata">';
    $html .= '            <span class="video-views"><i class="fas fa-eye"></i> ' . formatViewCount($video['views']) . ' vues</span>';
    $html .= '            <span class="video-date"><i class="far fa-calendar-alt"></i> ' . formatDate($video['date']) . '</span>';
    $html .= '        </div>';
    $html .= '    </div>';
    $html .= '</div>';
}

// Retourner la réponse
echo json_encode([
    'success' => true,
    'html' => $html,
    'page' => $page,
    'hasMore' => count($videos) >= LOAD_MORE_COUNT
]);
?> 