From: Dylan Lloyd Date: Sun, 6 Mar 2011 17:42:42 +0000 (-0500) Subject: Merge branch 'archive' into dev X-Git-Url: https://disinclined.org/git/?a=commitdiff_plain;h=f870b65ad60d8ea7456384d38f8db6fd01275990;hp=6f04d2b1c7461b1c50dd3c9f895baabafc4d6db4;p=dylansserver.git Merge branch 'archive' into dev Decided to just go ahead and merge the archive feature. Also fixed archive pages to ORDER BY date_posted DESC. Also fixed formatting error on archive pages (.note's should be in #notes) --- diff --git a/.htaccess b/.htaccess index b507140..f2421fc 100644 --- a/.htaccess +++ b/.htaccess @@ -9,4 +9,10 @@ RewriteRule ^notes/?$ notes/page/1 RewriteRule ^notes/page/?$ notes/page/1 RewriteRule ^notes/page/([0-9]+)/?$ /index.php?page=$1 [L] +RewriteRule ^notes/([0-9]{4})/?$ /index.php?year=$1 [L] +RewriteRule ^notes/([0-9]{4})/([0-9]{2})/?$ /index.php?year=$1&month=$2 [L] +RewriteRule ^notes/([0-9]{4})/([0-9]{2})/([0-9]{2})/?$ /index.php?year=$1&month=$2&day=$3 [L] + +## This needs to be last as to avoid catching /notes/ etc. RewriteRule ^([^/\.]+)/?$ /index.php?project=$1 [L] + 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; } ?>