From cbaedbc5251f3b127bd81242d1344c0cd3e56e0c Mon Sep 17 00:00:00 2001 From: "David T. Sadler" Date: Wed, 13 Oct 2021 21:51:07 +0100 Subject: Implemente redirects --- public/add/index.php | 33 --------------------------------- public/create/index.php | 23 +++++++++++++++++++++++ public/delete/confirm/index.php | 31 +++++++++++++++++++++++++++++++ public/delete/index.php | 20 ++++++++++++-------- public/edit/index.php | 16 ++++++++-------- public/store/index.php | 33 +++++++++++++++++++++++++++++++++ public/update/index.php | 35 +++++++++++++++++++++++++++++++++++ src/DTS/Bookmark.php | 10 ---------- src/DTS/BookmarkRepository.php | 18 ++++++++++-------- src/DTS/Functions.php | 5 +++++ src/templates/add.php | 16 ---------------- src/templates/confirm_deletion.php | 16 ++++++++++++++++ src/templates/create.php | 17 +++++++++++++++++ src/templates/delete.php | 15 --------------- src/templates/edit.php | 5 +++-- src/templates/index.php | 11 ++++++----- 16 files changed, 199 insertions(+), 105 deletions(-) delete mode 100644 public/add/index.php create mode 100644 public/create/index.php create mode 100644 public/delete/confirm/index.php create mode 100644 public/store/index.php create mode 100644 public/update/index.php delete mode 100644 src/templates/add.php create mode 100644 src/templates/confirm_deletion.php create mode 100644 src/templates/create.php delete mode 100644 src/templates/delete.php diff --git a/public/add/index.php b/public/add/index.php deleted file mode 100644 index 11ce9bb..0000000 --- a/public/add/index.php +++ /dev/null @@ -1,33 +0,0 @@ -add($bookmark); -} - -$html = $template->render('add'); - -respondAndExit(200, 'OK', $html); diff --git a/public/create/index.php b/public/create/index.php new file mode 100644 index 0000000..00ce794 --- /dev/null +++ b/public/create/index.php @@ -0,0 +1,23 @@ +render('create', compact('bookmark')); + +respondAndExit(200, 'OK', $html); diff --git a/public/delete/confirm/index.php b/public/delete/confirm/index.php new file mode 100644 index 0000000..6636fe9 --- /dev/null +++ b/public/delete/confirm/index.php @@ -0,0 +1,31 @@ +find($id); + +if ($bookmark === null) { + respondAndExit(404, 'Not Found'); +} + +$html = $template->render('confirm_deletion', compact('bookmark')); + +respondAndExit(200, 'OK', $html); diff --git a/public/delete/index.php b/public/delete/index.php index 1b2484d..e07129a 100644 --- a/public/delete/index.php +++ b/public/delete/index.php @@ -3,25 +3,29 @@ declare(strict_types=1); use DTS\BookmarkRepository; -use DTS\Template; use function DTS\Functions\respondAndExit; +use function DTS\Functions\redirectAndExit; require_once(__DIR__.'/../../autoload.php'); $config = require_once(__DIR__.'/../../config.php'); -$bookmarks = new BookmarkRepository($config['path_to_repository']); +if (filter_input(INPUT_SERVER, 'REQUEST_METHOD') !== 'POST') { + respondAndExit(405, 'Method Not Allowed'); +} -$template = new Template($config['path_to_templates']); +$id = filter_input(INPUT_POST, 'id'); -$id = filter_input(INPUT_GET, 'id') ?? filter_input(INPUT_POST, 'id') ?? null; +$bookmarks = new BookmarkRepository($config['path_to_repository']); $bookmark = $bookmarks->find($id); -if ('POST' === filter_input(INPUT_SERVER, 'REQUEST_METHOD')) { - $bookmarks->delete($bookmark); +if ($bookmark === null) { + respondAndExit(404, 'Not Found'); } -$html = $template->render('delete', compact('bookmark')); +if (!$bookmarks->delete($bookmark)) { + respondAndExit(500, 'Internal Server Error'); +} -respondAndExit(200, 'OK', $html); +redirectAndExit('/'); diff --git a/public/edit/index.php b/public/edit/index.php index 65b3fa5..9d3d4c0 100644 --- a/public/edit/index.php +++ b/public/edit/index.php @@ -10,20 +10,20 @@ require_once(__DIR__.'/../../autoload.php'); $config = require_once(__DIR__.'/../../config.php'); +if (filter_input(INPUT_SERVER, 'REQUEST_METHOD') !== 'GET') { + respondAndExit(405, 'Method Not Allowed'); +} + +$id = filter_input(INPUT_GET, 'id'); + $bookmarks = new BookmarkRepository($config['path_to_repository']); $template = new Template($config['path_to_templates']); -$id = filter_input(INPUT_GET, 'id') ?? filter_input(INPUT_POST, 'id') ?? null; - $bookmark = $bookmarks->find($id); -if ('POST' === filter_input(INPUT_SERVER, 'REQUEST_METHOD')) { - $bookmark->url = $_POST['url']; - $bookmark->title = $_POST['title']; - $bookmark->tag = $_POST['tag']; - - $bookmarks->update($bookmark); +if ($bookmark === null) { + respondAndExit(404, 'Not Found'); } $html = $template->render('edit', compact('bookmark')); diff --git a/public/store/index.php b/public/store/index.php new file mode 100644 index 0000000..2a84c59 --- /dev/null +++ b/public/store/index.php @@ -0,0 +1,33 @@ +id = bin2hex(random_bytes(32)); +$bookmark->url = $_POST['url']; +$bookmark->title = $_POST['title']; +$bookmark->tag = $_POST['tag']; +$bookmark->addedAt = date('Y-m-d H:i:s'); +$bookmark->unread = true; + +if (!$bookmarks->add($bookmark)) { + respondAndExit(500, 'Internal Server Error'); +} + +redirectAndExit('/'); diff --git a/public/update/index.php b/public/update/index.php new file mode 100644 index 0000000..fa6b482 --- /dev/null +++ b/public/update/index.php @@ -0,0 +1,35 @@ +find($id); + +if ($bookmark === null) { + respondAndExit(404, 'Not Found'); +} + +$bookmark->url = $_POST['url']; +$bookmark->title = $_POST['title']; +$bookmark->tag = $_POST['tag']; + +if (!$bookmarks->update($bookmark)) { + respondAndExit(500, 'Internal Server Error'); +} + +redirectAndExit('/'); diff --git a/src/DTS/Bookmark.php b/src/DTS/Bookmark.php index 560fad4..543a552 100644 --- a/src/DTS/Bookmark.php +++ b/src/DTS/Bookmark.php @@ -17,14 +17,4 @@ class Bookmark public string $addedAt; public bool $unread; - - function __construct(string $id, string $url, string $title, string $tag, string $addedAt, bool $unread) - { - $this->id = $id; - $this->url = $url; - $this->title = $title; - $this->tag = $tag; - $this->addedAt = $addedAt; - $this->unread = $unread; - } } diff --git a/src/DTS/BookmarkRepository.php b/src/DTS/BookmarkRepository.php index 5d22100..a3fd5dd 100644 --- a/src/DTS/BookmarkRepository.php +++ b/src/DTS/BookmarkRepository.php @@ -128,14 +128,16 @@ class BookmarkRepository implements \Iterator } while (($data = fgetcsv($fp)) !== FALSE) { - $this->repository[] = new Bookmark( - $data[0], // Id. - $data[1], // Url. - $data[2], // Title. - $data[3], // Tag. - $data[4], // Added At. - (bool)$data[4], // Read. - ); + $bookmark = new Bookmark(); + + $bookmark->id = $data[0]; + $bookmark->url = $data[1]; + $bookmark->title = $data[2]; + $bookmark->tag = $data[3]; + $bookmark->addedAt = $data[4]; + $bookmark->unread = (bool)$data[5]; + + $this->repository[] = $bookmark; } fclose($fp); diff --git a/src/DTS/Functions.php b/src/DTS/Functions.php index d7ca835..2101cda 100644 --- a/src/DTS/Functions.php +++ b/src/DTS/Functions.php @@ -16,3 +16,8 @@ function respondAndExit(int $responseCode, string $header, string $body = '', ar exit(); } + +function redirectAndExit(string $location): void +{ + respondAndExit(302, 'Found', '', ["Location: $location"]); +} diff --git a/src/templates/add.php b/src/templates/add.php deleted file mode 100644 index a44c4d3..0000000 --- a/src/templates/add.php +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - Bookmarks - - -
-
-
-
- -
- - diff --git a/src/templates/confirm_deletion.php b/src/templates/confirm_deletion.php new file mode 100644 index 0000000..77998ff --- /dev/null +++ b/src/templates/confirm_deletion.php @@ -0,0 +1,16 @@ + + + + + + Bookmarks + + + Back +
+ + url.' '.$bookmark->title.' '.$bookmark->tag; ?> + +
+ + diff --git a/src/templates/create.php b/src/templates/create.php new file mode 100644 index 0000000..483e49e --- /dev/null +++ b/src/templates/create.php @@ -0,0 +1,17 @@ + + + + + + Bookmarks + + + Back +
+
+
+
+ +
+ + diff --git a/src/templates/delete.php b/src/templates/delete.php deleted file mode 100644 index 1be762b..0000000 --- a/src/templates/delete.php +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - Bookmarks - - -
- - url.' '.$bookmark->title.' '.$bookmark->tag; ?> - -
- - diff --git a/src/templates/edit.php b/src/templates/edit.php index a3c6930..d5f5a08 100644 --- a/src/templates/edit.php +++ b/src/templates/edit.php @@ -6,12 +6,13 @@ Bookmarks -
+ Back +


- +
diff --git a/src/templates/index.php b/src/templates/index.php index 1298985..ed84fd4 100644 --- a/src/templates/index.php +++ b/src/templates/index.php @@ -6,10 +6,11 @@ Bookmarks - + Add + -- cgit v1.2.3-13-gbd6f