mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-11-25 01:13:25 +01:00
125 lines
3.5 KiB
PHP
125 lines
3.5 KiB
PHP
<?php
|
|
/**
|
|
* eGroupWare generalized SQL Storage Object Version 2 - requires PHP5.1.2+!!!
|
|
*
|
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
|
* @package etemplate
|
|
* @link http://www.egroupware.org
|
|
* @author Ralf Becker <RalfBecker@outdoor-training.de>
|
|
* @copyright 2007/8 by RalfBecker@outdoor-training.de
|
|
* @version $Id$
|
|
*/
|
|
|
|
/**
|
|
* generalized SQL Storage Object
|
|
*
|
|
* the class can be used in following ways:
|
|
* 1) by calling the constructor with an app and table-name or
|
|
* 2) by setting the following documented class-vars in a class derifed from this one
|
|
* Of cause can you derife the class and call the constructor with params.
|
|
*
|
|
* The so_sql2 class uses a privat $data array and __get and __set methods to set its data.
|
|
* Please note:
|
|
* You have to explicitly declare other object-properties of derived classes, which should NOT
|
|
* be handled by that mechanism!
|
|
*
|
|
* @package etemplate
|
|
* @subpackage api
|
|
* @author RalfBecker-AT-outdoor-training.de
|
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
|
*/
|
|
class so_sql2 extends so_sql
|
|
{
|
|
/**
|
|
* Private array containing all the object-data
|
|
*
|
|
* Colides with the original definition in so_sql and I dont want to change it there at the moment.
|
|
*
|
|
* @var array
|
|
*/
|
|
//private $data;
|
|
|
|
/**
|
|
* constructor of the class
|
|
*
|
|
* NEED to be called from the constructor of the derived class !!!
|
|
*
|
|
* @param string $app should be set if table-defs to be read from <app>/setup/tables_current.inc.php
|
|
* @param string $table should be set if table-defs to be read from <app>/setup/tables_current.inc.php
|
|
* @param object/db $db database object, if not the one in $GLOBALS['egw']->db should be used, eg. for an other database
|
|
* @param string $colum_prefix='' column prefix to automatic remove from the column-name, if the column name starts with it
|
|
* @param boolean $no_clone=false can we avoid to clone the db-object, default no
|
|
* new code using appnames and foreach(select(...,$app) can set it to avoid an extra instance of the db object
|
|
*
|
|
* @return so_sql2
|
|
*/
|
|
function __construct($app='',$table='',$db=null,$column_prefix='',$no_clone=false)
|
|
{
|
|
parent::__construct($app,$table,$db,$column_prefix,$no_clone);
|
|
}
|
|
|
|
/**
|
|
* php4 constructor
|
|
*
|
|
* @deprecated use __construct
|
|
*/
|
|
function so_sql2($app='',$table='',$db=null,$column_prefix='',$no_clone=false)
|
|
{
|
|
self::__construct($app,$table,$db,$column_prefix,$no_clone);
|
|
}
|
|
|
|
/**
|
|
* magic method to read a property from $this->data
|
|
*
|
|
* The special property 'id' always refers to the auto-increment id of the object, independent of its name.
|
|
*
|
|
* @param string $property
|
|
* @return mixed
|
|
*/
|
|
function __get($property)
|
|
{
|
|
switch($property)
|
|
{
|
|
case 'id':
|
|
$property = $this->autoinc_id;
|
|
break;
|
|
}
|
|
if (in_array($property,$this->db_cols) || in_array($property,$this->non_db_cols))
|
|
{
|
|
return $this->data[$property];
|
|
}
|
|
}
|
|
|
|
/**
|
|
* magic method to set a property in $this->data
|
|
*
|
|
* The special property 'id' always refers to the auto-increment id of the object, independent of its name.
|
|
*
|
|
* @param string $property
|
|
* @param mixed $value
|
|
*/
|
|
function __set($property,$value)
|
|
{
|
|
switch($property)
|
|
{
|
|
case 'id':
|
|
$property = $this->autoinc_id;
|
|
break;
|
|
}
|
|
if (in_array($property,$this->db_cols) || in_array($property,$this->non_db_cols))
|
|
{
|
|
$this->data[$property] = $value;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Return the whole object-data as array, it's a cast of the object to an array
|
|
*
|
|
* @return array
|
|
*/
|
|
function as_array()
|
|
{
|
|
return $this->data;
|
|
}
|
|
}
|