X-Git-Url: https://disinclined.org/git/?a=blobdiff_plain;f=cms.php;h=428cae1845debc96012a254b617a59732a86100d;hb=6436af7589776b09d5a39a2a12cb8bd130915487;hp=845eda95f7e925746944bdbcafcb5c2adb1dca96;hpb=853193f66b966ff0bd8c13cc94ee3457d3543d1f;p=dylansserver.git diff --git a/cms.php b/cms.php index 845eda9..428cae1 100644 --- a/cms.php +++ b/cms.php @@ -1,16 +1,18 @@ model = new model(); $config = parse_ini_file($this->config_file, true); $this->db = new mysqli( $config['database']['domain'], @@ -26,25 +28,6 @@ abstract class cms { $this->recaptcha_privatekey = $config['recaptcha']['privatekey']; $this->title = $config['site']['default_title']; $this->home_link = $config['site']['home_link']; - 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'] == '/') { - return 'index'; - } else if (isset($_GET['project'])) { - return 'project'; - } else if (isset($_GET['rss'])) { - return 'rss'; - } else if (isset($_GET['challenge'])) { - return 'captcha'; - } } public function query() { @@ -70,63 +53,24 @@ abstract class cms { } $statement->free_result(); return $return; - } - - public function display_head($title = "dylansserver", - $home_link = "/") { - $scripts = $this->scripts; - $stylesheets = ""; - $home_link = "http://validator.w3.org/unicorn/check?ucn_uri=dylansserver.com&ucn_task=conformance#"; - echo << - - - - - - - $this->title - - $stylesheets - $scripts - - - -
- - -
-END_OF_HEAD; } - public function display_contact() { - echo <<

dylan

@psu.edu -
-END_OF_CONTACT; - } - - public function display_close($show_contact = true) { - if ($show_contact) { - $this->display_contact(); + 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'] == '/') { + return 'index'; + } else if (isset($_GET['project'])) { + return 'project'; + } else if (isset($_GET['rss'])) { + return 'rss'; + } else if (isset($_GET['challenge'])) { + return 'captcha'; } - echo << -
-
-
- - -END_OF_CLOSE; - ob_flush(); } public function init() { @@ -140,12 +84,14 @@ END_OF_CLOSE; $project->display(); break; case 'note': - $note = new note; - $note->display(); + require_once("model/note.php"); + $note = new note(); + require_once("view/note.php"); break; case 'page': - $page = new page; - $page->display(); + require_once("model/page.php"); + $page = new page(); + require_once("view/page.php"); break; case "rss": $rss = new rss(); @@ -168,61 +114,7 @@ END_OF_CLOSE; class index extends cms { public function display() { - $this->scripts = ""; - $this->display_head(); - $this->display_exhibits(); - echo ""; - $this->display_close($show_contact = false); + require_once("view/index.php"); } protected function display_exhibits() { @@ -236,11 +128,6 @@ OTHER_PROJECTS; } private function list_projects() { - echo << -

my projects:

- -HEREDOC; $sql = "SELECT title FROM projects ORDER BY rank"; $result = $this->db->query($sql); while ($entry = $result->fetch_object()) { @@ -270,303 +157,6 @@ class project extends index { } -class page extends cms { - - private $page = 1; - private $offset = 0; - private $notes_per_page = 4; - private $number_of_pages = 1; - - public function __construct() { - parent::__construct(); - $this->page_offset(); - $this->scripts = " - - - - - - "; - } - - private function page_offset() { - $sql = "SELECT COUNT(*) FROM notes"; - $result = $this->db->query($sql); - $result = $result->fetch_array(); - $this->number_of_pages = ceil($result[0] / $this->notes_per_page); - if (isset($_GET['page']) && is_numeric($_GET['page'])) { - $this->page = (int) $_GET['page']; - } else { - throw new notFound(); - } - if ($this->page > $this->number_of_pages) { - throw new notFound(); - } - if ($this->page < 1) { - throw new notFound(); - } - $this->offset = ($this->page - 1) * $this->notes_per_page; - } - - public function display() { - require_once("view/page.php"); - } - - public function display_notes() { - echo "
"; - $sql = "SELECT date_posted, title, url, text - FROM notes ORDER BY date_posted DESC - LIMIT ?, ?"; - $result = $this->query($sql, "ii", - $this->offset, - $this->notes_per_page); - 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]; - $text = $entry['text']; - echo << -

- $year_posted/$month_posted/$day_posted/$title -

- $text -
-END_NOTE; - } - echo ""; - } -} - - -class note extends cms { - - private $id; - private $comments_enabled = false; - private $failed_captcha; - public $url; - public $title; - public $year_posted; - public $month_posted; - public $day_posted; - public $text; - public $number_of_comments; - - public function __construct() { - $this->scripts = " - - - - - - "; - - if (isset($_GET['comments'])) { - $this->scripts .= " - - "; - } - parent::__construct(); - if (isset($_GET['comments'])) { - $this->comments_enabled = true; - } - $url = htmlspecialchars($_SERVER['REQUEST_URI']); - if (isset($_GET['verify'])) { - $url = substr($url, 0, (strlen($url)-6)); - } - $this->url = $url; - $sql = "SELECT title, date_posted, text, id - FROM notes WHERE url = ?"; - $result = $this->query($sql, "s", - $_GET['note']); - if ($result) { - $entry = $result[0]; - $this->id = $entry["id"]; - $this->title = $entry["title"]; - $date_posted = explode("-", $entry["date_posted"]); - $this->year_posted = $date_posted[0]; - $this->month_posted = $date_posted[1]; - $datetime_posted = explode(' ', $date_posted[2]); - $this->day_posted = $datetime_posted[0]; - $this->text = $entry["text"]; - } else { - throw new notFound(); - } - $sql = "SELECT COUNT(*) FROM comments - WHERE note = $this->id"; - $result = $this->db->query($sql); - $result = $result->fetch_array(); - $this->number_of_comments = $result[0]; - if (isset($_GET['verify'])) { - $this->verify(); - } - } - - public function display() { - require_once("view/note.php"); - } - - private function verify() { - if (!isset($_POST['captcha'])) { - require_once('includes/recaptchalib.php'); - echo "
"; - $resp = recaptcha_check_answer ($this->recaptcha_privatekey, - $_SERVER["REMOTE_ADDR"], - $_POST["recaptcha_challenge_field"], - $_POST["recaptcha_response_field"]); - if (!$resp->is_valid) { - $this->failed_captcha = true; - } - } - if (isset($_POST['captcha']) || $resp->is_valid) { - $sql = ("INSERT INTO comments (date_posted, author, - text, note) - VALUES(NOW(), ?, ?, ?)"); - $stmt = $this->db->prepare($sql); - // Checks are needed here (no blank text, - // and a default author needs to be set - // for no-javascript users. - $stmt->bind_param('sss', - $_POST['name'], - $_POST['text'], - $this->id); - $stmt->execute(); - } - } - - private function display_comment_link() { - if ($this->number_of_comments > 0) { - $anchor_text = "comments($this->number_of_comments)/"; - } else { - $anchor_text = "comment?"; - } - if (substr($this->url, (strlen($this->url)-1), strlen($this->url)) == '/') { - $url = $this->url . 'comments/'; - } else { - $url = $this->url . '/comments/'; - } - echo "$anchor_text"; - } - - private function display_comments() { - echo "
"; - $sql= "SELECT date_posted, author, text - FROM comments WHERE note = ? - ORDER BY date_posted DESC"; - $result = $this->query($sql, 'd', $this->id); - foreach ($result as $row => $entry) { - $date_posted = $entry['date_posted']; - $author = $entry['author']; - $text = htmlspecialchars($entry['text']); - $head = "

" . htmlspecialchars($author) . "

"; - echo << - $head - $text -
-END_OF_COMMENT; - } - echo ""; - } - - private function display_comment_form() { - $publickey = $this->recaptcha_publickey; - echo << -Recaptcha.create("$publickey", - "recaptcha_div", - { - theme : 'custom', - custom_theme_widget: 'recaptcha_widget', - callback: Recaptcha.focus_response_field - }); - -END_CAPTCHA_STYLE; - require_once('includes/recaptchalib.php'); - $url = $this->url . "verify"; - echo "
"; - echo << -

comment:

- -

name:

- - - -
-
-

what's this say?

-
-
-


-


- -

-

enter the numbers you hear:

- - another? / - audio? / - image?help? - -
-END_OF_FORM; - echo recaptcha_get_html($this->recaptcha_publickey); - if ($this->failed_captcha) { - echo << - reCAPTCHA said you're not human,
- try again? - - - - -END_OF_ERRORS; - } else { - echo << - reCAPTCHA said you're not human,
- try again? - -
- but you didn't write anything!
-
-END_OF_ERRORS; - } - echo << - - -END_OF_FORM; - } -} - - class archive extends cms { public function __construct() { @@ -646,18 +236,15 @@ class archive extends cms { class rss extends cms { + public function display() { + require_once("view/rss.php"); + } + + public function display_items() { $result = $this->db->query("SELECT date_posted, title, text, url FROM notes ORDER BY date_posted DESC LIMIT 5"); - echo << - - dylansserver.com/notes/rss - http://dylansserver.com/notes - dylansserver.com/notes/rss - -END_OF_ENTRY; while ($entry = $result->fetch_object()) { $title = $entry->title; $date_posted = $entry->date_posted; @@ -673,18 +260,13 @@ END_OF_ENTRY; $description = substr($text, '0', ($end_of_first_sentence + 1)); } } - echo << - $title - $url - $url - $description - -END_OF_ENTRY; + echo ""; + echo " $title"; + echo " $url"; + echo " $url"; + echo " $description"; + echo ""; } - echo ""; - echo ""; - } }