diff --git a/.env b/.env deleted file mode 100644 index 312e8f9..0000000 --- a/.env +++ /dev/null @@ -1,10 +0,0 @@ -# config BDD - -DB_CONNECTION=mysql -DB_HOSTNAME=boulayoune.com -DB_DATABASE=projet_folliow -DB_USERNAME= -DB_PASSWORD= - -IMG_PROJECT_PATH = uploads/projects/ -IMG_USER_PATH = uploads/profiles/ \ No newline at end of file diff --git a/.gitignore b/.gitignore index 183434a..1b4da35 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ /templates_c/ /templates_c/** .env +.htaccess \ No newline at end of file diff --git a/assests/css/style.css b/assests/css/style.css index 142ea7f..13d28fb 100644 --- a/assests/css/style.css +++ b/assests/css/style.css @@ -10,7 +10,12 @@ body { background-color: #ffffff; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); padding: 0.8rem 2rem; + min-height: 64px; + max-height: 64px; } +.navbar .navbar-collapse { + align-items: center; + } .navbar-brand { font-size: 1.5rem; @@ -29,7 +34,13 @@ body { margin: 0 0.2rem; transition: color 0.3s; } - +.nav-avatar { + width: 36px; + height: 36px; + object-fit: cover; + border-radius: 50%; + display: block; + } .navbar-nav .nav-link:hover { color: #0d6efd; } @@ -117,3 +128,51 @@ body { .txt_title { color: rgb(51, 152, 217); } + +/* On cible la card sans casser ses propriétés Bootstrap */ +.tiger-theme { + background-color: #ff8c00 !important; /* Orange tigre */ + background-image: repeating-linear-gradient( + 45deg, + transparent, + transparent 30px, + rgba(0, 0, 0, 0.15) 30px, + rgba(0, 0, 0, 0.15) 60px + ) !important; + border: 2px solid #000 !important; + color: #000 !important; + position: relative; + z-index: 1; +} + +/* Style du texte pour qu'il ressorte sur l'orange */ +.tiger-text { + font-weight: 800 !important; + text-transform: uppercase; + color: #000 !important; +} + +.tiger-date { + font-size: 0.8rem; + font-weight: bold; + color: rgba(0, 0, 0, 0.7); +} + +/* Bordure de l'image (n'affecte pas la taille de la card) */ +.tiger-border { + box-shadow: 0 0 0 4px #000; +} + +/* Bouton style tigre */ +.btn-tiger { + background-color: #000 !important; + color: #ff8c00 !important; + border: none !important; + font-weight: bold !important; + transition: transform 0.2s; +} + +.btn-tiger:hover { + transform: scale(1.05); + background-color: #222 !important; +} \ No newline at end of file diff --git a/controllers/AdminCtrl.php b/controllers/AdminCtrl.php index 88896dc..670082b 100644 --- a/controllers/AdminCtrl.php +++ b/controllers/AdminCtrl.php @@ -21,8 +21,8 @@ public function admin(){ if (!isset($_SESSION['user']) && ($_SESSION['user']['user_status'] != 1 )){ - header("Location:index.php?ctrl=error&action=error_403"); - exit; + $error = new \Controllers\ErrorCtrl(); + return $error->error_403(); } $objCategoryModel = new CategoryModel; @@ -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; } } diff --git a/controllers/ErrorCtrl.php b/controllers/ErrorCtrl.php index 2e69e9e..9a5e0ff 100644 --- a/controllers/ErrorCtrl.php +++ b/controllers/ErrorCtrl.php @@ -11,14 +11,18 @@ * Page erreur 404 */ public function error_404(){ + http_response_code(404); $this->_display("error_404"); + exit; } /** * Page erreur 403 */ public function error_403(){ + http_response_code(403); $this->_display("error_403"); + exit; } } \ No newline at end of file diff --git a/controllers/MotherCtrl.php b/controllers/MotherCtrl.php index bea90b2..49ccbdf 100644 --- a/controllers/MotherCtrl.php +++ b/controllers/MotherCtrl.php @@ -23,6 +23,7 @@ $objSmarty = new Smarty(); $objSmarty->registerPlugin('modifier', 'vardump', 'var_dump'); $objSmarty->registerPlugin('modifier', 'file_exists', 'file_exists'); + $objSmarty->registerPlugin('modifier', 'stripos', 'stripos'); $objSmarty->caching = false; $objSmarty->force_compile = true; diff --git a/controllers/ProjectCtrl.php b/controllers/ProjectCtrl.php index 6cb408c..fc85dd1 100644 --- a/controllers/ProjectCtrl.php +++ b/controllers/ProjectCtrl.php @@ -79,7 +79,7 @@ */ public function search(){ - $strKeywords = $_POST['keywords']??''; + $strKeywords = $_POST['keywords']??""; $intAuthor = $_POST['author']??0; $intPeriod = $_POST['period']??0; $strDate = $_POST['date']??''; @@ -124,8 +124,8 @@ */ public function addedit_project() { if (!isset($_SESSION['user'])){ - header("Location:index.php?ctrl=error&action=error_403"); - exit; + $error = new \Controllers\ErrorCtrl(); + return $error->error_403(); } $objProject = new Project; @@ -135,8 +135,8 @@ if (isset($_GET['id'])){ $arrProject = $objProjectModel->findOne($_GET['id']); if($_SESSION['user']['user_id'] != $arrProject['project_user_id']){ - header("Location:index.php?ctrl=error&action=error_403"); - exit; + $error = new \Controllers\ErrorCtrl(); + return $error->error_403(); } $objProject->hydrate($arrProject); $this->_arrData['arrImages'] = $objProjectModel->getImagesByProjectId($objProject->getId()); @@ -200,7 +200,7 @@ $strSource = $_FILES['thumbnail']['tmp_name']; list($intWidth, $intHeight) = getimagesize($strSource); - $intDestWidth = 200; $intDestHeight = 250; + $intDestWidth = 1280; $intDestHeight = 720; $fltDestRatio = $intDestWidth / $intDestHeight; $fltSourceRatio = $intWidth / $intHeight; @@ -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"; @@ -360,9 +360,9 @@ $objProjectModel = new ProjectModel(); $arrProject = $objProjectModel->findOne((int)$intId); - $arrImages = $objProjectModel->getImagesByProjectId((int)$intId); if ($arrProject) { + $arrImages = $objProjectModel->getImagesByProjectId((int)$intId); $objProject = new Project(); $objProject->hydrate($arrProject); @@ -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,8 +429,8 @@ $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(); $this->_arrData['projectUrl'] = $url; @@ -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; } diff --git a/controllers/UserCtrl.php b/controllers/UserCtrl.php index c1f288a..7ecb8a9 100644 --- a/controllers/UserCtrl.php +++ b/controllers/UserCtrl.php @@ -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; @@ -243,6 +243,7 @@ class UserCtrl extends MotherCtrl { } } } + if (count($arrError) == 0 && isset($strImageName)) { $strDest = $_ENV['IMG_USER_PATH'] . $strImageName; @@ -279,17 +280,25 @@ class UserCtrl extends MotherCtrl { } + if ($_POST['delete_image'] === '1') { + $strOldImg = $objUser->getImage(); + if (!empty($strOldImg) && $strOldImg !== 'images.jpg') { + $strOldFile = $_ENV['IMG_USER_PATH'] . $strOldImg; + if (file_exists($strOldFile)) unlink($strOldFile); + } + $objUser->setImage('images.jpg'); + } $boolInsert = $objUserModel->update($objUser); if ($boolInsert === true) { - if (isset($strOldImg) && !empty($strOldImg) && isset($strImageName)) { - $strOldFile = $_ENV['IMG_USER_PATH'] . $strOldImg; - if (file_exists($strOldFile)) unlink($strOldFile); + if (isset($strOldImg) && !empty($strOldImg) && $strOldImg !== 'images.jpg' && isset($strImageName)) { + $strOldFile = $_ENV['IMG_USER_PATH'] . $strOldImg; + if (file_exists($strOldFile)) unlink($strOldFile); } $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"; diff --git a/entities/Project.php b/entities/Project.php index 5071b57..ca5c941 100644 --- a/entities/Project.php +++ b/entities/Project.php @@ -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; } } \ No newline at end of file diff --git a/entities/User.php b/entities/User.php index 1eee5be..f156205 100644 --- a/entities/User.php +++ b/entities/User.php @@ -90,7 +90,7 @@ * @return string le nouveau pseudo de l'utilisateur */ public function setPseudo(string $pseudo){ - $this->_pseudo = $pseudo; + $this->_pseudo = str_replace(" ","_",$pseudo); } /** diff --git a/env b/env index 1ba2754..611d244 100644 --- a/env +++ b/env @@ -1,7 +1,7 @@ # config BDD DB_CONNECTION=mysql -DB_HOSTNAME=boulayoune.com +DB_HOSTNAME=localhost DB_DATABASE=projet_folliow DB_USERNAME= DB_PASSWORD= diff --git a/html/annotated.html b/html/annotated.html index d1626e1..bcd2e96 100644 --- a/html/annotated.html +++ b/html/annotated.html @@ -28,6 +28,7 @@
Folliow
+
Un projet de site web réaliser en PHP
diff --git a/html/class_controllers_1_1_admin_ctrl.html b/html/class_controllers_1_1_admin_ctrl.html index bb970ae..073a5da 100644 --- a/html/class_controllers_1_1_admin_ctrl.html +++ b/html/class_controllers_1_1_admin_ctrl.html @@ -28,6 +28,7 @@
Folliow
+
Un projet de site web réaliser en PHP
@@ -135,7 +136,7 @@ array $_arrData = array()
The documentation for this class was generated from the following file: diff --git a/html/class_controllers_1_1_error_ctrl.html b/html/class_controllers_1_1_error_ctrl.html index 3c0faae..7d20ce0 100644 --- a/html/class_controllers_1_1_error_ctrl.html +++ b/html/class_controllers_1_1_error_ctrl.html @@ -28,6 +28,7 @@
Folliow
+
Un projet de site web réaliser en PHP
@@ -154,7 +155,7 @@ array $_arrData = array()
The documentation for this class was generated from the following file: diff --git a/html/class_controllers_1_1_mother_ctrl.html b/html/class_controllers_1_1_mother_ctrl.html index 1e358db..263c2ee 100644 --- a/html/class_controllers_1_1_mother_ctrl.html +++ b/html/class_controllers_1_1_mother_ctrl.html @@ -28,6 +28,7 @@
Folliow
+
Un projet de site web réaliser en PHP
@@ -155,7 +156,7 @@ array $_arrData = array()
The documentation for this class was generated from the following file: diff --git a/html/class_controllers_1_1_page_ctrl.html b/html/class_controllers_1_1_page_ctrl.html index 53078db..3105772 100644 --- a/html/class_controllers_1_1_page_ctrl.html +++ b/html/class_controllers_1_1_page_ctrl.html @@ -28,6 +28,7 @@
Folliow
+
Un projet de site web réaliser en PHP
@@ -173,7 +174,7 @@ array $_arrData = array()
The documentation for this class was generated from the following file: diff --git a/html/class_controllers_1_1_project_ctrl.html b/html/class_controllers_1_1_project_ctrl.html index 2f7fae8..c056977 100644 --- a/html/class_controllers_1_1_project_ctrl.html +++ b/html/class_controllers_1_1_project_ctrl.html @@ -28,6 +28,7 @@
Folliow
+
Un projet de site web réaliser en PHP
@@ -306,7 +307,7 @@ array $_arrData = array()
The documentation for this class was generated from the following file: diff --git a/html/class_controllers_1_1_user_ctrl.html b/html/class_controllers_1_1_user_ctrl.html index 5dd436b..705ea24 100644 --- a/html/class_controllers_1_1_user_ctrl.html +++ b/html/class_controllers_1_1_user_ctrl.html @@ -28,6 +28,7 @@
Folliow
+
Un projet de site web réaliser en PHP
@@ -211,7 +212,7 @@ array $_arrData = array()
The documentation for this class was generated from the following file: diff --git a/html/class_entities_1_1_authorisation.html b/html/class_entities_1_1_authorisation.html index c13f812..5113dfd 100644 --- a/html/class_entities_1_1_authorisation.html +++ b/html/class_entities_1_1_authorisation.html @@ -28,6 +28,7 @@
Folliow
+
Un projet de site web réaliser en PHP
@@ -221,7 +222,7 @@ string $_prefix = ''
The documentation for this class was generated from the following file: diff --git a/html/class_entities_1_1_category.html b/html/class_entities_1_1_category.html index dad0cc4..4dea3ca 100644 --- a/html/class_entities_1_1_category.html +++ b/html/class_entities_1_1_category.html @@ -28,6 +28,7 @@
Folliow
+
Un projet de site web réaliser en PHP
@@ -276,7 +277,7 @@ Additional Inherited Members
The documentation for this class was generated from the following file: diff --git a/html/class_entities_1_1_image.html b/html/class_entities_1_1_image.html index 012ba50..0814489 100644 --- a/html/class_entities_1_1_image.html +++ b/html/class_entities_1_1_image.html @@ -28,6 +28,7 @@
Folliow
+
Un projet de site web réaliser en PHP
@@ -312,7 +313,7 @@ string $_prefix = ''
The documentation for this class was generated from the following file: diff --git a/html/class_entities_1_1_mother.html b/html/class_entities_1_1_mother.html index cb099d7..91a1fd5 100644 --- a/html/class_entities_1_1_mother.html +++ b/html/class_entities_1_1_mother.html @@ -28,6 +28,7 @@
Folliow
+
Un projet de site web réaliser en PHP
@@ -123,7 +124,7 @@ string $_prefix = ''

Detailed Description

Classe d'un Mere de tout objet

Author
Yass & Laura

The documentation for this class was generated from the following file: diff --git a/html/class_entities_1_1_project.html b/html/class_entities_1_1_project.html index 42491a4..aef01ff 100644 --- a/html/class_entities_1_1_project.html +++ b/html/class_entities_1_1_project.html @@ -28,6 +28,7 @@
Folliow
+
Un projet de site web réaliser en PHP
@@ -662,7 +663,7 @@ string $_prefix = ''
The documentation for this class was generated from the following file: diff --git a/html/class_entities_1_1_user.html b/html/class_entities_1_1_user.html index e97f2f8..03c57eb 100644 --- a/html/class_entities_1_1_user.html +++ b/html/class_entities_1_1_user.html @@ -28,6 +28,7 @@
Folliow
+
Un projet de site web réaliser en PHP
@@ -696,7 +697,7 @@ string $_prefix = ''
The documentation for this class was generated from the following file: diff --git a/html/class_models_1_1_authorisation_model.html b/html/class_models_1_1_authorisation_model.html index 7b9ad6b..4ff6438 100644 --- a/html/class_models_1_1_authorisation_model.html +++ b/html/class_models_1_1_authorisation_model.html @@ -28,6 +28,7 @@
Folliow
+
Un projet de site web réaliser en PHP
@@ -153,7 +154,7 @@ Additional Inherited Members
The documentation for this class was generated from the following file: diff --git a/html/class_models_1_1_category_model.html b/html/class_models_1_1_category_model.html index 58d82e8..5d486dd 100644 --- a/html/class_models_1_1_category_model.html +++ b/html/class_models_1_1_category_model.html @@ -28,6 +28,7 @@
Folliow
+
Un projet de site web réaliser en PHP
@@ -214,7 +215,7 @@ Additional Inherited Members
The documentation for this class was generated from the following file: diff --git a/html/class_models_1_1_image_model.html b/html/class_models_1_1_image_model.html index 914f86b..5da3c94 100644 --- a/html/class_models_1_1_image_model.html +++ b/html/class_models_1_1_image_model.html @@ -28,6 +28,7 @@
Folliow
+
Un projet de site web réaliser en PHP
@@ -139,7 +140,7 @@ Additional Inherited Members
The documentation for this class was generated from the following file: diff --git a/html/class_models_1_1_mother_model.html b/html/class_models_1_1_mother_model.html index 1c8ee86..1ee0d37 100644 --- a/html/class_models_1_1_mother_model.html +++ b/html/class_models_1_1_mother_model.html @@ -28,6 +28,7 @@
Folliow
+
Un projet de site web réaliser en PHP
@@ -111,7 +112,7 @@ Protected Attributes  $_db
The documentation for this class was generated from the following file: diff --git a/html/class_models_1_1_project_model.html b/html/class_models_1_1_project_model.html index 7ab2a7e..efaf2a4 100644 --- a/html/class_models_1_1_project_model.html +++ b/html/class_models_1_1_project_model.html @@ -28,6 +28,7 @@
Folliow
+
Un projet de site web réaliser en PHP
@@ -339,7 +340,7 @@ Additional Inherited Members -
Returns
array
+
Returns
array|bool
@@ -468,7 +469,7 @@ Additional Inherited Members
The documentation for this class was generated from the following file: diff --git a/html/class_models_1_1_user_model.html b/html/class_models_1_1_user_model.html index 301a45d..5b6f02c 100644 --- a/html/class_models_1_1_user_model.html +++ b/html/class_models_1_1_user_model.html @@ -28,6 +28,7 @@
Folliow
+
Un projet de site web réaliser en PHP
@@ -376,7 +377,7 @@ Additional Inherited Members -
Returns
array Tableau associatif (ou false si pas trouvé)
+
Returns
bool Le pseudo existe ou pas
@@ -464,7 +465,7 @@ Additional Inherited Members
The documentation for this class was generated from the following file: diff --git a/html/classes.html b/html/classes.html index 445742a..0f8ca6d 100644 --- a/html/classes.html +++ b/html/classes.html @@ -28,6 +28,7 @@
Folliow
+
Un projet de site web réaliser en PHP
diff --git a/html/dir_1ae4179d5e953611aae20c997279e02c.html b/html/dir_1c617d677ef58765205e8a044aafa06e.html similarity index 91% rename from html/dir_1ae4179d5e953611aae20c997279e02c.html rename to html/dir_1c617d677ef58765205e8a044aafa06e.html index 6327316..0431c3a 100644 --- a/html/dir_1ae4179d5e953611aae20c997279e02c.html +++ b/html/dir_1c617d677ef58765205e8a044aafa06e.html @@ -5,7 +5,7 @@ -Folliow: models Directory Reference +Folliow: C:/Users/Guill/projet_php/models Directory Reference @@ -28,6 +28,7 @@
Folliow
+
Un projet de site web réaliser en PHP
@@ -62,7 +63,7 @@ $(function() {
@@ -104,7 +105,7 @@ $(function(){initNavTree('dir_1ae4179d5e953611aae20c997279e02c.html','',''); }); diff --git a/html/dir_87b6ed4386158a4d6cd0ecd5fb5bd5c2.html b/html/dir_2756e6070b02be5d362619ded783829c.html similarity index 90% rename from html/dir_87b6ed4386158a4d6cd0ecd5fb5bd5c2.html rename to html/dir_2756e6070b02be5d362619ded783829c.html index c19d9c6..4ec760a 100644 --- a/html/dir_87b6ed4386158a4d6cd0ecd5fb5bd5c2.html +++ b/html/dir_2756e6070b02be5d362619ded783829c.html @@ -5,7 +5,7 @@ -Folliow: controllers Directory Reference +Folliow: C:/Users/Guill/projet_php/controllers Directory Reference @@ -28,6 +28,7 @@
Folliow
+
Un projet de site web réaliser en PHP
@@ -62,7 +63,7 @@ $(function() {
@@ -94,7 +95,7 @@ $(function(){initNavTree('dir_87b6ed4386158a4d6cd0ecd5fb5bd5c2.html','',''); }); - +

Directories

 
templates_c
 
templates_c
@@ -109,7 +110,7 @@ Directories diff --git a/html/dir_2c23dcab3ba0e8633898b60485787967.html b/html/dir_2c23dcab3ba0e8633898b60485787967.html new file mode 100644 index 0000000..49553a7 --- /dev/null +++ b/html/dir_2c23dcab3ba0e8633898b60485787967.html @@ -0,0 +1,201 @@ + + + + + + + +Folliow: C:/Users/Guill/projet_php Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Folliow +
+
Un projet de site web réaliser en PHP
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
projet_php Directory Reference
+
+
+ + + + + +

+Directories

 
controllers
 
entities
 
models
+

Detailed Description

+

+Folliow – Projet PHP

+

A platform for sharing portfolios and projects, designed as a mix between Behance and LinkedIn. Folliow focuses on highlighting real projects while making it easy to connect with other users.

+

This project was developed as part of the DWWM (Développeur Web et Web Mobile) training.

+
+

+Features

+
    +
  • User authentication and profile management
  • +
  • Portfolio and project creation
  • +
  • Project showcase with descriptions and technologies
  • +
  • User connections / follow system
  • +
  • Project feed and discovery
  • +
  • Profile and project search
  • +
+
+

+Tech Stack

+

Client: HTML, CSS, JavaScript
+ Server: PHP (MVC architecture)
+ Database: MySQL
+ Web Server: Apache

+
+

+Project Structure

+
folliow/
+
├── app/
+
│ ├── controllers/
+
│ ├── models/
+
│ └── views/
+
├── public/
+
│ ├── assets/
+
│ └── index.php
+
├── config/
+
│ └── database.php
+
├── sql/
+
│ └── folliow.sql
+
└── README.md
+

+

+Installation

+

Clone the project

+
git clone https://github.com/Yasder5/projet_php.git
+

Go to the project directory

+
cd projet_php
+

Import the database

+
    +
  • Use the SQL file located in the sql/ directory
  • +
+

Configure database access

+
    +
  • Update credentials in config/database.php
  • +
+

Run the project

+
    +
  • Use a local server (XAMPP, WAMP, or Apache on Linux)
  • +
+
+

+Learning Objectives

+
    +
  • Build a complete PHP web application
  • +
  • Apply MVC architecture
  • +
  • Manage a relational database
  • +
  • Design a user-oriented portfolio platform
  • +
+
+

+Future Improvements

+
    +
  • Private messaging
  • +
  • Likes and comments on projects
  • +
  • Tags and categories
  • +
  • Improved responsive design
  • +
  • Advanced authentication and roles
  • +
+
+

+License

+

This project is for educational purposes.

+
+
+ +
+ + + + diff --git a/html/dir_3a74e34fc6fa82edd10e4beee4ded801.html b/html/dir_3a74e34fc6fa82edd10e4beee4ded801.html new file mode 100644 index 0000000..382c5f0 --- /dev/null +++ b/html/dir_3a74e34fc6fa82edd10e4beee4ded801.html @@ -0,0 +1,201 @@ + + + + + + + +Folliow: C:/Users/Guill/projet_php Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Folliow +
+
Un projet de site web réaliser en PHP
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
projet_php Directory Reference
+
+
+ + + + + +

+Directories

 
controllers
 
entities
 
models
+

Detailed Description

+

+Folliow – Projet PHP

+

A platform for sharing portfolios and projects, designed as a mix between Behance and LinkedIn. Folliow focuses on highlighting real projects while making it easy to connect with other users.

+

This project was developed as part of the DWWM (Développeur Web et Web Mobile) training.

+
+

+Features

+
    +
  • User authentication and profile management
  • +
  • Portfolio and project creation
  • +
  • Project showcase with descriptions and technologies
  • +
  • User connections / follow system
  • +
  • Project feed and discovery
  • +
  • Profile and project search
  • +
+
+

+Tech Stack

+

Client: HTML, CSS, JavaScript
+ Server: PHP (MVC architecture)
+ Database: MySQL
+ Web Server: Apache

+
+

+Project Structure

+
folliow/
+
├── app/
+
│ ├── controllers/
+
│ ├── models/
+
│ └── views/
+
├── public/
+
│ ├── assets/
+
│ └── index.php
+
├── config/
+
│ └── database.php
+
├── sql/
+
│ └── folliow.sql
+
└── README.md
+

+

+Installation

+

Clone the project

+
git clone https://github.com/Yasder5/projet_php.git
+

Go to the project directory

+
cd projet_php
+

Import the database

+
    +
  • Use the SQL file located in the sql/ directory
  • +
+

Configure database access

+
    +
  • Update credentials in config/database.php
  • +
+

Run the project

+
    +
  • Use a local server (XAMPP, WAMP, or Apache on Linux)
  • +
+
+

+Learning Objectives

+
    +
  • Build a complete PHP web application
  • +
  • Apply MVC architecture
  • +
  • Manage a relational database
  • +
  • Design a user-oriented portfolio platform
  • +
+
+

+Future Improvements

+
    +
  • Private messaging
  • +
  • Likes and comments on projects
  • +
  • Tags and categories
  • +
  • Improved responsive design
  • +
  • Advanced authentication and roles
  • +
+
+

+License

+

This project is for educational purposes.

+
+
+ +
+ + + + diff --git a/html/dir_5498806e52ccd7d2d905ac8baf67301b.html b/html/dir_5498806e52ccd7d2d905ac8baf67301b.html new file mode 100644 index 0000000..3d5d1c1 --- /dev/null +++ b/html/dir_5498806e52ccd7d2d905ac8baf67301b.html @@ -0,0 +1,113 @@ + + + + + + + +Folliow: C:/Users/Guill/projet_php/controllers/templates_c Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Folliow +
+
Un projet de site web réaliser en PHP
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
templates_c Directory Reference
+
+
+
+
+ +
+ + + + diff --git a/html/dir_6a59aaef8e4f4bee39467ed807742262.html b/html/dir_6a59aaef8e4f4bee39467ed807742262.html new file mode 100644 index 0000000..c7d7fad --- /dev/null +++ b/html/dir_6a59aaef8e4f4bee39467ed807742262.html @@ -0,0 +1,113 @@ + + + + + + + +Folliow: C:/Users/Guill/projet_php/entities Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Folliow +
+
Un projet de site web réaliser en PHP
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
entities Directory Reference
+
+
+
+
+ +
+ + + + diff --git a/html/dir_78f8c0daf938bfa31437d013d3fc896d.html b/html/dir_91977dd5ba3542af9d4aecff9e888690.html similarity index 89% rename from html/dir_78f8c0daf938bfa31437d013d3fc896d.html rename to html/dir_91977dd5ba3542af9d4aecff9e888690.html index e226041..ce5c2e0 100644 --- a/html/dir_78f8c0daf938bfa31437d013d3fc896d.html +++ b/html/dir_91977dd5ba3542af9d4aecff9e888690.html @@ -5,7 +5,7 @@ -Folliow: controllers/templates_c Directory Reference +Folliow: C:/Users/Guill/projet_php/entities Directory Reference @@ -28,6 +28,7 @@
Folliow
+
Un projet de site web réaliser en PHP
@@ -62,7 +63,7 @@ $(function() {
@@ -88,7 +89,7 @@ $(function(){initNavTree('dir_78f8c0daf938bfa31437d013d3fc896d.html','',''); });
-
templates_c Directory Reference
+
entities Directory Reference
@@ -104,7 +105,7 @@ $(function(){initNavTree('dir_78f8c0daf938bfa31437d013d3fc896d.html','',''); }); diff --git a/html/dir_2262efd7ced881ba2289deea4945d6ba.html b/html/dir_a64c5c967bbc6a18c5d8eb713e8e97ff.html similarity index 90% rename from html/dir_2262efd7ced881ba2289deea4945d6ba.html rename to html/dir_a64c5c967bbc6a18c5d8eb713e8e97ff.html index 8b86fe3..9fe4f9e 100644 --- a/html/dir_2262efd7ced881ba2289deea4945d6ba.html +++ b/html/dir_a64c5c967bbc6a18c5d8eb713e8e97ff.html @@ -5,7 +5,7 @@ -Folliow: templates_c Directory Reference +Folliow: C:/Users/Guill/projet_php/controllers/templates_c Directory Reference @@ -28,6 +28,7 @@
Folliow
+
Un projet de site web réaliser en PHP
@@ -62,7 +63,7 @@ $(function() {
@@ -104,7 +105,7 @@ $(function(){initNavTree('dir_2262efd7ced881ba2289deea4945d6ba.html','',''); }); diff --git a/html/dir_bfcb6842af0098861ea59b43701e0022.html b/html/dir_bfcb6842af0098861ea59b43701e0022.html new file mode 100644 index 0000000..523aea6 --- /dev/null +++ b/html/dir_bfcb6842af0098861ea59b43701e0022.html @@ -0,0 +1,118 @@ + + + + + + + +Folliow: C:/Users/Guill/projet_php/controllers Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Folliow +
+
Un projet de site web réaliser en PHP
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
controllers Directory Reference
+
+
+ + + +

+Directories

 
templates_c
+
+
+ +
+ + + + diff --git a/html/dir_9404ca00d5cf333c309ae0ebf80749c4.html b/html/dir_d522931ffa1371640980b621734a4381.html similarity index 92% rename from html/dir_9404ca00d5cf333c309ae0ebf80749c4.html rename to html/dir_d522931ffa1371640980b621734a4381.html index 1296940..b86beaf 100644 --- a/html/dir_9404ca00d5cf333c309ae0ebf80749c4.html +++ b/html/dir_d522931ffa1371640980b621734a4381.html @@ -5,7 +5,7 @@ -Folliow: entities Directory Reference +Folliow: C:/Users Directory Reference @@ -28,6 +28,7 @@
Folliow
+
Un projet de site web réaliser en PHP
@@ -62,7 +63,7 @@ $(function() {
@@ -88,7 +89,7 @@ $(function(){initNavTree('dir_9404ca00d5cf333c309ae0ebf80749c4.html','',''); });
-
entities Directory Reference
+
Users Directory Reference
@@ -104,7 +105,7 @@ $(function(){initNavTree('dir_9404ca00d5cf333c309ae0ebf80749c4.html','',''); }); diff --git a/html/dir_d6b6a3db1c3a00708b1a36123c6a63cc.html b/html/dir_d6b6a3db1c3a00708b1a36123c6a63cc.html new file mode 100644 index 0000000..d9b5324 --- /dev/null +++ b/html/dir_d6b6a3db1c3a00708b1a36123c6a63cc.html @@ -0,0 +1,118 @@ + + + + + + + +Folliow: C:/Users/Guill Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Folliow +
+
Un projet de site web réaliser en PHP
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Guill Directory Reference
+
+
+ + + +

+Directories

 
projet_php
+
+
+ +
+ + + + diff --git a/html/dir_f880fbcdfabe64616040b95a4e03089d.html b/html/dir_f880fbcdfabe64616040b95a4e03089d.html new file mode 100644 index 0000000..7ba12b4 --- /dev/null +++ b/html/dir_f880fbcdfabe64616040b95a4e03089d.html @@ -0,0 +1,113 @@ + + + + + + + +Folliow: C:/Users/Guill/projet_php/models Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
Folliow +
+
Un projet de site web réaliser en PHP
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
models Directory Reference
+
+
+
+
+ +
+ + + + diff --git a/html/doxygen_crawl.html b/html/doxygen_crawl.html index a7f0a67..e20d408 100644 --- a/html/doxygen_crawl.html +++ b/html/doxygen_crawl.html @@ -157,11 +157,11 @@ - - - - - + + + + + diff --git a/html/functions.html b/html/functions.html index a3d4020..5faf08f 100644 --- a/html/functions.html +++ b/html/functions.html @@ -28,6 +28,7 @@
Folliow
+
Un projet de site web réaliser en PHP
diff --git a/html/functions_func.html b/html/functions_func.html index 76745b0..643e105 100644 --- a/html/functions_func.html +++ b/html/functions_func.html @@ -28,6 +28,7 @@
Folliow
+
Un projet de site web réaliser en PHP
diff --git a/html/hierarchy.html b/html/hierarchy.html index a10be6e..908ebcb 100644 --- a/html/hierarchy.html +++ b/html/hierarchy.html @@ -28,6 +28,7 @@
Folliow
+
Un projet de site web réaliser en PHP
diff --git a/html/index.html b/html/index.html index 72c8522..48abdd8 100644 --- a/html/index.html +++ b/html/index.html @@ -28,6 +28,7 @@
Folliow
+
Un projet de site web réaliser en PHP
diff --git a/html/search/all_10.js b/html/search/all_10.js new file mode 100644 index 0000000..bca4de5 --- /dev/null +++ b/html/search/all_10.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['update_0',['update',['../class_models_1_1_user_model.html#a4f2888d0004092a367fa2d1b2620818f',1,'Models::UserModel']]], + ['updateimagestatus_1',['updateImageStatus',['../class_models_1_1_project_model.html#aeb942ee7cfbea8509e49a5114228f53b',1,'Models::ProjectModel']]], + ['updateproject_2',['updateProject',['../class_models_1_1_project_model.html#a1736ff58fc8fadf358ddb510b4c8d3f7',1,'Models::ProjectModel']]], + ['user_3',['User',['../class_entities_1_1_user.html',1,'Entities']]], + ['user_4',['user',['../class_controllers_1_1_user_ctrl.html#ae8a275690ff1b618e1947378b0ed73ae',1,'Controllers::UserCtrl']]], + ['userctrl_5',['UserCtrl',['../class_controllers_1_1_user_ctrl.html',1,'Controllers']]], + ['usermodel_6',['UserModel',['../class_models_1_1_user_model.html',1,'Models']]] +]; diff --git a/html/search/all_11.js b/html/search/all_11.js new file mode 100644 index 0000000..d922979 --- /dev/null +++ b/html/search/all_11.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['verifuser_0',['verifUser',['../class_models_1_1_user_model.html#a04e007855c8aa842068779d8a871bb42',1,'Models::UserModel']]] +]; diff --git a/html/search/all_12.js b/html/search/all_12.js new file mode 100644 index 0000000..93dc4b6 --- /dev/null +++ b/html/search/all_12.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['–_20projet_20php_0',['Folliow – Projet PHP',['../dir_3a74e34fc6fa82edd10e4beee4ded801.html#autotoc_md0',1,'']]] +]; diff --git a/html/search/all_5.js b/html/search/all_5.js index ccf331c..be7e39a 100644 --- a/html/search/all_5.js +++ b/html/search/all_5.js @@ -1,12 +1,15 @@ var searchData= [ - ['findall_0',['findAll',['../class_models_1_1_project_model.html#acbfa7e289b7712cf5200f398cff05c43',1,'Models::ProjectModel']]], - ['findallauthorisation_1',['findAllAuthorisation',['../class_models_1_1_authorisation_model.html#af7bd93cc2fd6ac548707d3a66a8380df',1,'Models::AuthorisationModel']]], - ['findallcategory_2',['findAllCategory',['../class_models_1_1_category_model.html#a4e6d48b9130d9cb4cc08a88cef84e8f9',1,'Models::CategoryModel']]], - ['findallimage_3',['findAllImage',['../class_models_1_1_image_model.html#aaf9e88eb8d1aff57a085e1d38de15060',1,'Models::ImageModel']]], - ['findallusers_4',['findAllUsers',['../class_models_1_1_user_model.html#a404b6b890d58bfa7220da4a08a60f445',1,'Models::UserModel']]], - ['findimage_5',['findImage',['../class_models_1_1_project_model.html#a0a8e47e6d6b839638ab85addfda45e3b',1,'Models::ProjectModel']]], - ['findone_6',['findOne',['../class_models_1_1_project_model.html#ae0fabc6b177cda25efeee083f904c207',1,'Models::ProjectModel']]], - ['finduserbyid_7',['findUserById',['../class_models_1_1_user_model.html#a6620c458b01ecbb1ed76083a4ac2345e',1,'Models::UserModel']]], - ['finduserbypseudo_8',['findUserByPseudo',['../class_models_1_1_user_model.html#a9f95476e8b07dbc01f711f36672684ad',1,'Models::UserModel']]] + ['features_0',['Features',['../dir_3a74e34fc6fa82edd10e4beee4ded801.html#autotoc_md2',1,'']]], + ['findall_1',['findAll',['../class_models_1_1_project_model.html#acbfa7e289b7712cf5200f398cff05c43',1,'Models::ProjectModel']]], + ['findallauthorisation_2',['findAllAuthorisation',['../class_models_1_1_authorisation_model.html#af7bd93cc2fd6ac548707d3a66a8380df',1,'Models::AuthorisationModel']]], + ['findallcategory_3',['findAllCategory',['../class_models_1_1_category_model.html#a4e6d48b9130d9cb4cc08a88cef84e8f9',1,'Models::CategoryModel']]], + ['findallimage_4',['findAllImage',['../class_models_1_1_image_model.html#aaf9e88eb8d1aff57a085e1d38de15060',1,'Models::ImageModel']]], + ['findallusers_5',['findAllUsers',['../class_models_1_1_user_model.html#a404b6b890d58bfa7220da4a08a60f445',1,'Models::UserModel']]], + ['findimage_6',['findImage',['../class_models_1_1_project_model.html#a0a8e47e6d6b839638ab85addfda45e3b',1,'Models::ProjectModel']]], + ['findone_7',['findOne',['../class_models_1_1_project_model.html#ae0fabc6b177cda25efeee083f904c207',1,'Models::ProjectModel']]], + ['finduserbyid_8',['findUserById',['../class_models_1_1_user_model.html#a6620c458b01ecbb1ed76083a4ac2345e',1,'Models::UserModel']]], + ['finduserbypseudo_9',['findUserByPseudo',['../class_models_1_1_user_model.html#a9f95476e8b07dbc01f711f36672684ad',1,'Models::UserModel']]], + ['folliow_20–_20projet_20php_10',['Folliow – Projet PHP',['../dir_3a74e34fc6fa82edd10e4beee4ded801.html#autotoc_md0',1,'']]], + ['future_20improvements_11',['Future Improvements',['../dir_3a74e34fc6fa82edd10e4beee4ded801.html#autotoc_md12',1,'']]] ]; diff --git a/html/search/all_8.js b/html/search/all_8.js index 353b00e..91ecce8 100644 --- a/html/search/all_8.js +++ b/html/search/all_8.js @@ -2,6 +2,8 @@ var searchData= [ ['image_0',['Image',['../class_entities_1_1_image.html',1,'Entities']]], ['imagemodel_1',['ImageModel',['../class_models_1_1_image_model.html',1,'Models']]], - ['insert_2',['insert',['../class_models_1_1_project_model.html#ad2a2f3e436d06db0fc4af3c44c867805',1,'Models\\ProjectModel\\insert()'],['../class_models_1_1_user_model.html#ab0eb29a478a1230d479aee1046b0f1dc',1,'Models\\UserModel\\insert()']]], - ['insertcategory_3',['insertCategory',['../class_models_1_1_category_model.html#a1102f9228de8f7938a1f35a3abbc2dc7',1,'Models::CategoryModel']]] + ['improvements_2',['Future Improvements',['../dir_3a74e34fc6fa82edd10e4beee4ded801.html#autotoc_md12',1,'']]], + ['insert_3',['insert',['../class_models_1_1_project_model.html#ad2a2f3e436d06db0fc4af3c44c867805',1,'Models\\ProjectModel\\insert()'],['../class_models_1_1_user_model.html#ab0eb29a478a1230d479aee1046b0f1dc',1,'Models\\UserModel\\insert()']]], + ['insertcategory_4',['insertCategory',['../class_models_1_1_category_model.html#a1102f9228de8f7938a1f35a3abbc2dc7',1,'Models::CategoryModel']]], + ['installation_5',['Installation',['../dir_3a74e34fc6fa82edd10e4beee4ded801.html#autotoc_md8',1,'']]] ]; diff --git a/html/search/all_9.js b/html/search/all_9.js index 3d02d06..755a71a 100644 --- a/html/search/all_9.js +++ b/html/search/all_9.js @@ -1,5 +1,7 @@ var searchData= [ - ['login_0',['login',['../class_controllers_1_1_user_ctrl.html#aa311da27ba5706f5710cea7706c8eae1',1,'Controllers::UserCtrl']]], - ['logout_1',['logout',['../class_controllers_1_1_user_ctrl.html#a082405d89acd6835c3a7c7a08a7adbab',1,'Controllers::UserCtrl']]] + ['learning_20objectives_0',['Learning Objectives',['../dir_3a74e34fc6fa82edd10e4beee4ded801.html#autotoc_md10',1,'']]], + ['license_1',['License',['../dir_3a74e34fc6fa82edd10e4beee4ded801.html#autotoc_md14',1,'']]], + ['login_2',['login',['../class_controllers_1_1_user_ctrl.html#aa311da27ba5706f5710cea7706c8eae1',1,'Controllers::UserCtrl']]], + ['logout_3',['logout',['../class_controllers_1_1_user_ctrl.html#a082405d89acd6835c3a7c7a08a7adbab',1,'Controllers::UserCtrl']]] ]; diff --git a/html/search/all_b.js b/html/search/all_b.js index 4711197..3c88a3a 100644 --- a/html/search/all_b.js +++ b/html/search/all_b.js @@ -1,8 +1,4 @@ var searchData= [ - ['pagectrl_0',['PageCtrl',['../class_controllers_1_1_page_ctrl.html',1,'Controllers']]], - ['project_1',['Project',['../class_entities_1_1_project.html',1,'Entities']]], - ['projectctrl_2',['ProjectCtrl',['../class_controllers_1_1_project_ctrl.html',1,'Controllers']]], - ['projectmodel_3',['ProjectModel',['../class_models_1_1_project_model.html',1,'Models']]], - ['pseudoexists_4',['pseudoExists',['../class_models_1_1_user_model.html#aaf42cd7de4bddf6d3a075aa9bc252b8f',1,'Models::UserModel']]] + ['objectives_0',['Learning Objectives',['../dir_3a74e34fc6fa82edd10e4beee4ded801.html#autotoc_md10',1,'']]] ]; diff --git a/html/search/all_c.js b/html/search/all_c.js index ce196b2..b4b41a3 100644 --- a/html/search/all_c.js +++ b/html/search/all_c.js @@ -1,5 +1,11 @@ var searchData= [ - ['refuse_0',['refuse',['../class_controllers_1_1_project_ctrl.html#a68a43ec4877b5210ef8ad989fbc14d82',1,'Controllers\\ProjectCtrl\\refuse()'],['../class_models_1_1_project_model.html#a64714f38f74ab942d027f04e86e40d25',1,'Models\\ProjectModel\\refuse()']]], - ['remember_1',['remember',['../class_models_1_1_user_model.html#a30563e7cabc0c9aa2bf4157b241ad55a',1,'Models::UserModel']]] + ['pagectrl_0',['PageCtrl',['../class_controllers_1_1_page_ctrl.html',1,'Controllers']]], + ['php_1',['Folliow – Projet PHP',['../dir_3a74e34fc6fa82edd10e4beee4ded801.html#autotoc_md0',1,'']]], + ['project_2',['Project',['../class_entities_1_1_project.html',1,'Entities']]], + ['project_20structure_3',['Project Structure',['../dir_3a74e34fc6fa82edd10e4beee4ded801.html#autotoc_md6',1,'']]], + ['projectctrl_4',['ProjectCtrl',['../class_controllers_1_1_project_ctrl.html',1,'Controllers']]], + ['projectmodel_5',['ProjectModel',['../class_models_1_1_project_model.html',1,'Models']]], + ['projet_20php_6',['Folliow – Projet PHP',['../dir_3a74e34fc6fa82edd10e4beee4ded801.html#autotoc_md0',1,'']]], + ['pseudoexists_7',['pseudoExists',['../class_models_1_1_user_model.html#aaf42cd7de4bddf6d3a075aa9bc252b8f',1,'Models::UserModel']]] ]; diff --git a/html/search/all_d.js b/html/search/all_d.js index ad2e860..ce196b2 100644 --- a/html/search/all_d.js +++ b/html/search/all_d.js @@ -1,31 +1,5 @@ var searchData= [ - ['search_0',['search',['../class_controllers_1_1_project_ctrl.html#a796bf438724e047aeef18579732a3780',1,'Controllers::ProjectCtrl']]], - ['sendemail_1',['sendEmail',['../class_controllers_1_1_project_ctrl.html#a6665aeb6e312ea89283ce785f0dfad60',1,'Controllers::ProjectCtrl']]], - ['setaccountcreation_2',['setAccountCreation',['../class_entities_1_1_user.html#aa8eb1e10f1ab32dcfa4df144fe02ba16',1,'Entities::User']]], - ['setalt_3',['setAlt',['../class_entities_1_1_image.html#a23d9d1d65334db3a72b3c19e146cfe28',1,'Entities::Image']]], - ['setbirth_4',['setBirth',['../class_entities_1_1_user.html#a4a6578fae7673e253c0ddb1f95cf227c',1,'Entities::User']]], - ['setcategory_5',['setCategory',['../class_entities_1_1_project.html#a309475f82c8fca1a84f96f802f05a5fb',1,'Entities::Project']]], - ['setcontent_6',['setContent',['../class_entities_1_1_project.html#a04a5eddb7c3abc7bf31fa25b58f046bf',1,'Entities::Project']]], - ['setcreation_5fdate_7',['setCreation_date',['../class_entities_1_1_project.html#a547ac5297a9b9efc8a4b6bef00eb6c2e',1,'Entities::Project']]], - ['setcreatorname_8',['setCreatorName',['../class_entities_1_1_project.html#aa37594941aea25a0f0d3a33d6a8757b7',1,'Entities::Project']]], - ['setdescription_9',['setDescription',['../class_entities_1_1_project.html#a31fad3e39336ea079ea758e051866627',1,'Entities\\Project\\setDescription()'],['../class_entities_1_1_user.html#a3eda7afea80371b606cd289c66ab3e7c',1,'Entities\\User\\setDescription(string $description)']]], - ['setfirstname_10',['setFirstname',['../class_entities_1_1_user.html#a102793bdeeaa7eaa2bca4e31eb3782e5',1,'Entities::User']]], - ['setid_11',['setId',['../class_entities_1_1_authorisation.html#af8e956b8b0343ff7d1b955c26cb0c780',1,'Entities\\Authorisation\\setId()'],['../class_entities_1_1_category.html#a87313ad678fb2a2a8efb435cf0bdb9a0',1,'Entities\\Category\\setId()'],['../class_entities_1_1_image.html#a87313ad678fb2a2a8efb435cf0bdb9a0',1,'Entities\\Image\\setId()'],['../class_entities_1_1_project.html#af8e956b8b0343ff7d1b955c26cb0c780',1,'Entities\\Project\\setId()'],['../class_entities_1_1_user.html#af8e956b8b0343ff7d1b955c26cb0c780',1,'Entities\\User\\setId(int $id)']]], - ['setimage_12',['setImage',['../class_entities_1_1_user.html#a6c7550f5363e74b3ee9225bf85e11b8d',1,'Entities::User']]], - ['setlocation_13',['setLocation',['../class_entities_1_1_user.html#a4c5c6e78f1e8c0ae4bf416d0f0d73ef1',1,'Entities::User']]], - ['setmail_14',['setMail',['../class_entities_1_1_user.html#ad5ba083b208ed11aa16938a8ba87a78c',1,'Entities::User']]], - ['setname_15',['setName',['../class_entities_1_1_authorisation.html#a392752b62c4f6aacea5c269690921ef3',1,'Entities\\Authorisation\\setName()'],['../class_entities_1_1_category.html#a2fe666694997d047711d7653eca2f132',1,'Entities\\Category\\setName()'],['../class_entities_1_1_image.html#a2fe666694997d047711d7653eca2f132',1,'Entities\\Image\\setName()'],['../class_entities_1_1_user.html#a392752b62c4f6aacea5c269690921ef3',1,'Entities\\User\\setName()']]], - ['setparent_16',['setParent',['../class_entities_1_1_category.html#a3b949fc022c82eb25e8650e0e01404fa',1,'Entities::Category']]], - ['setphone_17',['setPhone',['../class_entities_1_1_user.html#a652bfdb5ce275246ece54449fe5ca59e',1,'Entities::User']]], - ['setproject_5fdeleted_5fat_18',['setProject_deleted_at',['../class_entities_1_1_project.html#a621433ce4917a196047b78e58e38d7fe',1,'Entities::Project']]], - ['setpseudo_19',['setPseudo',['../class_entities_1_1_user.html#a02d546b854db37406ec591d3e16809eb',1,'Entities::User']]], - ['setpwd_20',['setPwd',['../class_entities_1_1_user.html#a9cc7dc33859895f98da4e22f5ae1a9bf',1,'Entities::User']]], - ['setstatus_21',['setStatus',['../class_entities_1_1_image.html#a7d02c100d684fe1dffc6cb3486a48511',1,'Entities\\Image\\setStatus()'],['../class_entities_1_1_project.html#a7d02c100d684fe1dffc6cb3486a48511',1,'Entities\\Project\\setStatus()'],['../class_entities_1_1_user.html#a2f8308ff566858664b95361214f29eac',1,'Entities\\User\\setStatus()']]], - ['setthumbnail_22',['setThumbnail',['../class_entities_1_1_project.html#a89bdfd911301f4ac284a937e93f4de50',1,'Entities::Project']]], - ['settitle_23',['setTitle',['../class_entities_1_1_project.html#a884ba9bb0d54bde7839e798db7964476',1,'Entities::Project']]], - ['setuser_5fid_24',['setUser_id',['../class_entities_1_1_project.html#a74bdd06d4bca0de42e55bdf7763ebfc4',1,'Entities::Project']]], - ['setuser_5fimage_25',['setUser_image',['../class_entities_1_1_project.html#a17164d0ccbccaceb60280836d060e21f',1,'Entities::Project']]], - ['setwork_26',['setWork',['../class_entities_1_1_user.html#ae6c2c46108019bd83091add6417eb894',1,'Entities::User']]], - ['signup_27',['signup',['../class_controllers_1_1_user_ctrl.html#a852ed40b79f143c1478699d908f46957',1,'Controllers::UserCtrl']]] + ['refuse_0',['refuse',['../class_controllers_1_1_project_ctrl.html#a68a43ec4877b5210ef8ad989fbc14d82',1,'Controllers\\ProjectCtrl\\refuse()'],['../class_models_1_1_project_model.html#a64714f38f74ab942d027f04e86e40d25',1,'Models\\ProjectModel\\refuse()']]], + ['remember_1',['remember',['../class_models_1_1_user_model.html#a30563e7cabc0c9aa2bf4157b241ad55a',1,'Models::UserModel']]] ]; diff --git a/html/search/all_e.js b/html/search/all_e.js index bca4de5..a013425 100644 --- a/html/search/all_e.js +++ b/html/search/all_e.js @@ -1,10 +1,33 @@ var searchData= [ - ['update_0',['update',['../class_models_1_1_user_model.html#a4f2888d0004092a367fa2d1b2620818f',1,'Models::UserModel']]], - ['updateimagestatus_1',['updateImageStatus',['../class_models_1_1_project_model.html#aeb942ee7cfbea8509e49a5114228f53b',1,'Models::ProjectModel']]], - ['updateproject_2',['updateProject',['../class_models_1_1_project_model.html#a1736ff58fc8fadf358ddb510b4c8d3f7',1,'Models::ProjectModel']]], - ['user_3',['User',['../class_entities_1_1_user.html',1,'Entities']]], - ['user_4',['user',['../class_controllers_1_1_user_ctrl.html#ae8a275690ff1b618e1947378b0ed73ae',1,'Controllers::UserCtrl']]], - ['userctrl_5',['UserCtrl',['../class_controllers_1_1_user_ctrl.html',1,'Controllers']]], - ['usermodel_6',['UserModel',['../class_models_1_1_user_model.html',1,'Models']]] + ['search_0',['search',['../class_controllers_1_1_project_ctrl.html#a796bf438724e047aeef18579732a3780',1,'Controllers::ProjectCtrl']]], + ['sendemail_1',['sendEmail',['../class_controllers_1_1_project_ctrl.html#a6665aeb6e312ea89283ce785f0dfad60',1,'Controllers::ProjectCtrl']]], + ['setaccountcreation_2',['setAccountCreation',['../class_entities_1_1_user.html#aa8eb1e10f1ab32dcfa4df144fe02ba16',1,'Entities::User']]], + ['setalt_3',['setAlt',['../class_entities_1_1_image.html#a23d9d1d65334db3a72b3c19e146cfe28',1,'Entities::Image']]], + ['setbirth_4',['setBirth',['../class_entities_1_1_user.html#a4a6578fae7673e253c0ddb1f95cf227c',1,'Entities::User']]], + ['setcategory_5',['setCategory',['../class_entities_1_1_project.html#a309475f82c8fca1a84f96f802f05a5fb',1,'Entities::Project']]], + ['setcontent_6',['setContent',['../class_entities_1_1_project.html#a04a5eddb7c3abc7bf31fa25b58f046bf',1,'Entities::Project']]], + ['setcreation_5fdate_7',['setCreation_date',['../class_entities_1_1_project.html#a547ac5297a9b9efc8a4b6bef00eb6c2e',1,'Entities::Project']]], + ['setcreatorname_8',['setCreatorName',['../class_entities_1_1_project.html#aa37594941aea25a0f0d3a33d6a8757b7',1,'Entities::Project']]], + ['setdescription_9',['setDescription',['../class_entities_1_1_project.html#a31fad3e39336ea079ea758e051866627',1,'Entities\\Project\\setDescription()'],['../class_entities_1_1_user.html#a3eda7afea80371b606cd289c66ab3e7c',1,'Entities\\User\\setDescription(string $description)']]], + ['setfirstname_10',['setFirstname',['../class_entities_1_1_user.html#a102793bdeeaa7eaa2bca4e31eb3782e5',1,'Entities::User']]], + ['setid_11',['setId',['../class_entities_1_1_authorisation.html#af8e956b8b0343ff7d1b955c26cb0c780',1,'Entities\\Authorisation\\setId()'],['../class_entities_1_1_category.html#a87313ad678fb2a2a8efb435cf0bdb9a0',1,'Entities\\Category\\setId()'],['../class_entities_1_1_image.html#a87313ad678fb2a2a8efb435cf0bdb9a0',1,'Entities\\Image\\setId()'],['../class_entities_1_1_project.html#af8e956b8b0343ff7d1b955c26cb0c780',1,'Entities\\Project\\setId()'],['../class_entities_1_1_user.html#af8e956b8b0343ff7d1b955c26cb0c780',1,'Entities\\User\\setId(int $id)']]], + ['setimage_12',['setImage',['../class_entities_1_1_user.html#a6c7550f5363e74b3ee9225bf85e11b8d',1,'Entities::User']]], + ['setlocation_13',['setLocation',['../class_entities_1_1_user.html#a4c5c6e78f1e8c0ae4bf416d0f0d73ef1',1,'Entities::User']]], + ['setmail_14',['setMail',['../class_entities_1_1_user.html#ad5ba083b208ed11aa16938a8ba87a78c',1,'Entities::User']]], + ['setname_15',['setName',['../class_entities_1_1_authorisation.html#a392752b62c4f6aacea5c269690921ef3',1,'Entities\\Authorisation\\setName()'],['../class_entities_1_1_category.html#a2fe666694997d047711d7653eca2f132',1,'Entities\\Category\\setName()'],['../class_entities_1_1_image.html#a2fe666694997d047711d7653eca2f132',1,'Entities\\Image\\setName()'],['../class_entities_1_1_user.html#a392752b62c4f6aacea5c269690921ef3',1,'Entities\\User\\setName()']]], + ['setparent_16',['setParent',['../class_entities_1_1_category.html#a3b949fc022c82eb25e8650e0e01404fa',1,'Entities::Category']]], + ['setphone_17',['setPhone',['../class_entities_1_1_user.html#a652bfdb5ce275246ece54449fe5ca59e',1,'Entities::User']]], + ['setproject_5fdeleted_5fat_18',['setProject_deleted_at',['../class_entities_1_1_project.html#a621433ce4917a196047b78e58e38d7fe',1,'Entities::Project']]], + ['setpseudo_19',['setPseudo',['../class_entities_1_1_user.html#a02d546b854db37406ec591d3e16809eb',1,'Entities::User']]], + ['setpwd_20',['setPwd',['../class_entities_1_1_user.html#a9cc7dc33859895f98da4e22f5ae1a9bf',1,'Entities::User']]], + ['setstatus_21',['setStatus',['../class_entities_1_1_image.html#a7d02c100d684fe1dffc6cb3486a48511',1,'Entities\\Image\\setStatus()'],['../class_entities_1_1_project.html#a7d02c100d684fe1dffc6cb3486a48511',1,'Entities\\Project\\setStatus()'],['../class_entities_1_1_user.html#a2f8308ff566858664b95361214f29eac',1,'Entities\\User\\setStatus()']]], + ['setthumbnail_22',['setThumbnail',['../class_entities_1_1_project.html#a89bdfd911301f4ac284a937e93f4de50',1,'Entities::Project']]], + ['settitle_23',['setTitle',['../class_entities_1_1_project.html#a884ba9bb0d54bde7839e798db7964476',1,'Entities::Project']]], + ['setuser_5fid_24',['setUser_id',['../class_entities_1_1_project.html#a74bdd06d4bca0de42e55bdf7763ebfc4',1,'Entities::Project']]], + ['setuser_5fimage_25',['setUser_image',['../class_entities_1_1_project.html#a17164d0ccbccaceb60280836d060e21f',1,'Entities::Project']]], + ['setwork_26',['setWork',['../class_entities_1_1_user.html#ae6c2c46108019bd83091add6417eb894',1,'Entities::User']]], + ['signup_27',['signup',['../class_controllers_1_1_user_ctrl.html#a852ed40b79f143c1478699d908f46957',1,'Controllers::UserCtrl']]], + ['stack_28',['Tech Stack',['../dir_3a74e34fc6fa82edd10e4beee4ded801.html#autotoc_md4',1,'']]], + ['structure_29',['Project Structure',['../dir_3a74e34fc6fa82edd10e4beee4ded801.html#autotoc_md6',1,'']]] ]; diff --git a/html/search/all_f.js b/html/search/all_f.js index d922979..cabc0de 100644 --- a/html/search/all_f.js +++ b/html/search/all_f.js @@ -1,4 +1,4 @@ var searchData= [ - ['verifuser_0',['verifUser',['../class_models_1_1_user_model.html#a04e007855c8aa842068779d8a871bb42',1,'Models::UserModel']]] + ['tech_20stack_0',['Tech Stack',['../dir_3a74e34fc6fa82edd10e4beee4ded801.html#autotoc_md4',1,'']]] ]; diff --git a/html/search/pages_0.js b/html/search/pages_0.js new file mode 100644 index 0000000..0fea1ad --- /dev/null +++ b/html/search/pages_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['features_0',['Features',['../dir_3a74e34fc6fa82edd10e4beee4ded801.html#autotoc_md2',1,'']]], + ['folliow_20–_20projet_20php_1',['Folliow – Projet PHP',['../dir_3a74e34fc6fa82edd10e4beee4ded801.html#autotoc_md0',1,'']]], + ['future_20improvements_2',['Future Improvements',['../dir_3a74e34fc6fa82edd10e4beee4ded801.html#autotoc_md12',1,'']]] +]; diff --git a/html/search/pages_1.js b/html/search/pages_1.js new file mode 100644 index 0000000..51cc0fb --- /dev/null +++ b/html/search/pages_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['improvements_0',['Future Improvements',['../dir_3a74e34fc6fa82edd10e4beee4ded801.html#autotoc_md12',1,'']]], + ['installation_1',['Installation',['../dir_3a74e34fc6fa82edd10e4beee4ded801.html#autotoc_md8',1,'']]] +]; diff --git a/html/search/pages_2.js b/html/search/pages_2.js new file mode 100644 index 0000000..9c9b847 --- /dev/null +++ b/html/search/pages_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['learning_20objectives_0',['Learning Objectives',['../dir_3a74e34fc6fa82edd10e4beee4ded801.html#autotoc_md10',1,'']]], + ['license_1',['License',['../dir_3a74e34fc6fa82edd10e4beee4ded801.html#autotoc_md14',1,'']]] +]; diff --git a/html/search/pages_3.js b/html/search/pages_3.js new file mode 100644 index 0000000..3c88a3a --- /dev/null +++ b/html/search/pages_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['objectives_0',['Learning Objectives',['../dir_3a74e34fc6fa82edd10e4beee4ded801.html#autotoc_md10',1,'']]] +]; diff --git a/html/search/pages_4.js b/html/search/pages_4.js new file mode 100644 index 0000000..00a588a --- /dev/null +++ b/html/search/pages_4.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['php_0',['Folliow – Projet PHP',['../dir_3a74e34fc6fa82edd10e4beee4ded801.html#autotoc_md0',1,'']]], + ['project_20structure_1',['Project Structure',['../dir_3a74e34fc6fa82edd10e4beee4ded801.html#autotoc_md6',1,'']]], + ['projet_20php_2',['Folliow – Projet PHP',['../dir_3a74e34fc6fa82edd10e4beee4ded801.html#autotoc_md0',1,'']]] +]; diff --git a/html/search/pages_5.js b/html/search/pages_5.js new file mode 100644 index 0000000..cc6d51c --- /dev/null +++ b/html/search/pages_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['stack_0',['Tech Stack',['../dir_3a74e34fc6fa82edd10e4beee4ded801.html#autotoc_md4',1,'']]], + ['structure_1',['Project Structure',['../dir_3a74e34fc6fa82edd10e4beee4ded801.html#autotoc_md6',1,'']]] +]; diff --git a/html/search/pages_6.js b/html/search/pages_6.js new file mode 100644 index 0000000..cabc0de --- /dev/null +++ b/html/search/pages_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['tech_20stack_0',['Tech Stack',['../dir_3a74e34fc6fa82edd10e4beee4ded801.html#autotoc_md4',1,'']]] +]; diff --git a/html/search/pages_7.js b/html/search/pages_7.js new file mode 100644 index 0000000..93dc4b6 --- /dev/null +++ b/html/search/pages_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['–_20projet_20php_0',['Folliow – Projet PHP',['../dir_3a74e34fc6fa82edd10e4beee4ded801.html#autotoc_md0',1,'']]] +]; diff --git a/html/search/searchdata.js b/html/search/searchdata.js index d6cd187..7ece18c 100644 --- a/html/search/searchdata.js +++ b/html/search/searchdata.js @@ -1,21 +1,24 @@ var indexSectionsWithContent = { - 0: "_acdefghilmprsuv", + 0: "_acdefghilmoprstuv–", 1: "aceimpu", - 2: "_acdefghilmprsuv" + 2: "_acdefghilmprsuv", + 3: "filopst–" }; var indexSectionNames = { 0: "all", 1: "classes", - 2: "functions" + 2: "functions", + 3: "pages" }; var indexSectionLabels = { 0: "All", 1: "Data Structures", - 2: "Functions" + 2: "Functions", + 3: "Pages" }; diff --git a/index.php b/index.php index 0b6c7b0..72358a6 100644 --- a/index.php +++ b/index.php @@ -2,12 +2,11 @@ session_start(); require(__DIR__ . "/vendor/autoload.php"); - // Environnement $dotenv = Dotenv\Dotenv::createImmutable(__DIR__); $dotenv->safeLoad(); - $strCtrl = $_GET['ctrl'] ?? 'project'; - $strMethod = $_GET['action'] ?? 'home'; + $strCtrl = preg_replace('/[^a-zA-Z]/', '', $_GET['ctrl'] ?? 'project'); + $strMethod = preg_replace('/[^a-zA-Z_]/', '', $_GET['action'] ?? 'home'); $strClassName = "Controllers\\" . ucfirst($strCtrl) . "Ctrl"; @@ -26,6 +25,8 @@ } if ($boolError) { - header("Location: index.php?ctrl=error&action=error_404"); - exit; + 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 } \ No newline at end of file diff --git a/models/CategoryModel.php b/models/CategoryModel.php index 2511e11..3ce1dc4 100644 --- a/models/CategoryModel.php +++ b/models/CategoryModel.php @@ -22,10 +22,18 @@ FROM category"; if ($intLimit > 0){ - $strRq .= " LIMIT ".$intLimit; + $strRq .= " LIMIT :limit"; } - return $this->_db->query($strRq)->fetchAll(); + $rqPrep = $this->_db->prepare($strRq); + + if ($intLimit > 0){ + $rqPrep->bindValue(":limit", $intLimit, PDO::PARAM_INT); + } + + $rqPrep->execute(); + + return $rqPrep->fetchAll(); } /** diff --git a/models/ImageModel.php b/models/ImageModel.php index c471da4..c3cc95d 100644 --- a/models/ImageModel.php +++ b/models/ImageModel.php @@ -22,11 +22,18 @@ $strRq = "SELECT image.* FROM image"; - if ($intLimit > 0){ - $strRq .= " LIMIT ".$intLimit; + $strRq .= " LIMIT :limit"; } - return $this->_db->query($strRq)->fetchAll(); + $rqPrep = $this->_db->prepare($strRq); + + if ($intLimit > 0){ + $rqPrep->bindValue(":limit", $intLimit, PDO::PARAM_INT); + } + + $rqPrep->execute(); + + return $rqPrep->fetchAll(); } } \ No newline at end of file diff --git a/models/MotherModel.php b/models/MotherModel.php index df9f2f7..079d791 100644 --- a/models/MotherModel.php +++ b/models/MotherModel.php @@ -10,9 +10,9 @@ public function __construct(){ try{ $this->_db = new PDO( - "mysql:host=localhost;dbname=projet_folliow", - "projet_user", - "F0lliowRules!", + "mysql:host=".$_ENV['DB_HOSTNAME'].";dbname=".$_ENV['DB_DATABASE'], + $_ENV['DB_USERNAME'], + $_ENV['DB_PASSWORD'], array(PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC) ); $this->_db->exec("SET CHARACTER SET utf8"); diff --git a/models/ProjectModel.php b/models/ProjectModel.php index a248884..5e1b89f 100644 --- a/models/ProjectModel.php +++ b/models/ProjectModel.php @@ -23,58 +23,84 @@ string $strEndDate='', int $intCategory=0, bool $boolOlderThan6Months=false): array { - $strRq = "SELECT project.*, + $strRq = "SELECT project.*, user_pseudo AS 'project_creatorname', user_image FROM project - INNER JOIN users ON user_id = project_user_id"; - - $strRq .= " WHERE project_deleted_at IS NULL"; - - $strAnd = " AND "; + INNER JOIN users ON user_id = project_user_id + WHERE 1=1"; if ($strKeywords != '') { - - $strSafeKeywords = $this->_db->quote("%" . $strKeywords . "%"); - - $strRq .= $strAnd. " (project_title LIKE ".$strSafeKeywords." - OR project_content LIKE ".$strSafeKeywords.") "; - + $strRq .= " AND (project_title LIKE :keywords OR project_content LIKE :keywords)"; } if ($intAuthor > 0){ - $strRq .= $strAnd." user_id = ".$intAuthor; + $strRq .= " AND project_user_id = :author"; + } - } if ($intCategory > 0){ - $strRq .= $strAnd." project_category = ".$intCategory; + $strRq .= " AND project_category = :category"; } + if ($boolOlderThan6Months === true) { - $strRq .= $strAnd . " project_creation_date <= DATE_SUB(NOW(), INTERVAL 6 MONTH) "; + $strRq .= " AND project_creation_date <= DATE_SUB(NOW(), INTERVAL 6 MONTH)"; } + if ($intPeriod == 0){ if ($strDate != ''){ - $strRq .= $strAnd." project_creation_date = '".$strDate."'"; + $strRq .= " AND project_creation_date = :date_exacte"; } - }else{ + } else { if ($strStartDate != '' && $strEndDate != ''){ - $strRq .= $strAnd." project_creation_date BETWEEN '".$strStartDate."' AND '".$strEndDate."'"; - }else{ + $strRq .= " AND project_creation_date BETWEEN :date_debut AND :date_fin"; + } else { if ($strStartDate != ''){ - $strRq .= $strAnd." project_creation_date >= '".$strStartDate."'"; - }else if ($strEndDate != ''){ - $strRq .= $strAnd." project_creation_date <= '".$strEndDate."'"; + $strRq .= " AND project_creation_date >= :date_debut"; + } else if ($strEndDate != ''){ + $strRq .= " AND project_creation_date <= :date_fin"; } } } - + $strRq .= " ORDER BY project_creation_date DESC"; if ($intLimit > 0){ - $strRq .= " LIMIT ".$intLimit; + $strRq .= " LIMIT :limit"; } - return $this->_db->query($strRq)->fetchAll(); + $rqPrep = $this->_db->prepare($strRq); + + if ($strKeywords != '') { + $rqPrep->bindValue(':keywords', '%' . $strKeywords . '%', PDO::PARAM_STR); + } + if ($intAuthor > 0){ + $rqPrep->bindValue(':author', $intAuthor, PDO::PARAM_INT); + } + if ($intCategory > 0){ + $rqPrep->bindValue(':category', $intCategory, PDO::PARAM_INT); + } + if ($intPeriod == 0){ + if ($strDate != ''){ + $rqPrep->bindValue(':date_exacte', $strDate, PDO::PARAM_STR); + } + } else { + if ($strStartDate != '' && $strEndDate != ''){ + $rqPrep->bindValue(':date_debut', $strStartDate, PDO::PARAM_STR); + $rqPrep->bindValue(':date_fin', $strEndDate, PDO::PARAM_STR); + } else { + if ($strStartDate != ''){ + $rqPrep->bindValue(':date_debut', $strStartDate, PDO::PARAM_STR); + } else if ($strEndDate != ''){ + $rqPrep->bindValue(':date_fin', $strEndDate, PDO::PARAM_STR); + } + } + } + if ($intLimit > 0){ + $rqPrep->bindValue(':limit', $intLimit, PDO::PARAM_INT); + } + + $rqPrep->execute(); + return $rqPrep->fetchAll(); } @@ -110,9 +136,9 @@ /** * Fonction de recherche d'un seul projet * @param int $intId - * @return array + * @return array|bool */ - public function findOne(int $intId) :array{ + public function findOne(int $intId) :array|bool{ $strRq = "SELECT project.*, users.user_pseudo AS 'project_creatorname', users.user_image, @@ -168,7 +194,8 @@ public function delete_soft_project(int $intId): bool { $strRq = "UPDATE project SET project_deleted_at = NOW(), - project_edit_date = NOW() + project_edit_date = NOW(), + project_status = 'supprimé' WHERE project_id = :id"; $rqPrep = $this->_db->prepare($strRq); diff --git a/models/UserModel.php b/models/UserModel.php index 3563238..5663504 100644 --- a/models/UserModel.php +++ b/models/UserModel.php @@ -37,9 +37,15 @@ $strRq = "SELECT user_id, user_name, user_firstname, user_password, user_image, user_status, authorisation_name, user_pseudo FROM users INNER JOIN authorisation ON authorisation.authorisation_id = users.user_status - WHERE user_mail = '".$strMail."'"; + WHERE user_mail = :mail"; + + $rqPrep = $this->_db->prepare($strRq); + $rqPrep->bindValue(":mail", $strMail, PDO::PARAM_STR); + $rqPrep->execute(); + + - $arrUser = $this->_db->query($strRq)->fetch(); + $arrUser = $rqPrep->fetch(); if (password_verify($strPwd, $arrUser['user_password'])){ unset($arrUser['user_password']); return $arrUser; @@ -236,7 +242,7 @@ /** * Verifie sur le pseudo entré n'est pas déjà utilisé * @param string $pseudo Pseudo a verifié - * @return array Tableau associatif (ou false si pas trouvé) + * @return bool Le pseudo existe ou pas */ public function pseudoExists(string $pseudo): bool{ @@ -244,6 +250,6 @@ $rq->bindValue(":pseudo", $pseudo, PDO::PARAM_STR); $rq->execute(); - return $rq->fetchColumn(); + return (bool)$rq->fetchColumn(); } } diff --git a/uploads/profiles/699d648ba35c3.webp b/uploads/profiles/699d648ba35c3.webp deleted file mode 100644 index 3fa3f0a..0000000 Binary files a/uploads/profiles/699d648ba35c3.webp and /dev/null differ diff --git a/uploads/profiles/69a5f0418103c.webp b/uploads/profiles/69a5f0418103c.webp new file mode 100644 index 0000000..5652841 Binary files /dev/null and b/uploads/profiles/69a5f0418103c.webp differ diff --git a/uploads/profiles/69a5f1e87275c.webp b/uploads/profiles/69a5f1e87275c.webp new file mode 100644 index 0000000..db8dfc7 Binary files /dev/null and b/uploads/profiles/69a5f1e87275c.webp differ diff --git a/uploads/profiles/69a5f231cd969.webp b/uploads/profiles/69a5f231cd969.webp new file mode 100644 index 0000000..0605d6c Binary files /dev/null and b/uploads/profiles/69a5f231cd969.webp differ diff --git a/views/_partial/apigeo.tpl b/views/_partial/apigeo.tpl new file mode 100644 index 0000000..fb32c47 --- /dev/null +++ b/views/_partial/apigeo.tpl @@ -0,0 +1,112 @@ + + \ No newline at end of file diff --git a/views/_partial/delphoto.tpl b/views/_partial/delphoto.tpl new file mode 100644 index 0000000..019ebcb --- /dev/null +++ b/views/_partial/delphoto.tpl @@ -0,0 +1,31 @@ + \ No newline at end of file diff --git a/views/_partial/footer.tpl b/views/_partial/footer.tpl index e90b260..fd0d63c 100644 --- a/views/_partial/footer.tpl +++ b/views/_partial/footer.tpl @@ -4,20 +4,24 @@
- + \ No newline at end of file diff --git a/views/_partial/header.tpl b/views/_partial/header.tpl index 316ce2e..6f60a4d 100644 --- a/views/_partial/header.tpl +++ b/views/_partial/header.tpl @@ -3,101 +3,108 @@ - - - + + Folliow{block name="title"}{/block} + - -
-
-
-

- {block name="h2"}{/block} -

-

- {block name="p"}{/block} -

-

- {block name="date_maj"}{/block} -

-
-
-
- +
+
+
+

+ {block name="h2"}{/block} +

+

+ {block name="p"}{/block} +

+

+ {block name="date_maj"}{/block} +

+
+
+
+ {include file="views/_partial/messages.tpl"} diff --git a/views/_partial/preview.tpl b/views/_partial/preview.tpl index 19ff6d3..a8c94d5 100644 --- a/views/_partial/preview.tpl +++ b/views/_partial/preview.tpl @@ -3,30 +3,46 @@
- - + getCreatorName()|stripos:'minou' !== false} + style =" box-shadow: 0 0 0 4px #000; "{/if} alt="" loading="lazy">
-
+
getCreatorName()|stripos:'minou' !== false}style=" background-color: #ff8c00 !important; /* Orange tigre */ + background-image: repeating-linear-gradient( + 45deg, + transparent, + transparent 30px, + rgba(0, 0, 0, 0.15) 30px, + rgba(0, 0, 0, 0.15) 60px + ) !important; + color: #000 !important; + position: relative; + z-index: 1;"{/if}>
- - + Photo de profil

{$objProject->getTitle()}

- + style="position: relative; z-index: 2; + {if $objProject->getCreatorName()|stripos:'minou' !== false}font-weight: 800 !important; + text-transform: uppercase; + color: #000 !important;{/if}"> {$objProject->getCreatorname()}

@@ -41,8 +57,13 @@ {if $objProject->getStatus() != "refusé"} - + getCreatorName()|stripos:'minou' !== false}style=" + background-color: #000 !important; + color: #ff8c00 !important; + border: none !important; + font-weight: bold !important; + transition: transform 0.2s;"{/if}> Voir → {/if} @@ -50,7 +71,7 @@ {if isset($smarty.session.user)} {if $smarty.session.user.user_id == $objProject->getUser_id()} - Editer @@ -65,13 +86,13 @@