config dynamics videos
This commit is contained in:
+7
-45
@@ -1,54 +1,16 @@
|
|||||||
<?php
|
<?php
|
||||||
// Dans un vrai projet, ces données viendraient d'une API PeerTube
|
// Inclure la configuration si ce n'est pas déjà fait
|
||||||
// Pour cet exemple, on utilise des données statiques
|
if (!function_exists('getCategories')) {
|
||||||
$categories = [
|
require_once __DIR__ . '/config.php';
|
||||||
[
|
}
|
||||||
'id' => 1,
|
|
||||||
'name' => 'Technologie',
|
// Récupérer les catégories depuis l'API PeerTube
|
||||||
'image' => 'img/categories/tech.jpg'
|
$categories = getCategories();
|
||||||
],
|
|
||||||
[
|
|
||||||
'id' => 2,
|
|
||||||
'name' => 'Culture',
|
|
||||||
'image' => 'img/categories/culture.jpg'
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'id' => 3,
|
|
||||||
'name' => 'Éducation',
|
|
||||||
'image' => 'img/categories/education.jpg'
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'id' => 4,
|
|
||||||
'name' => 'Divertissement',
|
|
||||||
'image' => 'img/categories/entertainment.jpg'
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'id' => 5,
|
|
||||||
'name' => 'Cuisine',
|
|
||||||
'image' => 'img/categories/cuisine.jpg'
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'id' => 6,
|
|
||||||
'name' => 'Voyage',
|
|
||||||
'image' => 'img/categories/travel.jpg'
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'id' => 7,
|
|
||||||
'name' => 'Sport',
|
|
||||||
'image' => 'img/categories/sport.jpg'
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'id' => 8,
|
|
||||||
'name' => 'Musique',
|
|
||||||
'image' => 'img/categories/music.jpg'
|
|
||||||
]
|
|
||||||
];
|
|
||||||
|
|
||||||
// Affichage des catégories
|
// Affichage des catégories
|
||||||
foreach ($categories as $category) :
|
foreach ($categories as $category) :
|
||||||
?>
|
?>
|
||||||
<a href="categories.php?id=<?php echo $category['id']; ?>" class="category-card">
|
<a href="categories.php?id=<?php echo $category['id']; ?>" class="category-card">
|
||||||
<img src="<?php echo $category['image']; ?>" alt="<?php echo $category['name']; ?>" data-src="<?php echo $category['image']; ?>">
|
|
||||||
<div class="category-overlay">
|
<div class="category-overlay">
|
||||||
<div class="category-name"><?php echo $category['name']; ?></div>
|
<div class="category-name"><?php echo $category['name']; ?></div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+197
-4
@@ -7,15 +7,18 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
// URL de base de votre instance PeerTube
|
// URL de base de votre instance PeerTube
|
||||||
define('PEERTUBE_URL', 'https://gade.o-k-i.net');
|
define('PEERTUBE_URL', 'https://video.lemediatv.fr');
|
||||||
|
|
||||||
// Paramètres d'API (si nécessaire)
|
// Paramètres d'API (si nécessaire)
|
||||||
define('API_KEY', ''); // Laissez vide si pas nécessaire
|
define('API_KEY', ''); // Laissez vide si pas nécessaire
|
||||||
|
|
||||||
// Pagination et affichage
|
// Pagination et affichage
|
||||||
define('VIDEOS_PER_PAGE', 12);
|
define('VIDEOS_PER_PAGE', 12);
|
||||||
define('FEATURED_VIDEOS_COUNT', 3);
|
define('FEATURED_VIDEOS_COUNT', 4);
|
||||||
define('RECENT_VIDEOS_COUNT', 6);
|
define('RECENT_VIDEOS_COUNT', 4);
|
||||||
|
define('SHORTS_COUNT', 4);
|
||||||
|
define('TRENDING_VIDEOS_COUNT', 4);
|
||||||
|
define('INDEPENDENCE_VIDEOS_COUNT', 4);
|
||||||
|
|
||||||
// Informations du site
|
// Informations du site
|
||||||
define('SITE_NAME', 'Kaubuntu.re');
|
define('SITE_NAME', 'Kaubuntu.re');
|
||||||
@@ -41,6 +44,10 @@ define('ENABLE_USER_ACCOUNTS', false); // À implémenter dans une future versio
|
|||||||
define('CACHE_ENABLED', false);
|
define('CACHE_ENABLED', false);
|
||||||
define('CACHE_DURATION', 3600); // En secondes (1 heure)
|
define('CACHE_DURATION', 3600); // En secondes (1 heure)
|
||||||
|
|
||||||
|
// Tags pour filtrer les vidéos selon les catégories
|
||||||
|
define('TAG_INDEPENDENCE', 'independence');
|
||||||
|
define('TAG_SHORT', 'short');
|
||||||
|
|
||||||
// Locale et fuseau horaire
|
// Locale et fuseau horaire
|
||||||
setlocale(LC_TIME, 'fr_FR.UTF-8');
|
setlocale(LC_TIME, 'fr_FR.UTF-8');
|
||||||
date_default_timezone_set('Indian/Reunion');
|
date_default_timezone_set('Indian/Reunion');
|
||||||
@@ -88,5 +95,191 @@ function callPeerTubeApi($endpoint, $params = []) {
|
|||||||
return $data ?: [];
|
return $data ?: [];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Pour une version future: implémenter un système de mise en cache des requêtes API
|
/**
|
||||||
|
* Récupère les catégories depuis l'API PeerTube
|
||||||
|
*
|
||||||
|
* @return array Liste des catégories
|
||||||
|
*/
|
||||||
|
function getCategories() {
|
||||||
|
// Récupérer la liste des catégories depuis l'API
|
||||||
|
$categories = callPeerTubeApi('video-categories');
|
||||||
|
|
||||||
|
$result = [];
|
||||||
|
foreach ($categories as $key => $name) {
|
||||||
|
$result[] = [
|
||||||
|
'id' => $key,
|
||||||
|
'name' => $name
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Récupère les vidéos récentes depuis l'API PeerTube
|
||||||
|
*
|
||||||
|
* @param int $count Nombre de vidéos à récupérer
|
||||||
|
* @return array Liste des vidéos récentes
|
||||||
|
*/
|
||||||
|
function getRecentVideos($count = RECENT_VIDEOS_COUNT) {
|
||||||
|
// Récupérer les vidéos récentes
|
||||||
|
$data = callPeerTubeApi('videos', [
|
||||||
|
'sort' => '-publishedAt',
|
||||||
|
'count' => $count,
|
||||||
|
'isLocal' => true
|
||||||
|
]);
|
||||||
|
|
||||||
|
return formatVideosData($data['data'] ?? []);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Récupère les vidéos tendances depuis l'API PeerTube
|
||||||
|
*
|
||||||
|
* @param int $count Nombre de vidéos à récupérer
|
||||||
|
* @return array Liste des vidéos tendances
|
||||||
|
*/
|
||||||
|
function getTrendingVideos($count = TRENDING_VIDEOS_COUNT) {
|
||||||
|
// Récupérer les vidéos tendances
|
||||||
|
$data = callPeerTubeApi('videos', [
|
||||||
|
'sort' => '-trending',
|
||||||
|
'count' => $count,
|
||||||
|
'isLocal' => true
|
||||||
|
]);
|
||||||
|
|
||||||
|
return formatVideosData($data['data'] ?? []);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Récupère les vidéos avec un tag spécifique depuis l'API PeerTube
|
||||||
|
*
|
||||||
|
* @param string $tag Tag à filtrer
|
||||||
|
* @param int $count Nombre de vidéos à récupérer
|
||||||
|
* @return array Liste des vidéos
|
||||||
|
*/
|
||||||
|
function getVideosByTag($tag, $count) {
|
||||||
|
// Récupérer les vidéos par tag
|
||||||
|
$data = callPeerTubeApi('videos', [
|
||||||
|
'tagsOneOf' => $tag,
|
||||||
|
'count' => $count,
|
||||||
|
'isLocal' => true
|
||||||
|
]);
|
||||||
|
|
||||||
|
return formatVideosData($data['data'] ?? []);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Récupère les shorts (vidéos courtes) depuis l'API PeerTube
|
||||||
|
* Les shorts sont des vidéos locales de moins de 2 minutes
|
||||||
|
*
|
||||||
|
* @param int $count Nombre de shorts à récupérer
|
||||||
|
* @return array Liste des shorts
|
||||||
|
*/
|
||||||
|
function getShorts($count = SHORTS_COUNT) {
|
||||||
|
// Récupérer plus de vidéos que nécessaire pour pouvoir filtrer
|
||||||
|
$data = callPeerTubeApi('videos', [
|
||||||
|
'sort' => '-publishedAt', // Les plus récentes d'abord
|
||||||
|
'count' => $count * 3, // Récupérer plus de vidéos pour pouvoir filtrer
|
||||||
|
'isLocal' => true
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Formater les données
|
||||||
|
$allVideos = formatVideosData($data['data'] ?? []);
|
||||||
|
|
||||||
|
// Filtrer pour ne garder que les vidéos de moins de 2 minutes (120 secondes)
|
||||||
|
$shortVideos = array_filter($allVideos, function($video) {
|
||||||
|
return $video['duration'] < 120; // Moins de 2 minutes
|
||||||
|
});
|
||||||
|
|
||||||
|
// Limiter au nombre demandé
|
||||||
|
return array_slice($shortVideos, 0, $count);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Récupère les vidéos sur l'indépendance depuis l'API PeerTube
|
||||||
|
*
|
||||||
|
* @param int $count Nombre de vidéos à récupérer
|
||||||
|
* @return array Liste des vidéos sur l'indépendance
|
||||||
|
*/
|
||||||
|
function getIndependenceVideos($count = INDEPENDENCE_VIDEOS_COUNT) {
|
||||||
|
// Récupérer les vidéos sur l'indépendance
|
||||||
|
return getVideosByTag(TAG_INDEPENDENCE, $count);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Formate les données brutes des vidéos venant de l'API
|
||||||
|
*
|
||||||
|
* @param array $videosData Données brutes des vidéos
|
||||||
|
* @return array Données formatées
|
||||||
|
*/
|
||||||
|
function formatVideosData($videosData) {
|
||||||
|
$videos = [];
|
||||||
|
|
||||||
|
foreach ($videosData as $video) {
|
||||||
|
// Récupérer la vignette (thumbnail)
|
||||||
|
$thumbnail = isset($video['thumbnailPath'])
|
||||||
|
? PEERTUBE_URL . $video['thumbnailPath']
|
||||||
|
: 'img/default-thumbnail.jpg';
|
||||||
|
|
||||||
|
// Formater les données
|
||||||
|
$videos[] = [
|
||||||
|
'id' => $video['uuid'],
|
||||||
|
'title' => $video['name'],
|
||||||
|
'thumbnail' => $thumbnail,
|
||||||
|
'duration' => $video['duration'],
|
||||||
|
'channel' => $video['channel']['displayName'],
|
||||||
|
'views' => $video['views'],
|
||||||
|
'date' => $video['publishedAt'],
|
||||||
|
'description' => $video['description'] ?? '',
|
||||||
|
'tags' => $video['tags'] ?? []
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
return $videos;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fonctions utilitaires pour formater les données d'affichage
|
||||||
|
function formatDuration($seconds) {
|
||||||
|
$hours = floor($seconds / 3600);
|
||||||
|
$minutes = floor(($seconds % 3600) / 60);
|
||||||
|
$remainingSeconds = $seconds % 60;
|
||||||
|
|
||||||
|
if ($hours > 0) {
|
||||||
|
return sprintf('%d:%02d:%02d', $hours, $minutes, $remainingSeconds);
|
||||||
|
} else {
|
||||||
|
return sprintf('%d:%02d', $minutes, $remainingSeconds);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function formatViewCount($views) {
|
||||||
|
if ($views >= 1000000) {
|
||||||
|
return round($views / 1000000, 1) . 'M';
|
||||||
|
} elseif ($views >= 1000) {
|
||||||
|
return round($views / 1000, 1) . 'K';
|
||||||
|
} else {
|
||||||
|
return $views;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function formatDate($dateString) {
|
||||||
|
$date = new DateTime($dateString);
|
||||||
|
$now = new DateTime();
|
||||||
|
$interval = $now->diff($date);
|
||||||
|
|
||||||
|
if ($interval->days == 0) {
|
||||||
|
return 'Aujourd\'hui';
|
||||||
|
} elseif ($interval->days == 1) {
|
||||||
|
return 'Hier';
|
||||||
|
} elseif ($interval->days < 7) {
|
||||||
|
return 'Il y a ' . $interval->days . ' jours';
|
||||||
|
} elseif ($interval->days < 30) {
|
||||||
|
$weeks = floor($interval->days / 7);
|
||||||
|
return 'Il y a ' . $weeks . ' semaine' . ($weeks > 1 ? 's' : '');
|
||||||
|
} elseif ($interval->days < 365) {
|
||||||
|
$months = floor($interval->days / 30);
|
||||||
|
return 'Il y a ' . $months . ' mois';
|
||||||
|
} else {
|
||||||
|
$years = floor($interval->days / 365);
|
||||||
|
return 'Il y a ' . $years . ' an' . ($years > 1 ? 's' : '');
|
||||||
|
}
|
||||||
|
}
|
||||||
?>
|
?>
|
||||||
@@ -1,38 +1,14 @@
|
|||||||
<?php
|
<?php
|
||||||
// Dans un vrai projet, ces données viendraient d'une API PeerTube
|
// Inclure la configuration si ce n'est pas déjà fait
|
||||||
// Pour cet exemple, on utilise des données statiques
|
if (!function_exists('getTrendingVideos')) {
|
||||||
$featuredVideos = [
|
require_once __DIR__ . '/config.php';
|
||||||
[
|
}
|
||||||
'id' => 1,
|
|
||||||
'title' => 'Introduction à la culture libre et aux logiciels open source',
|
// Récupérer les vidéos tendances depuis l'API PeerTube
|
||||||
'thumbnail' => 'img/video-thumbnails/featured-1.jpg',
|
$featuredVideos = getTrendingVideos(FEATURED_VIDEOS_COUNT);
|
||||||
'duration' => 1245, // en secondes
|
|
||||||
'channel' => 'Tech Libre',
|
|
||||||
'views' => 15420,
|
|
||||||
'date' => '2023-11-15'
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'id' => 2,
|
|
||||||
'title' => 'La Réunion: Découverte des sentiers cachés',
|
|
||||||
'thumbnail' => 'img/video-thumbnails/featured-2.jpg',
|
|
||||||
'duration' => 843,
|
|
||||||
'channel' => 'Île Aventure',
|
|
||||||
'views' => 8745,
|
|
||||||
'date' => '2023-12-02'
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'id' => 3,
|
|
||||||
'title' => 'Comment installer Linux sur un ancien ordinateur',
|
|
||||||
'thumbnail' => 'img/video-thumbnails/featured-3.jpg',
|
|
||||||
'duration' => 723,
|
|
||||||
'channel' => 'Tech Libre',
|
|
||||||
'views' => 24680,
|
|
||||||
'date' => '2023-10-25'
|
|
||||||
]
|
|
||||||
];
|
|
||||||
|
|
||||||
// Affichage des vidéos
|
// Affichage des vidéos
|
||||||
foreach ($featuredVideos as $video) :
|
foreach ($featuredVideos as $video):
|
||||||
?>
|
?>
|
||||||
<div class="video-card" data-video-id="<?php echo $video['id']; ?>">
|
<div class="video-card" data-video-id="<?php echo $video['id']; ?>">
|
||||||
<div class="video-thumbnail">
|
<div class="video-thumbnail">
|
||||||
|
|||||||
@@ -1,65 +1,14 @@
|
|||||||
<?php
|
<?php
|
||||||
// Dans un vrai projet, ces données viendraient d'une API PeerTube
|
// Inclure la configuration si ce n'est pas déjà fait
|
||||||
// Pour cet exemple, on utilise des données statiques
|
if (!function_exists('getRecentVideos')) {
|
||||||
$recentVideos = [
|
require_once __DIR__ . '/config.php';
|
||||||
[
|
}
|
||||||
'id' => 4,
|
|
||||||
'title' => 'Festival Sakifo 2023 - Les meilleurs moments',
|
// Récupérer les vidéos récentes depuis l'API PeerTube
|
||||||
'thumbnail' => 'img/video-thumbnails/recent-1.jpg',
|
$recentVideos = getRecentVideos();
|
||||||
'duration' => 1832, // en secondes
|
|
||||||
'channel' => 'Culture 974',
|
|
||||||
'views' => 3420,
|
|
||||||
'date' => '2023-12-15'
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'id' => 5,
|
|
||||||
'title' => 'Cuisine créole: Recette du rougail saucisse traditionnel',
|
|
||||||
'thumbnail' => 'img/video-thumbnails/recent-2.jpg',
|
|
||||||
'duration' => 685,
|
|
||||||
'channel' => 'Saveurs des Îles',
|
|
||||||
'views' => 7245,
|
|
||||||
'date' => '2023-12-10'
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'id' => 6,
|
|
||||||
'title' => 'Tutoriel: Créer votre première application web avec PHP',
|
|
||||||
'thumbnail' => 'img/video-thumbnails/recent-3.jpg',
|
|
||||||
'duration' => 1540,
|
|
||||||
'channel' => 'CodeMastery',
|
|
||||||
'views' => 2180,
|
|
||||||
'date' => '2023-12-08'
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'id' => 7,
|
|
||||||
'title' => 'Les plus belles plages de La Réunion en 2023',
|
|
||||||
'thumbnail' => 'img/video-thumbnails/recent-4.jpg',
|
|
||||||
'duration' => 925,
|
|
||||||
'channel' => 'Île Aventure',
|
|
||||||
'views' => 5690,
|
|
||||||
'date' => '2023-12-05'
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'id' => 8,
|
|
||||||
'title' => 'Débat: L\'avenir du numérique à La Réunion',
|
|
||||||
'thumbnail' => 'img/video-thumbnails/recent-5.jpg',
|
|
||||||
'duration' => 3245,
|
|
||||||
'channel' => 'Tech Libre',
|
|
||||||
'views' => 1250,
|
|
||||||
'date' => '2023-12-01'
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'id' => 9,
|
|
||||||
'title' => 'Concert live: Groupe Sakili au Téat Plein Air',
|
|
||||||
'thumbnail' => 'img/video-thumbnails/recent-6.jpg',
|
|
||||||
'duration' => 4512,
|
|
||||||
'channel' => 'Culture 974',
|
|
||||||
'views' => 4325,
|
|
||||||
'date' => '2023-11-28'
|
|
||||||
]
|
|
||||||
];
|
|
||||||
|
|
||||||
// Affichage des vidéos
|
// Affichage des vidéos
|
||||||
foreach ($recentVideos as $video) :
|
foreach ($recentVideos as $video):
|
||||||
?>
|
?>
|
||||||
<div class="video-card" data-video-id="<?php echo $video['id']; ?>">
|
<div class="video-card" data-video-id="<?php echo $video['id']; ?>">
|
||||||
<div class="video-thumbnail">
|
<div class="video-thumbnail">
|
||||||
|
|||||||
@@ -9,6 +9,11 @@
|
|||||||
<link rel="stylesheet" href="css/mastodon-timeline.min.css">
|
<link rel="stylesheet" href="css/mastodon-timeline.min.css">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
<?php
|
||||||
|
// Inclure la configuration
|
||||||
|
require_once 'includes/config.php';
|
||||||
|
?>
|
||||||
|
|
||||||
<!-- Sidebar de navigation -->
|
<!-- Sidebar de navigation -->
|
||||||
<div class="sidebar">
|
<div class="sidebar">
|
||||||
<a href="index.php" class="logo">
|
<a href="index.php" class="logo">
|
||||||
@@ -133,31 +138,14 @@
|
|||||||
<div class="carousel">
|
<div class="carousel">
|
||||||
<div class="carousel-container">
|
<div class="carousel-container">
|
||||||
<?php
|
<?php
|
||||||
// Dans un vrai projet, ces données viendraient d'une API PeerTube
|
// Récupérer les shorts depuis l'API PeerTube
|
||||||
$shorts = [
|
$shorts = getShorts();
|
||||||
[
|
|
||||||
'id' => 101,
|
|
||||||
'thumbnail' => 'img/video-thumbnails/short-1.jpg',
|
|
||||||
'title' => 'Interview avec Jean Dupont'
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'id' => 102,
|
|
||||||
'thumbnail' => 'img/video-thumbnails/short-2.jpg',
|
|
||||||
'title' => 'Frédéric MAILLOT'
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'id' => 103,
|
|
||||||
'thumbnail' => 'img/video-thumbnails/short-3.jpg',
|
|
||||||
'title' => 'Discussion sur l\'avenir'
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'id' => 104,
|
|
||||||
'thumbnail' => 'img/video-thumbnails/short-4.jpg',
|
|
||||||
'title' => 'Panel sur les droits humains'
|
|
||||||
]
|
|
||||||
];
|
|
||||||
|
|
||||||
foreach ($shorts as $video):
|
// Traiter le cas où aucun short n'est trouvé
|
||||||
|
if (empty($shorts)) {
|
||||||
|
echo '<div class="no-results">Aucun short disponible pour le moment</div>';
|
||||||
|
} else {
|
||||||
|
foreach ($shorts as $video):
|
||||||
?>
|
?>
|
||||||
<div class="carousel-item">
|
<div class="carousel-item">
|
||||||
<div class="video-card" data-video-id="<?php echo $video['id']; ?>">
|
<div class="video-card" data-video-id="<?php echo $video['id']; ?>">
|
||||||
@@ -169,15 +157,19 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php endforeach; ?>
|
<?php
|
||||||
|
endforeach;
|
||||||
|
}
|
||||||
|
?>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<?php if (!empty($shorts) && count($shorts) > 1): ?>
|
||||||
<div class="carousel-controls">
|
<div class="carousel-controls">
|
||||||
<div class="carousel-dot active"></div>
|
<?php for ($i = 0; $i < count($shorts); $i++): ?>
|
||||||
<div class="carousel-dot"></div>
|
<div class="carousel-dot <?php echo $i === 0 ? 'active' : ''; ?>"></div>
|
||||||
<div class="carousel-dot"></div>
|
<?php endfor; ?>
|
||||||
<div class="carousel-dot"></div>
|
|
||||||
</div>
|
</div>
|
||||||
|
<?php endif; ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -192,35 +184,14 @@
|
|||||||
|
|
||||||
<div class="video-grid">
|
<div class="video-grid">
|
||||||
<?php
|
<?php
|
||||||
// Dans un vrai projet, ces données viendraient d'une API PeerTube
|
// Récupérer les vidéos récentes depuis l'API PeerTube
|
||||||
$recentVideos = [
|
$recentVideos = getRecentVideos();
|
||||||
[
|
|
||||||
'id' => 1,
|
|
||||||
'title' => 'L\'indépendance de La Réunion : KA UBUNTU À BAKOU',
|
|
||||||
'thumbnail' => 'img/video-thumbnails/recent-1.jpg',
|
|
||||||
'tag' => '#Bakou',
|
|
||||||
'date' => '29 mars 2025',
|
|
||||||
'views' => 10
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'id' => 2,
|
|
||||||
'title' => '#1 Départementalisation de La Réunion (1946) : l\'heure du bilan ?',
|
|
||||||
'thumbnail' => 'img/video-thumbnails/recent-2.jpg',
|
|
||||||
'tag' => '#LaRéunion',
|
|
||||||
'date' => '29 mars 2025',
|
|
||||||
'views' => 10
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'id' => 3,
|
|
||||||
'title' => 'POURQUOI L\'INDÉPENDANCE DE LA REUNION ?',
|
|
||||||
'thumbnail' => 'img/video-thumbnails/recent-3.jpg',
|
|
||||||
'tag' => '#Indépendance',
|
|
||||||
'date' => '29 mars 2025',
|
|
||||||
'views' => 10
|
|
||||||
]
|
|
||||||
];
|
|
||||||
|
|
||||||
foreach ($recentVideos as $video):
|
// Traiter le cas où aucune vidéo n'est trouvée
|
||||||
|
if (empty($recentVideos)) {
|
||||||
|
echo '<div class="no-results">Aucune vidéo disponible pour le moment</div>';
|
||||||
|
} else {
|
||||||
|
foreach ($recentVideos as $video):
|
||||||
?>
|
?>
|
||||||
<div class="video-card" data-video-id="<?php echo $video['id']; ?>">
|
<div class="video-card" data-video-id="<?php echo $video['id']; ?>">
|
||||||
<div class="video-thumbnail">
|
<div class="video-thumbnail">
|
||||||
@@ -228,19 +199,21 @@
|
|||||||
<div class="video-play-icon">
|
<div class="video-play-icon">
|
||||||
<i class="fas fa-play-circle"></i>
|
<i class="fas fa-play-circle"></i>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="video-duration"><?php echo formatDuration($video['duration']); ?></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="video-info">
|
<div class="video-info">
|
||||||
<h3 class="video-title"><?php echo $video['title']; ?></h3>
|
<h3 class="video-title"><?php echo $video['title']; ?></h3>
|
||||||
|
<div class="video-channel"><?php echo $video['channel']; ?></div>
|
||||||
<div class="video-metadata">
|
<div class="video-metadata">
|
||||||
<span class="video-tag"><?php echo $video['tag']; ?></span>
|
<span class="video-views"><?php echo formatViewCount($video['views']); ?> vues</span>
|
||||||
<div>
|
<span class="video-date"><?php echo formatDate($video['date']); ?></span>
|
||||||
<span class="video-date"><?php echo $video['date']; ?></span>
|
|
||||||
<span class="video-views"><?php echo $video['views']; ?> vues</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php endforeach; ?>
|
<?php
|
||||||
|
endforeach;
|
||||||
|
}
|
||||||
|
?>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<button class="view-more">Voir plus</button>
|
<button class="view-more">Voir plus</button>
|
||||||
@@ -257,35 +230,14 @@
|
|||||||
|
|
||||||
<div class="video-grid">
|
<div class="video-grid">
|
||||||
<?php
|
<?php
|
||||||
// Dans un vrai projet, ces données viendraient d'une API PeerTube
|
// Récupérer les vidéos tendances depuis l'API PeerTube
|
||||||
$trendingVideos = [
|
$trendingVideos = getTrendingVideos();
|
||||||
[
|
|
||||||
'id' => 4,
|
|
||||||
'title' => 'Serge Sinamalé i koz',
|
|
||||||
'thumbnail' => 'img/video-thumbnails/trending-1.jpg',
|
|
||||||
'tag' => '#Sinamalé',
|
|
||||||
'date' => '29 mars 2025',
|
|
||||||
'views' => 10
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'id' => 5,
|
|
||||||
'title' => '"Seule la lutte libère !" Thomas Sankara',
|
|
||||||
'thumbnail' => 'img/video-thumbnails/trending-2.jpg',
|
|
||||||
'tag' => '#LaRéunion',
|
|
||||||
'date' => '29 mars 2025',
|
|
||||||
'views' => 10
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'id' => 6,
|
|
||||||
'title' => 'La naissance d\'une nation',
|
|
||||||
'thumbnail' => 'img/video-thumbnails/trending-3.jpg',
|
|
||||||
'tag' => '#Indépendance',
|
|
||||||
'date' => '29 mars 2025',
|
|
||||||
'views' => 10
|
|
||||||
]
|
|
||||||
];
|
|
||||||
|
|
||||||
foreach ($trendingVideos as $video):
|
// Traiter le cas où aucune vidéo n'est trouvée
|
||||||
|
if (empty($trendingVideos)) {
|
||||||
|
echo '<div class="no-results">Aucune vidéo disponible pour le moment</div>';
|
||||||
|
} else {
|
||||||
|
foreach ($trendingVideos as $video):
|
||||||
?>
|
?>
|
||||||
<div class="video-card" data-video-id="<?php echo $video['id']; ?>">
|
<div class="video-card" data-video-id="<?php echo $video['id']; ?>">
|
||||||
<div class="video-thumbnail">
|
<div class="video-thumbnail">
|
||||||
@@ -293,19 +245,21 @@
|
|||||||
<div class="video-play-icon">
|
<div class="video-play-icon">
|
||||||
<i class="fas fa-play-circle"></i>
|
<i class="fas fa-play-circle"></i>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="video-duration"><?php echo formatDuration($video['duration']); ?></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="video-info">
|
<div class="video-info">
|
||||||
<h3 class="video-title"><?php echo $video['title']; ?></h3>
|
<h3 class="video-title"><?php echo $video['title']; ?></h3>
|
||||||
|
<div class="video-channel"><?php echo $video['channel']; ?></div>
|
||||||
<div class="video-metadata">
|
<div class="video-metadata">
|
||||||
<span class="video-tag"><?php echo $video['tag']; ?></span>
|
<span class="video-views"><?php echo formatViewCount($video['views']); ?> vues</span>
|
||||||
<div>
|
<span class="video-date"><?php echo formatDate($video['date']); ?></span>
|
||||||
<span class="video-date"><?php echo $video['date']; ?></span>
|
|
||||||
<span class="video-views"><?php echo $video['views']; ?> vues</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php endforeach; ?>
|
<?php
|
||||||
|
endforeach;
|
||||||
|
}
|
||||||
|
?>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<button class="view-more">Voir plus</button>
|
<button class="view-more">Voir plus</button>
|
||||||
@@ -322,35 +276,14 @@
|
|||||||
|
|
||||||
<div class="video-grid">
|
<div class="video-grid">
|
||||||
<?php
|
<?php
|
||||||
// Dans un vrai projet, ces données viendraient d'une API PeerTube
|
// Récupérer les vidéos sur l'indépendance depuis l'API PeerTube
|
||||||
$independenceVideos = [
|
$independenceVideos = getIndependenceVideos();
|
||||||
[
|
|
||||||
'id' => 7,
|
|
||||||
'title' => 'L\'HÉRITAGE AFRICAIN DANS NOS LUTTES : PRÉSENTATION DU PANAFRICANISME',
|
|
||||||
'thumbnail' => 'img/video-thumbnails/independence-1.jpg',
|
|
||||||
'tag' => '#Afrique',
|
|
||||||
'date' => '29 mars 2025',
|
|
||||||
'views' => 10
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'id' => 8,
|
|
||||||
'title' => 'Maloya : Musique de résistance',
|
|
||||||
'thumbnail' => 'img/video-thumbnails/independence-2.jpg',
|
|
||||||
'tag' => '#Maloya',
|
|
||||||
'date' => '29 mars 2025',
|
|
||||||
'views' => 10
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'id' => 9,
|
|
||||||
'title' => 'La lutte indépendantiste à la Réunion',
|
|
||||||
'thumbnail' => 'img/video-thumbnails/independence-3.jpg',
|
|
||||||
'tag' => '#Conférence',
|
|
||||||
'date' => '29 mars 2025',
|
|
||||||
'views' => 10
|
|
||||||
]
|
|
||||||
];
|
|
||||||
|
|
||||||
foreach ($independenceVideos as $video):
|
// Traiter le cas où aucune vidéo n'est trouvée
|
||||||
|
if (empty($independenceVideos)) {
|
||||||
|
echo '<div class="no-results">Aucune vidéo disponible pour le moment</div>';
|
||||||
|
} else {
|
||||||
|
foreach ($independenceVideos as $video):
|
||||||
?>
|
?>
|
||||||
<div class="video-card" data-video-id="<?php echo $video['id']; ?>">
|
<div class="video-card" data-video-id="<?php echo $video['id']; ?>">
|
||||||
<div class="video-thumbnail">
|
<div class="video-thumbnail">
|
||||||
@@ -358,19 +291,21 @@
|
|||||||
<div class="video-play-icon">
|
<div class="video-play-icon">
|
||||||
<i class="fas fa-play-circle"></i>
|
<i class="fas fa-play-circle"></i>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="video-duration"><?php echo formatDuration($video['duration']); ?></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="video-info">
|
<div class="video-info">
|
||||||
<h3 class="video-title"><?php echo $video['title']; ?></h3>
|
<h3 class="video-title"><?php echo $video['title']; ?></h3>
|
||||||
|
<div class="video-channel"><?php echo $video['channel']; ?></div>
|
||||||
<div class="video-metadata">
|
<div class="video-metadata">
|
||||||
<span class="video-tag"><?php echo $video['tag']; ?></span>
|
<span class="video-views"><?php echo formatViewCount($video['views']); ?> vues</span>
|
||||||
<div>
|
<span class="video-date"><?php echo formatDate($video['date']); ?></span>
|
||||||
<span class="video-date"><?php echo $video['date']; ?></span>
|
|
||||||
<span class="video-views"><?php echo $video['views']; ?> vues</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php endforeach; ?>
|
<?php
|
||||||
|
endforeach;
|
||||||
|
}
|
||||||
|
?>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<button class="view-more">Voir plus</button>
|
<button class="view-more">Voir plus</button>
|
||||||
|
|||||||
Reference in New Issue
Block a user