X-Git-Url: https://disinclined.org/git/?a=blobdiff_plain;f=index.php;h=f15b9999abebbea79042c08f43d9a6969f6c8737;hb=1cf5e32bfd56c0704ca9857e5574ddd0f5edd42c;hp=29e4076463cc821d8fdda546f037b2436c5c6adb;hpb=6f04d2b1c7461b1c50dd3c9f895baabafc4d6db4;p=dylansserver.git diff --git a/index.php b/index.php index 29e4076..f15b999 100644 --- a/index.php +++ b/index.php @@ -3,25 +3,31 @@ abstract class cms { private $config_file = '/etc/dylanstestserver.ini'; protected $db; + protected $recaptcha_publickey; + protected $recaptcha_privatekey; public function __construct() { - $config = parse_ini_file($this->config_file); + $config = parse_ini_file($this->config_file, true); $this->db = new mysqli( - $config['domain'], - $config['user'], - $config['password'], - $config['database']); + $config[database]['domain'], + $config[database]['user'], + $config[database]['password'], + $config[database]['database']); if (mysqli_connect_errno()) { echo "Problem connecting to database: "; echo mysqli_connect_error(); exit(); } + $this->recaptcha_publickey = $config[recaptcha]['publickey']; + $this->recaptcha_privatekey = $config[recaptcha]['privatekey']; ob_start(); } 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'] == '/') { @@ -60,8 +66,7 @@ abstract class cms { $home_link = "/") { $scripts = ""; $stylesheets = ""; - if (cms::determine_type() == "index") { - $scripts = " +END_CAPTCHA_STYLE; + require_once('includes/recaptchalib.php'); + // Trailing slash is necessary for reloads to work + $url = $this->url . "verify"; + echo "
"; + echo << + +

comment:

+ +

name:

+ +

email:

+
+ + +
+

what's this say?

+

enter the numbers you hear:

+(another/audio/Get an image CAPTCHAhelp)

+ +

+
+



+
+FORM; + echo recaptcha_get_html($this->recaptcha_publickey); + if (isset($_GET['verify'])) { + $this->verify(); + } + echo << + + +END_OF_FORM; + } +} + + +class archive extends cms { + public function __construct() { parent::__construct(); - $this->check_exists(); } private function check_exists() { @@ -295,27 +487,66 @@ class note extends cms { WHERE url = ?"; $results = $this->query($sql, "s", $_GET['note']); if ($results[0]["COUNT(*)"] != 1) { - throw new notFound(); + $this->not_found(); } } public function display() { + // this really needs its own pagination... + // there should be a class for that. $this->display_head(); - $sql = "SELECT title, date_posted, text - FROM notes WHERE url = ?"; - $result = $this->query($sql, "s", - $_GET['note']); - $entry = $result[0]; - $title = $entry["title"]; - $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']; - $this->write_navigation(); + 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(); } @@ -323,12 +554,13 @@ class note extends cms { echo "
"; echo "
"; echo "

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

"; echo "
"; } } + class notFound extends Exception { public function __construct() { header("HTTP/1.0 404 Not Found"); @@ -349,13 +581,21 @@ switch (cms::determine_type()) { $project->display(); break; case "note": - $note = new note; + if (isset($_GET['comments'])) { + $note = new note($comments_enabled = true); + } else { + $note = new note; + } $note->display(); break; case "page": $page = new page; $page->display(); break; + case "archive": + $archive = new archive; + $archive->display(); + break; } ?>