Code rewriting : doc and remove duplicated function

This commit is contained in:
sparkyx 2021-05-07 15:23:30 +02:00
parent 14d867334f
commit 49117a5ee0
2 changed files with 22 additions and 189 deletions

View file

@ -75,6 +75,7 @@ abstract class Data_SQL
var $primary_key; //! Column name of the primary key
var $type; //! Type of the data
var $date_format; //! defaullt date format
var $default;
function __construct(DatabaseCore $p_cn, $p_id=-1)
{
@ -85,9 +86,14 @@ abstract class Data_SQL
if (count($this->name) != count($this->type) ){
throw new Exception (__FILE__." $this->table Cannot instantiate");
}
// forbid the use of a column named type , date_format, name or primary_key to avoid conflict
/* Initialize an empty object */
foreach ($this->name as $key)
{
if ( in_array($key,['name','type','format_date','cn','date_format','default'] ) ) {
throw new Exception ('DATASQL-94 invalid column name'.$key);
}
$this->$key=null;
}
$this->$pk=$p_id;
@ -127,7 +133,7 @@ abstract class Data_SQL
public function set($p_string, $p_value)
{
if (array_key_exists($p_string, $this->type)) {
$this->$idx=$p_value;
$this->$p_string=$p_value;
} else
throw new Exception(__FILE__.":".__LINE__.$p_string.'Erreur attribut inexistant '.$p_string);
}
@ -217,15 +223,17 @@ abstract class Data_SQL
return $this;
}
/**
* Turn an object (row) into an array
*
* Turn an object (row) into an array, and the key could be prefixed with $prefix
* @param string $prefix before the key
* @return array
*/
public function to_array()
public function to_array($prefix="")
{
$array=array();
foreach ($this->name as $key=> $value)
{
$nkey=$prefix.$key;
$array[$key]=$this->$key;
}
return $array;

View file

@ -87,89 +87,13 @@ require NOALYSS_INCLUDE."/lib/data_sql.class.php";
abstract class Noalyss_SQL extends Data_SQL
{
var $default;
function __construct(&$p_cn, $p_id=-1)
function __construct($p_cn, $p_id=-1)
{
$this->cn=$p_cn;
$pk=$this->primary_key;
$this->$pk=$p_id;
// check that the definition is correct
if (count($this->name) != count($this->type) ){
throw new Exception (__FILE__." $this->table Cannot instantiate");
}
/* Initialize an empty object */
foreach ($this->name as $key)
{
$this->$key=null;
}
$this->$pk=$p_id;
/* load it */
if ($p_id != -1 )$this->load();
parent::__construct($p_cn, $p_id);
}
/**
* Insert or update : if the row already exists, update otherwise insert
*/
public function save()
{
$count = $this->exist();
if ($count == 0)
$this->insert();
else
$this->update();
}
/**
*@brief get the value thanks the colum name and not the alias (name).
*@see getp
*/
public function get($p_string)
{
if (array_key_exists($p_string, $this->type)) {
return $this->$p_string;
}
else
throw new Exception(__FILE__.":".__LINE__.$p_string.'Erreur attribut inexistant '.$p_string);
}
/**
*@brief set the value thanks the colum name and not the alias (name)
*@see setp
*/
public function set($p_string, $p_value)
{
if (array_key_exists($p_string, $this->type)) {
$this->$p_string=$p_value;
} else
throw new Exception(__FILE__.":".__LINE__.$p_string.'Erreur attribut inexistant '.$p_string);
}
/**
*@brief set the value thanks the alias name instead of the colum name
*@see get
*/
public function getp($p_string)
{
if (array_key_exists($p_string, $this->name)) {
$idx=$this->name[$p_string];
return $this->$idx;
}
else
throw new Exception(__FILE__.":".__LINE__.$p_string.'Erreur attribut inexistant '.$p_string);
}
/**
*@brief set the value thanks the alias name instead of the colum name
*@see set
*/
public function setp($p_string, $p_value)
{
if (array_key_exists($p_string, $this->name)) {
$idx=$this->name[$p_string];
$this->$idx=$p_value;
} else
throw new Exception(__FILE__.":".__LINE__.$p_string.'Erreur attribut inexistant '.$p_string);
}
public function insert()
{
@ -244,17 +168,9 @@ abstract class Noalyss_SQL extends Data_SQL
$sql.=" where ".$this->primary_key." = $".$idx;
$this->cn->exec_sql($sql, $array);
}
public function set_pk_value($p_value)
{
$pk=$this->primary_key;
$this->$pk=$p_value;
}
public function get_pk_value()
{
$pk=$this->primary_key;
return $this->$pk;
}
/***
* @brief load a row , corresponding to the primary key
*/
public function load()
{
$sql=$this->build_query();
@ -273,59 +189,6 @@ abstract class Noalyss_SQL extends Data_SQL
}
}
public function get_info()
{
return var_export($this, true);
}
/**
* @todo ajout vérification type (date, text ou numeric)
* @return int
*/
public function verify()
{
foreach ($this->name as $key)
{
if (trim($this->$key)=='')
$this->$key=null;
}
return 0;
}
/**
* Transform an array into object
* @param type $p_array
* @return object
*/
public function from_array($p_array)
{
foreach ($this->name as $key=> $value)
{
if (isset($p_array[$value]))
{
$this->$value=$p_array[$value];
}
else
{
$this->$value=null;
}
}
return $this;
}
/**
* Turn an object (row) into an array, and the key could be prefixed with $prefix
* @param string $prefix before the key
* @return array
*/
public function to_array($prefix="")
{
$array=array();
foreach ($this->name as $key=> $value)
{
$nkey=$prefix.$key;
$array[$nkey]=$this->$key;
}
return $array;
}
/**
* @brief retrieve array of object thanks a condition
@ -342,51 +205,13 @@ abstract class Noalyss_SQL extends Data_SQL
return $ret;
}
/**
* get_seek return the next object, the return of the query must have all the column
* of the object
* @param $p_ret is the return value of an exec_sql
* @param $idx is the index
* @see seek
* @return object
*/
public function next($ret, $i)
{
$array=$this->cn->fetch_array($ret, $i);
return $this->from_array($array);
}
/**
* @see next
* return the number of count in the table corresponding to the where condition
* @param string $p_where the condition appended to the SQL select query , where must be given
* @param array $p_array variable from the $p_where condition
* @return type
*/
public function get_object($p_ret, $idx)
{
return $this->next($p_ret, $idx);
}
/**
* @brief return an array of objects.
* Do not use this function if they are too many objects, it takes a lot of memory,
* and could slow down your application.
* @param $cond condition, order...
* @param $p_array array to use for a condition
* @note this function could slow down your application.
*/
function collect_objects($cond='', $p_array=null)
{
if ($p_array != null && ! is_array($p_array) )
{
throw new Exception(_("Erreur : exec_sql attend un array"));
}
$ret=$this->seek($cond, $p_array);
$max=Database::num_row($ret);
$a_return=array();
for ($i=0; $i<$max; $i++)
{
$a_return[$i]=clone $this->next($ret, $i);
}
return $a_return;
}
public function count($p_where="",$p_array=null) {
$count=$this->cn->get_value("select count(*) from $this->table ".$p_where,$p_array);
return $count;