From bc630ba4e7a67db6aa083aca3d90db74ef4ef19a Mon Sep 17 00:00:00 2001 From: Dany De Bontridder Date: Fri, 5 Sep 2014 20:06:22 +0200 Subject: [PATCH] Replace PhpCompta_SQL by NOALYSS_SQL Add the method in NOALYSS_SQL collect_objects --- include/class_default_menu_sql.php | 4 +- include/class_noalyss_sql.php | 329 +++++++++++++++++++++++++++++ include/class_phpcompta_sql.php | 290 ------------------------- include/class_profile_sql.php | 4 +- include/class_stock_goods_sql.php | 6 +- include/class_stock_sql.php | 4 +- include/class_tag_sql.php | 4 +- 7 files changed, 340 insertions(+), 301 deletions(-) create mode 100644 include/class_noalyss_sql.php delete mode 100644 include/class_phpcompta_sql.php diff --git a/include/class_default_menu_sql.php b/include/class_default_menu_sql.php index 76f5758b1..2b3f058fb 100644 --- a/include/class_default_menu_sql.php +++ b/include/class_default_menu_sql.php @@ -23,9 +23,9 @@ * * @author dany */ -require_once 'class_phpcompta_sql.php'; +require_once 'class_noalyss_sql.php'; -class Default_Menu_SQL extends Phpcompta_SQL +class Default_Menu_SQL extends Noalyss_SQL { var $md_id; var $md_code; diff --git a/include/class_noalyss_sql.php b/include/class_noalyss_sql.php new file mode 100644 index 000000000..b73f67b02 --- /dev/null +++ b/include/class_noalyss_sql.php @@ -0,0 +1,329 @@ +table = "schema.table"; + $this->primary_key = "o_id"; + + $this->name=array( + "id"=>"o_id", + "dolibarr"=>"o_doli", + "date"=>"o_date", + "qcode"=>"o_qcode", + "fiche"=>"f_id", + + + ); + + $this->type = array( + "o_id"=>"numeric", + "o_doli"=>"numeric", + "o_date"=>"date", + "o_qcode"=>"text", + "f_id"=>"numeric", + + ); + + $this->default = array( + "o_id" => "auto", + ); + $this->date_format = "DD.MM.YYYY"; + global $cn; + + parent::__construct($cn,$p_id); + } + + } + * @endcode + * + */ +class Noalyss_SQL +{ + + function __construct(&$p_cn, $p_id=-1) + { + $this->cn=$p_cn; + $pk=$this->primary_key; + $this->$pk=$p_id; + + /* Initialize an empty object */ + foreach ($this->name as $key) + { + $this->$key=null; + } + $this->$pk=$p_id; + /* load it */ + $this->load(); + } + + public function save() + { + $pk=$this->primary_key; + if ($this->$pk==-1) + $this->insert(); + else + $this->update(); + } + + 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); + } + + 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() + { + $this->verify(); + $sql="insert into ".$this->table." ( "; + $sep=""; + $par=""; + $idx=1; + $array=array(); + foreach ($this->name as $key=> $value) + { + if (isset($this->default[$value])&&$this->default[$value]=="auto"&&$this->$value==null) + continue; + if ($value==$this->primary_key&&$this->$value==-1) + continue; + $sql.=$sep.$value; + switch ($this->type[$value]) + { + case "date": + if ($this->date_format=="") + throw new Exception('Format Date invalide'); + $par .=$sep.'to_date($'.$idx.",'".$this->date_format."')"; + break; + default: + $par .= $sep."$".$idx; + } + + $array[]=$this->$value; + $sep=","; + $idx++; + } + $sql.=") values (".$par.") returning ".$this->primary_key; + $pk=$this->primary_key; + $this->$pk=$this->cn->get_value($sql, $array); + } + + public function delete() + { + $pk=$this->primary_key; + $sql=" delete from ".$this->table." where ".$this->primary_key."=".sql_string($this->$pk); + $this->cn->exec_sql($sql); + } + + public function update() + { + $this->verify(); + $pk=$this->primary_key; + $sql="update ".$this->table." "; + $sep=""; + $idx=1; + $array=array(); + $set=" set "; + foreach ($this->name as $key=> $value) + { + if (isset($this->default[$value])&&$this->default[$value]=="auto") + continue; + switch ($this->type[$value]) + { + case "date": + $par=$value.'=to_date($'.$idx.",'".$this->date_format."')"; + break; + default: + $par=$value."= $".$idx; + } + $sql.=$sep." $set ".$par; + $array[]=$this->$value; + $sep=","; + $set=""; + $idx++; + } + $sql.=" where ".$this->primary_key." =".$this->$pk; + $this->cn->exec_sql($sql, $array); + } + + public function load() + { + $sql=" select "; + $sep=""; + $par=""; + + foreach ($this->name as $key) + { + + switch ($this->type[$key]) + { + case "date": + $sql .= $sep.'to_char('.$key.",'".$this->date_format."') as ".$key; + break; + default: + $sql.=$sep.$key; + } + $sep=","; + } + $pk=$this->primary_key; + $sql.=" from ".$this->table; + $sql.=" where ".$this->primary_key." = ".$this->$pk; + $result=$this->cn->get_array($sql); + if ($this->cn->count()==0) + { + $this->$pk=-1; + return; + } + + foreach ($result[0] as $key=> $value) + { + $this->$key=$value; + } + } + + public function get_info() + { + return var_export($this, true); + } + + 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; + } + + /** + * @brief retrieve array of object thanks a condition + * @param $cond condition (where clause) (optional by default all the rows are fetched) + * you can use this parameter for the order or subselect + * @param $p_array array for the SQL stmt + * @see Database::exec_sql get_object Database::num_row + * @return the return value of exec_sql + */ + function seek($cond='', $p_array=null) + { + $sql="select * from ".$this->table." $cond"; + $ret=$this->cn->exec_sql($sql, $p_array); + 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 + */ + 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]=$this->next($ret, $i); + } + return $a_return; + } + +} + +?> diff --git a/include/class_phpcompta_sql.php b/include/class_phpcompta_sql.php deleted file mode 100644 index 6ee93d7dd..000000000 --- a/include/class_phpcompta_sql.php +++ /dev/null @@ -1,290 +0,0 @@ -table = "schema.table"; - $this->primary_key = "o_id"; - - $this->name=array( - "id"=>"o_id", - "dolibarr"=>"o_doli", - "date"=>"o_date", - "qcode"=>"o_qcode", - "fiche"=>"f_id", - - - ); - - $this->type = array( - "o_id"=>"numeric", - "o_doli"=>"numeric", - "o_date"=>"date", - "o_qcode"=>"text", - "f_id"=>"numeric", - - ); - - $this->default = array( - "o_id" => "auto", - ); - $this->date_format = "DD.MM.YYYY"; - global $cn; - - parent::__construct($cn,$p_id); - } - -} - * @endcode - * - */ -class Phpcompta_SQL -{ - - function __construct(&$p_cn, $p_id = -1) - { - $this->cn = $p_cn; - $pk=$this->primary_key; - $this->$pk= $p_id; - - /* Initialize an empty object */ - foreach ($this->name as $key ) - { - $this->$key= null; - } - $this->$pk= $p_id; - /* load it */ - $this->load(); - } - public function save() { - $pk=$this->primary_key; - if ( $this->$pk== -1 ) - $this->insert(); - else - $this->update(); - } - 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); - } - - 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() - { - $this->verify(); - $sql = "insert into " . $this->table . " ( "; - $sep = ""; - $par = ""; - $idx = 1; - $array = array(); - foreach ($this->name as $key=>$value) - { - if (isset($this->default[$value]) && $this->default[$value] == "auto" && $this->$value ==null ) - continue; - if ( $value==$this->primary_key && $this->$value == -1 ) continue; - $sql.=$sep.$value; - switch ($this->type[$value]) - { - case "date": - if ($this->date_format=="") throw new Exception('Format Date invalide'); - $par .=$sep. 'to_date($' . $idx . ",'" . $this->date_format . "')" ; - break; - default: - $par .= $sep."$" . $idx ; - } - - $array[] = $this->$value; - $sep = ","; - $idx++; - } - $sql.=") values (" . $par . ") returning " . $this->primary_key; - $pk=$this->primary_key; - $this->$pk = $this->cn->get_value($sql, $array); - } - - public function delete() - { - $pk=$this->primary_key; - $sql = " delete from " . $this->table . " where " . $this->primary_key . "=" . sql_string($this->$pk); - $this->cn->exec_sql($sql); - } - - public function update() - { - $this->verify(); - $pk=$this->primary_key; - $sql = "update " . $this->table . " "; - $sep = ""; - $idx = 1; - $array = array(); - $set=" set "; - foreach ($this->name as $key=>$value) - { - if (isset($this->default[$value]) && $this->default[$value] == "auto" ) - continue; - switch ($this->type[$value]) - { - case "date": - $par =$value. '=to_date($' . $idx . ",'" . $this->date_format . "')" ; - break; - default: - $par = $value."= $" . $idx ; - } - $sql.=$sep." $set " . $par ; - $array[] = $this->$value; - $sep = ",";$set="";$idx++; - } - $sql.=" where " . $this->primary_key . " =" . $this->$pk; - $this->cn->exec_sql($sql, $array); - - } - - public function load() - { - $sql = " select "; - $sep="";$par=""; - - foreach ($this->name as $key) - { - - switch ($this->type[$key]) - { - case "date": - $sql .= $sep.'to_char(' . $key . ",'" . $this->date_format . "') as ".$key ; - break; - default: - $sql.=$sep.$key ; - } - $sep = ","; - } - $pk=$this->primary_key; - $sql.=" from ".$this->table; - $sql.=" where " . $this->primary_key . " = " . $this->$pk; - $result = $this->cn->get_array($sql); - if ($this->cn->count() == 0 ) { - $this->$pk=-1; - return ; - } - - foreach ($result[0] as $key=>$value) { - $this->$key=$value; - } - } - - public function get_info() - { - return var_export($this, true); - } - - 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; - } - /** - *@brief retrieve array of object thanks a condition - *@param $cond condition (where clause) (optional by default all the rows are fetched) - * you can use this parameter for the order or subselect - *@param $p_array array for the SQL stmt - *@see Database::exec_sql get_object Database::num_row - *@return the return value of exec_sql - */ - function seek($cond='', $p_array=null) - { - $sql = "select * from ".$this->table." $cond"; - $ret = $this->cn->exec_sql($sql, $p_array); - 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 - */ - public function get_object($p_ret,$idx) - { - return $this->next($p_ret, $idx); - } -} - - -?> diff --git a/include/class_profile_sql.php b/include/class_profile_sql.php index 7e8c3c31f..50a57e72d 100644 --- a/include/class_profile_sql.php +++ b/include/class_profile_sql.php @@ -30,12 +30,12 @@ */ require_once('class_database.php'); require_once('ac_common.php'); -require_once 'class_phpcompta_sql.php'; +require_once 'class_noalyss_sql.php'; /** * @brief Manage the table public.profile */ -class Profile_sql extends Phpcompta_SQL +class Profile_sql extends Noalyss_SQL { /* example private $variable=array("easy_name"=>column_name,"email"=>"column_name_email","val3"=>0); */ diff --git a/include/class_stock_goods_sql.php b/include/class_stock_goods_sql.php index 13c90cd4d..56ffb8352 100644 --- a/include/class_stock_goods_sql.php +++ b/include/class_stock_goods_sql.php @@ -25,9 +25,9 @@ * @brief * */ -require_once 'class_phpcompta_sql.php'; +require_once 'class_noalyss_sql.php'; -class Stock_Goods_Sql extends Phpcompta_SQL +class Stock_Goods_Sql extends Noalyss_SQL { function __construct($cn,$p_id = -1) @@ -81,7 +81,7 @@ class Stock_Goods_Sql extends Phpcompta_SQL } -class Stock_Change_Sql extends Phpcompta_SQL +class Stock_Change_Sql extends Noalyss_SQL { function __construct($cn,$p_id = -1) diff --git a/include/class_stock_sql.php b/include/class_stock_sql.php index 9853ab7e9..e6b1cf156 100644 --- a/include/class_stock_sql.php +++ b/include/class_stock_sql.php @@ -25,9 +25,9 @@ * @brief * */ -require_once 'class_phpcompta_sql.php'; +require_once 'class_noalyss_sql.php'; -class Stock_Sql extends Phpcompta_SQL { +class Stock_Sql extends Noalyss_SQL { function __construct($cn,$p_id=-1) { $this->table = "public.stock_repository"; diff --git a/include/class_tag_sql.php b/include/class_tag_sql.php index 82a126327..ba4caa03b 100644 --- a/include/class_tag_sql.php +++ b/include/class_tag_sql.php @@ -1,7 +1,7 @@ column_name,"email"=>"column_name_email","val3"=>0); */