diff options
Diffstat (limited to 'demos/quickstart/protected/comments/QuickStartComments.php')
| -rw-r--r-- | demos/quickstart/protected/comments/QuickStartComments.php | 175 | 
1 files changed, 175 insertions, 0 deletions
| diff --git a/demos/quickstart/protected/comments/QuickStartComments.php b/demos/quickstart/protected/comments/QuickStartComments.php new file mode 100644 index 00000000..c138bd94 --- /dev/null +++ b/demos/quickstart/protected/comments/QuickStartComments.php @@ -0,0 +1,175 @@ +<?php + +/** + * QuickStartComments class. + * + * @author Wei Zhuo <weizhuo[at]gmail[dot]com> + * @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 = <<<EOD +		INSERT INTO comments(page, email, comment, date_added) +				VALUES ("$page", "$email", "$comment", "$date_added") +EOD; +		return $this->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 = <<<EOD +		UPDATE comments SET  +			email = "$email", comment = "$comment", page = "$page" +			WHERE id = $ID; +EOD; +		$this->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"); +	} +} + +?>
\ No newline at end of file | 
