htaccess fini
This commit is contained in:
parent
5071d5f2f3
commit
b75ae2542a
22 changed files with 101 additions and 105 deletions
26
.htaccess
26
.htaccess
|
|
@ -1,33 +1,31 @@
|
|||
Options -Indexes
|
||||
|
||||
# --- Sécurité ---
|
||||
<FilesMatch ".env">
|
||||
Require all denied
|
||||
</FilesMatch>
|
||||
|
||||
<FilesMatch "(composer\.json|composer\.lock|package\.json|package-lock\.json|\.git|\.env|\.gitignore|env)">
|
||||
Require all denied
|
||||
</FilesMatch>
|
||||
|
||||
RewriteEngine On
|
||||
# Gestion des erreurs
|
||||
ErrorDocument 404 /error/error_404
|
||||
ErrorDocument 403 /error/error_403
|
||||
|
||||
# 2. Bloquer l'accès direct au dossier vendor
|
||||
RewriteEngine On
|
||||
RewriteBase /
|
||||
|
||||
# Bloquer l'accès direct au dossier vendor
|
||||
RewriteRule ^vendor/ - [F,L]
|
||||
|
||||
# 3. Autoriser l'accès aux fichiers/dossiers physiques (images, css, js)
|
||||
# Autoriser l'accès aux fichiers/dossiers physiques (images, css, js)
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
|
||||
# 4. RACINE : accueil par défaut
|
||||
# RACINE : accueil par défaut
|
||||
RewriteRule ^$ index.php?ctrl=project&action=home [QSA,L]
|
||||
|
||||
# 5. ID NUMÉRIQUE : /ctrl/action/42
|
||||
# ID NUMÉRIQUE : /ctrl/action/42
|
||||
RewriteRule ^([a-zA-Z]+)/([a-zA-Z_]+)/([0-9]+)/?$ index.php?ctrl=$1&action=$2&id=$3 [QSA,L]
|
||||
|
||||
# 6. PSEUDO : /user/profile/johndoe
|
||||
# PSEUDO : /user/profile/johndoe
|
||||
RewriteRule ^([a-zA-Z]+)/([a-zA-Z_]+)/([a-zA-Z0-9_-]+)/?$ index.php?ctrl=$1&action=$2&pseudo=$3 [QSA,L]
|
||||
|
||||
# 7. RÉÉCRITURE GÉNÉRALE (inclut tes erreurs) : /ctrl/action
|
||||
# C'est cette règle qui va transformer "/error/error_404"
|
||||
# en "index.php?ctrl=error&action=error_404"
|
||||
# RÉÉCRITURE GÉNÉRALE : /ctrl/action
|
||||
RewriteRule ^([a-zA-Z]+)/([a-zA-Z_]+)/?$ index.php?ctrl=$1&action=$2 [QSA,L]
|
||||
|
|
@ -32,7 +32,7 @@
|
|||
$newCat->setName($_POST['new_category']);
|
||||
$objCategoryModel->insertCategory($newCat);
|
||||
$_SESSION['success'] = "La catégorie a bien été ajoutée";
|
||||
header('Location: index.php?ctrl=admin&action=admin');
|
||||
header('Location: '.$_ENV['BASE_URL'].'/admin/admin');
|
||||
exit;
|
||||
}
|
||||
|
||||
|
|
@ -42,7 +42,7 @@
|
|||
$editCat->setName($_POST['new_name']);
|
||||
$objCategoryModel->editCategory($editCat);
|
||||
$_SESSION['success'] = "La catégorie a bien été modifiée";
|
||||
header('Location: index.php?ctrl=admin&action=admin');
|
||||
header('Location: '.$_ENV['BASE_URL'].'/admin/admin');
|
||||
exit;
|
||||
}
|
||||
|
||||
|
|
@ -73,7 +73,7 @@
|
|||
$objUserModel->delete_soft($intUserId);
|
||||
$_SESSION['success'] = "L'utilisateur a été supprimé.";
|
||||
}
|
||||
header("Location: index.php?ctrl=admin&action=admin");
|
||||
header('Location: '.$_ENV['BASE_URL'].'/admin/admin');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@
|
|||
*/
|
||||
public function search(){
|
||||
|
||||
$strKeywords = $_POST['keywords']??'';
|
||||
$strKeywords = $_POST['keywords']??"";
|
||||
$intAuthor = $_POST['author']??0;
|
||||
$intPeriod = $_POST['period']??0;
|
||||
$strDate = $_POST['date']??'';
|
||||
|
|
@ -325,7 +325,7 @@
|
|||
}
|
||||
|
||||
$_SESSION['success'] = (!isset($_GET['id'])) ? "Le projet a bien été créé" : "Le projet a bien été modifié";
|
||||
header("Location:index.php");
|
||||
header('Location:'.$_ENV['BASE_URL']);
|
||||
exit;
|
||||
} else {
|
||||
$arrError[] = "Erreur lors de l'enregistrement en base de données";
|
||||
|
|
@ -373,11 +373,11 @@
|
|||
$this->_display("project_display");
|
||||
|
||||
} else {
|
||||
header("Location: index.php?ctrl=project&action=home");
|
||||
header('Location: '.$_ENV['BASE_URL'].'/project/home');
|
||||
exit;
|
||||
}
|
||||
} else {
|
||||
header("Location: index.php?ctrl=project&action=home");
|
||||
header('Location: '.$_ENV['BASE_URL'].'/project/home');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
|
@ -395,7 +395,7 @@
|
|||
$arrProject = $objProjectModel->findOne($projectId);
|
||||
|
||||
if (!$arrProject) {
|
||||
header("Location: index.php?ctrl=project&action=home");
|
||||
header('Location: '.$_ENV['BASE_URL'].'/project/home');
|
||||
exit;
|
||||
}
|
||||
|
||||
|
|
@ -429,7 +429,7 @@
|
|||
|
||||
$objMail->Subject = "Projet : " . $objProject->getTitle();
|
||||
|
||||
$url = "https://php.boulayoune.com/index.php?ctrl=project&action=display&id=" . $projectId;
|
||||
$url = $_ENV['BASE_URL'].'/project/display/'.$projectId;
|
||||
|
||||
$this->_arrData['projectTitle'] = $objProject->getTitle();
|
||||
$this->_arrData['projectDescription'] = $objProject->getDescription();
|
||||
|
|
@ -438,14 +438,14 @@
|
|||
$objMail->Body = $this->_display("mail_message", false);
|
||||
|
||||
if ($objMail->Send()) {
|
||||
header("Location: index.php?ctrl=project&action=display&id=".$projectId."&mail=ok");
|
||||
header('Location: '.$_ENV['BASE_URL'].'/project/display/'.$projectId.'?mail=ok');
|
||||
} else {
|
||||
header("Location: index.php?ctrl=project&action=display&id=".$projectId."&mail=fail");
|
||||
header('Location: '.$_ENV['BASE_URL'].'/project/display/'.$projectId.'?mail=fail');
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
header("Location: index.php?ctrl=project&action=home");
|
||||
header('Location: '.$_ENV['BASE_URL'].'/project/home');
|
||||
exit;
|
||||
}
|
||||
|
||||
|
|
@ -459,7 +459,7 @@
|
|||
$objProjectModel = new ProjectModel;
|
||||
$objProjectModel->accept($intId);
|
||||
|
||||
header("Location: index.php");
|
||||
header('Location: '.$_ENV['BASE_URL']);
|
||||
exit;
|
||||
}
|
||||
|
||||
|
|
@ -473,7 +473,7 @@
|
|||
$objProjectModel = new ProjectModel;
|
||||
$objProjectModel->refuse($intId);
|
||||
|
||||
header("Location: index.php");
|
||||
header('Location: '.$_ENV['BASE_URL']);
|
||||
exit;
|
||||
}
|
||||
|
||||
|
|
@ -483,7 +483,7 @@
|
|||
public function delete(){
|
||||
|
||||
if (!isset($_SESSION['user']) || $_SESSION['user']['user_status'] != 2) {
|
||||
header("Location: index.php");
|
||||
header('Location: '.$_ENV['BASE_URL']);
|
||||
exit;
|
||||
}
|
||||
|
||||
|
|
@ -498,7 +498,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
header("Location: index.php");
|
||||
header('Location: '.$_ENV['BASE_URL']);
|
||||
exit;
|
||||
}
|
||||
|
||||
|
|
@ -518,7 +518,7 @@
|
|||
}
|
||||
|
||||
$urlRedirect = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : "index.php";
|
||||
header("Location: " . $urlRedirect);
|
||||
header('Location: ' . $urlRedirect);
|
||||
exit;
|
||||
}
|
||||
|
||||
|
|
@ -541,7 +541,7 @@
|
|||
}
|
||||
|
||||
$url = (isset($_SERVER['HTTP_REFERER'])) ? $_SERVER['HTTP_REFERER'] : "index.php";
|
||||
header("Location: " . $url);
|
||||
header('Location: ' . $url);
|
||||
exit;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ class UserCtrl extends MotherCtrl {
|
|||
setcookie('remember_me', $token, time() + (15*24*60*60), "/", "", true, true);
|
||||
|
||||
}
|
||||
header("Location:index.php");
|
||||
header("Location:".$_ENV['BASE_URL']);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
|
@ -75,7 +75,7 @@ class UserCtrl extends MotherCtrl {
|
|||
|
||||
$_SESSION['success'] = "Vous êtes bien déconnecté";
|
||||
|
||||
header("Location:index.php");
|
||||
header("Location:".$_ENV['BASE_URL']);
|
||||
exit;
|
||||
|
||||
}
|
||||
|
|
@ -143,7 +143,7 @@ class UserCtrl extends MotherCtrl {
|
|||
|
||||
if ($boolInsert === true) {
|
||||
$_SESSION['success'] = "Compte créé avec succès";
|
||||
header("Location:index.php?ctrl=user&action=login");
|
||||
header("Location:".$_ENV['BASE_URL']."/user/login");
|
||||
exit;
|
||||
} else {
|
||||
$arrError['global'] = "Erreur lors de l'ajout";
|
||||
|
|
@ -169,7 +169,7 @@ class UserCtrl extends MotherCtrl {
|
|||
$arrUserData = $objUserModel->findUserByPseudo($strPseudo);
|
||||
|
||||
if ($arrUserData === false) {
|
||||
header("Location: index.php");
|
||||
header("Location: ".$_ENV['BASE_URL']);
|
||||
exit;
|
||||
}
|
||||
|
||||
|
|
@ -195,7 +195,7 @@ class UserCtrl extends MotherCtrl {
|
|||
*/
|
||||
public function edit(){
|
||||
if(!isset($_SESSION['user'])){
|
||||
header("Location: index.php");
|
||||
header("Location: ".$_ENV['BASE_URL']);
|
||||
exit;
|
||||
}
|
||||
$objUserModel = new UserModel;
|
||||
|
|
@ -298,7 +298,7 @@ class UserCtrl extends MotherCtrl {
|
|||
$arrNewInfo = $objUserModel->findUserByPseudo($objUser->getPseudo());
|
||||
$_SESSION['user'] = $arrNewInfo;
|
||||
$_SESSION['success'] = "Compte modifier avec succès";
|
||||
header("Location:?ctrl=user&action=user&pseudo=".$objUser->getPseudo());
|
||||
header('Location:'.$_ENV['BASE_URL'].'/user/user/'.$objUser->getPseudo());
|
||||
exit;
|
||||
} else {
|
||||
$arrError['global'] = "Erreur lors de l'update";
|
||||
|
|
|
|||
|
|
@ -226,7 +226,7 @@ class Project extends Mother{
|
|||
* Récupération de la date du projet supprimer
|
||||
* @return string date du projet
|
||||
*/
|
||||
public function getProject_deleted_at(){
|
||||
public function getDeleted_at(){
|
||||
return $this->_project_deleted_at;
|
||||
}
|
||||
|
||||
|
|
@ -234,7 +234,7 @@ class Project extends Mother{
|
|||
* Mise à jour de la date de suppression de projet
|
||||
* @param string date du projet
|
||||
*/
|
||||
public function setProject_deleted_at($project_deleted_at){
|
||||
public function setDeleted_at($project_deleted_at){
|
||||
$this->_project_deleted_at = $project_deleted_at;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,9 +1,7 @@
|
|||
<?php
|
||||
//Debut session
|
||||
session_start();
|
||||
require(__DIR__ . "/vendor/autoload.php");
|
||||
|
||||
// Environnement
|
||||
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
|
||||
$dotenv->safeLoad();
|
||||
|
||||
|
|
@ -27,6 +25,8 @@
|
|||
}
|
||||
|
||||
if ($boolError) {
|
||||
$error = new \Controllers\ErrorCtrl();
|
||||
return $error->error_404();
|
||||
http_response_code(404); // ← important pour le SEO et les navigateurs
|
||||
$error = new \Controllers\ErrorCtrl();
|
||||
$error->error_404(); // ← pas de "return", juste l'appel
|
||||
exit; // ← stoppe l'exécution après l'affichage
|
||||
}
|
||||
|
|
@ -4,15 +4,15 @@
|
|||
<nav aria-label="Navigation pied de page">
|
||||
<ul class="list-inline">
|
||||
<li class="list-inline-item">
|
||||
<a href="?ctrl=page&action=about">A propos</a>
|
||||
<a href="{$smarty.env.BASE_URL}/page/about">A propos</a>
|
||||
</li>
|
||||
<li class="list-inline-item" aria-hidden="true">|</li>
|
||||
<li class="list-inline-item">
|
||||
<a href="index.php?ctrl=page&action=help">Aide et support</a>
|
||||
<a href="{$smarty.env.BASE_URL}/page/help">Aide et support</a>
|
||||
</li>
|
||||
<li class="list-inline-item" aria-hidden="true">|</li>
|
||||
<li class="list-inline-item">
|
||||
<a href="?ctrl=page&action=mentions">Mentions légales</a>
|
||||
<a href="{$smarty.env.BASE_URL}/page/mentions">Mentions légales</a>
|
||||
</li>
|
||||
<li class="list-inline-item" aria-hidden="true">|</li>
|
||||
<li class="list-inline-item">
|
||||
|
|
@ -22,6 +22,6 @@
|
|||
</nav>
|
||||
</footer>
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js" crossorigin="anonymous"></script>
|
||||
<script src="assests/js/scripts.js"></script>
|
||||
<script src="{$smarty.env.BASE_URL}/assests/js/scripts.js"></script>
|
||||
|
||||
|
||||
|
|
@ -3,8 +3,8 @@
|
|||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="assests/css/style.css">
|
||||
<link rel="shortcut icon" href="assests/img/Group-49.ico" type="image/x-icon">
|
||||
<link rel="stylesheet" href="{$smarty.env.BASE_URL}/assests/css/style.css">
|
||||
<link rel="shortcut icon" href="{$smarty.env.BASE_URL}/assests/img/Group-49.ico" type="image/x-icon">
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-sRIl4kxILFvY47J16cr9ZwB07vP4J8+LH7qKQnuqkuIAvNWLzeN8tE5YBujZqJLB" crossorigin="anonymous">
|
||||
<script src="https://use.fontawesome.com/releases/v6.3.0/js/all.js" crossorigin="anonymous"></script>
|
||||
<title>Folliow{block name="title"}{/block}</title>
|
||||
|
|
@ -15,8 +15,8 @@
|
|||
<div class="container-fluid">
|
||||
|
||||
<!-- Logo -->
|
||||
<a class="navbar-brand d-flex align-items-center" href="index.php">
|
||||
<img src="assests/img/logo.png" alt="Logo" class="logo-image">
|
||||
<a class="navbar-brand d-flex align-items-center" href="{$smarty.env.BASE_URL}">
|
||||
<img src="{$smarty.env.BASE_URL}/assests/img/logo.png" alt="Logo" class="logo-image">
|
||||
</a>
|
||||
|
||||
<!-- Bouton hamburger mobile -->
|
||||
|
|
@ -31,18 +31,18 @@
|
|||
<!-- Liens gauche -->
|
||||
<ul class="navbar-nav me-auto mb-0">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="?ctrl=page&action=about">À propos</a>
|
||||
<a class="nav-link" href="{$smarty.env.BASE_URL}/page/about">À propos</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="?ctrl=project&action=search">Rechercher</a>
|
||||
<a class="nav-link" href="{$smarty.env.BASE_URL}/project/search">Rechercher</a>
|
||||
</li>
|
||||
{if isset($smarty.session.user)}
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="?ctrl=project&action=addedit_project">Ajouter un projet</a>
|
||||
<a class="nav-link" href="{$smarty.env.BASE_URL}/project/addedit_project">Ajouter un projet</a>
|
||||
</li>
|
||||
{if $smarty.session.user.authorisation_name == "Administrateur"}
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="?ctrl=admin&action=admin">Admin</a>
|
||||
<a class="nav-link" href="{$smarty.env.BASE_URL}/admin/admin">Admin</a>
|
||||
</li>
|
||||
{/if}
|
||||
{/if}
|
||||
|
|
@ -53,13 +53,13 @@
|
|||
{if !isset($smarty.session.user)}
|
||||
<ul class="navbar-nav d-flex flex-row align-items-center gap-1 mb-0">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="index.php?ctrl=user&action=signup"
|
||||
<a class="nav-link" href="{$smarty.env.BASE_URL}/user/signup"
|
||||
title="Créer un compte" aria-label="Créer un compte">
|
||||
S'inscrire
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="index.php?ctrl=user&action=login"
|
||||
<a class="nav-link" href="{$smarty.env.BASE_URL}/user/login"
|
||||
title="Se connecter" aria-label="Se connecter">
|
||||
Se connecter
|
||||
</a>
|
||||
|
|
@ -68,17 +68,17 @@
|
|||
{else}
|
||||
<ul class="navbar-nav d-flex flex-row align-items-center gap-2 mb-0">
|
||||
<li class="nav-item d-flex align-items-center">
|
||||
<a class="nav-link p-0" href="index.php?ctrl=user&action=user&pseudo={$smarty.session.user.user_pseudo}"
|
||||
<a class="nav-link p-0" href="{$smarty.env.BASE_URL}/user/user/{$smarty.session.user.user_pseudo}"
|
||||
title="Modifier mon compte" aria-label="Modifier mon compte">
|
||||
<img
|
||||
src="{$smarty.env.IMG_USER_PATH}{if ($smarty.env.IMG_USER_PATH|cat:($smarty.session.user.user_image))|file_exists}{$smarty.session.user.user_image}{else}images.jpg{/if}"
|
||||
src="{$smarty.env.BASE_URL}/{$smarty.env.IMG_USER_PATH}{if ($smarty.env.IMG_USER_PATH|cat:($smarty.session.user.user_image))|file_exists}{$smarty.session.user.user_image}{else}images.jpg{/if}"
|
||||
class="nav-avatar"
|
||||
alt="Photo de profil"
|
||||
>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item d-flex align-items-center">
|
||||
<a class="nav-link" href="index.php?ctrl=user&action=logout"
|
||||
<a class="nav-link" href="{$smarty.env.BASE_URL}/user/logout"
|
||||
title="Se déconnecter" aria-label="Se déconnecter">
|
||||
Se déconnecter
|
||||
</a>
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@
|
|||
|
||||
|
||||
<div class="ratio ratio-4x3">
|
||||
<a href="index.php?ctrl=project&action=display&id={$objProject->getId()}">
|
||||
<img src="{$smarty.env.IMG_PROJECT_PATH}{if ($smarty.env.IMG_PROJECT_PATH|cat:$objProject->getThumbnail())|file_exists}{$objProject->getThumbnail()}{else}{math equation="rand(1,4)"}.jpg{/if}"
|
||||
<a href="{$smarty.env.BASE_URL}/project/display/{$objProject->getId()}">
|
||||
<img src="{$smarty.env.BASE_URL}/{$smarty.env.IMG_PROJECT_PATH}{if ($smarty.env.IMG_PROJECT_PATH|cat:$objProject->getThumbnail())|file_exists}{$objProject->getThumbnail()}{else}{math equation="rand(1,4)"}.jpg{/if}"
|
||||
class="w-100 h-100 object-fit-cover"
|
||||
{if $objProject->getCreatorName()|stripos:'minou' !== false}
|
||||
style =" box-shadow: 0 0 0 4px #000; "{/if}
|
||||
|
|
@ -26,8 +26,8 @@
|
|||
position: relative;
|
||||
z-index: 1;"{/if}>
|
||||
<div class="d-flex align-items-start gap-3">
|
||||
<a href="index.php?ctrl=user&action=user&pseudo={$objProject->getCreatorname()}">
|
||||
<img src="{$smarty.env.IMG_USER_PATH}{if ($smarty.env.IMG_USER_PATH|cat:($objProject->getUser_image()))|file_exists}{$objProject->getUser_image()}{else}images.jpg{/if}"
|
||||
<a href="{$smarty.env.BASE_URL}/user/user/{$objProject->getCreatorname()}">
|
||||
<img src="{$smarty.env.BASE_URL}/{$smarty.env.IMG_USER_PATH}{if ($smarty.env.IMG_USER_PATH|cat:($objProject->getUser_image()))|file_exists}{$objProject->getUser_image()}{else}images.jpg{/if}"
|
||||
class="rounded-circle flex-shrink-0 border border-2 border-white"
|
||||
style="width: 64px; height: 64px; object-fit: cover; margin-top: 8px;{if $objProject->getCreatorName()|stripos:'minou' !== false}
|
||||
box-shadow: 0 0 0 4px #000; {/if}"
|
||||
|
|
@ -37,7 +37,7 @@
|
|||
<h3 class="h6 fw-bold mb-2 mt-1">{$objProject->getTitle()}</h3>
|
||||
<p class="small text-muted mb-1">
|
||||
<i class="bi bi-person"></i>
|
||||
<a href="index.php?ctrl=user&action=user&pseudo={$objProject->getCreatorname()}"
|
||||
<a href="{$smarty.env.BASE_URL}/user/user/{$objProject->getCreatorname()}"
|
||||
class="text-decoration-none text-muted"
|
||||
style="position: relative; z-index: 2;
|
||||
{if $objProject->getCreatorName()|stripos:'minou' !== false}font-weight: 800 !important;
|
||||
|
|
@ -57,7 +57,7 @@
|
|||
<i class="bi bi-clock"><time>{$objProject->getCreation_date()}</time></i>
|
||||
</small>
|
||||
{if $objProject->getStatus() != "refusé"}
|
||||
<a href="index.php?ctrl=project&action=display&id={$objProject->getId()}"
|
||||
<a href="{$smarty.env.BASE_URL}/project/display/{$objProject->getId()}"
|
||||
class="btn btn-sm btn-primary" {if $objProject->getCreatorName()|stripos:'minou' !== false}style="
|
||||
background-color: #000 !important;
|
||||
color: #ff8c00 !important;
|
||||
|
|
@ -71,7 +71,7 @@
|
|||
|
||||
{if isset($smarty.session.user)}
|
||||
{if $smarty.session.user.user_id == $objProject->getUser_id()}
|
||||
<a href="index.php?ctrl=project&action=addedit_project&id={$objProject->getId()}"
|
||||
<a href="{$smarty.env.BASE_URL}/project/addedit_project/{$objProject->getId()}"
|
||||
class="btn btn-sm btn-outline-secondary mt-2 w-100"
|
||||
style="position: relative; z-index: 2;">
|
||||
Editer
|
||||
|
|
@ -86,13 +86,13 @@
|
|||
<div class="card-footer bg-white border-top-0 p-2">
|
||||
<div class="d-flex gap-2">
|
||||
<a class="btn btn-sm btn-success flex-fill"
|
||||
href="?ctrl=project&action=accept&id={$objProject->getId()}"
|
||||
href="{$smarty.env.BASE_URL}/project/accept/{$objProject->getId()}"
|
||||
name="toPublished">Accepter</a>
|
||||
<a class="btn btn-sm btn-warning flex-fill"
|
||||
href="?ctrl=project&action=refuse&id={$objProject->getId()}"
|
||||
href="{$smarty.env.BASE_URL}/project/refuse/{$objProject->getId()}"
|
||||
name="toRefused">Refuser</a>
|
||||
<a class="btn btn-sm btn-danger flex-fill"
|
||||
href="index.php?ctrl=project&action=delete&id={$objProject->getId()}"
|
||||
href="{$smarty.env.BASE_URL}/project/delete/{$objProject->getId()}"
|
||||
name="toDelete"
|
||||
onclick="return confirm('Attention ! Êtes-vous sûr de vouloir supprimer ce projet ? Cette action est irréversible.');">
|
||||
Supprimer</a>
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@
|
|||
<input name="thumbnail" class="form-control" type="file">
|
||||
{if $objProject && $objProject->getId()}
|
||||
<label class="h5">Miniature actuelle :</label>
|
||||
<img src="{$smarty.env.IMG_PROJECT_PATH}{$objProject->getThumbnail()}" alt="Miniature">
|
||||
<img src="{$smarty.env.BASE_URL}/{$smarty.env.IMG_PROJECT_PATH}{$objProject->getThumbnail()}" alt="Miniature">
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
|
|
@ -69,7 +69,7 @@
|
|||
{foreach $arrImages as $image}
|
||||
<div class="col-md-3 mb-3 text-center">
|
||||
<div class="card shadow-sm h-100 border-{if $image.image_status == 'approuvé'}success{elseif $image.image_status == 'refusé'}danger{else}warning{/if}">
|
||||
<img src="{$smarty.env.IMG_PROJECT_PATH}{$image.image_name}"
|
||||
<img src="{$smarty.env.BASE_URL}/{$smarty.env.IMG_PROJECT_PATH}{$image.image_name}"
|
||||
class="card-img-top img-thumbnail"
|
||||
alt="{$image.image_alt}"
|
||||
style="height: 150px; object-fit: cover;">
|
||||
|
|
@ -80,7 +80,7 @@
|
|||
</span>
|
||||
|
||||
<div class="mt-2 d-flex flex-column gap-1">
|
||||
<a href="index.php?ctrl=project&action=delete_image&id_img={$image.image_id}"
|
||||
<a href="{$smarty.env.BASE_URL}/project/delete_image/{$image.image_id}"
|
||||
class="btn btn-sm btn-danger"
|
||||
onclick="return confirm('Supprimer définitivement cette image ?')">Supprimer</a>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -4,6 +4,6 @@
|
|||
<div class="text-center">
|
||||
<h1 class="display-1">Erreur 403</h1>
|
||||
<h2 class="display-3">Vous n'êtes pas autorisé à accéder à cette page !</h2>
|
||||
<img class="img-fluid" src="assests/img/error403.jpg">
|
||||
<img class="img-fluid" src="{$smarty.env.BASE_URL}/assests/img/error403.jpg">
|
||||
</div>
|
||||
{/block}
|
||||
|
|
@ -4,6 +4,6 @@
|
|||
<div class="text-center">
|
||||
<h1 class="display-1">Erreur 404</h1>
|
||||
<h2 class="display-3">Cette page n'existe pas !</h2>
|
||||
<img class="img-fluid" src="assests/img/error404.webp">
|
||||
<img class="img-fluid" src="{$smarty.env.BASE_URL}/assests/img/error404.webp">
|
||||
</div>
|
||||
{/block}
|
||||
|
|
@ -133,7 +133,7 @@
|
|||
</h2>
|
||||
<div id="collapseOne" class="accordion-collapse collapse show" data-bs-parent="#accordionExample">
|
||||
<div class="accordion-body">
|
||||
<p>Rien de plus simple ! Si vous êtes connecté à votre compte, un lien <a href="index.php?ctrl=admin&action=admin">"admin"</a> sera visible dans votre barre de navigation.
|
||||
<p>Rien de plus simple ! Si vous êtes connecté à votre compte, un lien <a href="{$smarty.env.BASE_URL}/admin/admin">"admin"</a> sera visible dans votre barre de navigation.
|
||||
Cliquez dessus et vous voici dans l'antre réservée à nos fabuleux administrateurs !</p>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -206,7 +206,7 @@
|
|||
</h2>
|
||||
<div id="collapseTwo" class="accordion-collapse collapse" data-bs-parent="#accordionExample">
|
||||
<div class="accordion-body">
|
||||
<p>En haut à droite de votre écran, vous avez le lien <a href="index.php?ctrl=user&action=signin">"s'inscrire"</a>. Nous demandons certaines informations obligatoires pour l'identification,
|
||||
<p>En haut à droite de votre écran, vous avez le lien <a href="{$smarty.env.BASE_URL}/user/signin">"s'inscrire"</a>. Nous demandons certaines informations obligatoires pour l'identification,
|
||||
ensuite à vous de remplir les informations complémentaires pour alimenter votre profil et permettre aux autres utilisateurs de mieux vous connaitre et vous contacter.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -11,13 +11,11 @@
|
|||
|
||||
<section class="container mt-5 p-5 d-flex flex-column align-items-center text-center">
|
||||
<div class="mb-4">
|
||||
<form method="GET" action="index.php">
|
||||
<input type="hidden" name="ctrl" value="project">
|
||||
<input type="hidden" name="action" value="home">
|
||||
<form method="GET" action="{$smarty.env.BASE_URL}">
|
||||
<button type="submit" name="filter_cat" value="1" class="btn btn-primary">Design</button>
|
||||
<button type="submit" name="filter_cat" value="2" class="btn btn-primary">Développement Web</button>
|
||||
<button type="submit" name="filter_old" value="true" class="btn btn-primary">Plus de 6 mois</button>
|
||||
<a href="index.php?ctrl=project&action=home" class="btn btn-primary">Tout</a>
|
||||
<a href="{$smarty.env.BASE_URL}/project/home" class="btn btn-primary">Tout</a>
|
||||
</form>
|
||||
</div>
|
||||
</section>
|
||||
|
|
@ -30,7 +28,7 @@
|
|||
|
||||
{assign var="isAuthor" value=(isset($smarty.session.user) && $smarty.session.user.user_id == $objProject->getUser_id())}
|
||||
{assign var="isModerator" value=(isset($smarty.session.user) && $smarty.session.user.user_status == 2)}
|
||||
{assign var="isDeleted" value=($objProject->getProject_deleted_at() !== null)}
|
||||
{assign var="isDeleted" value=($objProject->getDeleted_at() !== null)}
|
||||
{assign var="isRefused" value=($objProject->getStatus() == "refusé")}
|
||||
|
||||
{if $isModerator
|
||||
|
|
|
|||
|
|
@ -169,7 +169,7 @@
|
|||
<div class="col-12 text-center">
|
||||
<small class="text-secondary">
|
||||
Déjà un compte ?
|
||||
<a href="index.php?ctrl=user&action=login">Se connecter</a>
|
||||
<a href="{$smarty.env.BASE_URL}/user/login">Se connecter</a>
|
||||
</small>
|
||||
</div>
|
||||
</form>
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@
|
|||
<div class="col-12 text-center">
|
||||
<small class="text-secondary">
|
||||
Pas encore de compte ?
|
||||
<a href="index.php?ctrl=user&action=signup" class="link-primary">
|
||||
<a href="{$smarty.env.BASE_URL}/user/signup" class="link-primary">
|
||||
Créer un compte
|
||||
</a>
|
||||
</small>
|
||||
|
|
|
|||
|
|
@ -24,4 +24,4 @@
|
|||
Cordialement,<br>
|
||||
L’équipe Folliow
|
||||
</p>
|
||||
<img src="https://php.boulayoune.com/assests/img/logo.png" style="height : 30px;">
|
||||
<img src="{$smarty.env.BASE_URL}/assests/img/logo.png" style="height : 30px;">
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@
|
|||
</p>
|
||||
|
||||
<div class="mb-4 shadow-sm {if !($smarty.env.IMG_PROJECT_PATH|cat:$objProject->getThumbnail())|file_exists}d-none{/if}" >
|
||||
<img src="{$smarty.env.IMG_PROJECT_PATH}{$objProject->getThumbnail()}"
|
||||
<img src="{$smarty.env.BASE_URL}/{$smarty.env.IMG_PROJECT_PATH}{$objProject->getThumbnail()}"
|
||||
class="img-fluid rounded w-100">
|
||||
</div>
|
||||
|
||||
|
|
@ -50,16 +50,16 @@
|
|||
<div class="col-md-4 mb-4">
|
||||
<div class="card {if $image.image_status != 'approuvé'}border-warning shadow-none opacity-75{/if}">
|
||||
|
||||
<img src="{$smarty.env.IMG_PROJECT_PATH}{$image.image_name}" class="card-img-top" alt="{$image.image_alt}">
|
||||
<img src="{$smarty.env.BASE_URL}/{$smarty.env.IMG_PROJECT_PATH}{$image.image_name}" class="card-img-top" alt="{$image.image_alt}">
|
||||
|
||||
{* Visible uniquement par le modérateur *}
|
||||
{if isset($smarty.session.user.user_status) && $smarty.session.user.user_status == 2}
|
||||
<div class="moderator-tools border-top pt-2 mt-2">
|
||||
<div class="d-flex gap-2">
|
||||
<a href="index.php?ctrl=project&action=change_image_status&id_img={$image.image_id}&status=approuvé"
|
||||
<a href="{$smarty.env.BASE_URL}/project/change_image_status/{$image.image_id}&status=approuvé"
|
||||
class="btn btn-sm btn-success">Valider</a>
|
||||
|
||||
<a href="index.php?ctrl=project&action=delete_image&id_img={$image.image_id}"
|
||||
<a href="{$smarty.env.BASE_URL}/project/delete_image/{$image.image_id}"
|
||||
class="btn btn-sm btn-outline-danger"
|
||||
onclick="return confirm('Supprimer définitivement ?')">Supprimer</a>
|
||||
</div>
|
||||
|
|
@ -77,7 +77,7 @@
|
|||
|
||||
<!-- Formulaire qui envoie la demande au contrôleur (sendEmail) -->
|
||||
<div class="card shadow-sm p-4 mb-5">
|
||||
<form method="post" action="index.php?ctrl=project&action=sendEmail">
|
||||
<form method="post" action="{$smarty.env.BASE_URL}/project/sendEmail">
|
||||
|
||||
<input type="hidden" name="project_id"
|
||||
value="{$objProject->getId()}">
|
||||
|
|
@ -110,8 +110,8 @@
|
|||
position: relative;
|
||||
z-index: 1;"{/if}>
|
||||
|
||||
<a href="index.php?ctrl=user&action=user&pseudo={$objProject->getCreatorName()}" class="text-decoration-none text-dark">
|
||||
<img src="{$smarty.env.IMG_USER_PATH}{if ($smarty.env.IMG_USER_PATH|cat:($objProject->getUser_image()))|file_exists}{$objProject->getUser_image()}{else}images.jpg{/if}"
|
||||
<a href="{$smarty.env.BASE_URL}/user/user/{$objProject->getCreatorName()}" class="text-decoration-none text-dark">
|
||||
<img src="{$smarty.env.BASE_URL}/{$smarty.env.IMG_USER_PATH}{if ($smarty.env.IMG_USER_PATH|cat:($objProject->getUser_image()))|file_exists}{$objProject->getUser_image()}{else}images.jpg{/if}"
|
||||
class="rounded-circle mb-3 mx-auto "
|
||||
style="width:100px;height:100px;object-fit:cover;{if $objProject->getCreatorName()|stripos:'minou' !== false}
|
||||
box-shadow: 0 0 0 4px #000; {/if}">
|
||||
|
|
@ -145,18 +145,18 @@
|
|||
{if isset($smarty.session.user)}
|
||||
{if ($smarty.session.user.user_status == 2 || $smarty.session.user.user_id == $objProject->getUser_id())}
|
||||
<div class="border rounded text-center">
|
||||
<a class="btn btn-sm m-1 btn-danger" href="?ctrl=project&action=delete&id={$objProject->getId()}" name="toDelete">Supprimer le projet</a>
|
||||
<a class="btn btn-sm m-1 btn-danger" href="{$smarty.env.BASE_URL}/project/delete/{$objProject->getId()}" name="toDelete">Supprimer le projet</a>
|
||||
{/if}
|
||||
|
||||
|
||||
{if $smarty.session.user.user_id == $objProject->getUser_id()}
|
||||
<a class="btn btn-sm m-1 btn-warning" href="?ctrl=project&action=addedit_project&id={$objProject->getId()}" name="addedit">Modifier le projet</a>
|
||||
<a class="btn btn-sm m-1 btn-warning" href="{$smarty.env.BASE_URL}/project/addedit_project/{$objProject->getId()}" name="addedit">Modifier le projet</a>
|
||||
{/if}
|
||||
|
||||
{*Conditions permettant au Modérateur de modifier le status d'un projet*}
|
||||
{if $smarty.session.user.user_status == 2 && $objProject->getStatus() == "en_attente"}
|
||||
<a class="btn btn-sm m-1 btn-success" href="?ctrl=project&action=accept&id={$objProject->getId()}" name="toPublished">Accepter</a>
|
||||
<a class="btn btn-sm m-1 btn-warning" href="?ctrl=project&action=refuse&id={$objProject->getId()}" name="toRefused">Refuser</a>
|
||||
<a class="btn btn-sm m-1 btn-success" href="{$smarty.env.BASE_URL}/project/accept/{$objProject->getId()}" name="toPublished">Accepter</a>
|
||||
<a class="btn btn-sm m-1 btn-warning" href="{$smarty.env.BASE_URL}/project/refuse/{$objProject->getId()}" name="toRefused">Refuser</a>
|
||||
</div>
|
||||
{elseif $projectStatus == "refusé"}
|
||||
<p class="text-danger fw-bold">Portfolio refusé</p>
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
<h2 class="visually-hidden">Rechercher parmi les projets</h2>
|
||||
<div class="row mb-2">
|
||||
<section class="mb-5" aria-labelledby="search-heading">
|
||||
<form name="formSearch" method="post" action="?ctrl=project&action=search" class="border rounded p-4 bg-light">
|
||||
<form name="formSearch" method="post" action="" class="border rounded p-4 bg-light">
|
||||
<h3 id="search-heading" class="h4 mb-4">
|
||||
<i class="fas fa-search me-2" aria-hidden="true"></i>
|
||||
Rechercher des projets
|
||||
|
|
@ -134,7 +134,7 @@
|
|||
<i class="fas fa-search me-2" aria-hidden="true"></i>
|
||||
Rechercher
|
||||
</button>
|
||||
<a href="index.php?ctrl=project&action=search" class="btn btn-secondary ms-2">
|
||||
<a href="{$smarty.env.BASE_URL}/project/search" class="btn btn-secondary ms-2">
|
||||
<i class="fas fa-redo me-2" aria-hidden="true"></i>
|
||||
Réinitialiser
|
||||
</a>
|
||||
|
|
@ -155,7 +155,7 @@
|
|||
|
||||
{assign var="isAuthor" value=(isset($smarty.session.user) && $smarty.session.user.user_id == $objProject->getUser_id())}
|
||||
{assign var="isModerator" value=(isset($smarty.session.user) && $smarty.session.user.user_status == 2)}
|
||||
{assign var="isDeleted" value=($objProject->getProject_deleted_at() !== null)}
|
||||
{assign var="isDeleted" value=($objProject->getDeleted_at() !== null)}
|
||||
{assign var="isRefused" value=($objProject->getStatus() == "refusé")}
|
||||
|
||||
{if $isModerator
|
||||
|
|
|
|||
|
|
@ -192,7 +192,7 @@
|
|||
<div class="col-12 text-center">
|
||||
<small class="text-secondary">
|
||||
Déjà un compte ?
|
||||
<a class="link-primary" href="index.php?ctrl=user&action=login">
|
||||
<a class="link-primary" href="{$smarty.env.BASE_URL}/user/login">
|
||||
Se connecter
|
||||
</a>
|
||||
</small>
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
z-index: 1;"{/if}>
|
||||
<div class="row" >
|
||||
<div class="col-md-4 text-center">
|
||||
<img src="{$smarty.env.IMG_USER_PATH}{if ($smarty.env.IMG_USER_PATH|cat:($user->getImage()))|file_exists}{$user->getImage()}{else}images.jpg{/if}" alt="Avatar de {$user->getPseudo()}" class="rounded-circle flex-shrink-0 border border-2 border-white"
|
||||
<img src="{$smarty.env.BASE_URL}/{$smarty.env.IMG_USER_PATH}{if ($smarty.env.IMG_USER_PATH|cat:($user->getImage()))|file_exists}{$user->getImage()}{else}images.jpg{/if}" alt="Avatar de {$user->getPseudo()}" class="rounded-circle flex-shrink-0 border border-2 border-white"
|
||||
style="width: 256px; height: 256px; object-fit: cover; margin-top: 8px;{if $user->getPseudo()|stripos:'minou' !== false}
|
||||
box-shadow: 0 0 0 4px #000; {/if}"
|
||||
>
|
||||
|
|
@ -56,7 +56,7 @@
|
|||
border: none !important;
|
||||
font-weight: bold !important;
|
||||
transition: transform 0.2s;"{/if}
|
||||
href="?ctrl=user&action=edit">Edit account</a>
|
||||
href="{$smarty.env.BASE_URL}/user/edit">Edit account</a>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@
|
|||
<!-- Avatar preview -->
|
||||
<img
|
||||
id="preview-avatar"
|
||||
src="{if $objUser->getImage()}{$smarty.env.IMG_USER_PATH}{$objUser->getImage()}{else}assests/img/images.jpg{/if}"
|
||||
src="{$smarty.env.BASE_URL}/{if $objUser->getImage()}{$smarty.env.IMG_USER_PATH}{$objUser->getImage()}{else}assests/img/images.jpg{/if}"
|
||||
alt="Photo de profil"
|
||||
class="rounded-circle border"
|
||||
style="width:80px; height:80px; object-fit:cover;"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue