128 lines
4.7 KiB
PHP
128 lines
4.7 KiB
PHP
<?php
|
|
|
|
// Ajout de connexion a la bdd
|
|
require_once('../functions/databaseConnection.php');
|
|
|
|
// Fonction qui va faire une requête SQL afin de collecter les logos
|
|
// $category vaut 'tool', 'partner', ou null pour récupérer les deux catégories
|
|
// (toutes catégories confondues, utilisé par le panel admin)
|
|
// Retourne un tableau vide si la table n'existe pas encore (pas de die() pour que la page
|
|
// d'accueil continue de fonctionner tant que le script SQL n'a pas été exécuté)
|
|
function listeLogos($category = null) {
|
|
global $dbh;
|
|
|
|
try {
|
|
// SELECT * : la colonne icon est optionnelle (le bandeau continue de fonctionner
|
|
// avec les logos déjà en place même si la migration SQL n'a pas encore été exécutée)
|
|
if ($category !== null) {
|
|
$stmt = $dbh->prepare('SELECT * FROM logo_banners WHERE category = :category ORDER BY position ASC, id ASC');
|
|
$stmt->bindValue(':category', $category, PDO::PARAM_STR);
|
|
} else {
|
|
$stmt = $dbh->prepare('SELECT * FROM logo_banners ORDER BY category ASC, position ASC, id ASC');
|
|
}
|
|
$stmt->execute();
|
|
return $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
} catch (PDOException $e) {
|
|
return [];
|
|
}
|
|
}
|
|
|
|
// Fonction qui permet de récupérer un logo par id (pour la modification dans le panel Admin)
|
|
function recupererLogoParId($id) {
|
|
global $dbh;
|
|
|
|
try {
|
|
$stmt = $dbh->prepare('SELECT * FROM logo_banners WHERE id = :id');
|
|
$stmt->bindValue(':id', $id, PDO::PARAM_INT);
|
|
$stmt->execute();
|
|
return $stmt->fetch(PDO::FETCH_ASSOC);
|
|
} catch (PDOException $e) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// Fonction interne qui affiche le contenu visuel d'une tuile : une icône Devicon si elle est
|
|
// renseignée (prioritaire), sinon l'image. Ne retourne rien si aucun des deux n'est présent.
|
|
function afficherLogoVisuel($logo) {
|
|
$icone = trim($logo['icon'] ?? '');
|
|
$image = trim($logo['logo_url'] ?? '');
|
|
$nom = htmlspecialchars($logo['name']);
|
|
|
|
if ($icone !== '') {
|
|
echo '<i class="' . htmlspecialchars($icone) . '"></i>';
|
|
} elseif ($image !== '') {
|
|
echo '<img src="' . htmlspecialchars($image) . '" alt="' . $nom . '" loading="lazy">';
|
|
}
|
|
}
|
|
|
|
// Fonction qui affiche le bandeau défilant d'une catégorie de logos sur la page publique
|
|
// N'affiche rien si la catégorie est vide (la section entière est masquée côté page d'accueil)
|
|
function afficherLogos($category) {
|
|
$logos = listeLogos($category);
|
|
|
|
if (empty($logos)) {
|
|
return;
|
|
}
|
|
|
|
$sens = $category === 'partner' ? ' logo-marquee-reverse' : '';
|
|
|
|
echo '<div class="logo-marquee' . $sens . '">';
|
|
echo '<div class="logo-track">';
|
|
|
|
// On répète deux fois la liste : le défilement CSS boucle sur -50%, ce qui donne
|
|
// un effet de scroll infini fluide et sans coupure (voir styles/primary_css.css)
|
|
for ($repetition = 0; $repetition < 2; $repetition++) {
|
|
foreach ($logos as $logo) {
|
|
$nom = htmlspecialchars($logo['name']);
|
|
$lien = trim($logo['link_url'] ?? '');
|
|
|
|
if ($lien !== '') {
|
|
echo '<a class="logo-tile" href="' . htmlspecialchars($lien) . '" target="_blank" rel="noopener noreferrer" title="' . $nom . '">';
|
|
} else {
|
|
echo '<div class="logo-tile" title="' . $nom . '">';
|
|
}
|
|
|
|
afficherLogoVisuel($logo);
|
|
echo $lien !== '' ? '</a>' : '</div>';
|
|
}
|
|
}
|
|
|
|
echo '</div>';
|
|
echo '</div>';
|
|
}
|
|
|
|
// Fonction qui affiche la liste des logos (toutes catégories) avec boutons de
|
|
// modification / suppression, pour le panel admin
|
|
function afficherLogosAdmin() {
|
|
$logos = listeLogos();
|
|
|
|
if (empty($logos)) {
|
|
echo '<p class="admin-notice">Aucun logo pour le moment.</p>';
|
|
return;
|
|
}
|
|
|
|
echo '<div class="logo-admin-grid">';
|
|
|
|
foreach ($logos as $logo) {
|
|
$id = (int) $logo['id'];
|
|
$nom = htmlspecialchars($logo['name']);
|
|
$badge = $logo['category'] === 'partner' ? 'Entreprise' : 'Outil';
|
|
|
|
echo '<div class="logo-admin-item">';
|
|
echo '<div class="logo-admin-preview">';
|
|
afficherLogoVisuel($logo);
|
|
echo '</div>';
|
|
echo '<div class="logo-admin-info">';
|
|
echo '<span class="tag">' . $badge . '</span>';
|
|
echo '<p>' . $nom . '</p>';
|
|
echo '</div>';
|
|
echo '<div class="admin-actions">';
|
|
echo '<a class="btn-submit btn-edit" href="./admin.php?edit_logo=' . $id . '#admin-logos">Modifier</a>';
|
|
echo '<a class="btn-submit btn-delete" href="../scripts/removeLogo.php?id=' . $id . '&csrf_token=' . urlencode(csrfToken()) . '" onclick="return confirm(\'Voulez-vous vraiment supprimer ce logo ?\');">Supprimer</a>';
|
|
echo '</div>';
|
|
echo '</div>';
|
|
}
|
|
|
|
echo '</div>';
|
|
}
|