X-Git-Url: https://disinclined.org/git/?a=blobdiff_plain;f=model%2Fnote.php;fp=model%2Fnote.php;h=01338be29f03aec67d2537f68b94452abe5d2985;hb=4db3a80e869ec8b8c3e0c3f8401c8df12ff5c553;hp=0000000000000000000000000000000000000000;hpb=7c68050a90dac5eec6b27f895deb9aeabf49cd47;p=dylansserver.git diff --git a/model/note.php b/model/note.php new file mode 100644 index 0000000..01338be --- /dev/null +++ b/model/note.php @@ -0,0 +1,124 @@ +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"); + } + + public 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(); + } + } + + public 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"; + } + + public 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 "
"; + echo $head; + echo $text; + echo "
"; + } + echo "
"; + } + + public function display_comment_form() { + $publickey = $this->recaptcha_publickey; + require_once("view/comment-form.php"); + } +} + +?>