diff --git a/assets/html/post_new.html b/assets/html/post_new.html index 70a64b0..8bc620b 100644 --- a/assets/html/post_new.html +++ b/assets/html/post_new.html @@ -25,6 +25,9 @@

+ diff --git a/assets/js/script.js b/assets/js/script.js index dd93587..8c67403 100644 --- a/assets/js/script.js +++ b/assets/js/script.js @@ -41,15 +41,18 @@ var addTag = (element) => { var addingTag = (element) => { var input = document.createElement("input"); - var uuid = Math.floor(Math.random() * Math.floor(10000)); + var uuid = Math.floor(Math.random() * Math.floor(-1000000)); + var addtag = element.target.parentElement.querySelector(".add-tag"); input.setAttribute("type", "checkbox"); input.setAttribute("id", uuid); + input.setAttribute("data-text", addTag.value); var label = document.createElement("label"); label.setAttribute("for", uuid); - var addtag = element.target.parentElement.querySelector(".add-tag"); label.innerText = addtag.value; + input.setAttribute("data-text", label.innerText); + element.target.parentElement.insertBefore(input, element.target); element.target.parentElement.insertBefore(label, element.target); @@ -62,3 +65,28 @@ var addingTag = (element) => { } document.querySelector(".addTag").addEventListener("click", addTag); + + +var submit = (el) => { + + var major = document.querySelector('.post.text > textarea'); + var title = document.querySelector("h2.title > input"); + var category = document.querySelector("span.cat > select"); + var tags = document.querySelectorAll("input[type='checkbox']:checked"); + console.log(title.value); + console.log(category.value); + console.log(major.value); + console.log(tags); + var tglst = ""; + tags.forEach(element => { + tglst += "," + element.getAttribute("id") + (element.hasAttribute("data-text") ? ":" + element.getAttribute("data-text") : ""); + }); + tglst = tglst.substr(1); + + window.location.search = "title="+ title.value +"&category=" + category.value + "&content=" + major.value + "&tags=" + tglst; + + //?title=$title&category=$category&content=$major& + +} + +document.querySelector(".submitPost").addEventListener("click", submit); diff --git a/assets/php/Controller/HomeController.php b/assets/php/Controller/HomeController.php index 70cebcd..2181877 100644 --- a/assets/php/Controller/HomeController.php +++ b/assets/php/Controller/HomeController.php @@ -3,6 +3,8 @@ namespace App\Controller; use App\Controller; +use App\DB\Post; +use App\DB\Tag; class HomeController extends Controller { @@ -18,6 +20,34 @@ class HomeController extends Controller { * @route /^\/post\/new\/*$/ */ public function postAdd() { + + // var_dump($_SESSION["author"]); + // die; + + if(isset($_GET["title"]) && isset($_GET["category"]) && isset($_GET["content"]) && isset($_GET["tags"])) { + $post = new Post(); + + $post->setTitle($_GET["title"]); + $post->setContent($_GET["content"]); + $post->setCategory($_GET["category"]); + // $post->setAuthor(); + $tags = explode(",", $_GET["tags"]); + $tgs = array(); + foreach ($tags as $tag) { + $new_tag = explode(":", $tag); + if(count($new_tag) > 1) { + $t = new Tag(); + $t->setName($new_tag[1]); + $tgs[] = Tag::add($t)->getId(); + } else { + $tgs[] = $tag; + } + } + $post->setTags($tgs); + $post->setAuthor($_SESSION["author"]->getId()); + Post::add($post); + } + return file_get_contents(DIR."/html/post_new.html"); } diff --git a/assets/php/Tags/Editor.php b/assets/php/Tags/Editor.php index d2d40f2..0ad4f20 100644 --- a/assets/php/Tags/Editor.php +++ b/assets/php/Tags/Editor.php @@ -20,7 +20,7 @@ class Editor extends \App\Tags\Tag { case 'categories': $option = $doc->createElement("option"); $text = $doc->createTextNode("Categorie"); - $option->setAttribute("value", "-1"); + $option->setAttribute("value", "0"); $option->setAttribute("disabled", "true"); $option->setAttribute("selected", "selected"); $option->appendChild($text); diff --git a/assets/php/db/Author.php b/assets/php/db/Author.php index 734d08e..efca6c9 100644 --- a/assets/php/db/Author.php +++ b/assets/php/db/Author.php @@ -70,7 +70,7 @@ class Author { public static function list($recent = true, $limit = 100) { $sort = $recent ? "DESC" : "ASC"; - $query = "SELECT * FROM author ORDER BY " . $sort . " LIMIT " . $limit; + $query = "SELECT * FROM users ORDER BY id " . $sort . " LIMIT " . $limit; $pdo = Functions::connect(); $cats = $pdo->query($query)->fetchAll(); diff --git a/assets/php/db/Post.php b/assets/php/db/Post.php index 7e46c6c..537e571 100644 --- a/assets/php/db/Post.php +++ b/assets/php/db/Post.php @@ -3,6 +3,8 @@ namespace App\DB; use App\Functions; +use DateTime; +use PDO; class Post { @@ -11,12 +13,8 @@ class Post { private $title; - private $url; - private $content; - private $short; - private $category; private $author; @@ -34,19 +32,10 @@ class Post { $this->title = $title; } - - public function setUrl($url) { - $this->url = $url; - } - public function setContent($content) { $this->content = $content; } - public function setShort($short) { - $this->short = $short; - } - public function setCategory($category) { $this->category = $category; } @@ -75,18 +64,10 @@ class Post { return $this->title; } - public function getUrl() { - return $this->url; - } - public function getContent() { return $this->content; } - public function getShort() { - return $this->short; - } - public function getCategory() { return Category::get($this->category); } @@ -135,9 +116,7 @@ class Post { $post = new Post(); $post->setId($array["id"]); $post->setTitle($array["title"]); - $post->setUrl($array["url"]); $post->setContent($array["content"]); - $post->setShort($array["short"]); if(isset($array["category"])) $post->setCategory($array["category"]); $post->setAuthor($array["author"]); $post->setDateTime($array["dt"]); @@ -240,19 +219,33 @@ class Post { * */ public static function add(Post $post) { - $query = "INSERT INTO posts (id, title, url, content, short, categorie, author, dt) - VALUES (NULL, ':title', ':url', ':content', ':short', ':categorie', ':author', ':dt');"; + $query = "INSERT INTO posts (id, title, content, categorie, author, dt) + VALUES (NULL, ':title', ':content', ':category', ':author', ':dt');"; + + $title = $post->getTitle()); + $content = $post->getContent()); + $category = $post->getCategory()->getId(), PDO::PARAM_INT); + $author = $post->getAuthor()->getId(), PDO::PARAM_INT); + $dt = (new DateTime())->format("d/m/Y h:i:s")); + $pdo = Functions::connect(); $prepared = $pdo->prepare($query); $prepared->bindParam(":title", $post->getTitle()); - $prepared->bindParam(":url", $post->getUrl()); $prepared->bindParam(":content", $post->getContent()); - $prepared->bindParam(":short", $post->getShort()); - $prepared->bindParam(":categorie", $post->getCategory()); - $prepared->bindParam(":author", $post->getAuthor()); - $prepared->bindParam(":dt", $post->getDateTime()); - $prepared->execute(); + $prepared->bindParam(":category", $post->getCategory()->getId(), PDO::PARAM_INT); + $prepared->bindParam(":author", $post->getAuthor()->getId(), PDO::PARAM_INT); + $prepared->bindParam(":dt", (new DateTime())->format("d/m/Y h:i:s")); + + var_dump($prepared->execute(array( + ":title" => $post->getTitle(), + ":content" => $post->getContent(), + ":category" => $post->getCategory()->getId(), + ":author" => $post->getAuthor()->getId(), + ":dt" => (new DateTime())->format("d/m/Y h:i:s"), + ))); + var_dump("t"); + } @@ -279,11 +272,9 @@ class Post { * */ public static function update(Post $post) { - Functions::connect()->prepare("UPDATE posts SET title=':title', url=':url', content=':content', short=':short', category=':category', author=':author', dt=':dt' WHERE id=:id")->execute(array( + Functions::connect()->prepare("UPDATE posts SET title=':title', content=':content', category=':category', author=':author', dt=':dt' WHERE id=:id")->execute(array( ":title" => $post->getTitle(), - ":url" => $post->getUrl(), ":content" => $post->getContent(), - ":short" => $post->getShort(), ":categorie" => $post->getCategorie(), ":author" => $post->getAuthor(), ":dt" => $post->getDt(), diff --git a/assets/php/db/Tag.php b/assets/php/db/Tag.php index 00e566a..777d53b 100644 --- a/assets/php/db/Tag.php +++ b/assets/php/db/Tag.php @@ -49,14 +49,24 @@ class Tag { return Tag::fromArray(Functions::connect()->query("SELECT * FROM tag WHERE id=" . $id)->fetch()); } + /** + * Undocumented function + * + * @param Tag $tag + * + * @return Tag + */ public static function add(Tag $tag) { $query = "INSERT INTO tag (id, name) - VALUES (NULL, ':name');"; + VALUES (NULL, :name);"; + + // var_dump($tag); $pdo = Functions::connect(); $prepared = $pdo->prepare($query); - $prepared->bindParam(":name", $tag->getName()); - $prepared->execute(); + $prepared->execute(array(":name" => $tag->getName())); + + return Tag::list(true, 1)[0]; } public static function remove(Tag $tag) { diff --git a/assets/php/handler.php b/assets/php/handler.php index b41aa0c..b7ab599 100644 --- a/assets/php/handler.php +++ b/assets/php/handler.php @@ -4,6 +4,9 @@ use App\Router; use App\Functions; use App\Tags\Tag; use App\Controller; +use App\DB\Author; + +session_start(); error_reporting(E_ALL); ini_set('display_errors', 'On'); @@ -11,6 +14,8 @@ ini_set('display_errors', 'On'); /** @var Composer\Autoload\ClassLoader $loader */ $loader = require "../../vendor/autoload.php"; +$_SESSION["author"] = Author::list(true, 1)[0]; + define("DIR", str_replace("/php", "", __DIR__)); //renvoie vers le fichier css si il est demandé