diff --git a/composer.json b/composer.json index 1c75063..7537df6 100644 --- a/composer.json +++ b/composer.json @@ -14,6 +14,7 @@ "slim/slim": "^4.10", "rbdwllr/psr-jwt": "^2.0", "tuupola/slim-jwt-auth": "^3.6", - "ext-dom": "*" + "ext-dom": "*", + "ext-libxml": "*" } } diff --git a/dist/api/blog/blogData.php b/dist/api/blog/blogData.php index 358b288..e0eb5cd 100644 --- a/dist/api/blog/blogData.php +++ b/dist/api/blog/blogData.php @@ -145,10 +145,18 @@ class blogData public function createPost(string $title, string $body, string $dateCreated, string $featured, string $categories, UploadedFileInterface $headerImg): int|string { $conn = dbConn(); - $targetDir = "../blog/imgs/" . $title . "_" . uniqid() . "/"; - mkdir($targetDir, 0777, true); - $imagUtils = new imgUtils(); - $targetFile = $imagUtils->uploadFile($targetDir, $headerImg); + $targetFile = ""; + $folderID = uniqid(); + if ($headerImg !== null) + { + $targetDir = "../blog/imgs/" . $title . "_" . $folderID . "/"; + mkdir($targetDir, 0777, true); + $imagUtils = new imgUtils(); + $targetFile = $imagUtils->uploadFile($targetDir, $headerImg); + } + + $targetFile = array("imgLocation" => ".../blog/imgs/placeholder.png"); + if (!is_array($targetFile)) { return $targetFile; @@ -192,8 +200,8 @@ class blogData $newBody .= $htmlDoc->saveHTML($node); } - $stmt = $conn->prepare("INSERT INTO blog (title, dateCreated, dateModified, featured, headerImg, body, categories) - VALUES (:title, :dateCreated, :dateModified, :featured, :headerImg, :body, :categories);"); + $stmt = $conn->prepare("INSERT INTO blog (title, dateCreated, dateModified, featured, headerImg, body, categories, folderID) + VALUES (:title, :dateCreated, :dateModified, :featured, :headerImg, :body, :categories, :folderID);"); $stmt->bindParam(":title", $title); $stmt->bindParam(":dateCreated", $dateCreated); $stmt->bindParam(":dateModified", $dateCreated); @@ -201,6 +209,7 @@ class blogData $stmt->bindParam(":headerImg", $targetFile["imgLocation"]); $stmt->bindParam(":body", $newBody); $stmt->bindParam(":categories", $categories); + $stmt->bindParam(":folderID", $folderID); if ($stmt->execute()) { diff --git a/dist/api/blog/blogRoutes.php b/dist/api/blog/blogRoutes.php index fd54313..a12075a 100644 --- a/dist/api/blog/blogRoutes.php +++ b/dist/api/blog/blogRoutes.php @@ -33,14 +33,20 @@ class blogRoutes implements routesInterface { $data = $request->getParsedBody(); $files = $request->getUploadedFiles(); - if (empty($data["title"]) || empty($data["body"]) || empty($data["dateCreated"]) || empty($data["featured"]) || empty($data["categories"]) || empty($files["headerImg"])) + $headerImg = $files["headerImg"]; + if (empty($data["title"]) || empty($data["body"]) || empty($data["dateCreated"]) || empty($data["featured"]) || empty($data["categories"])) { // uh oh sent some empty data $response->getBody()->write(json_encode(array("error" => "Error, empty data sent"))); return $response->withStatus(400); } - $insertedID = $this->blogData->createPost($data["title"], $data["body"], $data["dateCreated"], $data["featured"], $data["categories"], $files["headerImg"]); + if (empty($files["headerImg"])) + { + $headerImg = null; + } + + $insertedID = $this->blogData->createPost($data["title"], $data["body"], $data["dateCreated"], $data["featured"], $data["categories"], $headerImg); if (!is_int($insertedID)) { // uh oh something went wrong diff --git a/dist/blog/imgs/placeholder.png b/dist/blog/imgs/placeholder.png new file mode 100644 index 0000000..bf1d310 Binary files /dev/null and b/dist/blog/imgs/placeholder.png differ diff --git a/src/api/blog/blogData.php b/src/api/blog/blogData.php index 358b288..e0eb5cd 100644 --- a/src/api/blog/blogData.php +++ b/src/api/blog/blogData.php @@ -145,10 +145,18 @@ class blogData public function createPost(string $title, string $body, string $dateCreated, string $featured, string $categories, UploadedFileInterface $headerImg): int|string { $conn = dbConn(); - $targetDir = "../blog/imgs/" . $title . "_" . uniqid() . "/"; - mkdir($targetDir, 0777, true); - $imagUtils = new imgUtils(); - $targetFile = $imagUtils->uploadFile($targetDir, $headerImg); + $targetFile = ""; + $folderID = uniqid(); + if ($headerImg !== null) + { + $targetDir = "../blog/imgs/" . $title . "_" . $folderID . "/"; + mkdir($targetDir, 0777, true); + $imagUtils = new imgUtils(); + $targetFile = $imagUtils->uploadFile($targetDir, $headerImg); + } + + $targetFile = array("imgLocation" => ".../blog/imgs/placeholder.png"); + if (!is_array($targetFile)) { return $targetFile; @@ -192,8 +200,8 @@ class blogData $newBody .= $htmlDoc->saveHTML($node); } - $stmt = $conn->prepare("INSERT INTO blog (title, dateCreated, dateModified, featured, headerImg, body, categories) - VALUES (:title, :dateCreated, :dateModified, :featured, :headerImg, :body, :categories);"); + $stmt = $conn->prepare("INSERT INTO blog (title, dateCreated, dateModified, featured, headerImg, body, categories, folderID) + VALUES (:title, :dateCreated, :dateModified, :featured, :headerImg, :body, :categories, :folderID);"); $stmt->bindParam(":title", $title); $stmt->bindParam(":dateCreated", $dateCreated); $stmt->bindParam(":dateModified", $dateCreated); @@ -201,6 +209,7 @@ class blogData $stmt->bindParam(":headerImg", $targetFile["imgLocation"]); $stmt->bindParam(":body", $newBody); $stmt->bindParam(":categories", $categories); + $stmt->bindParam(":folderID", $folderID); if ($stmt->execute()) { diff --git a/src/api/blog/blogRoutes.php b/src/api/blog/blogRoutes.php index fd54313..a12075a 100644 --- a/src/api/blog/blogRoutes.php +++ b/src/api/blog/blogRoutes.php @@ -33,14 +33,20 @@ class blogRoutes implements routesInterface { $data = $request->getParsedBody(); $files = $request->getUploadedFiles(); - if (empty($data["title"]) || empty($data["body"]) || empty($data["dateCreated"]) || empty($data["featured"]) || empty($data["categories"]) || empty($files["headerImg"])) + $headerImg = $files["headerImg"]; + if (empty($data["title"]) || empty($data["body"]) || empty($data["dateCreated"]) || empty($data["featured"]) || empty($data["categories"])) { // uh oh sent some empty data $response->getBody()->write(json_encode(array("error" => "Error, empty data sent"))); return $response->withStatus(400); } - $insertedID = $this->blogData->createPost($data["title"], $data["body"], $data["dateCreated"], $data["featured"], $data["categories"], $files["headerImg"]); + if (empty($files["headerImg"])) + { + $headerImg = null; + } + + $insertedID = $this->blogData->createPost($data["title"], $data["body"], $data["dateCreated"], $data["featured"], $data["categories"], $headerImg); if (!is_int($insertedID)) { // uh oh something went wrong diff --git a/src/blog/imgs/placeholder.png b/src/blog/imgs/placeholder.png new file mode 100644 index 0000000..bf1d310 Binary files /dev/null and b/src/blog/imgs/placeholder.png differ