<?php
abstract class BaseChats extends ProjectDataObjects {
 
	static private $columns = array(
		'id' => DATA_TYPE_INTEGER,
		'name' => DATA_TYPE_STRING,
		'start_date' => DATA_TYPE_DATETIME,
		'end_date' => DATA_TYPE_DATETIME,
 
		'created_on' => DATA_TYPE_DATETIME,
		'created_by_id' => DATA_TYPE_INTEGER,
		'updated_on' => DATA_TYPE_DATETIME,
		'updated_by_id' => DATA_TYPE_INTEGER,
		'trashed_on' => DATA_TYPE_DATETIME,
		'trashed_by_id' => DATA_TYPE_INTEGER,
	);
 
	function __construct() {
		parent::__construct('Chat', 'chats', true);
	} // __construct
 
	// -------------------------------------------------------
	//  Description methods
	// -------------------------------------------------------
 
	function getColumns() {
		return array_keys(self::$columns);
	} // getColumns
 
	function getColumnType($column_name) {
		if(isset(self::$columns[$column_name])) {
			return self::$columns[$column_name];
		} else {
			return DATA_TYPE_STRING;
		} // if
	} // getColumnType
 
	function getPkColumns() {
		return 'id';
	} // getPkColumns
 
	function getAutoIncrementColumn() {
		return 'id';
	} // getAutoIncrementColumn
 
	// -------------------------------------------------------
	//  Finders
	// -------------------------------------------------------
 
	function find($arguments = null) {
		if(isset($this) && instance_of($this, 'Chats')) {
			return parent::find($arguments);
		} else {
			return Chats::instance()->find($arguments);
		} // if
	} // find
 
	function findAll($arguments = null) {
		if(isset($this) && instance_of($this, 'Chats')) {
			return parent::findAll($arguments);
		} else {
			return Chats::instance()->findAll($arguments);
		} // if
	} // findAll
 
	function findOne($arguments = null) {
		if(isset($this) && instance_of($this, 'Chats')) {
			return parent::findOne($arguments);
		} else {
			return Chats::instance()->findOne($arguments);
		} // if
	} // findOne
 
	function findById($id, $force_reload = false) {
		if(isset($this) && instance_of($this, 'Chats')) {
			return parent::findById($id, $force_reload);
		} else {
			return Chats::instance()->findById($id, $force_reload);
			//$instance =& Chats::instance();
			//return $instance->findById($id, $force_reload);
		} // if
	} // findById
 
	function count($condition = null) {
		if(isset($this) && instance_of($this, 'Chats')) {
			return parent::count($condition);
		} else {
			return Chats::instance()->count($condition);
		} // if
	} // count
 
	function delete($condition = null) {
		if(isset($this) && instance_of($this, 'Chats')) {
			return parent::delete($condition);
		} else {
			return Chats::instance()->delete($condition);
		} // if
	} // delete
 
	function paginate($arguments = null, $items_per_page = 10, $current_page = 1) {
		if(isset($this) && instance_of($this, 'Chats')) {
			return parent::paginate($arguments, $items_per_page, $current_page);
		} else {
			return Chats::instance()->paginate($arguments, $items_per_page, $current_page);
		} // if
	} // paginate
 
	function instance() {
		static $instance;
		if(!instance_of($instance, 'Chats')) {
			$instance = new Chats();
		} // if
		return $instance;
	} // instance
 
} // BaseChats
?>
<?php
abstract class BaseChatLines extends ProjectDataObjects {
 
	static private $columns = array(
		'id' => DATA_TYPE_INTEGER,
		'chat_id' => DATA_TYPE_INTEGER,
		'sender_id' => DATA_TYPE_INTEGER,
		'text' => DATA_TYPE_STRING,
		'date' => DATA_TYPE_DATETIME,
 
		'created_on' => DATA_TYPE_DATETIME,
		'created_by_id' => DATA_TYPE_INTEGER,
		'updated_on' => DATA_TYPE_DATETIME,
		'updated_by_id' => DATA_TYPE_INTEGER,
		'trashed_on' => DATA_TYPE_DATETIME,
		'trashed_by_id' => DATA_TYPE_INTEGER,
	);
 
	function __construct() {
		parent::__construct('ChatLine', 'chat_lines', true);
	} // __construct
 
	// -------------------------------------------------------
	//  Description methods
	// -------------------------------------------------------
 
	function getColumns() {
		return array_keys(self::$columns);
	} // getColumns
 
	function getColumnType($column_name) {
		if(isset(self::$columns[$column_name])) {
			return self::$columns[$column_name];
		} else {
			return DATA_TYPE_STRING;
		} // if
	} // getColumnType
 
	function getPkColumns() {
		return 'id';
	} // getPkColumns
 
	function getAutoIncrementColumn() {
		return 'id';
	} // getAutoIncrementColumn
 
	// -------------------------------------------------------
	//  Finders
	// -------------------------------------------------------
 
	function find($arguments = null) {
		if(isset($this) && instance_of($this, 'ChatLines')) {
			return parent::find($arguments);
		} else {
			return ChatLines::instance()->find($arguments);
		} // if
	} // find
 
	function findAll($arguments = null) {
		if(isset($this) && instance_of($this, 'ChatLines')) {
			return parent::findAll($arguments);
		} else {
			return ChatLines::instance()->findAll($arguments);
		} // if
	} // findAll
 
	function findOne($arguments = null) {
		if(isset($this) && instance_of($this, 'ChatLines')) {
			return parent::findOne($arguments);
		} else {
			return ChatLines::instance()->findOne($arguments);
		} // if
	} // findOne
 
	function findById($id, $force_reload = false) {
		if(isset($this) && instance_of($this, 'ChatLines')) {
			return parent::findById($id, $force_reload);
		} else {
			return ChatLines::instance()->findById($id, $force_reload);
			//$instance =& ChatLines::instance();
			//return $instance->findById($id, $force_reload);
		} // if
	} // findById
 
	function count($condition = null) {
		if(isset($this) && instance_of($this, 'ChatLines')) {
			return parent::count($condition);
		} else {
			return ChatLines::instance()->count($condition);
		} // if
	} // count
 
	function delete($condition = null) {
		if(isset($this) && instance_of($this, 'ChatLines')) {
			return parent::delete($condition);
		} else {
			return ChatLines::instance()->delete($condition);
		} // if
	} // delete
 
	function paginate($arguments = null, $items_per_page = 10, $current_page = 1) {
		if(isset($this) && instance_of($this, 'ChatLines')) {
			return parent::paginate($arguments, $items_per_page, $current_page);
		} else {
			return ChatLines::instance()->paginate($arguments, $items_per_page, $current_page);
		} // if
	} // paginate
 
	function instance() {
		static $instance;
		if(!instance_of($instance, 'ChatLines')) {
			$instance = new ChatLines();
		} // if
		return $instance;
	} // instance
 
} // BaseChatLines
?>
<?php
 
abstract class BaseChat extends ProjectDataObject {
	protected $objectTypeIdentifier = 'ch';
 
	function getId() {
		return $this->getColumnValue('id');
	} // getId()
 
	function setId($value) {
		return $this->setColumnValue('id', $value);
	} // setId()
 
	function getName() {
		return $this->getColumnValue('name');
	} // getName()
 
	function setName($value) {
		return $this->setColumnValue('name', $value);
	} // setName()
 
	function getStartDate() {
		return $this->getColumnValue('start_date');
	} // getStartDate()
 
	function setStartDate($value) {
		return $this->setColumnValue('start_date', $value);
	} // setStartDate()
 
	function getEndDate() {
		return $this->getColumnValue('end_date');
	} // getEndDate()
 
	function setEndDate($value) {
		return $this->setColumnValue('end_date', $value);
	} // setEndDate()
 
	function manager() {
		if(!($this->manager instanceof Chats)) $this->manager = Chats::instance();
		return $this->manager;
	} // manager
 
} // BaseChat
?>
<?php
 
abstract class BaseChatLine extends ProjectDataObject {
 
	function getId() {
		return $this->getColumnValue('id');
	} // getId()
 
	function setId($value) {
		return $this->setColumnValue('id', $value);
	} // setId()
 
	function getChatId() {
		return $this->getColumnValue('chat_id');
	} // getChatId()
 
	function setChatId($value) {
		return $this->setColumnValue('chat_id', $value);
	} // setChatId()
 
	function getSenderId() {
		return $this->getColumnValue('sender_id');
	} // getSenderId()
 
	function setSenderId($value) {
		return $this->setColumnValue('sender_id', $value);
	} // setSenderId()
 
	function getText() {
		return $this->getColumnValue('text');
	} // getText()
 
	function setText($value) {
		return $this->setColumnValue('text', $value);
	} // setText()
 
	function getDate() {
		return $this->getColumnValue('date');
	} // getDate()
 
	function setDate($value) {
		return $this->setColumnValue('date', $value);
	} // setDate()
 
	function manager() {
		if(!($this->manager instanceof ChatLines)) $this->manager = ChatLines::instance();
		return $this->manager;
	} // manager
 
} // BaseChatLine
?>
<?php
class Chats extends BaseChats {
 
	function getOngoingChats() {
		$chats = $this->findAll(array(
			'condition' => array('`end_date` = ?',
				EMPTY_DATETIME
			),
			'orderby' => '`start_date` DESC'
		));
		if (is_array($chats)) {
			return $chats;
		} else {
			return array();
		}
	}
 
} // Chats
?>