Loading index.php +4 −0 Original line number Diff line number Diff line <?php // session pour quand on est admin session_start(); // le gros gros controlleur (peut-être le casser en plusieurs morceaux plus tard) require_once("site/controller/mainController.php"); // afficher le contenu (qui va switcher sur le contenu dynamique à afficher) require_once("site/layout/layout.php"); ?> No newline at end of file site/controller/mainController.php +41 −19 Original line number Diff line number Diff line <?php // fichier de config pour la bdd & le compte pour la partie administrateur require_once("site/model/config.php"); // connexion à la base de données require_once("site/model/Base.php"); // classe pour l'administration du contenu du site require_once("site/model/AdminManager.php"); // classe pour la gesion des billets de blog require_once("site/model/BlogManager.php"); // classe pour la gestion des projets require_once("site/model/ProjectsManager.php"); // récupérer le nom de la page en fonction de l'url // premier texte = affiché dans l'onglet (title), second texte = voir le switch dans site/layout/layout.php function getPageName(){ // si on a une url personnalisée if(isset($_GET['action'])){ switch ($_GET['action']) { case 'contact': case 'contact': // contact return ["Contact", "contact"]; break; case 'about': case 'about': // à propos return ["À Propos", "about"]; break; case 'projects': case 'projects': // projets return ["Projets", "projects"]; break; case 'project': case 'project': // projet return ["Projet", "project"]; break; case 'changelog': case 'changelog': // historique des versions return ["Changelog", "changelog"]; break; case 'eplucher': case 'eplucher': // déconnexion (la première valeur n'est jamais utilisée) return ["COUCOU AHAH", "eplucher"]; break; case 'rss': case 'rss': // rss return ["Rss", "rss"]; break; case '404': case '404': // page not found return ["Erreur 404 - File not found", "404"]; break; case 'article': case 'article': // billet de blog return [$_GET['title'], $_GET['title']]; break; case 'patate': case 'patate': // administration return ["Administration", "administration"]; break; default: default: // si l'argument n'est pas compris on affiche le blog return ["Blog", "blog"]; break; } } // si on est sur l'accueil du site else{ return ["Blog", "blog"]; } } // affiche le menu du site (avec le titre de la page) function writeMenu($pageName){ ?> <ul id="listMenu"> Loading @@ -60,40 +74,46 @@ function writeMenu($pageName){ </ul> <?php } // affiche la page du blog function writeBlogPage($pageName){ // si on n'accède pas au fichier mais bien au site (var définie) if($pageName[1] == "blog"){ $blog = new BlogManager(); $blog = new BlogManager(NULL, NULL, NULL, NULL, NULL, NULL); // on a un blogmanager // si on affiche un post en particulier if(isset($_GET['title'])){ $title = urldecode($_GET['title']); $blogpost = $blog->getBlogPost($title); $blogpost = $blog->get($title); if($blogpost != false) require("site/view/public/blogPostView.php"); else header("Location:/404"); } // si on affiche la liste des posts else{ $blogposts = $blog->getBlog(0); $blogposts = $blog->getPage(0); require("site/view/public/blogView.php"); } } } // affiche la liste des projets function writeProjectsPage($pageName){ $projects = new ProjectManager(); $projects = new ProjectManager(NULL, NULL, NULL, NULL, NULL); $projects = $projects->getProjects(); require("site/view/public/projectsView.php"); } // affiche un projet en particulier function writeProjectPage($pageName){ $project = new ProjectManager(); $project = new ProjectManager(NULL, NULL, NULL, NULL, NULL); if(isset($_GET['title'])){ $title = urldecode($_GET['title']); $project = $project->getProject($title); $project = $project->get($title); if($project != false){ $project['pageProject'] = true; require("site/view/public/projectView.php"); Loading @@ -106,6 +126,7 @@ function writeProjectPage($pageName){ require("site/view/public/projectsView.php"); } // tente de connecter l'administrateur function loginAdminPage($pageName){ if(password_verify($_POST['pass'], pass) && $_POST['user'] == user){ $_SESSION['user'] = $_POST['user']; Loading @@ -116,7 +137,7 @@ function loginAdminPage($pageName){ header("Location:/patate"); } // afficher le panneau d'administration & gère l'administration du site function writeAdminPage($pageName){ $admin = new AdminManager(); if($admin->verifyAdminConnect()){ Loading Loading @@ -184,10 +205,11 @@ function writeAdminPage($pageName){ require("site/view/private/loginFormView.php"); } // déconnexion de la partie administration function decoAdminPage(){ $_SESSION = array(); header("Location:/"); } // on récupère le nom de la page ici (avant d'inclure le layout) $pageName = getPageName(); No newline at end of file site/layout/layout.php +28 −27 Original line number Diff line number Diff line Loading @@ -4,10 +4,10 @@ <meta charset="utf-8" /> <meta name="description" content="Site perso de Corentin Bettiol." /> <meta name="viewport" content="width=device-width" /> <title>l3m website - <?php echo $pageName[0]; ?></title> <title>l3m website - <?php echo $pageName[0]; // voir getPageName() dans mainController ?></title> <link rel="stylesheet" href="/css/design.css" /> <?php if($pageName[1] == 404){ ?> if($pageName[1] == 404){ // le css pour la page 404 ?> <link rel="stylesheet" href="/css/404.css" /> <?php } ?> <link rel="icon" type="image/png" href="img/icon.png" /> Loading @@ -29,49 +29,50 @@ --><h1 id="title">l3m website</h1> </header> <nav id="menu"> <?php writeMenu($pageName[0]); ?> <?php writeMenu($pageName[0]); // voir mainController ?> </nav> </header> <?php switch ($pageName[1]) { case 'blog': writeBlogPage($pageName); <?php // le gros switch qui fait peur switch ($pageName[1]){ case 'blog': // blog writeBlogPage($pageName); // voir mainController break; case 'about': require("site/view/public/about.php"); case 'about': // à propos require("site/view/public/about.php"); // statique break; case 'projects': writeProjectsPage($pageName); case 'projects': // projets writeProjectsPage($pageName); // voir mainController break; case 'project': writeProjectPage($pageName); case 'project': // projet en particulier writeProjectPage($pageName); // voir mainController break; case 'eplucher': decoAdminPage(); case 'contact': require("site/view/public/contact.php"); case 'eplucher': // déconnexion du panneau d'administration decoAdminPage(); // voir mainController case 'contact': // contact require("site/view/public/contact.php"); // statique break; case 'changelog': require("site/view/public/changelog.php"); case 'changelog': // historique de développement require("site/view/public/changelog.php"); // statique break; case 'rss': require("site/view/public/rss.php"); case 'rss': // rss require("site/view/public/rss.php"); // todo break; case '404': require("site/view/public/404.php"); case '404': // page not found require("site/view/public/404.php"); // statique break; case 'administration': case 'administration': // panneau d'administration (url = patate) // si on envoie les données en post if(isset($_POST['user']) && isset($_POST['pass'])){ loginAdminPage($pageName); } // afficher le login screen else{ writeAdminPage($pageName); } break; case 'eplucher': decoAdminPage(); break; default: default: // page non connue (n'est pas senser arriver) header('Location:/404'); break; } ?> Loading site/model/AdminManager.php +16 −115 Original line number Diff line number Diff line Loading @@ -17,14 +17,14 @@ class AdminManager extends Base public function getBlogPost($link) { $blogpost = new BlogManager(); return $blogpost->getBlogPost($link); $blogpost = new BlogManager(NULL, NULL, NULL, NULL, NULL, NULL); // moche :c return $blogpost->get($link); } public function getProject($link) { $project = new ProjectManager(); return $project->getProject($link); $project = new ProjectManager(NULL,NULL,NULL,NULL,NULL); // moche :c return $project->get($link); } Loading @@ -33,133 +33,34 @@ class AdminManager extends Base } public function updateBlogPost(){ $time = htmlspecialchars($_POST['time']); $title = htmlspecialchars($_POST['title']); $content = htmlspecialchars($_POST['content']); $shortContent = htmlspecialchars($_POST['shortContent']); $comments = 0; if($_POST['comments'] == "on") $comments = 1; $id = htmlspecialchars($_POST['id']); $db = $this->dbConnect(); $req = $db->prepare('UPDATE l3m_blog SET time = :time, title = :title, content = :content, shortContent = :shortContent, comments = :comments WHERE id = :id'); $req->execute(array( 'time' => $time, 'title' => $title, 'content' => $content, 'shortContent' => $shortContent, 'comments' => $comments, 'id' => $id )); $blog = new BlogManager($_POST['time'], $_POST['title'], $_POST['content'], $_POST['shortContent'], $_POST['comments'], $_POST['id']); $blog->update(); } public function updateProject(){ $name = htmlspecialchars($_POST['name']); $link = htmlspecialchars($_POST['link']); $content = htmlspecialchars($_POST['content']); $shortContent = htmlspecialchars($_POST['shortContent']); $id = htmlspecialchars($_POST['id']); $db = $this->dbConnect(); $req = $db->prepare('UPDATE l3m_projects SET name = :name, link = :link, content = :content, shortContent = :shortContent WHERE id = :id'); $req->execute(array( 'name' => $name, 'link' => $link, 'content' => $content, 'shortContent' => $shortContent, 'id' => $id )); $project = new ProjectManager($_POST['name'], $_POST['link'], $_POST['content'], $_POST['shortContent'], $_POST['id']); $project->update(); } public function sendBlogPost(){ $time = htmlspecialchars($_POST['time']); if($time == ""){ $time = new datetime(); $time = $time->format('Y-m-d H:i:s'); } $title = htmlspecialchars($_POST['title']); if(strlen($title) < 1){ header("Location:/patate"); exit(); } $content = htmlspecialchars($_POST['content']); $shortContent = htmlspecialchars($_POST['shortContent']); if(strlen($shortContent) < 1){ $shortContent = "Ce billet de blog ne dispose d'aucune description."; } $comments = 0; if($_POST['comments'] == "on") $comments = 1; $db = $this->dbConnect(); $req = $db->prepare('INSERT INTO l3m_blog(time, title, content, shortcontent, comments) VALUES(:time, :title, :content, :shortContent, :comments)'); $req->execute(array( 'time' => $time, 'title' => $title, 'content' => $content, 'shortContent' => $shortContent, 'comments' => $comments )); $blog = new BlogManager($_POST['time'], $_POST['title'], $_POST['content'], $_POST['shortContent'], $_POST['comments'], $_POST['id']); $blog->send(); } public function sendProject(){ $name = htmlspecialchars($_POST['name']); if(strlen($name) < 1){ header("Location:/patate"); exit(); } $link = htmlspecialchars($_POST['link']); $content = htmlspecialchars($_POST['content']); $shortContent = htmlspecialchars($_POST['shortContent']); if(strlen($shortContent) < 1){ $shortContent = "Pas de description."; } $id = htmlspecialchars($_POST['id']); $db = $this->dbConnect(); $req = $db->prepare('INSERT INTO l3m_projects(name, link, content, shortcontent) VALUES(:name, :link, :content, :shortContent)'); $req->execute(array( 'name' => $name, 'link' => $link, 'content' => $content, 'shortContent' => $shortContent )); $project = new ProjectManager($_POST['name'], $_POST['link'], $_POST['content'], $_POST['shortContent'], $_POST['id']); $project->sendProject(); } public function deleteBlogPost($link){ $title = str_replace("-", " ", $link); $db = $this->dbConnect(); $req = $db->prepare('DELETE FROM l3m_blog WHERE title = :title'); $req->execute(array( 'title' => $title )); $blog = new BlogManager(NULL, NULL, NULL, NULL, NULL, NULL); $blog->deleteBlogPost($link); } public function deleteProject($link){ $name = str_replace("-", " ", $link); $db = $this->dbConnect(); $req = $db->prepare('DELETE FROM l3m_projects WHERE name = :name'); $req->execute(array( 'name' => $name )); $project = new ProjectManager(NULL, NULL, NULL, NULL, NULL); $project->deleteProject($link); } } No newline at end of file site/model/Base.php +1 −0 Original line number Diff line number Diff line <?php // connexion à la bdd class Base { protected function dbConnect() Loading Loading
index.php +4 −0 Original line number Diff line number Diff line <?php // session pour quand on est admin session_start(); // le gros gros controlleur (peut-être le casser en plusieurs morceaux plus tard) require_once("site/controller/mainController.php"); // afficher le contenu (qui va switcher sur le contenu dynamique à afficher) require_once("site/layout/layout.php"); ?> No newline at end of file
site/controller/mainController.php +41 −19 Original line number Diff line number Diff line <?php // fichier de config pour la bdd & le compte pour la partie administrateur require_once("site/model/config.php"); // connexion à la base de données require_once("site/model/Base.php"); // classe pour l'administration du contenu du site require_once("site/model/AdminManager.php"); // classe pour la gesion des billets de blog require_once("site/model/BlogManager.php"); // classe pour la gestion des projets require_once("site/model/ProjectsManager.php"); // récupérer le nom de la page en fonction de l'url // premier texte = affiché dans l'onglet (title), second texte = voir le switch dans site/layout/layout.php function getPageName(){ // si on a une url personnalisée if(isset($_GET['action'])){ switch ($_GET['action']) { case 'contact': case 'contact': // contact return ["Contact", "contact"]; break; case 'about': case 'about': // à propos return ["À Propos", "about"]; break; case 'projects': case 'projects': // projets return ["Projets", "projects"]; break; case 'project': case 'project': // projet return ["Projet", "project"]; break; case 'changelog': case 'changelog': // historique des versions return ["Changelog", "changelog"]; break; case 'eplucher': case 'eplucher': // déconnexion (la première valeur n'est jamais utilisée) return ["COUCOU AHAH", "eplucher"]; break; case 'rss': case 'rss': // rss return ["Rss", "rss"]; break; case '404': case '404': // page not found return ["Erreur 404 - File not found", "404"]; break; case 'article': case 'article': // billet de blog return [$_GET['title'], $_GET['title']]; break; case 'patate': case 'patate': // administration return ["Administration", "administration"]; break; default: default: // si l'argument n'est pas compris on affiche le blog return ["Blog", "blog"]; break; } } // si on est sur l'accueil du site else{ return ["Blog", "blog"]; } } // affiche le menu du site (avec le titre de la page) function writeMenu($pageName){ ?> <ul id="listMenu"> Loading @@ -60,40 +74,46 @@ function writeMenu($pageName){ </ul> <?php } // affiche la page du blog function writeBlogPage($pageName){ // si on n'accède pas au fichier mais bien au site (var définie) if($pageName[1] == "blog"){ $blog = new BlogManager(); $blog = new BlogManager(NULL, NULL, NULL, NULL, NULL, NULL); // on a un blogmanager // si on affiche un post en particulier if(isset($_GET['title'])){ $title = urldecode($_GET['title']); $blogpost = $blog->getBlogPost($title); $blogpost = $blog->get($title); if($blogpost != false) require("site/view/public/blogPostView.php"); else header("Location:/404"); } // si on affiche la liste des posts else{ $blogposts = $blog->getBlog(0); $blogposts = $blog->getPage(0); require("site/view/public/blogView.php"); } } } // affiche la liste des projets function writeProjectsPage($pageName){ $projects = new ProjectManager(); $projects = new ProjectManager(NULL, NULL, NULL, NULL, NULL); $projects = $projects->getProjects(); require("site/view/public/projectsView.php"); } // affiche un projet en particulier function writeProjectPage($pageName){ $project = new ProjectManager(); $project = new ProjectManager(NULL, NULL, NULL, NULL, NULL); if(isset($_GET['title'])){ $title = urldecode($_GET['title']); $project = $project->getProject($title); $project = $project->get($title); if($project != false){ $project['pageProject'] = true; require("site/view/public/projectView.php"); Loading @@ -106,6 +126,7 @@ function writeProjectPage($pageName){ require("site/view/public/projectsView.php"); } // tente de connecter l'administrateur function loginAdminPage($pageName){ if(password_verify($_POST['pass'], pass) && $_POST['user'] == user){ $_SESSION['user'] = $_POST['user']; Loading @@ -116,7 +137,7 @@ function loginAdminPage($pageName){ header("Location:/patate"); } // afficher le panneau d'administration & gère l'administration du site function writeAdminPage($pageName){ $admin = new AdminManager(); if($admin->verifyAdminConnect()){ Loading Loading @@ -184,10 +205,11 @@ function writeAdminPage($pageName){ require("site/view/private/loginFormView.php"); } // déconnexion de la partie administration function decoAdminPage(){ $_SESSION = array(); header("Location:/"); } // on récupère le nom de la page ici (avant d'inclure le layout) $pageName = getPageName(); No newline at end of file
site/layout/layout.php +28 −27 Original line number Diff line number Diff line Loading @@ -4,10 +4,10 @@ <meta charset="utf-8" /> <meta name="description" content="Site perso de Corentin Bettiol." /> <meta name="viewport" content="width=device-width" /> <title>l3m website - <?php echo $pageName[0]; ?></title> <title>l3m website - <?php echo $pageName[0]; // voir getPageName() dans mainController ?></title> <link rel="stylesheet" href="/css/design.css" /> <?php if($pageName[1] == 404){ ?> if($pageName[1] == 404){ // le css pour la page 404 ?> <link rel="stylesheet" href="/css/404.css" /> <?php } ?> <link rel="icon" type="image/png" href="img/icon.png" /> Loading @@ -29,49 +29,50 @@ --><h1 id="title">l3m website</h1> </header> <nav id="menu"> <?php writeMenu($pageName[0]); ?> <?php writeMenu($pageName[0]); // voir mainController ?> </nav> </header> <?php switch ($pageName[1]) { case 'blog': writeBlogPage($pageName); <?php // le gros switch qui fait peur switch ($pageName[1]){ case 'blog': // blog writeBlogPage($pageName); // voir mainController break; case 'about': require("site/view/public/about.php"); case 'about': // à propos require("site/view/public/about.php"); // statique break; case 'projects': writeProjectsPage($pageName); case 'projects': // projets writeProjectsPage($pageName); // voir mainController break; case 'project': writeProjectPage($pageName); case 'project': // projet en particulier writeProjectPage($pageName); // voir mainController break; case 'eplucher': decoAdminPage(); case 'contact': require("site/view/public/contact.php"); case 'eplucher': // déconnexion du panneau d'administration decoAdminPage(); // voir mainController case 'contact': // contact require("site/view/public/contact.php"); // statique break; case 'changelog': require("site/view/public/changelog.php"); case 'changelog': // historique de développement require("site/view/public/changelog.php"); // statique break; case 'rss': require("site/view/public/rss.php"); case 'rss': // rss require("site/view/public/rss.php"); // todo break; case '404': require("site/view/public/404.php"); case '404': // page not found require("site/view/public/404.php"); // statique break; case 'administration': case 'administration': // panneau d'administration (url = patate) // si on envoie les données en post if(isset($_POST['user']) && isset($_POST['pass'])){ loginAdminPage($pageName); } // afficher le login screen else{ writeAdminPage($pageName); } break; case 'eplucher': decoAdminPage(); break; default: default: // page non connue (n'est pas senser arriver) header('Location:/404'); break; } ?> Loading
site/model/AdminManager.php +16 −115 Original line number Diff line number Diff line Loading @@ -17,14 +17,14 @@ class AdminManager extends Base public function getBlogPost($link) { $blogpost = new BlogManager(); return $blogpost->getBlogPost($link); $blogpost = new BlogManager(NULL, NULL, NULL, NULL, NULL, NULL); // moche :c return $blogpost->get($link); } public function getProject($link) { $project = new ProjectManager(); return $project->getProject($link); $project = new ProjectManager(NULL,NULL,NULL,NULL,NULL); // moche :c return $project->get($link); } Loading @@ -33,133 +33,34 @@ class AdminManager extends Base } public function updateBlogPost(){ $time = htmlspecialchars($_POST['time']); $title = htmlspecialchars($_POST['title']); $content = htmlspecialchars($_POST['content']); $shortContent = htmlspecialchars($_POST['shortContent']); $comments = 0; if($_POST['comments'] == "on") $comments = 1; $id = htmlspecialchars($_POST['id']); $db = $this->dbConnect(); $req = $db->prepare('UPDATE l3m_blog SET time = :time, title = :title, content = :content, shortContent = :shortContent, comments = :comments WHERE id = :id'); $req->execute(array( 'time' => $time, 'title' => $title, 'content' => $content, 'shortContent' => $shortContent, 'comments' => $comments, 'id' => $id )); $blog = new BlogManager($_POST['time'], $_POST['title'], $_POST['content'], $_POST['shortContent'], $_POST['comments'], $_POST['id']); $blog->update(); } public function updateProject(){ $name = htmlspecialchars($_POST['name']); $link = htmlspecialchars($_POST['link']); $content = htmlspecialchars($_POST['content']); $shortContent = htmlspecialchars($_POST['shortContent']); $id = htmlspecialchars($_POST['id']); $db = $this->dbConnect(); $req = $db->prepare('UPDATE l3m_projects SET name = :name, link = :link, content = :content, shortContent = :shortContent WHERE id = :id'); $req->execute(array( 'name' => $name, 'link' => $link, 'content' => $content, 'shortContent' => $shortContent, 'id' => $id )); $project = new ProjectManager($_POST['name'], $_POST['link'], $_POST['content'], $_POST['shortContent'], $_POST['id']); $project->update(); } public function sendBlogPost(){ $time = htmlspecialchars($_POST['time']); if($time == ""){ $time = new datetime(); $time = $time->format('Y-m-d H:i:s'); } $title = htmlspecialchars($_POST['title']); if(strlen($title) < 1){ header("Location:/patate"); exit(); } $content = htmlspecialchars($_POST['content']); $shortContent = htmlspecialchars($_POST['shortContent']); if(strlen($shortContent) < 1){ $shortContent = "Ce billet de blog ne dispose d'aucune description."; } $comments = 0; if($_POST['comments'] == "on") $comments = 1; $db = $this->dbConnect(); $req = $db->prepare('INSERT INTO l3m_blog(time, title, content, shortcontent, comments) VALUES(:time, :title, :content, :shortContent, :comments)'); $req->execute(array( 'time' => $time, 'title' => $title, 'content' => $content, 'shortContent' => $shortContent, 'comments' => $comments )); $blog = new BlogManager($_POST['time'], $_POST['title'], $_POST['content'], $_POST['shortContent'], $_POST['comments'], $_POST['id']); $blog->send(); } public function sendProject(){ $name = htmlspecialchars($_POST['name']); if(strlen($name) < 1){ header("Location:/patate"); exit(); } $link = htmlspecialchars($_POST['link']); $content = htmlspecialchars($_POST['content']); $shortContent = htmlspecialchars($_POST['shortContent']); if(strlen($shortContent) < 1){ $shortContent = "Pas de description."; } $id = htmlspecialchars($_POST['id']); $db = $this->dbConnect(); $req = $db->prepare('INSERT INTO l3m_projects(name, link, content, shortcontent) VALUES(:name, :link, :content, :shortContent)'); $req->execute(array( 'name' => $name, 'link' => $link, 'content' => $content, 'shortContent' => $shortContent )); $project = new ProjectManager($_POST['name'], $_POST['link'], $_POST['content'], $_POST['shortContent'], $_POST['id']); $project->sendProject(); } public function deleteBlogPost($link){ $title = str_replace("-", " ", $link); $db = $this->dbConnect(); $req = $db->prepare('DELETE FROM l3m_blog WHERE title = :title'); $req->execute(array( 'title' => $title )); $blog = new BlogManager(NULL, NULL, NULL, NULL, NULL, NULL); $blog->deleteBlogPost($link); } public function deleteProject($link){ $name = str_replace("-", " ", $link); $db = $this->dbConnect(); $req = $db->prepare('DELETE FROM l3m_projects WHERE name = :name'); $req->execute(array( 'name' => $name )); $project = new ProjectManager(NULL, NULL, NULL, NULL, NULL); $project->deleteProject($link); } } No newline at end of file
site/model/Base.php +1 −0 Original line number Diff line number Diff line <?php // connexion à la bdd class Base { protected function dbConnect() Loading