diff options
| author | wei <> | 2007-01-04 11:23:26 +0000 | 
|---|---|---|
| committer | wei <> | 2007-01-04 11:23:26 +0000 | 
| commit | dd028bec3822d1d9c28c35d599d687e038c7705f (patch) | |
| tree | f3d2fb7f95073ea481a4dec86f0f0d30c7fe3588 /demos/chat/protected/App_Code | |
| parent | cac90ea6547fe194ab6ab101dfe11a0b751823ca (diff) | |
Add chat demo and tutorial.
Diffstat (limited to 'demos/chat/protected/App_Code')
| -rw-r--r-- | demos/chat/protected/App_Code/ChatBufferRecord.php | 64 | ||||
| -rw-r--r-- | demos/chat/protected/App_Code/ChatUserManager.php | 63 | ||||
| -rw-r--r-- | demos/chat/protected/App_Code/ChatUserRecord.php | 41 | ||||
| -rw-r--r-- | demos/chat/protected/App_Code/chat.db | bin | 0 -> 4096 bytes | 
4 files changed, 168 insertions, 0 deletions
diff --git a/demos/chat/protected/App_Code/ChatBufferRecord.php b/demos/chat/protected/App_Code/ChatBufferRecord.php new file mode 100644 index 00000000..cf3c651f --- /dev/null +++ b/demos/chat/protected/App_Code/ChatBufferRecord.php @@ -0,0 +1,64 @@ +<?php
 +
 +class ChatBufferRecord extends TActiveRecord
 +{
 +	public $id;
 +	public $for_user;
 +	public $from_user;
 +	public $message;
 +	private $_created_on;
 +
 +	public static $_tablename='chat_buffer';
 +
 +	public function getCreated_On()
 +	{
 +		if($this->_created_on === null)
 +			$this->_created_on = time();
 +		return $this->_created_on;
 +	}
 +
 +	public function setCreated_On($value)
 +	{
 +		$this->_created_on = $value;
 +	}
 +
 +	public static function finder()
 +	{
 +		return parent::getRecordFinder('ChatBufferRecord');
 +	}
 +
 +	public function saveMessage()
 +	{
 +		foreach(ChatUserRecord::finder()->findAll() as $user)
 +		{
 +			$message = new self;
 +			$message->for_user = $user->username;
 +			$message->from_user = $this->from_user;
 +			$message->message = $this->message;
 +			$message->save();
 +			if($user->username == $this->from_user)
 +			{
 +				$user->last_activity = time(); //update the last activity;
 +				$user->save();
 +			}
 +		}
 +	}
 +
 +	public function getUserMessages($user)
 +	{
 +		$content = '';
 +		foreach($this->findAll('for_user = ?', $user) as $message)
 +			$content .= $this->formatMessage($message);
 +		$this->deleteAll('for_user = ? OR created_on < ?', $user, time() - 300); //5 min inactivity
 +		return $content;
 +	}
 +
 +	protected function formatMessage($message)
 +	{
 +		$user = htmlspecialchars($message->from_user);
 +		$content = htmlspecialchars($message->message);
 +		return "<div class=\"message\"><strong>{$user}:</strong> <span>{$content}</span></div>";
 +	}
 +}
 +
 +?>
\ No newline at end of file diff --git a/demos/chat/protected/App_Code/ChatUserManager.php b/demos/chat/protected/App_Code/ChatUserManager.php new file mode 100644 index 00000000..f8fe09cc --- /dev/null +++ b/demos/chat/protected/App_Code/ChatUserManager.php @@ -0,0 +1,63 @@ +<?php
 +
 +class ChatUserManager extends TModule implements IUserManager
 +{
 +	/**
 +	 * @return string name for a guest user.
 +	 */
 +	public function getGuestName()
 +	{
 +		return 'Guest';
 +	}
 +	
 +	/**
 +	 * Returns a user instance given the user name.
 +	 * @param string user name, null if it is a guest.
 +	 * @return TUser the user instance
 +	 */
 +	public function getUser($username=null)
 +	{
 +		$user=new TUser($this);
 +		$user->setIsGuest(true);		
 +		if($username !== null)
 +		{
 +			$user->setIsGuest(false);
 +			$user->setName($username);
 +			$user->setRoles(array('normal'));
 +		}
 +		return $user;
 +	}
 +	
 +	/**
 +	 * Add a new user to the database.
 +	 * @param string username.
 +	 */
 +	public function addNewUser($username)
 +	{
 +		$user = new ChatUserRecord();
 +		$user->username = $username;
 +		$user->save();
 +	}
 +
 +	/**
 +	 * @return boolean true if username already exists, false otherwise.
 +	 */
 +	public function usernameExists($username)
 +	{
 +		return ChatUserRecord::finder()->findByUsername($username) instanceof ChatUserRecord;
 +	}
 +
 +	/**
 +	 * Validates if the username exists.
 +	 * @param string user name
 +	 * @param string password
 +	 * @return boolean true if validation is successful, false otherwise.
 +	 */
 +	public function validateUser($username,$password)
 +	{
 +		return $this->usernameExists($username);
 +	}
 +}
 +
 +
 +?>
\ No newline at end of file diff --git a/demos/chat/protected/App_Code/ChatUserRecord.php b/demos/chat/protected/App_Code/ChatUserRecord.php new file mode 100644 index 00000000..9bfb11cd --- /dev/null +++ b/demos/chat/protected/App_Code/ChatUserRecord.php @@ -0,0 +1,41 @@ +<?php
 +
 +class ChatUserRecord extends TActiveRecord
 +{
 +	public $username;
 +	private $_last_activity;
 +
 +	public static $_tablename='chat_users';
 +
 +	public function getLast_Activity()
 +	{
 +		if($this->_last_activity === null)
 +			$this->_last_activity = time();
 +		return $this->_last_activity;
 +	}
 +
 +	public function setLast_Activity($value)
 +	{
 +		$this->_last_activity = $value;
 +	}
 +
 +	public static function finder()
 +	{
 +		return parent::getRecordFinder('ChatUserRecord');
 +	}
 +
 +	public function getUserList()
 +	{
 +		$this->deleteAll('last_activity < ?', time()-300); //5 min inactivity
 +		$content = '<ul>';
 +		foreach($this->findAll() as $user)
 +		{
 +			$content .= '<li>'.htmlspecialchars($user->username).'</li>';
 +		}
 +		$content .= '</ul>';
 +
 +		return $content;
 +	}
 +}
 +
 +?>
\ No newline at end of file diff --git a/demos/chat/protected/App_Code/chat.db b/demos/chat/protected/App_Code/chat.db Binary files differnew file mode 100644 index 00000000..f8e3660f --- /dev/null +++ b/demos/chat/protected/App_Code/chat.db  | 
