78 lines
3.3 KiB
PHP
78 lines
3.3 KiB
PHP
<?php
|
|
require_once __DIR__ . '/../src/Parsedown.php';
|
|
$Parsedown = new Parsedown();
|
|
|
|
ob_start();
|
|
?>
|
|
|
|
<a href="/" class="btn btn-secondary mb-3">← Retour</a>
|
|
|
|
<div class="card mb-4">
|
|
<div class="card-body">
|
|
<h2 class="card-title"><?= htmlspecialchars($article['title']) ?></h2>
|
|
|
|
<div class="card-text post-content">
|
|
<?= $Parsedown->text($rawContent) ?>
|
|
</div>
|
|
|
|
<p class="text-muted small mt-2">
|
|
Publié le <?= htmlspecialchars(date('d/m/Y H:i', strtotime((string)($article['published_at'] ?? $article['created_at'] ?? '')))) ?>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<?php if ($files): ?>
|
|
<?php
|
|
// Sépare les fichiers intégrés (référencés dans le contenu) des pièces jointes
|
|
$referenced = [];
|
|
preg_match_all('/\(\/file\?uuid=[^&]+&name=([^)]+)\)/', $rawContent, $m);
|
|
foreach ($m[1] as $encodedName) {
|
|
$referenced[rawurldecode($encodedName)] = true;
|
|
}
|
|
$attachments = array_filter($files, static fn ($f) => !isset($referenced[$f['name']]));
|
|
?>
|
|
<?php if ($attachments): ?>
|
|
<section class="mb-4">
|
|
<h5>Pièces jointes</h5>
|
|
<div class="row g-3">
|
|
<?php foreach ($attachments as $file): ?>
|
|
<div class="col-sm-6 col-md-4">
|
|
<div class="card">
|
|
<?php
|
|
$fileUrl = '/file?uuid=' . rawurlencode($article['uuid']) . '&name=' . rawurlencode($file['name']);
|
|
?>
|
|
<?php if ($file['is_image']): ?>
|
|
<img src="<?= htmlspecialchars($fileUrl) ?>" class="card-img-top" alt="<?= htmlspecialchars($file['name']) ?>" style="max-height:200px;object-fit:cover">
|
|
<?php elseif ($file['is_video']): ?>
|
|
<video controls class="w-100" style="max-height:200px"><source src="<?= htmlspecialchars($fileUrl) ?>"></video>
|
|
<?php elseif ($file['is_audio']): ?>
|
|
<audio controls class="w-100"><source src="<?= htmlspecialchars($fileUrl) ?>"></audio>
|
|
<?php endif; ?>
|
|
<div class="card-body p-2">
|
|
<a href="<?= htmlspecialchars($fileUrl) ?>" class="card-title small d-block text-truncate" target="_blank">
|
|
<?= htmlspecialchars($file['name']) ?>
|
|
</a>
|
|
<small class="text-muted"><?= htmlspecialchars(number_format($file['size'] / 1024, 1)) ?> Ko</small>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<?php endforeach; ?>
|
|
</div>
|
|
</section>
|
|
<?php endif; ?>
|
|
<?php endif; ?>
|
|
|
|
<?php if (function_exists('isAdmin') && isAdmin()): ?>
|
|
<div class="d-flex gap-2 mt-3">
|
|
<a href="/?action=edit&uuid=<?= htmlspecialchars($article['uuid']) ?>" class="btn btn-primary">Modifier</a>
|
|
<a href="/?action=delete&uuid=<?= htmlspecialchars($article['uuid']) ?>"
|
|
class="btn btn-danger"
|
|
onclick="return confirm('Supprimer cet article définitivement ?')">Supprimer</a>
|
|
</div>
|
|
<?php endif; ?>
|
|
|
|
<?php
|
|
$content = ob_get_clean();
|
|
$title = htmlspecialchars($article['title']);
|
|
include __DIR__ . '/layout.php';
|