From 058042d09df972d3e215236f401c6c9aaa66af58 Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Wed, 18 Mar 2015 17:52:17 +0100 Subject: [PATCH] NEW : update skeleton and class builder --- dev/skeletons/build_class_from_table.php | 41 ++++++++++++-- dev/skeletons/skeleton_class.class.php | 72 ++++++++++++++++++++++++ 2 files changed, 109 insertions(+), 4 deletions(-) diff --git a/dev/skeletons/build_class_from_table.php b/dev/skeletons/build_class_from_table.php index 0b2e96daaac..ca10cf49ef0 100755 --- a/dev/skeletons/build_class_from_table.php +++ b/dev/skeletons/build_class_from_table.php @@ -174,7 +174,7 @@ $targetcontent=$sourcecontent; // Substitute class name $targetcontent=preg_replace('/skeleton_class\.class\.php/', $classmin.'.class.php', $targetcontent); $targetcontent=preg_replace('/\$element=\'skeleton\'/', '\$element=\''.$classmin.'\'', $targetcontent); -$targetcontent=preg_replace('/\$table_element=\'skeleton\'/', '\$table_element=\''.$classmin.'\'', $targetcontent); +$targetcontent=preg_replace('/\$table_element=\'skeleton\'/', '\$table_element=\''.$tablenoprefix.'\'', $targetcontent); $targetcontent=preg_replace('/Skeleton_Class/', $classname, $targetcontent); // Substitute comments @@ -252,7 +252,13 @@ foreach($property as $key => $prop) if ($addfield) { $varprop.="\t\t\$sql.= \" "; - if ($prop['istime']) + if ($prop['field']=='datec') + { + $varprop.='"."\'".$this->db->idate(dol_now())."\'"."'; + if ($i < count($property)) $varprop.=","; + $varprop.='";'; + } + elseif ($prop['istime']) { $varprop.='".(! isset($this->'.$prop['field'].') || dol_strlen($this->'.$prop['field'].')==0?\'NULL\':"\'".$this->db->idate('; $varprop.="\$this->".$prop['field'].""; @@ -268,6 +274,12 @@ foreach($property as $key => $prop) if ($i < count($property)) $varprop.=","; $varprop.='";'; } + elseif ($prop['field']=='fk_user_mod' || $prop['field']=='fk_user_author') + { + $varprop.='".$user->id."'; + if ($i < count($property)) $varprop.=","; + $varprop.='";'; + } else { $varprop.='".(! isset($this->'.$prop['field'].')?\'NULL\':"\'".'; @@ -289,11 +301,17 @@ $i=0; foreach($property as $key => $prop) { $i++; - if ($prop['field'] != 'rowid' && $prop['field'] != 'id') + if ($prop['field'] != 'rowid' && $prop['field'] != 'id' && $prop['field'] != 'datec' && $prop['field'] != 'fk_user_author') { $varprop.="\t\t\$sql.= \" "; $varprop.=$prop['field'].'='; - if ($prop['istime']) + if ($prop['field']=='tms') { + $varprop.='".(dol_strlen($this->'.$prop['field'].')!=0 ? "\'".$this->db->idate('; + $varprop.='$this->'.$prop['field']; + $varprop.=')."\'" : "\'".$this->db->idate(dol_now())."\'").'; + $varprop.='"'; + } + elseif ($prop['istime']) { // (dol_strlen($this->datep)!=0 ? "'".$this->db->idate($this->datep)."'" : 'null') $varprop.='".(dol_strlen($this->'.$prop['field'].')!=0 ? "\'".$this->db->idate('; @@ -301,6 +319,9 @@ foreach($property as $key => $prop) $varprop.=')."\'" : \'null\').'; $varprop.='"'; } + elseif ($prop['field']=='fk_user_mod') { + $varprop.='".$user->id."'; + } else { $varprop.="\"."; @@ -325,6 +346,7 @@ $targetcontent=preg_replace('/\$sql\.= " t\.field2";/', '', $targetcontent); // Substitute select set parameters $varprop="\n"; +$varpropline="\n"; $cleanparam=''; $i=0; foreach($property as $key => $prop) @@ -338,11 +360,22 @@ foreach($property as $key => $prop) if ($prop['istime']) $varprop.=')'; $varprop.=";"; $varprop.="\n"; + + $varpropline.="\t\t\t\t\$line->".$prop['field']." = "; + if ($prop['istime']) $varpropline.='$this->db->jdate('; + $varpropline.='$obj->'.$prop['field']; + if ($prop['istime']) $varpropline.=')'; + $varpropline.=";"; + $varpropline.="\n"; } } $targetcontent=preg_replace('/\$this->prop1 = \$obj->field1;/', $varprop, $targetcontent); $targetcontent=preg_replace('/\$this->prop2 = \$obj->field2;/', '', $targetcontent); +//Substirute fetchAll +$targetcontent=preg_replace('/\$line->prop1 = \$obj->field1;/', $varpropline, $targetcontent); +$targetcontent=preg_replace('/\$line->prop2 = \$obj->field2;/', '', $targetcontent); + // Substitute initasspecimen parameters $varprop="\n"; diff --git a/dev/skeletons/skeleton_class.class.php b/dev/skeletons/skeleton_class.class.php index c1710165066..c9e20317695 100644 --- a/dev/skeletons/skeleton_class.class.php +++ b/dev/skeletons/skeleton_class.class.php @@ -1,6 +1,7 @@ * Copyright (C) 2014 Juanjo Menent + * Copyright (C) 2015 Florian Henry * Copyright (C) ---Put here your own copyright and developer email--- * * This program is free software; you can redistribute it and/or modify @@ -41,6 +42,8 @@ class Skeleton_Class extends CommonObject var $element='skeleton'; //!< Id that identify managed objects var $table_element='skeleton'; //!< Name of table without prefix where object is stored + var $lines=array(); + var $id; var $prop1; var $prop2; @@ -175,6 +178,69 @@ class Skeleton_Class extends CommonObject } } + /** + * Load object in memory from the database + * + * @param string $sortorder Sort Order + * @param string $sortfield Sort field + * @param int $limit offset limit + * @param int $offset offset limit + * @param array $filter filter array + * @return int <0 if KO, >0 if OK + */ + function fetchAll($sortorder, $sortfield, $limit, $offset, $filter = array()) + { + global $langs; + $sql = "SELECT"; + $sql.= " t.rowid,"; + $sql.= " t.field1,"; + $sql.= " t.field2"; + //... + $sql.= " FROM ".MAIN_DB_PREFIX."mytable as t"; + + // Manage filter + $sqlwhere=array(); + if (count($filter)>0) { + foreach ( $filter as $key => $value ) { + //$sqlwhere []= ' AND '. $key . ' LIKE \'%' . $this->db->escape($value) . '%\''; + } + } + if (count($sqlwhere)>0) { + $sql.= ' WHERE '.implode(' AND ', $sqlwhere); + } + $sql .= " ORDER BY " . $sortfield . " " . $sortorder . " " . $this->db->plimit($limit + 1, $offset); + + $this->lines = array (); + + dol_syslog(get_class($this)."::fetchAll", LOG_DEBUG); + $resql=$this->db->query($sql); + if ($resql) + { + $num = $this->db->num_rows($resql); + + while ($obj = $this->db->fetch_object($resql)) + { + $line=new Skeleton_ClassLine(); + + $line->id = $obj->rowid; + $line->prop1 = $obj->field1; + $line->prop2 = $obj->field2; + + $this->line[]=$line; + //... + } + $this->db->free($resql); + + return $num; + } + else + { + $this->error="Error ".$this->db->lasterror(); + dol_syslog(get_class($this)."::fetchAll ".$this->error, LOG_ERR); + return -1; + } + } + /** * Update object into database @@ -368,3 +434,9 @@ class Skeleton_Class extends CommonObject } } + +class Skeleton_ClassLine { + var $id; + var $prop1; + var $prop2; +}