diff --git a/README.md b/README.md new file mode 100644 index 0000000..ff24f70 --- /dev/null +++ b/README.md @@ -0,0 +1,98 @@ +# 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 + +```text +folliow/ +├── app/ +│ ├── controllers/ +│ ├── models/ +│ └── views/ +├── public/ +│ ├── assets/ +│ └── index.php +├── config/ +│ └── database.php +├── sql/ +│ └── folliow.sql +└── README.md +``` + +--- + +## Installation + +Clone the project + +```bash +git clone https://github.com/Yasder5/projet_php.git +``` + +Go to the project directory + +```bash +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/controllers/project_controller.php b/controllers/project_controller.php index ae44662..cf00bca 100644 --- a/controllers/project_controller.php +++ b/controllers/project_controller.php @@ -506,13 +506,22 @@ * @author Guillaume */ public function delete(){ + //Vérif utilisateur soit bien modérateur + if (!isset($_SESSION['user']) || $_SESSION['user']['user_status'] != 2) { + header("Location: index.php"); + exit; + } + + $intId = $_GET['id'] ?? null; - //Récupéré l'id dans l'url - $intId = $_GET['id']; - - //Je créer un nouveau model pour exec la commande SQL - $objProjectModel = new ProjectModel; - $objProjectModel->delete($intId); + if ($intId) { + $objProjectModel = new ProjectModel(); + if ($objProjectModel->delete_soft_project((int) $intId)) { + $_SESSION['success'] = "Le projet a été archivé avec succès."; + } else { + $_SESSION['error'] = "Une erreur est survenue lors de l'archivage."; + } + } //Redirection vers la page header("Location: index.php"); diff --git a/database/.gitkeep b/database/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/database/database.sql b/database/database.sql new file mode 100644 index 0000000..649db7d --- /dev/null +++ b/database/database.sql @@ -0,0 +1,253 @@ +CREATE DATABASE IF NOT EXISTS `projet_folliow` + DEFAULT CHARACTER SET utf8mb4 + COLLATE utf8mb4_unicode_ci; + +USE `projet_folliow`; + +/*M!999999\- enable the sandbox mode */ +-- MariaDB dump 10.19 Distrib 10.11.14-MariaDB, for debian-linux-gnu (x86_64) +-- +-- Host: localhost Database: projet_folliow +-- ------------------------------------------------------ +-- Server version 10.11.14-MariaDB-0+deb12u2 + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8mb4 */; +/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; +/*!40103 SET TIME_ZONE='+00:00' */; +/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; + +-- +-- Table structure for table `authorisation` +-- + +DROP TABLE IF EXISTS `authorisation`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `authorisation` ( + `authorisation_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Identifiant unique des autorisations', + `authorisation_name` varchar(30) NOT NULL COMMENT 'Administrateur, modérateur, utilisateur', + PRIMARY KEY (`authorisation_id`), + UNIQUE KEY `uk_authorisation_name` (`authorisation_name`) +) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `authorisation` +-- + +LOCK TABLES `authorisation` WRITE; +/*!40000 ALTER TABLE `authorisation` DISABLE KEYS */; +INSERT INTO `authorisation` VALUES +(1,'Administrateur'), +(2,'Modérateur'), +(3,'Utilisateur'); +/*!40000 ALTER TABLE `authorisation` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `category` +-- + +DROP TABLE IF EXISTS `category`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `category` ( + `category_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Identifiant unique des catégorie du projet', + `category_name` varchar(150) NOT NULL COMMENT 'Nom de chaque catégorie', + `category_parent` int(10) unsigned DEFAULT NULL COMMENT 'ID de la catégorie parente (NULL = catégorie principale)', + PRIMARY KEY (`category_id`), + UNIQUE KEY `uk_category_name_parent` (`category_name`,`category_parent`), + KEY `fk_category_parent` (`category_parent`), + CONSTRAINT `fk_category_parent` FOREIGN KEY (`category_parent`) REFERENCES `category` (`category_id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=54 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `category` +-- + +LOCK TABLES `category` WRITE; +/*!40000 ALTER TABLE `category` DISABLE KEYS */; +INSERT INTO `category` VALUES +(32,'3D',4), +(34,'Aquarelle',4), +(5,'Architecture',NULL), +(36,'Architecture d\'Intérieur',5), +(35,'Architecture Moderne',5), +(24,'Backend',2), +(33,'Bande Dessinée',4), +(1,'Design',NULL), +(2,'Développement Web',NULL), +(31,'Digital Art',4), +(30,'Événementiel',3), +(23,'Frontend',2), +(25,'Full-Stack',2), +(4,'Illustration',NULL), +(20,'Logo & Identité Visuelle',1), +(39,'Marketing',NULL), +(46,'Marketing',NULL), +(26,'Mobile',2), +(21,'Motion Design',1), +(38,'Patrimoine',5), +(28,'Paysage',3), +(3,'Photographie',NULL), +(27,'Portrait',3), +(22,'Print Design',1), +(40,'Rédaction',NULL), +(47,'Rédaction',NULL), +(29,'Sport',3), +(19,'UI/UX Design',1), +(37,'Urbanisme',5), +(41,'Vidéo',NULL), +(48,'Vidéo',NULL); +/*!40000 ALTER TABLE `category` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `image` +-- + +DROP TABLE IF EXISTS `image`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `image` ( + `image_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'identifiant unique des images', + `image_name` varchar(150) NOT NULL COMMENT 'Chemin de l''image enregistrée', + `image_alt` varchar(255) DEFAULT NULL COMMENT 'Alt de l''image', + `image_status` varchar(50) NOT NULL DEFAULT 'en_attente' COMMENT 'Statut de modération de l''image', + `image_project` int(10) unsigned DEFAULT NULL COMMENT 'Identifiant du projet où se trouve l''image', + PRIMARY KEY (`image_id`), + KEY `fk_image_project` (`image_project`), + CONSTRAINT `fk_image_project` FOREIGN KEY (`image_project`) REFERENCES `project` (`project_id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `chk_image_status` CHECK (`image_status` in ('en_attente','approuvé','rejeté')) +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `image` +-- + +LOCK TABLES `image` WRITE; +/*!40000 ALTER TABLE `image` DISABLE KEYS */; +INSERT INTO `image` VALUES +(1,'/uploads/projects/ecommerce-01.jpg','Page d\'accueil du site e-commerce refondu','approuvé',1), +(2,'/uploads/projects/ecommerce-02.jpg','Interface mobile du processus de commande','approuvé',1), +(3,'/uploads/projects/taskmanager-01.jpg','Vue kanban de l\'application','approuvé',2), +(4,'/uploads/projects/urban-01.jpg','Architecture moderne à La Défense','en_attente',3); +/*!40000 ALTER TABLE `image` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `project` +-- + +DROP TABLE IF EXISTS `project`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `project` ( + `project_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Identifiant unique du projet', + `project_title` varchar(150) NOT NULL COMMENT 'Titre du projet', + `project_description` text DEFAULT NULL COMMENT 'Description du projet', + `project_thumbnail` varchar(150) DEFAULT NULL COMMENT 'Image miniature du projet', + `project_content` text DEFAULT NULL COMMENT 'Contenu du projet', + `project_creation_date` date NOT NULL COMMENT 'Date de création du projet', + `project_status` varchar(30) NOT NULL DEFAULT 'brouillon' COMMENT 'Statut du projet : brouillon, publié, en_attente', + `project_user` int(10) unsigned DEFAULT NULL COMMENT 'Identifiant de l''user', + `project_category` int(10) unsigned DEFAULT NULL COMMENT 'Identifiant de la catégorie', + + PRIMARY KEY (`project_id`), + KEY `fk_project_user` (`project_user`), + KEY `fk_project_category` (`project_category`), + KEY `idx_project_status` (`project_status`), + KEY `idx_project_creation_date` (`project_creation_date`), + + CONSTRAINT `fk_project_category` + FOREIGN KEY (`project_category`) + REFERENCES `category` (`category_id`) + ON DELETE SET NULL + ON UPDATE CASCADE, + + CONSTRAINT `fk_project_user` + FOREIGN KEY (`project_user`) + REFERENCES `users` (`user_id`) + ON DELETE CASCADE + ON UPDATE CASCADE +) ENGINE=InnoDB +DEFAULT CHARSET=utf8mb4 +COLLATE=utf8mb4_unicode_ci; + +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `project` +-- + +LOCK TABLES `project` WRITE; +/*!40000 ALTER TABLE `project` DISABLE KEYS */; +INSERT INTO `project` VALUES +(1,'Refonte du site e-commerce','Refonte complète de l\'interface utilisateur d\'une boutique en ligne avec focus sur l\'expérience mobile','/uploads/projects/ecommerce-thumb.jpg','Ce projet visait à moderniser entièrement l\'interface d\'un site e-commerce existant. Les principales améliorations incluent une navigation simplifiée, un processus de commande optimisé et une interface responsive.','2025-12-01','publié',1,1), +(2,'Application de gestion de tâches','Développement d\'une application web pour la gestion collaborative de projets','/uploads/projects/taskmanager-thumb.jpg','Application web développée en React et Node.js permettant aux équipes de gérer leurs projets de manière collaborative. Fonctionnalités : kanban, calendrier, notifications en temps réel.','2025-12-15','publié',2,2), +(3,'Série photo urbaine','Collection de photographies capturant l\'architecture moderne de Paris','/uploads/projects/urban-thumb.jpg','Série de 30 photographies prises dans différents quartiers de Paris, mettant en valeur le contraste entre architecture classique et moderne. Travail sur la lumière naturelle et les perspectives.','2026-01-05','en_attente',3,3); +/*!40000 ALTER TABLE `project` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `users` +-- + +DROP TABLE IF EXISTS `users`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `users` ( + `user_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Identifiant unique de l''utilisateur', + `user_name` varchar(100) NOT NULL COMMENT 'Nom de l''utilisateur', + `user_firstname` varchar(100) NOT NULL COMMENT 'Prénom de l''utilisateur', + `user_pseudo` varchar(30) NOT NULL COMMENT 'Pseudo de l''utilisateur', + `user_image` varchar(150) DEFAULT NULL COMMENT 'Photo de profil de l''utilisateur', + `user_mail` varchar(100) NOT NULL COMMENT 'Mail de l''utilisateur', + `user_password` varchar(255) NOT NULL COMMENT 'Mot de passe de l''utilisateur', + `user_phone` varchar(20) DEFAULT NULL COMMENT 'Téléphone de l''utilisateur', + `user_work` varchar(50) DEFAULT NULL COMMENT 'Profession de l''utilisateur', + `user_birth` date DEFAULT NULL COMMENT 'Date de naissance de l''utilisateur', + `user_location` varchar(150) DEFAULT NULL COMMENT 'Localisation de l''utilisateur', + `user_description` varchar(255) DEFAULT NULL COMMENT 'Phrase d''accroche de l''utilisateur', + `user_account_creation` datetime NOT NULL DEFAULT current_timestamp() COMMENT 'Date et heure de création du compte', + `user_status` int(10) unsigned DEFAULT NULL COMMENT 'identifiant de niveau d''autorisation', + PRIMARY KEY (`user_id`), + UNIQUE KEY `uk_user_mail` (`user_mail`), + UNIQUE KEY `uk_user_pseudo` (`user_pseudo`), + KEY `fk_users_authorisation` (`user_status`), + KEY `idx_user_mail` (`user_mail`), + CONSTRAINT `fk_users_authorisation` FOREIGN KEY (`user_status`) REFERENCES `authorisation` (`authorisation_id`) ON DELETE SET NULL ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `users` +-- + +LOCK TABLES `users` WRITE; +/*!40000 ALTER TABLE `users` DISABLE KEYS */; +INSERT INTO `users` VALUES +(1,'Dupont','Marie','marie_design','/uploads/users/marie.jpg','marie.dupont@example.com','$2y$10$T5kWRD3NBqXKWtQqrBG3We1Qpq2Odum0/xYAoT2SaCclG7h2Y0Gvq','0612345678','Designer UI/UX','1995-03-15','Paris, France','Passionnée de design et d\'expérience utilisateur','2024-01-15 10:30:00',1), +(2,'Martin','Thomas','thomas_dev','/uploads/users/thomas.jpg','thomas.martin@example.com','$2y$10$T5kWRD3NBqXKWtQqrBG3We1Qpq2Odum0/xYAoT2SaCclG7h2Y0Gvq','0623456789','Développeur Full-Stack','1992-07-22','Lyon, France','Créateur d\'applications web modernes','2024-02-20 14:45:00',2), +(3,'Dubois','Sophie','sophie_photo','/uploads/users/sophie.jpg','sophie.dubois@example.com','$2y$10$T5kWRD3NBqXKWtQqrBG3We1Qpq2Odum0/xYAoT2SaCclG7h2Y0Gvq','0634567890','Photographe','1998-11-08','Marseille, France','Capturer l\'instant présent est ma passion','2024-03-10 09:15:00',3); +/*!40000 ALTER TABLE `users` ENABLE KEYS */; +UNLOCK TABLES; +/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; + +-- Dump completed on 2026-01-09 17:33:08 diff --git a/models/project_model.php b/models/project_model.php index 04bd1a6..0a72059 100644 --- a/models/project_model.php +++ b/models/project_model.php @@ -24,80 +24,62 @@ user_pseudo AS 'project_creatorname', user_image FROM project - INNER JOIN users ON user_id = project_user_id - WHERE 1=1"; + INNER JOIN users ON user_id = project_user_id"; + + $strRq .= " WHERE project_deleted_at IS NULL"; + + $strAnd = " AND "; + // Recherche par mot clé avec quote pour éviter bug du ' if ($strKeywords != '') { - $strRq .= " AND (project_title LIKE :keywords OR project_content LIKE :keywords)"; - } + + $strSafeKeywords = $this->_db->quote("%" . $strKeywords . "%"); + $strRq .= $strAnd. " (project_title LIKE ".$strSafeKeywords." + OR project_content LIKE ".$strSafeKeywords.") "; + + } + + // Recherche par auteur if ($intAuthor > 0){ - $strRq .= " AND project_user_id = :author"; + $strRq .= $strAnd." user_id = ".$intAuthor; + } + // Recherche par catégorie if ($intCategory > 0){ - $strRq .= " AND project_category = :category"; + $strRq .= $strAnd." project_category = ".$intCategory; } + //recherche par ancienneté if ($boolOlderThan6Months === true) { - $strRq .= " AND project_creation_date <= DATE_SUB(NOW(), INTERVAL 6 MONTH)"; + $strRq .= $strAnd . " project_creation_date <= DATE_SUB(NOW(), INTERVAL 6 MONTH) "; } - + + // Recherche par dates if ($intPeriod == 0){ if ($strDate != ''){ - $strRq .= " AND project_creation_date = :date_exacte"; + $strRq .= $strAnd." project_creation_date = '".$strDate."'"; } - } else { + }else{ if ($strStartDate != '' && $strEndDate != ''){ - $strRq .= " AND project_creation_date BETWEEN :date_debut AND :date_fin"; - } else { + $strRq .= $strAnd." project_creation_date BETWEEN '".$strStartDate."' AND '".$strEndDate."'"; + }else{ if ($strStartDate != ''){ - $strRq .= " AND project_creation_date >= :date_debut"; - } else if ($strEndDate != ''){ - $strRq .= " AND project_creation_date <= :date_fin"; + $strRq .= $strAnd." project_creation_date >= '".$strStartDate."'"; + }else if ($strEndDate != ''){ + $strRq .= $strAnd." project_creation_date <= '".$strEndDate."'"; } } } - + $strRq .= " ORDER BY project_creation_date DESC"; if ($intLimit > 0){ - $strRq .= " LIMIT :limit"; + $strRq .= " LIMIT ".$intLimit; } - $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(); + return $this->_db->query($strRq)->fetchAll(); } @@ -146,7 +128,8 @@ FROM project INNER JOIN users ON users.user_id = project.project_user_id LEFT JOIN category ON category.category_id = project.project_category - WHERE project.project_id = :id"; + WHERE project.project_id = :id + AND project.project_deleted_at IS NULL"; $rqPrep = $this->_db->prepare($strRq); $rqPrep->bindValue(":id", $intId, PDO::PARAM_INT); @@ -191,12 +174,15 @@ * @param int $id l'id du projet * @return bool Est-ce que la requête s'est bien passée */ - public function delete(int $id){ + public function delete_soft_project(int $intId): bool { + $strRq = "UPDATE project + SET project_deleted_at = NOW() + WHERE project_id = :id"; + + $rqPrep = $this->_db->prepare($strRq); + $rqPrep->bindValue(":id", $intId, PDO::PARAM_INT); - $strRq = "DELETE FROM project - WHERE project_id =".$id; - - return $this->_db->query($strRq); + return $rqPrep->execute(); } /** @@ -312,4 +298,5 @@ return $rqPrep->execute(); } + } \ No newline at end of file diff --git a/sfq.txt b/sfq.txt new file mode 100644 index 0000000..e69de29 diff --git a/uploads/profiles/699f20ffe7dcc.webp b/uploads/profiles/699f20ffe7dcc.webp new file mode 100644 index 0000000..cfad533 Binary files /dev/null and b/uploads/profiles/699f20ffe7dcc.webp differ diff --git a/uploads/projects/699f20b493c07.webp b/uploads/projects/699f20b493c07.webp new file mode 100644 index 0000000..d07b20e Binary files /dev/null and b/uploads/projects/699f20b493c07.webp differ diff --git a/uploads/projects/699f20b4a826c_gallery.webp b/uploads/projects/699f20b4a826c_gallery.webp new file mode 100644 index 0000000..76941cd Binary files /dev/null and b/uploads/projects/699f20b4a826c_gallery.webp differ diff --git a/uploads/projects/699f315fe7382.webp b/uploads/projects/699f315fe7382.webp new file mode 100644 index 0000000..8b57651 Binary files /dev/null and b/uploads/projects/699f315fe7382.webp differ diff --git a/uploads/projects/699f316006dea_gallery.webp b/uploads/projects/699f316006dea_gallery.webp new file mode 100644 index 0000000..ab526bb Binary files /dev/null and b/uploads/projects/699f316006dea_gallery.webp differ diff --git a/uploads/projects/699f31601272b_gallery.webp b/uploads/projects/699f31601272b_gallery.webp new file mode 100644 index 0000000..88d37ae Binary files /dev/null and b/uploads/projects/699f31601272b_gallery.webp differ diff --git a/uploads/projects/699f31601d2e5_gallery.webp b/uploads/projects/699f31601d2e5_gallery.webp new file mode 100644 index 0000000..bd69290 Binary files /dev/null and b/uploads/projects/699f31601d2e5_gallery.webp differ diff --git a/uploads/projects/699f31602732d_gallery.webp b/uploads/projects/699f31602732d_gallery.webp new file mode 100644 index 0000000..76941cd Binary files /dev/null and b/uploads/projects/699f31602732d_gallery.webp differ diff --git a/uploads/projects/699f31919901d.webp b/uploads/projects/699f31919901d.webp new file mode 100644 index 0000000..8b57651 Binary files /dev/null and b/uploads/projects/699f31919901d.webp differ diff --git a/uploads/projects/699f32e7df968.webp b/uploads/projects/699f32e7df968.webp new file mode 100644 index 0000000..8b57651 Binary files /dev/null and b/uploads/projects/699f32e7df968.webp differ diff --git a/views/_partial/preview.tpl b/views/_partial/preview.tpl index 3cb89fb..8aceddd 100644 --- a/views/_partial/preview.tpl +++ b/views/_partial/preview.tpl @@ -74,8 +74,10 @@ href="?ctrl=project&action=refuse&id={$objProject->getId()}" name="toRefused">Refuser Supprimer + href="index.php?ctrl=project&action=delete&id={$objProject->getId()}" + name="toDelete" + onclick="return confirm('Attention ! Êtes-vous sûr de vouloir supprimer ce projet ? Cette action est irréversible.');"> + Supprimer {elseif $objProject->getStatus() == "refusé"} diff --git a/views/inscription.tpl b/views/inscription.tpl new file mode 100644 index 0000000..7b82e77 --- /dev/null +++ b/views/inscription.tpl @@ -0,0 +1,197 @@ +{extends file="views/layout.tpl"} + +{block name="content"} + + + + + + + + + + + + + + Inscription + + + + Créez votre compte utilisateur. + + {if (isset($arrError) && count($arrError) > 0) } + + {foreach $arrError as $strError} + {$strError} + {/foreach} + + {/if} + + + + + + + + + + Prénom * + + + + + + + + Nom * + + + + + + + + Pseudo * + + + @ + + + + + + + + Adresse e-mail * + + + + + + + + Mot de passe * + + + + + + + Confirmer le Mot de passe * + + + + + + + + Téléphone + + + + + + + + Profession + + + + + + + + Localisation + + + + + + + + Phrase d'accroche + + + + + + + + Créer mon compte + + + + + + + Déjà un compte ? + Se connecter + + + + + + + + + + + + +{/block} \ No newline at end of file
+ Créez votre compte utilisateur. +
{$strError}