diff --git a/controllers/project_controller.php b/controllers/project_controller.php
index af2e9fa..6f469f0 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;
@@ -151,9 +158,9 @@
$objProjectModel->insert($objProject);
}
- //Débuggage
+ /*Débuggage
var_dump($_SESSION);
- var_dump($objProject);
+ var_dump($objProject);*/
$this->_arrData['arrProjectToDiplay'] = $arrProjectToDiplay;
$this->_arrData['arrImageToDiplay'] = $arrImageToDiplay;
diff --git a/models/authorisation_model.php b/models/authorisation_model.php
index 84a3dd6..010660b 100644
--- a/models/authorisation_model.php
+++ b/models/authorisation_model.php
@@ -17,7 +17,6 @@
* fonction de récupération des infos d'authorisation
* @return array
*/
-
public function findAllAuthorisation():array{
$strRq = "SELECT *
diff --git a/models/category_model.php b/models/category_model.php
index a23907e..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
*/
@@ -28,9 +29,8 @@
/**
* fonction d'insertion d'une nouvelle 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 (true/false)
+ * @return bool Est-ce que la requête s'est bien passée
*/
-
public function insertCategory(object $objCategory):bool{
$strRq = "INSERT INTO category (category_name)
@@ -47,9 +47,8 @@
/**
* 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 (true/false)
+ * @return bool Est-ce que la requête s'est bien passée
*/
-
public function deleteCategory(object $objCategory):bool{
$strRq = "DELETE FROM category
@@ -65,9 +64,8 @@
/**
* 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 (true/false)
+ * @return bool Est-ce que la requête s'est bien passée
*/
-
public function editCategory(object $objCategory):bool{
$strRq = "UPDATE category
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/project_model.php b/models/project_model.php
index d88e02d..c0ffece 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 fd682e7..d20b743 100644
--- a/models/user_model.php
+++ b/models/user_model.php
@@ -5,46 +5,40 @@
/**
* 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
WHERE user_deleted_at IS NULL";
- // Lancer la requête et récupérer les résultats
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;
@@ -54,17 +48,15 @@
/**
* 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);
@@ -78,9 +70,13 @@
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();
@@ -91,7 +87,7 @@
/**
* 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 (true/false)
+ * @return bool Est-ce que la requête s'est bien passée
*/
public function editStatus(object $objUser):bool{
@@ -109,7 +105,7 @@
/**
* 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 (true/false)
+ * @return bool Est-ce que la requête s'est bien passée
*/
public function delete_soft(int $intId):bool{
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.