X-Git-Url: https://disinclined.org/git/?a=blobdiff_plain;f=index.php;h=f15b9999abebbea79042c08f43d9a6969f6c8737;hb=1cf5e32bfd56c0704ca9857e5574ddd0f5edd42c;hp=516089e056816089995fced1e48f4219dea7626b;hpb=5b70780eb304ed68645d48f06f65034499d7a515;p=dylansserver.git diff --git a/index.php b/index.php index 516089e..f15b999 100644 --- a/index.php +++ b/index.php @@ -296,36 +296,51 @@ class note extends cms { private $id; private $comments_enabled = false; - private $url; + public $url; + public $title; + public $year_posted; + public $month_posted; + public $day_posted; + public $text; + public $number_of_comments; public function __construct($comments_enabled = false) { parent::__construct(); - $this->check_exists(); $this->comments_enabled = $comments_enabled; $url = htmlspecialchars($_SERVER['REQUEST_URI']); if (isset($_GET['verify'])) { - $url = substr($url, 0, (strlen($url)-7)); + $url = substr($url, 0, (strlen($url)-6)); } $this->url = $url; - } - - private function check_exists() { - $sql = "SELECT COUNT(*) FROM notes - WHERE url = ?"; - $results = $this->query($sql, "s", $_GET['note']); - if ($results[0]["COUNT(*)"] != 1) { + $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]; } public function display() { $this->display_head(); $this->display_note(); - if (isset($_GET['verify'])) { - $this->verify(); - } if ($this->comments_enabled) { - $this->display_comments(); // but where are they? + $this->display_comments(); $this->display_comment_form(); } $this->write_navigation(); @@ -334,41 +349,33 @@ class note extends cms { private function verify() { 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) { - echo "The reCAPTCHA wasn't entered correctly. Go back and try it again." . "(reCAPTCHA said: " . $resp->error . ")"; + echo "sorry, reCAPTCHA said you're not human.


"; } else { $sql = ("INSERT INTO comments (date_posted, author, - email, text, note - VALUES(NOW(), ?, ?, ?, ?, ?"); - echo htmlspecialchars($_POST['author']); - echo htmlspecialchars($_POST['email']); - echo htmlspecialchars($_POST['text']); + email, text, note) + VALUES(NOW(), ?, ?, ?, ?)"); + $stmt = $this->db->prepare($sql); + // Checks are needed here (no blank text, + // and a default author / email need to be set + $stmt->bind_param('ssss', + htmlspecialchars($_POST['author']), + htmlspecialchars($_POST['email']), + htmlspecialchars($_POST['text']), + $this->id); + $stmt->execute(); } } private function display_note() { - $sql = "SELECT title, date_posted, text, id - FROM notes WHERE url = ?"; - $result = $this->query($sql, "s", - $_GET['note']); - $entry = $result[0]; - $this->id = $entry["id"]; // This is needed for display_comments() - $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

"; - if (!$this->comments_enabled) { - $this->display_comment_link(); - } - echo $entry['text']; + echo "

$this->year_posted/$this->month_posted/$this->day_posted/$this->title

"; + echo $this->text; } private function write_navigation() { @@ -376,21 +383,36 @@ class note extends cms {

- notes/ +END_OF_NAVIGATION; + if (!$this->comments_enabled) { + $this->display_comment_link(); + } + echo <<notes/

END_OF_NAVIGATION; } private function display_comment_link() { - $url = $this->url . 'comments/'; - echo "comments"; + 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, email, text - FROM comments WHERE note = ?"; + 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']; @@ -403,7 +425,7 @@ END_OF_NAVIGATION;

END_OF_COMMENT; - } + } echo "
"; } @@ -418,34 +440,33 @@ var RecaptchaOptions = { END_CAPTCHA_STYLE; require_once('includes/recaptchalib.php'); // Trailing slash is necessary for reloads to work - $url = $this->url . "verify/"; + $url = $this->url . "verify"; echo "
"; echo << -

comment:


-
-

name:


-
-

email:


+

comment:

+ +

name:

+ +

email:


-
-
Incorrect please try again
- enter the words above: - enter the numbers you hear: -
+

what's this say?

+

enter the numbers you hear:

+(another/audio/Get an image CAPTCHAhelp)

-
get another CAPTCHA
- - -
help?


+
+



FORM; echo recaptcha_get_html($this->recaptcha_publickey); + if (isset($_GET['verify'])) { + $this->verify(); + } echo <<