* @version : $ Sat May 27 16:49:19 AZOST 2006 $ * @package Demos.QuickStart.comments * @since 3.0 */ class QuickStartComments { /** * @var string sqlite database source. */ private $_database; /** * @var sqlite connection. */ private $_connection; /** * Sets the sqlite comment database file. */ public function __construct() { $this->_database = realpath(dirname(__FILE__).'/comments.db'); } /** * Closed the database connection. */ public function __destruct() { if(!is_null($this->_connection)) sqlite_close($this->_connection); } /** * @return resource sqlite database connection. */ protected function getConnection() { if(is_null($this->_connection)) $this->_connection = sqlite_open($this->_database); return $this->_connection; } /** * Quote database input data. */ protected function quote($value) { return sqlite_escape_string($value); } /** * Executes an sqlite query. * @param string SQL * @return mixed query results. */ protected function query($sql) { return sqlite_query($this->getConnection(), $sql); } /** * Returns a row from the sqlite result. * @param resource sqlite result * @return array database record. */ protected function fetch($resource) { if($resource !== false) return sqlite_fetch_array($resource); else return false; } /** * Fetch all the records for given SQL query. * @param string SQL query. * @return array result set. */ protected function fetchAll($sql) { $rs = $this->query($sql); $rows = array(); while($row = $this->fetch($rs)) $rows[] = $row; return $rows; } /** * Returns all the comments for a given page. * @param string specific page comments * @return array list of comments */ public function getComments($pageID) { $page = $this->quote($pageID); $sql = "SELECT * FROM comments WHERE page=\"$page\" AND approved = 1 ORDER BY date_added ASC"; return $this->fetchAll($sql); } /** * Adds a new comment for moderation. * @param string ID of the page to comment belongs * @param string email address of the commenter * @param string comment contents */ public function addNewComment($pageID, $email, $comment) { $page = $this->quote($pageID); $email = $this->quote($email); $comment = $this->quote($comment); $date_added = time(); $sql = <<query($sql); } /** * Update an existing comment. * @param string comment ID * @param string page ID * @param string email address * @param string updated comment. */ public function updateComment($commentID, $page, $email, $content) { $ID = intval($commentID); $email = $this->quote($email); $comment = $this->quote($content); $page = $this->quote($page); $sql = <<query($sql); } /** * Delete a comment. * @param string comment ID */ public function deleteComment($commentID) { $ID = intval($commentID); $this->query("DELETE FROM comments WHERE id=$ID"); } /** * @return array all the quequed comments. */ public function getQuequedComments() { return $this->fetchAll("SELECT * FROM comments WHERE approved != 1"); } /** * Approve a quequed comment. * @param string comment ID. */ public function approveComment($commentID) { $ID = intval($commentID); $this->query("UPDATE comments SET approved = 1 WHERE id=$ID"); } } ?>