-
- diff --git a/.gitignore b/.gitignore index 0d9b960..99b869b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,19 +1,31 @@ -# Configuration locale -includes/config.local.php +node_modules -# Fichiers personnalisables pour chaque installation -.htaccess -sitemap.xml -robots.txt -site.webmanifest -mentions-legales.php -dons.php +# Output +.output +.vercel +.netlify +.wrangler +/.svelte-kit +/build + +# OS +.DS_Store +Thumbs.db + +# Env +.env +.env.* +!.env.example +!.env.test + +# Vite +vite.config.js.timestamp-* +vite.config.ts.timestamp-* # Fichiers de l'IDE/éditeur .vscode/ .idea/ *.sublime-* -.DS_Store # Fichiers temporaires *.log @@ -22,9 +34,6 @@ dons.php tmp/ temp/ -# Fichiers de cache -cache/ - # Artefacts de documentation générés (docs/generate-readme-pdf.sh) README.html README.pdf @@ -32,9 +41,3 @@ README.pdf # Dossier pour les images d'annonces (tout ignorer sauf .gitkeep) uploads/* !uploads/.gitkeep - -# Fichiers de dépendances (si nécessaire) -# vendor/ -# node_modules/ - -img/movement_presentation.png diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..b6f27f1 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/README.adoc b/README.adoc index ff2dbc9..f813cb7 100644 --- a/README.adoc +++ b/README.adoc @@ -3,6 +3,8 @@ :toc-title: Sommaire / Contents :toclevels: 3 +NOTE: Ce document décrit la version historique PHP (branche `main`). La branche `svelte` contient la réécriture **SvelteKit statique** (données bakées au build, charte OKI, FR/EN, PWA) — voir `docs/DEPLOIEMENT-SVELTEKIT.md` pour le build et le déploiement. + [[top]] 🌍 *Hub multimédia du podcast ANNU KUTE CED* + 🌍 *Multimedia hub for the ANNU KUTE CED podcast* diff --git a/ajax/load-more-videos.php b/ajax/load-more-videos.php deleted file mode 100644 index 921e144..0000000 --- a/ajax/load-more-videos.php +++ /dev/null @@ -1,128 +0,0 @@ - 'Accès non autorisé']); - exit; -} - -// Vérifier l'origine de la requête -if (!validateAjaxOrigin()) { - http_response_code(403); - echo json_encode(['error' => 'Origine non autorisée']); - exit; -} - -// Vérifier le token CSRF -if (!isset($_POST['csrf_token']) || !validateCSRFToken($_POST['csrf_token'])) { - http_response_code(403); - echo json_encode(['error' => 'Token CSRF invalide']); - 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 .= '
-
-