X-Git-Url: https://disinclined.org/git/?a=blobdiff_plain;f=index.php;fp=index.php;h=700f69a182a9cb0d81bd7b72821a8dbc57195337;hb=f870b65ad60d8ea7456384d38f8db6fd01275990;hp=29e4076463cc821d8fdda546f037b2436c5c6adb;hpb=6f04d2b1c7461b1c50dd3c9f895baabafc4d6db4;p=dylansserver.git diff --git a/index.php b/index.php index 29e4076..700f69a 100644 --- a/index.php +++ b/index.php @@ -22,6 +22,8 @@ abstract class cms { public static function determine_type() { if (isset($_GET['page']) && is_numeric($_GET['page'])) { return 'page'; + } else if (isset($_GET['year'])) { + return 'archive'; } else if (isset($_GET['note'])) { return 'note'; } else if ($_SERVER['REQUEST_URI'] == '/') { @@ -329,6 +331,92 @@ class note extends cms { } } + +class archive extends cms { + + public function __construct() { + parent::__construct(); + } + + private function check_exists() { + $sql = "SELECT COUNT(*) FROM notes + WHERE url = ?"; + $results = $this->query($sql, "s", $_GET['note']); + if ($results[0]["COUNT(*)"] != 1) { + $this->not_found(); + } + } + + public function display() { + // this really needs its own pagination... + // there should be a class for that. + $this->display_head(); + switch (true) { + case (isset($_GET['year']) && !isset($_GET['month']) + && !isset($_GET['day'])): + $sql = "SELECT title, url, date_posted, text + FROM notes WHERE YEAR(date_posted) = ? + ORDER BY date_posted DESC"; + $result = $this->query($sql, "d", + $_GET['year']); + break; + case (isset($_GET['year']) && isset($_GET['month']) + && !isset($_GET['day'])): + $sql = "SELECT title, url, date_posted, text + FROM notes WHERE YEAR(date_posted) = ? + AND MONTH(date_posted) = ? + ORDER BY date_posted DESC"; + $result = $this->query($sql, "dd", + $_GET['year'], $_GET['month']); + break; + case (isset($_GET['year']) && isset($_GET['month']) + && isset($_GET['day'])): + $sql = "SELECT title, url, date_posted, text + FROM notes WHERE YEAR(date_posted) = ? + AND MONTH(date_posted) = ? + AND DAY(date_posted) = ? + ORDER BY date_posted DESC"; + $result = $this->query($sql, "ddd", + $_GET['year'], $_GET['month'], + $_GET['day']); + break; + } + if (count($result) >= 1) { + echo "
"; + foreach ($result as $row => $entry) { + $title = $entry['title']; + $url = '/note/' . $entry['url']; + $date_posted = explode("-", $entry['date_posted']); + $year_posted = $date_posted[0]; + $month_posted = $date_posted[1]; + $datetime_posted = explode(' ', $date_posted[2]); + $day_posted = $datetime_posted[0]; + echo "
"; + echo "

$year_posted/$month_posted/$day_posted/$title

"; + echo $entry['text']; + echo "
"; + } + echo "
"; + $this->write_navigation(); + } else { + echo "
"; + echo "

sorry, nothing here

"; + echo "
Empty set (0.00 sec)
"; + } + $this->display_close(); + } + + private function write_navigation() { + echo "
"; + echo "
"; + echo "

"; + // fill me in! + echo "

"; + echo "
"; + } +} + + class notFound extends Exception { public function __construct() { header("HTTP/1.0 404 Not Found"); @@ -356,6 +444,10 @@ switch (cms::determine_type()) { $page = new page; $page->display(); break; + case "archive": + $archive = new archive; + $archive->display(); + break; } ?>