2024-03-15 15:04:10 +01:00

144 lines
8.5 KiB
PHP
Executable File

<?php
require "../include/variables.php";
require "../include/functions.php";
if (isset($_GET['article']) && filter_var($_GET['article'], FILTER_VALIDATE_INT)) {
$article = $_GET['article'];
} else {
$article = "";
}
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="./src/css/style.css">
<style>
@media (prefers-color-scheme: dark) {
.body {
<?=$theme_dark?>
}
}
@media (prefers-color-scheme: light) {
.body {
<?=$theme_light?>
}
}
</style>
<link rel="icon" href="./src/img/favicon.ico">
<title><?=$title?></title>
</head>
<body class="body">
<header>
<div class="pancontent">
<div class="athena-container">
<a href="<?=$root?>" class="athena-link">
<img src="./src/img/athena-mono.png" class="athena">
</a>
</div>
<div class="content">
<div>
<div class="main-title">
<div class="title"><?=$header_title?></div>
<div class="subtitle"><?=$header_subtitle?></div>
</div>
</div>
</div>
</div>
</header>
<nav>
<div class="pancontent">
<?php nav($nav);?>
</div>
</nav>
<main>
<div class="content">
<div>
<div>
<?php
if ($article == "") {
$bdd = connect($dbhost, $dbname, $dbuser, $dbpass);
$search = isset($_GET['search']) ? "%" . htmlspecialchars($_GET['search']) . "%" : "%%";
$req = $bdd->prepare("SELECT articles.ID, articles.titre, articles.date, articles.image, articles.resume, users.username, users.display_name FROM articles JOIN users ON articles.auteur = users.ID WHERE (articles.titre LIKE :search OR articles.ID LIKE :search OR users.username LIKE :search) AND articles.classification <= :accreditation ORDER BY date DESC");
$req->bindParam(":search", $search);
$req->bindParam(":accreditation", $_SESSION['accreditation']);
$req->execute();
$resultat = $req->fetchAll(PDO::FETCH_ASSOC);
echo "<h1>Actualités du club</h1>";
echo "<form action='' method='get'><input type='text' placeholder='Article' name='search'><input type='submit' value='Rechercher'></form>";
if ($resultat) {
foreach($resultat as $row) {
$date = strtotime($row['date']);
echo '<div class="article-preview">';
echo '<div class="article-illustration">';
echo '<a href="?article=' . $row['ID'] . '" class="article-link"><img src="' . $row['image'] . '" class="article-miniature"></a>';
echo '</div>';
echo '<div class="article-details">';
echo '<div class="article-data">n° ' . $row['ID'] . ' | ' . date('d/m/Y', $date) . ' | '. '<a href="user.php?user=' . $row['username'] . '">' . $row['display_name'] . '</a></div>';
echo '<a href="?article=' . $row['ID'] . '" class="article-link">';
echo '<div class="article-titre">' . $row['titre'] . '</div>';
echo '</a>';
echo '<div class="article-resume">' . $row['resume'] . '</div>';
echo '</div>';
echo '</div> ';
}
} else {
echo "Aucun article trouvé";
}
} else if (!isset($_GET['search']) && $article != "" && file_exists($wwwroot . '/content/journal/' . $article . '.md')) {
$markdownContent = file_get_contents($wwwroot . '/content/journal/' . $article . '.md');
require_once '../include/parsedown.php';
$parsedown = new Parsedown();
$bdd = connect($dbhost, $dbname, $dbuser, $dbpass);
$req = $bdd->prepare("SELECT articles.ID, articles.titre, articles.date, articles.classification, articles.image, users.username, users.display_name, users.role, users.profile_picture FROM articles JOIN users ON users.ID = articles.auteur WHERE articles.ID = :article AND articles.classification <= :accreditation");
$req->bindParam(":article", $article);
$req->bindParam(":accreditation", $_SESSION['accreditation']);
$req->execute();
$resultat = $req->fetchAll(PDO::FETCH_ASSOC);;
if ($resultat) {
$date = strtotime($resultat[0]['date']);
$auteur_pp = $resultat[0]['profile_picture'] == NULL ? "https://abs.twimg.com/sticky/default_profile_images/default_profile_400x400.png" : $resultat[0]['profile_picture'];
echo "<div class='article'><div class='article-info'>";
echo "<div class='article-titre'>" . $resultat[0]['titre'] . "</div>";
echo "<div class='article-date'>" . date('d/m/Y', $date) . "</div>";
echo "<a href='user.php?user=" . $resultat[0]['username'] . "'>";
echo "<div class='article-auteur'>";
echo "<div class='auteur-pp'><img src='" . $auteur_pp . "' class='auteur-pp-image'/></div>";
echo "<div class='auteur-names'>";
echo "<div class='auteur-display-name'>" . $resultat[0]['display_name'];
if($resultat[0]['role'] > 1) {
echo '<svg class="certification" fill="' . $certif_colors[$resultat[0]['role']] . '" viewBox="0 0 22 22" aria-label="Compte certifié" role="img"><g><path d="M20.396 11c-.018-.646-.215-1.275-.57-1.816-.354-.54-.852-.972-1.438-1.246.223-.607.27-1.264.14-1.897-.131-.634-.437-1.218-.882-1.687-.47-.445-1.053-.75-1.687-.882-.633-.13-1.29-.083-1.897.14-.273-.587-.704-1.086-1.245-1.44S11.647 1.62 11 1.604c-.646.017-1.273.213-1.813.568s-.969.854-1.24 1.44c-.608-.223-1.267-.272-1.902-.14-.635.13-1.22.436-1.69.882-.445.47-.749 1.055-.878 1.688-.13.633-.08 1.29.144 1.896-.587.274-1.087.705-1.443 1.245-.356.54-.555 1.17-.574 1.817.02.647.218 1.276.574 1.817.356.54.856.972 1.443 1.245-.224.606-.274 1.263-.144 1.896.13.634.433 1.218.877 1.688.47.443 1.054.747 1.687.878.633.132 1.29.084 1.897-.136.274.586.705 1.084 1.246 1.439.54.354 1.17.551 1.816.569.647-.016 1.276-.213 1.817-.567s.972-.854 1.245-1.44c.604.239 1.266.296 1.903.164.636-.132 1.22-.447 1.68-.907.46-.46.776-1.044.908-1.681s.075-1.299-.165-1.903c.586-.274 1.084-.705 1.439-1.246.354-.54.551-1.17.569-1.816zM9.662 14.85l-3.429-3.428 1.293-1.302 2.072 2.072 4.4-4.794 1.347 1.246z"></path></g></svg>';
}
echo "</div>";
echo "<div class='auteur-username'>@" . $resultat[0]['username'] . "</div>";
echo "</div></div></a>";
echo "<div class='article-classification'>" . $classifications[$resultat[0]['classification']] . "</div></div>";
echo "<div class='article-illustration'><img src='" . $resultat[0]['image'] . "' class='article-miniature'/></div>";
echo "<div class='article-content'>";
echo $parsedown->text($markdownContent);
echo "</div></div></div>";
}
}
?>
</div>
</div>
</div>
</main>
<footer>
<div class="content">
<div>
<div><?=$copyright?></div>
</div>
</div>
</footer>
</body>
</html>