diff --git a/controllers/ProjectCtrl.php b/controllers/ProjectCtrl.php index fc85dd1..9993677 100644 --- a/controllers/ProjectCtrl.php +++ b/controllers/ProjectCtrl.php @@ -482,15 +482,21 @@ */ public function delete(){ - if (!isset($_SESSION['user']) || $_SESSION['user']['user_status'] != 2) { - header('Location: '.$_ENV['BASE_URL']); - exit; + $objProjectModel = new ProjectModel(); + $intId = $_GET['id'] ?? null; + $project = $objProjectModel->findOne($intId); + if ( + !isset($_SESSION['user']) || + $_SESSION['user']['user_status'] != 2 || + !$project || + $project['project_creatorname'] == $_SESSION['user']['user_pseudo'] + ) { + header('Location: '.$_ENV['BASE_URL']); + exit; } - $intId = $_GET['id'] ?? null; if ($intId) { - $objProjectModel = new ProjectModel(); if ($objProjectModel->delete_soft_project((int) $intId)) { $_SESSION['success'] = "Le projet a été archivé avec succès."; } else { diff --git a/uploads/projects/69a95f336d8be.webp b/uploads/projects/69a95f336d8be.webp new file mode 100644 index 0000000..359a599 Binary files /dev/null and b/uploads/projects/69a95f336d8be.webp differ diff --git a/views/project_display.tpl b/views/project_display.tpl index 6db55de..e617858 100644 --- a/views/project_display.tpl +++ b/views/project_display.tpl @@ -145,7 +145,11 @@ {if isset($smarty.session.user)} {if ($smarty.session.user.user_status == 2 || $smarty.session.user.user_id == $objProject->getUser_id())}
- Supprimer le projet + + Supprimer {/if} diff --git a/views/user.tpl b/views/user.tpl index 70879bd..c5793f9 100644 --- a/views/user.tpl +++ b/views/user.tpl @@ -70,7 +70,17 @@
{if count($arrProjectToDisplay) > 0} {foreach $arrProjectToDisplay as $objProject} - {include file="views/_partial/preview.tpl"} + {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->getDeleted_at() !== null)} + {assign var="isRefused" value=($objProject->getStatus() == "refusé")} + + {if $isModerator + || ($isAuthor && !$isDeleted) + || (!$isRefused && !$isDeleted)} + + {include file="views/_partial/preview.tpl"} + {/if} {/foreach} {else}