diff --git a/controllers/admin_controller.php b/controllers/admin_controller.php
index 63e92a1..8e4a509 100644
--- a/controllers/admin_controller.php
+++ b/controllers/admin_controller.php
@@ -8,6 +8,8 @@
require("./entities/image_entity.php");
require("./models/user_model.php");
require("./entities/user_entity.php");
+ require("./models/authorisation_model.php");
+ require("./entities/authorisation_entity.php");
require("mother_controller.php");
/**
@@ -18,33 +20,33 @@
class AdminCtrl extends MotherCtrl{
public function admin(){
- /*accès à la page admin
+
if (!isset($_SESSION['user']) && ($_SESSION['user']['user_status'] != 1 )){
header("Location:index.php?ctrl=error&action=error_403");
exit;
- }*/
+ }
+
+ //gestion de l'user
$objCategoryModel = new CategoryModel;
if (!empty($_POST['new_category'])) {
- $objNewCategory = new Category;
- if (!empty($objNewCategory->getName())) {
- $objNewCategory = $_POST['new_category'];
- $objCategoryModel->insertCategory($objNewCategory);
- header("Location:index.php?ctrl=admin&action=admin");
- exit;
- }
+ $newCat = new Category();
+ $newCat->setName($_POST['new_category']);
+ $objCategoryModel->insertCategory($newCat);
+ header('Location: index.php?ctrl=admin&action=admin');
+ exit;
}
- if (!empty($_POST['edit_category'])) {
- $objEditCategory = new Category;
- if ($objEditCategory->getId() > 0) {
- $objEditCategory = $_POST['edit_category'];
- $objCategoryModel->editCategory($objEditCategory);
- header("Location:index.php?ctrl=admin&action=admin");
- exit;
- }
+ if (!empty($_POST['id_to_edit']) && !empty($_POST['new_name'])) {
+ $editCat = new Category();
+ $editCat->setId($_POST['id_to_edit']);
+ $editCat->setName($_POST['new_name']);
+ $objCategoryModel->editCategory($editCat);
+ header('Location: index.php?ctrl=admin&action=admin');
+ exit;
}
+ //affichage select des catégories
$arrCategory = $objCategoryModel->findAllCategory();
$arrCategoryToDisplay = array();
@@ -53,10 +55,56 @@
$objCategory->hydrate($arrDetCategory);
$arrCategoryToDisplay[] = $objCategory;
}
+
+ //gestion de l'user
+ $objUserModel = new UserModel;
+
+ if (!empty($_POST['action'])) {
+ $intUserId = (int)$_POST['user_id'];
+
+ if ($intUserId > 0) {
+ if ($_POST['action'] === 'update_status' && !empty($_POST['new_status'])) {
+ $objUser = new User();
+ $objUser->setId($intUserId);
+ $objUser->setStatus((int)$_POST['new_status']);
+ if ($objUserModel->editStatus($objUser)) {
+ $_SESSION['message_success'] = "Le statut a bien été modifié !";
+ }
+ }
+ elseif ($_POST['action'] === 'delete_user') {
+ $objUserModel->delete_soft($intUserId);
+ $_SESSION['message_success'] = "L'utilisateur a été supprimé.";
+ }
+ header("Location: index.php?ctrl=admin&action=admin");
+ exit;
+ }
+ }
+
+ //affichage select des users
+ $arrUser = $objUserModel->findAllUsers();
+ $arrUserToDisplay = array();
+
+ foreach($arrUser as $arrDetUser){
+ $objUser = new User;
+ $objUser->hydrate($arrDetUser);
+ $arrUserToDisplay[] = $objUser;
+ }
+
+ //affichage select des authorisations
+ $objAuthorisationModel = new AuthorisationModel;
+ $arrAuthorisation = $objAuthorisationModel->findAllAuthorisation();
+ $arrAuthorisationToDisplay = array();
+
+ foreach($arrAuthorisation as $arrDetAuthorisation){
+ $objAuthorisation = new Authorisation;
+ $objAuthorisation->hydrate($arrDetAuthorisation);
+ $arrAuthorisationToDisplay[] = $objAuthorisation;
+ }
- // Il faudra donner à maman et gérer l'affichage quand Smarty sera prêt
- $this->_arrData['arrCategoryToDisplay'] = $arrCategoryToDisplay;
- //$this->_arrData['intCategory'] = $objCategoryModel->;
+ //gérer l'affichage
+ $this->_arrData['arrCategoryToDisplay'] = $arrCategoryToDisplay;
+ $this->_arrData['arrUserToDisplay'] = $arrUserToDisplay;
+ $this->_arrData['arrAuthorisationToDisplay'] = $arrAuthorisationToDisplay;
$this->_display("admin");
}
}
diff --git a/controllers/project_controller.php b/controllers/project_controller.php
index 244753b..98f8e0c 100644
--- a/controllers/project_controller.php
+++ b/controllers/project_controller.php
@@ -23,9 +23,20 @@
*/
public function home(){
+
+
+ $intCategory = 0;
+ if (!empty($_GET['filter_cat'])) {
+ $intCategory = (int) $_GET['filter_cat'];
+ }
+
+ $boolOld = false;
+ if (!empty($_GET['filter_old']) && $_GET['filter_old'] == 'true') {
+ $boolOld = true;
+ }
$objProjectModel = new ProjectModel;
- $arrProject = $objProjectModel->findAll();
+ $arrProject = $objProjectModel->findAll(0,'',0,0,'','','',$intCategory,$boolOld);
$arrProjectToDisplay = array();
foreach($arrProject as $arrDetProject){
$objProject = new Project;
@@ -34,8 +45,6 @@
}
$this->_arrData['arrProjectToDisplay'] = $arrProjectToDisplay;
-
-
$this->_display("home");
}
@@ -43,8 +52,8 @@
/**
* Fonction d'affichage de la barre de recherche
*/
-
public function search(){
+
//Récupérer les informations du formulaire
$strKeywords = $_POST['keywords']??'';
$intAuthor = $_POST['author']??0;
@@ -87,8 +96,6 @@
/**
* Fonction d'affichage de la page projet
*/
-
-
public function project (){
$objProjectModel = new ProjectModel;
@@ -112,33 +119,33 @@
$_SESSION['title'] = $_POST['titleProject']??"";
$_SESSION['description'] = $_POST['descProject']??"";
$_SESSION['content'] = $_POST['textProject']??"";
- $_SESSION['thumbnail'] = $_FILES['imageProject']['name']??"";
+ $_SESSION['thumbnail'] = $_FILES['imageThumbnail']['name']??"";
$_SESSION['status'] = 'en_attente';
$objProject = new Project();
/**
- /* Créer par Besnik le GOAT et l'autre GOAT de Guillaume
- /*
- /* @return bool pour savoir si le fichier existe,
- /* puis déplace vers le fichier uploads avec les images projet des utilisateurs
- /* Communication avec la BDD
+ * Créer par Besnik le GOAT et l'autre GOAT de Guillaume
+ *
+ * @return bool pour savoir si le fichier existe,
+ * puis déplace vers le fichier uploads avec les images projet des utilisateurs
+ * Communication avec la BDD
*/
if (($_SESSION['thumbnail'] != null)){
$strDest = "";
if ((count($_FILES) > 0) && ($_FILES['imageProject']['error'] != 4)){
- $strDest = '../public/uploads/projects/'.$_FILES['imageProject']['name'];
+ $strDest = 'uploads/projects/'.$_FILES['imageProject']['name'];
var_dump($strDest);
move_uploaded_file($_FILES['imageProject']['tmp_name'], $strDest);
}
}
/** En cas d'appuis sur le bouton d'envoie ou celui de remettre a plus tard
- /* 1. Changement de status
- /* 2. Hydratation avec les informations récupéré de l'utilisateur
- /* 3. Envoie des données à la BDD
- */
+ * 1. Changement de status
+ * 2. Hydratation avec les informations récupéré de l'utilisateur
+ * 3. Envoie des données à la BDD
+ */
if (isset($_POST['sendMessage'])) {
$_SESSION['status'] = 'publié';
$objProject->hydrate($_SESSION);
@@ -151,14 +158,12 @@
$objProjectModel->insert($objProject);
}
- //Débuggage
var_dump($_SESSION);
var_dump($objProject);
$this->_arrData['arrProjectToDiplay'] = $arrProjectToDiplay;
$this->_arrData['arrImageToDiplay'] = $arrImageToDiplay;
$this->_display("project");
-
}
diff --git a/controllers/user_controller.php b/controllers/user_controller.php
index b6938e1..f231dd3 100644
--- a/controllers/user_controller.php
+++ b/controllers/user_controller.php
@@ -41,12 +41,8 @@ class UserCtrl extends MotherCtrl {
}
}
$this->_arrData['arrError'] = $arrError;
-
-
-
$this->_display("login");
-
}
diff --git a/entities/authorisation_entity.php b/entities/authorisation_entity.php
new file mode 100644
index 0000000..1cb600b
--- /dev/null
+++ b/entities/authorisation_entity.php
@@ -0,0 +1,24 @@
+_prefix = 'authorisation_';
+ }
+
+ public function getId():int{
+ return $this->_id;
+ }
+ public function setId(int $id){
+ $this->_id = $id;
+ }
+
+ public function getName():string{
+ return $this->_name;
+ }
+
+ }
\ No newline at end of file
diff --git a/entities/project_entity.php b/entities/project_entity.php
index ab9047e..0a389bf 100644
--- a/entities/project_entity.php
+++ b/entities/project_entity.php
@@ -200,6 +200,7 @@ class Project extends Entity{
public function setCreatorName($creatorname){
$this->_creatorname = $creatorname;
}
+
/**
* Récupération du chemin photo profil
* @return string nom du chemin photo profil
diff --git a/entities/user_entity.php b/entities/user_entity.php
index 0d4a9e8..7d320b9 100644
--- a/entities/user_entity.php
+++ b/entities/user_entity.php
@@ -111,6 +111,7 @@
public function getAccountCreation():string{
return $this->_account_creation;
}
+
public function setAccountCreation(string $account_creation){
$this->_account_creation = $account_creation;
}
diff --git a/models/authorisation_model.php b/models/authorisation_model.php
new file mode 100644
index 0000000..010660b
--- /dev/null
+++ b/models/authorisation_model.php
@@ -0,0 +1,28 @@
+_db->query($strRq)->fetchAll();
+ }
+
+ }
\ No newline at end of file
diff --git a/models/category_model.php b/models/category_model.php
index 6432a9a..6c48379 100644
--- a/models/category_model.php
+++ b/models/category_model.php
@@ -10,6 +10,7 @@
/**
* Fonction de récupération des catégories
+ * @param int $intLimit
* @return array
*/
@@ -27,21 +28,56 @@
/**
* fonction d'insertion d'une nouvelle catégorie dans la bdd
- * @param object $objUser L'objet utilisateur
- * @return bool Est-ce que la requête s'est bien passée (true/false)
+ * @param object $objCategory l'objet catégorie
+ * @return bool Est-ce que la requête s'est bien passée
*/
+ public function insertCategory(object $objCategory):bool{
- public function insert(object $objCategory):bool{
-
- $strRq = "INSERT INTO category (category_name, category_parent)
- VALUES (:name, :parent)";
+ $strRq = "INSERT INTO category (category_name)
+ VALUES (:name)";
$rqPrep = $this->_db->prepare($strRq);
$rqPrep->bindValue(":name", $objCategory->getName(), PDO::PARAM_STR);
- $rqPrep->bindValue(":parent", $objCategory->getParent(), PDO::PARAM_STR);
return $rqPrep->execute();
}
- }
\ No newline at end of file
+
+ /**
+ * fonction de suppression d'une catégorie dans la bdd
+ * @param object $objCategory l'objet catégorie
+ * @return bool Est-ce que la requête s'est bien passée
+ */
+ public function deleteCategory(object $objCategory):bool{
+
+ $strRq = "DELETE FROM category
+ WHERE category_id= :id";
+
+ $rqPrep = $this->_db->prepare($strRq);
+
+ $rqPrep->bindValue(":id", $objCategory->getId(), PDO::PARAM_INT);
+
+ return $rqPrep->execute();
+ }
+
+ /**
+ * fonction de modification d'une catégorie dans la bdd
+ * @param object $objCategory l'objet catégorie
+ * @return bool Est-ce que la requête s'est bien passée
+ */
+ public function editCategory(object $objCategory):bool{
+
+ $strRq = "UPDATE category
+ SET category_name = :name
+ WHERE category_id = :id";
+
+ $rqPrep = $this->_db->prepare($strRq);
+
+ $rqPrep->bindValue(":id", $objCategory->getId(), PDO::PARAM_INT);
+ $rqPrep->bindValue(":name", $objCategory->getName(), PDO::PARAM_STR);
+
+ return $rqPrep->execute();
+ }
+ }
+
\ No newline at end of file
diff --git a/models/image_model.php b/models/image_model.php
index 2511f06..39e8158 100644
--- a/models/image_model.php
+++ b/models/image_model.php
@@ -11,6 +11,7 @@
/**
* Fonction de récupération des images
+ * @param int $intLimit
* @return array
*/
diff --git a/models/mother_model.php b/models/mother_model.php
index f70ed7a..9bc3881 100644
--- a/models/mother_model.php
+++ b/models/mother_model.php
@@ -7,9 +7,9 @@
try{
// Connexion à la base de données
$this->_db = new PDO(
- "mysql:host=boulayoune.com;dbname=projet_folliow", // Serveur et BDD
- "projet_user", //Nom d'utilisateur de la base de données
- "F0lliowRules!",// Mot de passe de la base de données
+ "mysql:host=localhost;dbname=projet_folliow", // Serveur et BDD mysql:host=boulayoune.com;dbname=projet_folliow
+ "root", //Nom d'utilisateur de la base de données projet_user
+ "",// Mot de passe de la base de données F0lliowRules!
array(PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC) // Mode de renvoi
);
// Pour résoudre les problèmes d’encodage
diff --git a/models/project_model.php b/models/project_model.php
index 95168d1..058788a 100644
--- a/models/project_model.php
+++ b/models/project_model.php
@@ -8,12 +8,17 @@
*/
class ProjectModel extends Connect{
-
+
+
+ /**
+ * Fonction de recherche des projets
+ * @param type string, int et bool
+ * @return array
+ */
public function findAll(int $intLimit=0, string $strKeywords='', int $intAuthor=0,
int $intPeriod=0, string $strDate='', string $strStartDate='',
- string $strEndDate='', int $intCategory=0):array{
+ string $strEndDate='', int $intCategory=0, bool $bool6Months=false):array{
- // Ecrire la requête
$strRq = "SELECT project.*,
CONCAT(user_firstname, ' ', user_name) AS 'project_creatorname',
user_image
@@ -21,6 +26,7 @@
INNER JOIN users ON user_id = project_user";
$strWhere = " WHERE ";
+
// Recherche par mot clé
if ($strKeywords != '') {
$strRq .= " WHERE (project_title LIKE '%".$strKeywords."%'
@@ -41,23 +47,25 @@
$strRq .= $strWhere." project_category = ".$intCategory;
$strWhere = " AND ";
}
+
+ //recherche par ancienneté
+ if ($bool6Months === true) {
+ $strRq .= $strWhere . " project_creation_date <= DATE_SUB(NOW(), INTERVAL 6 MONTH) ";
+ $strWhere = " AND ";
+ }
// Recherche par dates
if ($intPeriod == 0){
- // Par date exacte
if ($strDate != ''){
$strRq .= $strWhere." project_creation_date = '".$strDate."'";
}
}else{
- // Par période de dates
if ($strStartDate != '' && $strEndDate != ''){
$strRq .= $strWhere." project_creation_date BETWEEN '".$strStartDate."' AND '".$strEndDate."'";
}else{
if ($strStartDate != ''){
- // A partir de
$strRq .= $strWhere." project_creation_date >= '".$strStartDate."'";
}else if ($strEndDate != ''){
- // Avant le
$strRq .= $strWhere." project_creation_date <= '".$strEndDate."'";
}
}
@@ -65,37 +73,39 @@
$strRq .= " ORDER BY project_creation_date DESC";
-
if ($intLimit > 0){
$strRq .= " LIMIT ".$intLimit;
}
- // Lancer la requête et récupérer les résultats
return $this->_db->query($strRq)->fetchAll();
}
- //Fonction d'insertion d'information dans la BDD (Repris de la partie BLOG vu en cours..)
+ /**
+ * Fonction d'insertion d'un nouveau projet dans la bdd
+ * @param object $objProject l'objet projet
+ * @return bool Est-ce que la requête s'est bien passée
+ */
public function insert(object $objProject):bool{
- //Construire la requête
$strRq = "INSERT INTO project (project_title, project_description, project_thumbnail, project_content, project_status, project_creation_date)
VALUES (:title, :description, :thumbnail, :content, :status, DATE(NOW()))";
- // Préparer la requête
$rqPrep = $this->_db->prepare($strRq);
- // Donne les informations
+
$rqPrep->bindValue(":title", $objProject->getTitle(), PDO::PARAM_STR);
$rqPrep->bindValue(":description", $objProject->getDescription(), PDO::PARAM_STR);
$rqPrep->bindValue(":thumbnail", $objProject->getThumbnail(), PDO::PARAM_STR);
$rqPrep->bindValue(":content", $objProject->getContent(), PDO::PARAM_STR);
$rqPrep->bindValue(":status", $objProject->getStatus(), PDO::PARAM_STR);
- //Executer la requête
- //var_dump($strRq);die;
- //return $db->exec($strRq);
return $rqPrep->execute();
}
+ /**
+ * Fonction de recherche d'un seul projet
+ * @param int $intId
+ * @return
+ */
public function findOne(int $intId) {
$strRq = "SELECT project.*,
CONCAT(users.user_firstname, ' ', users.user_name) AS 'project_creatorname',
diff --git a/models/user_model.php b/models/user_model.php
index 72f1ada..d20b743 100644
--- a/models/user_model.php
+++ b/models/user_model.php
@@ -5,66 +5,58 @@
/**
* Traitement des requêtes pour les utilisateurs
* @author : meilleurGroup
- * @version : V0.5
*/
+
class UserModel extends Connect{
- // Attributs
-
-
- // Méthodes
+
public function __construct(){
parent::__construct();
}
/**
+ * Fonction de recherche des utilisateurs et leur niveau d'autorisation
* @return array
*/
public function findAllUsers():array{
- // Ecrire la requête
$strRq = "SELECT user_id, user_firstname, user_name, user_image, user_status, authorisation_name
- FROM users INNER JOIN authorisation ON authorisation.authorisation_id = users.user_status";
- // Lancer la requête et récupérer les résultats
+ FROM users INNER JOIN authorisation ON authorisation.authorisation_id = users.user_status
+ WHERE user_deleted_at IS NULL";
return $this->_db->query($strRq)->fetchAll();
}
/**
+ * Fonction de vérification des utilisateurs
* @param string $strMail
* @param string $strPwd
* @return array|bool
*/
public function verifUser(string $strMail, string $strPwd):array|bool{
- // 2. Construire la requête
+
$strRq = "SELECT user_id, user_name, user_firstname, user_password, user_image, user_status, authorisation_name
FROM users INNER JOIN authorisation ON authorisation.authorisation_id = users.user_status
WHERE user_mail = '".$strMail."'";
- // Récupère mon utilisateur
- // Executer la requête et récupérer les résultats
+
$arrUser = $this->_db->query($strRq)->fetch();
- // Vérification du mot de passe haché
if (password_verify($strPwd, $arrUser['user_password'])){
- // Renvoi l'utilisateur
- unset($arrUser['user_password']); // on enlève le pwd
+ unset($arrUser['user_password']);
return $arrUser;
}else{
return false;
}
}
- //public function insert(string $strName, string $strFirstname, string $strMail, string $strPwd):int{
/**
* Fonction d'insertion d'un utilisateur en BDD
* @param object $objUser L'objet utilisateur
- * @return bool Est-ce que la requête s'est bien passée (true/false)
+ * @return bool Est-ce que la requête s'est bien passée
*/
public function insert(object $objUser):bool{
-
- // 2. Construire la requête
$strRq = "INSERT INTO users (user_name, user_firstname, user_pseudo, user_mail, user_password, user_phone, user_work, user_location, user_description)
VALUES (:name, :firstname, :pseudo,:mail, :pwd, :phone, :work, :location,:description)";
- // Préparer la requête
+
$rqPrep = $this->_db->prepare($strRq);
- // Donne les informations
+
$rqPrep->bindValue(":name", $objUser->getName(), PDO::PARAM_STR);
$rqPrep->bindValue(":firstname", $objUser->getFirstname(), PDO::PARAM_STR);
$rqPrep->bindValue(":pseudo", $objUser->getPseudo(), PDO::PARAM_STR);
@@ -75,19 +67,54 @@
$rqPrep->bindValue(':location', $objUser->getLocation() ?? "", PDO::PARAM_STR);
$rqPrep->bindValue(':description', $objUser->getDescription() ?? "", PDO::PARAM_STR);
-
-
- // 3. Executer la requête
- //var_dump($strRq);die;
- //return $db->exec($strRq);
return $rqPrep->execute();
}
- public function mailExists(string $mail): bool
- {
+
+ /**
+ * Fonction de vérification de mail
+ * @param string $mail
+ * @return bool Est-ce que la requête s'est bien passée
+ */
+ public function mailExists(string $mail): bool{
+
$rq = $this->_db->prepare("SELECT 1 FROM users WHERE user_mail = :mail LIMIT 1");
$rq->bindValue(":mail", $mail);
$rq->execute();
return (bool)$rq->fetchColumn();
}
+
+ /**
+ * Fonction de changement de status d'un utilisateur
+ * @param object $objUser L'objet utilisateur
+ * @return bool Est-ce que la requête s'est bien passée
+ */
+
+ public function editStatus(object $objUser):bool{
+
+ $strRq = "UPDATE users
+ SET user_status = :status
+ WHERE user_id = :id";
+
+ $rqPrep = $this->_db->prepare($strRq);
+ $rqPrep->bindValue(":id", $objUser->getId(), PDO::PARAM_INT);
+ $rqPrep->bindValue(":status", $objUser->getStatus(), PDO::PARAM_INT);
+ return $rqPrep->execute();
+ }
+
+ /**
+ * Fonction permettant de supprimer un utilisateur avec une date de suppression
+ * @param int $intId L'identifiant de l'utilisateur
+ * @return bool Est-ce que la requête s'est bien passée
+ */
+ public function delete_soft(int $intId):bool{
+
+ $strRq = "UPDATE users
+ SET user_deleted_at = NOW()
+ WHERE user_id = :id";
+
+ $rqPrep = $this->_db->prepare($strRq);
+ $rqPrep->bindValue(":id", $intId, PDO::PARAM_INT);
+ return $rqPrep->execute();
+ }
}
diff --git a/templates_c/20a11b6ecdc7e0959bdb519973f0177a783a4561_0.file_header.tpl.php b/templates_c/20a11b6ecdc7e0959bdb519973f0177a783a4561_0.file_header.tpl.php
index ab2a5b4..42ebec8 100644
--- a/templates_c/20a11b6ecdc7e0959bdb519973f0177a783a4561_0.file_header.tpl.php
+++ b/templates_c/20a11b6ecdc7e0959bdb519973f0177a783a4561_0.file_header.tpl.php
@@ -1,11 +1,11 @@
getCompiled()->isFresh($_smarty_tpl, array (
'version' => '5.7.0',
- 'unifunc' => 'content_6989f726978651_30802796',
+ 'unifunc' => 'content_698b49a6a94424_69678291',
'has_nocache_code' => false,
'file_dependency' =>
array (
@@ -20,7 +20,7 @@ if ($_smarty_tpl->getCompiled()->isFresh($_smarty_tpl, array (
array (
),
))) {
-function content_6989f726978651_30802796 (\Smarty\Template $_smarty_tpl) {
+function content_698b49a6a94424_69678291 (\Smarty\Template $_smarty_tpl) {
$_smarty_current_dir = 'C:\\wamp64\\www\\Folliow\\projet_php-guillaume\\views\\_partial';
?>
diff --git a/templates_c/3309f8a981537e6cbbf8869c67d6dd307aa06ae3_0.file_project.tpl.php b/templates_c/3309f8a981537e6cbbf8869c67d6dd307aa06ae3_0.file_project.tpl.php
new file mode 100644
index 0000000..ecebd4d
--- /dev/null
+++ b/templates_c/3309f8a981537e6cbbf8869c67d6dd307aa06ae3_0.file_project.tpl.php
@@ -0,0 +1,110 @@
+getCompiled()->isFresh($_smarty_tpl, array (
+ 'version' => '5.7.0',
+ 'unifunc' => 'content_698ae9a3ee5104_18468093',
+ 'has_nocache_code' => false,
+ 'file_dependency' =>
+ array (
+ '3309f8a981537e6cbbf8869c67d6dd307aa06ae3' =>
+ array (
+ 0 => 'views/project.tpl',
+ 1 => 1770634036,
+ 2 => 'file',
+ ),
+ ),
+ 'includes' =>
+ array (
+ 'file:../app/views/partials/preview.tpl' => 1,
+ ),
+))) {
+function content_698ae9a3ee5104_18468093 (\Smarty\Template $_smarty_tpl) {
+$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views';
+$_smarty_tpl->getInheritance()->init($_smarty_tpl, true);
+?>
+
+
+getInheritance()->instanceBlock($_smarty_tpl, 'Block_2126029828698ae9a3edc808_29541958', "content");
+$_smarty_tpl->getInheritance()->endChild($_smarty_tpl, "views/layout.tpl", $_smarty_current_dir);
+}
+/* {block "content"} */
+class Block_2126029828698ae9a3edc808_29541958 extends \Smarty\Runtime\Block
+{
+public function callBlock(\Smarty\Template $_smarty_tpl) {
+$_smarty_current_dir = 'C:\\wamp64\\www\\DWWM_2025\\projet2\\views';
+?>
+
+
+
+
+
Alimenter votre projet
+
+
+
+
+
+
+
+
+
Description
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
+ Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
+ Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.