diff --git a/dev/skeletons/build_class_from_table.php b/dev/skeletons/build_class_from_table.php index 3a25cb1b285df0f499ba1f5d0f8b355f0ef9e211..8291daa4c9d5da8353d6c41e46e425eb4beb4d9a 100644 --- a/dev/skeletons/build_class_from_table.php +++ b/dev/skeletons/build_class_from_table.php @@ -181,12 +181,12 @@ foreach($property as $key => $prop) { if ($prop['field'] != 'rowid' && ! $prop['istime']) { - $varprop.="\t\t\$this->".$prop['field']."=trim(\$this->".$prop['field'].");"; + $varprop.="\t\tif (isset(\$this->".$prop['field'].")) \$this->".$prop['field']."=trim(\$this->".$prop['field'].");"; $varprop.="\n"; } } -$targetcontent=preg_replace('/\$this->prop1=trim\(\$this->prop1\);/', $varprop, $targetcontent); -$targetcontent=preg_replace('/\$this->prop2=trim\(\$this->prop2\);/', '', $targetcontent); +$targetcontent=preg_replace('/if \(isset\(\$this->prop1\)\) \$this->prop1=trim\(\$this->prop1\);/', $varprop, $targetcontent); +$targetcontent=preg_replace('/if \(isset\(\$this->prop2\)\) \$this->prop2=trim\(\$this->prop2\);/', '', $targetcontent); // Substitute insert into parameters $varprop="\n"; @@ -267,10 +267,12 @@ foreach($property as $key => $prop) } else { - $varprop.="'\"."; - if ($prop['ischar']) $varprop.="addslashes(\$this->".$prop['field'].")"; - else $varprop.="\$this->".$prop['field']; - $varprop.=".\"'"; + $varprop.="\"."; + // $sql.= " field1=".(isset($this->field1)?"'".addslashes($this->field1)."'":"null").","; + if ($prop['ischar']) $varprop.='(isset($this->'.$prop['field'].')?"\'".addslashes($this->'.$prop['field'].')."\'":"null")'; + // $sql.= " field1=".(isset($this->field1)?$this->field1:"null").","; + else $varprop.='(isset($this->'.$prop['field'].')?$this->'.$prop['field'].':"null")'; + $varprop.=".\""; } if ($i < sizeof($property)) $varprop.=','; @@ -278,8 +280,8 @@ foreach($property as $key => $prop) $varprop.="\n"; } } -$targetcontent=preg_replace('/\$sql.= " field1=\'".addslashes\(\$this->field1\)."\',";/', $varprop, $targetcontent); -$targetcontent=preg_replace('/\$sql.= " field2=\'".addslashes\(\$this->field2\)."\'";/', '', $targetcontent); +$targetcontent=preg_replace('/\$sql.= " field1=".\(isset\(\$this->field1\)\?"\'".addslashes\(\$this->field1\)."\'":"null"\).",";/', $varprop, $targetcontent); +$targetcontent=preg_replace('/\$sql.= " field2=".\(isset\(\$this->field2\)\?"\'".addslashes\(\$this->field2\)."\'":"null"\)."";/', '', $targetcontent); // Substitute select parameters $varprop="\n"; diff --git a/dev/skeletons/skeleton_class.class.php b/dev/skeletons/skeleton_class.class.php index cd2a71fa57130ae98a28b631698a04da3d643a6a..4e2f697a2a77b2344b7c5ba72ee0666688d97149 100644 --- a/dev/skeletons/skeleton_class.class.php +++ b/dev/skeletons/skeleton_class.class.php @@ -74,8 +74,8 @@ class Skeleton_class // extends CommonObject $error=0; // Clean parameters - $this->prop1=trim($this->prop1); - $this->prop2=trim($this->prop2); + if (isset($this->prop1)) $this->prop1=trim($this->prop1); + if (isset($this->prop2)) $this->prop2=trim($this->prop2); //... // Check parameters @@ -134,6 +134,49 @@ class Skeleton_class // extends CommonObject } } + + /** + * \brief Load object in memory from database + * \param id id object + * \return int <0 if KO, >0 if OK + */ + function fetch($id) + { + global $langs; + $sql = "SELECT"; + $sql.= " t.rowid,"; + $sql.= " t.field1,"; + $sql.= " t.field2"; + //... + $sql.= " FROM ".MAIN_DB_PREFIX."mytable as t"; + $sql.= " WHERE t.rowid = ".$id; + + dolibarr_syslog(get_class($this)."::fetch sql=".$sql, LOG_DEBUG); + $resql=$this->db->query($sql); + if ($resql) + { + if ($this->db->num_rows($resql)) + { + $obj = $this->db->fetch_object($resql); + + $this->id = $obj->rowid; + $this->prop1 = $obj->field1; + $this->prop2 = $obj->field2; + //... + } + $this->db->free($resql); + + return 1; + } + else + { + $this->error="Error ".$this->db->lasterror(); + dolibarr_syslog(get_class($this)."::fetch ".$this->error, LOG_ERR); + return -1; + } + } + + /** * \brief Update database * \param user User that modify @@ -146,8 +189,8 @@ class Skeleton_class // extends CommonObject $error=0; // Clean parameters - $this->prop1=trim($this->prop1); - $this->prop2=trim($this->prop2); + if (isset($this->prop1)) $this->prop1=trim($this->prop1); + if (isset($this->prop2)) $this->prop2=trim($this->prop2); //... // Check parameters @@ -155,8 +198,8 @@ class Skeleton_class // extends CommonObject // Update request $sql = "UPDATE ".MAIN_DB_PREFIX."mytable SET"; - $sql.= " field1='".addslashes($this->field1)."',"; - $sql.= " field2='".addslashes($this->field2)."'"; + $sql.= " field1=".(isset($this->field1)?"'".addslashes($this->field1)."'":"null").","; + $sql.= " field2=".(isset($this->field2)?"'".addslashes($this->field2)."'":"null").""; //... $sql.= " WHERE rowid=".$this->id; @@ -201,48 +244,6 @@ class Skeleton_class // extends CommonObject } - /** - * \brief Load object in memory from database - * \param id id object - * \return int <0 if KO, >0 if OK - */ - function fetch($id) - { - global $langs; - $sql = "SELECT"; - $sql.= " t.rowid,"; - $sql.= " t.field1,"; - $sql.= " t.field2"; - //... - $sql.= " FROM ".MAIN_DB_PREFIX."mytable as t"; - $sql.= " WHERE t.rowid = ".$id; - - dolibarr_syslog(get_class($this)."::fetch sql=".$sql, LOG_DEBUG); - $resql=$this->db->query($sql); - if ($resql) - { - if ($this->db->num_rows($resql)) - { - $obj = $this->db->fetch_object($resql); - - $this->id = $obj->rowid; - $this->prop1 = $obj->field1; - $this->prop2 = $obj->field2; - //... - } - $this->db->free($resql); - - return 1; - } - else - { - $this->error="Error ".$this->db->lasterror(); - dolibarr_syslog(get_class($this)."::fetch ".$this->error, LOG_ERR); - return -1; - } - } - - /** * \brief Delete object in database * \param user User that delete diff --git a/dev/skeletons/skeleton_script.php b/dev/skeletons/skeleton_script.php index a2bb4f7e0045a0e87058853cb9a5d0f5ece59cc9..9285f9f588edfa6e6dcdcf0890044ba3d6a03c60 100644 --- a/dev/skeletons/skeleton_script.php +++ b/dev/skeletons/skeleton_script.php @@ -50,7 +50,7 @@ $error=0; // -------------------- START OF YOUR CODE HERE -------------------- - +@set_time_limit(0); print "***** ".$script_file." (".$version.") *****\n"; // Check parameters @@ -58,53 +58,50 @@ if (! isset($argv[1])) { print "Usage: ".$script_file." param1 param2 ...\n"; exit; } -@set_time_limit(0); // Show parameters print 'Argument 1='.$argv[1]."\n"; print 'Argument 2='.$argv[2]."\n"; +// Examples for manipulating class skeleton_class +require_once(DOL_DOCUMENT_ROOT."/../dev/skeletons/skeleton_class.class.php"); +$myobject=new Skeleton_class($db); + // Example for inserting creating object in database /* -require_once(DOL_DOCUMENT_ROOT."/../dev/skeletons/skeleton_class.class.php"); dolibarr_syslog($script_file." CREATE", LOG_DEBUG); -$myobject=new Skeleton_class($db); +$myobject->prop1='value_prop1'; +$myobject->prop2='value_prop2'; $id=$myobject->create($user); if ($id < 0) dolibarr_print_error($db,$myobject->error); +else print "Object created with id=".$id."\n"; */ - // Example for reading object from database /* -require_once(DOL_DOCUMENT_ROOT."/../dev/skeletons/skeleton_class.class.php"); dolibarr_syslog($script_file." FETCH", LOG_DEBUG); -$myobject=new Skeleton_class($db); -$id=1; $result=$myobject->fetch($id); if ($result < 0) dolibarr_print_error($db,$myobject->error); +else print "Object with id=".$id." loaded\n"; */ - -// Example for updating object in database +// Example for updating object in database ($myobject must have been loaded by a fetch before) /* -require_once(DOL_DOCUMENT_ROOT."/../dev/skeletons/skeleton_class.class.php"); dolibarr_syslog($script_file." UPDATE", LOG_DEBUG); -$myobject=new Skeleton_class($db); $myobject->prop1='newvalue_prop1'; $myobject->prop2='newvalue_prop2'; $result=$myobject->update($user); if ($result < 0) dolibarr_print_error($db,$myobject->error); +else print "Object with id ".$myobject->id." updated\n"; */ - -// Example for deleting object in database +// Example for deleting object in database ($myobject must have been loaded by a fetch before) /* -require_once(DOL_DOCUMENT_ROOT."/../dev/skeletons/skeleton_class.class.php"); dolibarr_syslog($script_file." DELETE", LOG_DEBUG); -$myobject=new Skeleton_class($db); $result=$myobject->delete($user); if ($result < 0) dolibarr_print_error($db,$myobject->error); +else print "Object with id ".$myobject->id." deleted\n"; */