Source: tobject.phps - download
<?php
/*
@ Project: TObject 1.0
@ Link http://daif.net/tobject/
@ Author Daifallh Al-Otaibi <daif55@gmail.com>
*/
class TObject{
private $TOID; // Table ID
private $TOName; // Table Name
private $TOFields; // Table Fields
private $TOrder; // Order Fields
private $TOLimit; // limit rows
private $TOsql; // SQL String
private $TOVars = array('TOVars','TOID','TOName','TOFields','TOrder','TOLimit','TOsql'); // variables array
function TObject($TOName,$TOID=null){
$this->TOName = $TOName;
if($field_q = mysql_query('DESC `'.$this->TOName.'`')){
while($TOField = mysql_fetch_assoc($field_q)){
$TOField['Length'] = preg_replace('/.+\(([0-9]+)\)/','\\1',$TOField['Type']);
$TOField['Type'] = preg_replace('/\([0-9]+\)/','',$TOField['Type']);
$this->TOFields[$TOField['Field']] = $TOField;
$this->$TOField['Field'] = null;
if($TOField['Key'] == 'PRI') $this->TOID = $TOField['Field'];
}
} else {
$this->error("Table: '{$this->TOName}' dosen't exist");
}
if($TOID) return($this->create($TOID));
}
//setter function
function __set($var, $val){
if(in_array($var,$this->TOVars)){
$this->error("Variable: '$var' is readonly");
}elseif(isset($this->TOFields[$var])){
if(get_magic_quotes_gpc()) $val = stripslashes($val);
$this->$var = mysql_escape_string($val);
}else{
$this->error("Variable: '$var' is not exist");
}
}
//getter function
function __get($var){
if(in_array($var,$this->TOVars)){
return(stripslashes($this->$var));
}elseif(isset($this->TOFields[$var])){
return(stripslashes($this->TOFields[$var]));
} else {
$this->error("Variable: '$var' is not exist");
return(null);
}
}
function primaryKey(){
if($this->TOID){
return($this->TOID);
} else {
$this->error("Table: '{$this->TOName}' without PrimaryKey");
return(false);
}
}
//Create Object
function create($TOID){
if($this->primaryKey()){
if($TOID){
$this->TOsql = 'SELECT * FROM `'.$this->TOName.'`';
$this->TOsql .=" WHERE `{$this->TOID}`='$TOID' LIMIT 1";
$TObject = mysql_fetch_assoc(mysql_query($this->TOsql));
if(is_array($TObject)){
foreach($TObject as $TOFieldName=>$TOFieldValue){
$this->$TOFieldName = $TOFieldValue;
}
return($this);
}else{
return(false);
}
}
}
return(false);
}
//Fetch Object
function fetch(){
$this->limit(0,1);
$TObjects = $this->find();
$TObject = (is_array($TObjects))?$TObjects[0]:false;
return($TObject);
}
//Order Object
function order($TOrder,$TOsort='DESC'){
if(is_array($TOrder) ){
$TOrder = implode(', ',array_map('mysql_escape_string',$TOrder));
$this->TOrder = ' ORDER BY '.$TOrder.$TOsort;
} elseif(!empty($TOrder)) {
$this->TOrder = ' ORDER BY '.mysql_escape_string($TOrder.' ').$TOsort;
}
}
//Limit rows
function limit($TOffset,$TOCount=null){
if(!empty($TOffset) && !empty($TOCount)){
$this->TOLimit = ' LIMIT '. mysql_escape_string($TOffset) . ', '. mysql_escape_string($TOCount);
} elseif (!empty($TOffset)){
$this->TOLimit = ' LIMIT '. mysql_escape_string($TOffset);
}
}
//Find Object
function find($TOrder=''){
$this->TOsql = 'SELECT * FROM `'.$this->TOName.'`';
foreach($this->TOFields as $TOFieldName=>$TOFieldValue){
if($this->$TOFieldName !== '') $TOWhere[] = "`$TOFieldName`='{$this->$TOFieldName}'";
}
if(isset($TOWhere)) $this->TOsql .= ' WHERE '. implode(' AND ',$TOWhere);
if($this->TOrder) $this->TOsql .= $this->TOrder;
if($this->TOLimit) $this->TOsql .= $this->TOLimit;
$TOQ = mysql_query($this->TOsql);
while($TObject = mysql_fetch_assoc($TOQ)){
$TObjects[] = $TObject; //$this->create($TObject[$this->TOID]);
}
if(isset($TObjects) && is_array($TObjects)){
return($TObjects);
}else{
return(false);
}
}
//Save Object
function save(){
return($this->insert());
}
//Save Object
function insert(){
if($this->{$this->TOID}){
return($this->update());
} else {
foreach($this->TOFields as $TOFieldName=>$TOFieldValue){
$TONames[] = "`$TOFieldName`";
$TOValues[] = "'{$this->$TOFieldName}'";
}
$this->TOsql = 'INSERT INTO `'.$this->TOName.'` ('.implode(' ,',$TONames).')';
$this->TOsql .= ' VALUES ('.implode(' ,',$TOValues).')';
if(mysql_query($this->TOsql)){
return(mysql_insert_id());
}else{
print mysql_error();
return(false);
}
}
}
//Update Object
function update(){
if($this->primaryKey()){
foreach($this->TOFields as $TOFieldName=>$TOFieldValue){
$TOValues[] = "`$TOFieldName`='{$this->$TOFieldName}'";
}
$this->TOsql = 'UPDATE `'.$this->TOName.'` SET '.implode(' ,',$TOValues);
$this->TOsql .= " WHERE {$this->TOID}='{$this->{$this->TOID}}' LIMIT 1";
if(mysql_query($this->TOsql)){
return($this->{$this->TOID});
}else{
print mysql_error();
return(false);
}
}
}
//Trigger Error
function error($msg){
trigger_error($msg, E_USER_WARNING);
}
//Destroy Object
function destroy(){
return(settype($this, 'null'));
}
//Delete Object
function delete(){
if($this->primaryKey()){
$this->TOsql = 'DELETE FROM `'.$this->TOName." WHERE {$this->TOID}='{$this->{$this->TOID}}' LIMIT 1";
mysql_query($this->TOsql);
return($this->destroy());
}
}
}
// TObject wrapper function
function TObject($TOName,$TOID=null){
return(new TObject($TOName,$TOID));
}
?>