GIF89a;
| Direktori : /home/serb/www/livechat/php/model/ |
| Current File : /home/serb/www/livechat/php/model/DataModel.php |
<?php
class DataModel extends Model
{
// Static methods
public static function repo($type)
{
return new DataModel($type);
}
// Fields
public $type;
// Constructor
public function __construct($type, $data = null, $rawData = null)
{
parent::__construct($data, $rawData);
$this->type = $type;
}
// Getters & setters
public function getTableName()
{
return 'mirrormx_customer_chat_data';
}
public function getColumns()
{
return array('type', 'key', 'value');
}
// Methods
public function findAll($orderBy = array(), $join = array())
{
$query = 'SELECT * FROM ' . $this->getTableName();
// Handle joining
if(!empty($join))
{
$joinTable = $join['table'];
$joinColumn = $join['column'];
$joinSelfColumn = $join['selfColumn'];
$query .= ' LEFT JOIN ' . $joinTable . ' ON (' .
$this->getTableName() . '.' . $joinSelfColumn .
' = ' .
$joinTable . '.' . $joinColumn .
')';
}
// Handle ordering
if(!empty($orderBy))
{
foreach($orderBy as $name => $type)
{
if(is_numeric($name))
{
$name = $type;
$type = 'ASC';
}
$query .= " WHERE `type` = '{$this->type}' ORDER BY $name $type,";
}
// Cut the last comma (,) off
$query = substr($query, 0, -1);
}
// Query
$result = self::$db->query($query);
if($result)
{
$objects = array();
// Construct the objects representing the result set
foreach($result as $value)
{
$objects[] = $this->createInstance($this->postRead($value));
}
// Return the result
return $objects;
}
// Indicate error
return false;
}
public function findBy($options, $logicalOperator = 'AND', $orderBy = array(), $join = array())
{
$options['type'] = $this->type;
return parent::findBy($options, $logicalOperator, $orderBy, $join);
}
public function findOneBy($options, $logicalOperator = 'AND', $join = array())
{
$options['type'] = $this->type;
return parent::findOneBy($options, $logicalOperator, $join);
}
// Helpers
protected function createInstance($data = null)
{
return new DataModel($this->type, $data);
}
}
?>