intranet-apei/admin/createActu.php

169 lines
4.9 KiB
PHP
Raw Normal View History

<?php
include("../Assets/functions.php");
$config = json_decode(file_get_contents("../Assets/config.json"), true);
$bdd = connectBDD("localhost", $config["BDD_USER"], $config["BDD_PASSWD"], $config["BDD_NAME"]);
session_start();
if (!isset($_SESSION['connected']) || $_SESSION['connected'] == false) {
header('location: login.php?redirect_to=./admin/');
exit;
}
$minPoids = 50;
if (!verifyPoids($bdd, $_SESSION['username'], $minPoids)) {
header('location: ../index.php');
exit;
}
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (!empty($_FILES['image']['name']) && !empty($_POST['title']) && !empty($_POST['content'])) {
$uploadDir = "../Photos/INTRANET/actus/";
$fileTmpPath = $_FILES["image"]["tmp_name"];
$fileSize = $_FILES["image"]["size"];
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime = finfo_file($finfo, $fileTmpPath);
finfo_close($finfo);
$allowedTypes = ['image/jpeg', 'image/png', 'image/gif'];
if (in_array($mime, $allowedTypes) && $fileSize <= 5 * 1024 * 1024) {
$actuId = createActu(
$bdd,
$_POST['title'],
$_POST['content'],
date('Y-m-d'),
$_SESSION['site']
);
$extension = pathinfo($_FILES["image"]["name"], PATHINFO_EXTENSION);
$newFileName = "actu_" . $actuId . "_" . time() . "." . $extension;
$destination = $uploadDir . $newFileName;
if (move_uploaded_file($fileTmpPath, $destination)) {
updateActuImage($bdd, $actuId, $newFileName);
} else {
die('Erreur lors de l\'upload de l\'image.');
}
} else {
die('Type de fichier non autorisé ou fichier trop volumineux.');
}
}
header("Location: ?id=" . $actuId);
exit;
}
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Gestion Intranet</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
<style>
.preview-box {
height: 220px;
border: 2px dashed #ddd;
border-radius: 8px;
display: flex;
align-items: center;
justify-content: center;
overflow: hidden;
background: #fafafa;
}
.preview-box img {
max-height: 100%;
max-width: 100%;
}
</style>
</head>
<body class="container py-4">
<h1>Gestion de l'intranet</h1>
<nav class="navbar navbar-expand-lg navbar-light bg-light mb-4">
<div class="collapse navbar-collapse">
<ul class="navbar-nav mr-auto">
<li class="nav-item">
<a href="./index.php" class="nav-link">Évènements</a>
</li>
<li class="nav-item">
<a href="#" class="nav-link">Actualités</a>
</li>
<li class="nav-item">
<a href="#" class="nav-link disabled">Administration</a>
</li>
</ul>
</div>
</nav>
<div class="card p-4">
<form action="" method="post" enctype="multipart/form-data">
<div class="mb-3">
<label class="form-label">Titre de l'actualité</label>
<input type="text"
name="title"
class="form-control">
</div>
<div class="mb-3">
<label class="form_label">Nouveau contenu de l'actualité</label>
<textarea name="content" id="content"></textarea>
</div>
<div class="mb-3">
<label class="form-label">Nouvelle image de l'actu</label>
<div id="preview" class="preview-box mb-2">
<span class="text-muted">Aucune image sélectionnée</span>
</div>
<input type="file"
name="image"
id="image"
class="form-control"
accept="image/*">
</div>
<button type="submit" class="btn btn-primary">
Enregistrer l'actualité
</button>
</form>
</div>
<script>
const input = document.getElementById('image');
const preview = document.getElementById('preview');
input.addEventListener('change', function() {
const file = this.files[0];
if (file) {
const reader = new FileReader();
reader.onload = function(e) {
preview.innerHTML =
`<img src="${e.target.result}" alt="Preview">`;
};
reader.readAsDataURL(file);
}
});
</script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>