diff --git a/dev/skeletons/skeleton_class.class.php b/dev/skeletons/skeleton_class.class.php new file mode 100644 index 00000000000..6406d4f54f5 --- /dev/null +++ b/dev/skeletons/skeleton_class.class.php @@ -0,0 +1,237 @@ + + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * $Id$ + * $Source$ + */ + +/** + \file dev/skeletons/skeleton_class.class.php + \ingroup core + \brief Example for class + \version $Revision$ +*/ + +// Put here all includes required by your script +//require_once(DOL_DOCUMENT_ROOT."/societe.class.php"); +//require_once(DOL_DOCUMENT_ROOT."/contact.class.php"); +//require_once(DOL_DOCUMENT_ROOT."/product.class.php"); + + + +/** + \class Skeleton_class + \brief Class description +*/ + +class Skeleton_class +{ + var $db; + var $error=''; + var $errors=array(); + + var $id; + var $prop1; + var $prop2; + + + /** + * \brief Constructor + * \param DB Database handler + */ + function Skeleton_class($DB) + { + $this->db = $DB; + return 1; + } + + + /** + * \brief Create in database + * \param user User that create + * \return int <0 si ko, >0 si ok + */ + function create($user) + { + global $conf, $langs; + + // Clean parameters + $this->prop1=trim($this->prop1); + $this->prop2=trim($this->prop2); + + // Insert request + $sql = "INSERT INTO ".MAIN_DB_PREFIX."mytable"; + $sql.= "(rowid, field1)"; + $sql.= " VALUES ("; + $sql.= " ".$this->id.","; + $sql.= " '".$this->prop1."'"; + $sql.= ")"; + dolibarr_syslog("Skeleton_class::create sql=".$sql); + + $resql=$this->db->query($sql); + if ($resql) + { + $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."mytable"); + + $resql=$this->update($user, 1); + if ($resql < 0) + { + $this->error=$this->db->error(); + return -2; + } + + // Appel des triggers + include_once(DOL_DOCUMENT_ROOT . "/interfaces.class.php"); + $interface=new Interfaces($this->db); + $result=$interface->run_triggers('MYOBJECT_CREATE',$this,$user,$langs,$conf); + if ($result < 0) $this->errors=$interface->errors; + // Fin appel triggers + + $this->id = $newid; + return $this->id; + } + else + { + $this->error=$this->db->error(); + dolibarr_syslog("Skeleton_class::create ".$this->error); + return -1; + } + } + + /* + * \brief Update database + * \param user User that modify + * \param notrigger 0=no, 1=yes (no update trigger) + * \return int <0 if KO, >0 if OK + */ + function update($user=0, $notrigger=0) + { + global $conf, $langs; + + // Clean parameters + $this->prop1=trim($this->prop1); + $this->prop2=trim($this->prop2); + + // Update request + $sql = "UPDATE ".MAIN_DB_PREFIX."mytable SET"; + $sql.= " field1='".addslashes($this->field1)."',"; + $sql.= " field2='".addslashes($this->field2)."'"; + $sql.= " WHERE rowid=".$this->id; + dolibarr_syslog("Skeleton_class::update sql=".$sql,LOG_DEBUG); + + $resql = $this->db->query($sql); + if (! $resql) + { + $this->error=$this->db->error().' sql='.$sql; + return -1; + } + + if (! $notrigger) + { + // Appel des triggers + include_once(DOL_DOCUMENT_ROOT . "/interfaces.class.php"); + $interface=new Interfaces($this->db); + $result=$interface->run_triggers('MYOBJECT_MODIFY',$this,$user,$langs,$conf); + if ($result < 0) $this->errors=$interface->errors; + // Fin appel triggers + } + + return 1; + } + + + /* + * \brief Load object in memory from database + * \param id id object + * \param user User that load + * \return int <0 if KO, >0 if OK + */ + function fetch($id, $user=0) + { + global $langs; + $sql = "SELECT t.rowid, t.field1, t.field2"; + $sql.= " FROM ".MAIN_DB_PREFIX."mytable as t"; + $sql.= " WHERE c.rowid = ".$id; + + dolibarr_syslog("Skeleton_class::fetch sql=".$sql); + $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->error(); + dolibarr_syslog("Skeleton_class::fetch ".$this->error); + return -1; + } + } + + + /* + * \brief Delete object in database + * \param user User that delete + * \return int <0 if KO, >0 if OK + */ + function delete($user) + { + global $conf, $langs; + + $sql = "DELETE FROM ".MAIN_DB_PREFIX."mytable"; + $sql.= " WHERE rowid=".$this->id; + + $resql = $this->db->query($sql); + if (! $resql) + { + $this->error=$this->db->error().' sql='.$sql; + return -1; + } + + // Appel des triggers + include_once(DOL_DOCUMENT_ROOT . "/interfaces.class.php"); + $interface=new Interfaces($this->db); + $result=$interface->run_triggers('MYOBJECT_DELETE',$this,$user,$langs,$conf); + if ($result < 0) $this->errors=$interface->errors; + // Fin appel triggers + + return 1; + } + + + /** + * \brief Initialise object with example values + * \remarks id must be 0 if object instance is a specimen. + */ + function initAsSpecimen() + { + $this->id=0; + $this->prop1='prop1'; + $this->prop2='prop2'; + } + +} +?> diff --git a/dev/skeletons/skeleton_page.php b/dev/skeletons/skeleton_page.php new file mode 100644 index 00000000000..ed5f076e13a --- /dev/null +++ b/dev/skeletons/skeleton_page.php @@ -0,0 +1,96 @@ + + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * $Id$ + * $Source$ + */ + +/** + \file dev/skeletons/skeleton_page.php + \ingroup core + \brief Example of a php page + \version $Revision$ +*/ + +require("./pre.inc.php"); +require_once(DOL_DOCUMENT_ROOT."/../dev/skeletons/skeleton_class.class.php"); + +// Load traductions files +$langs->load("companies"); +$langs->load("other"); + +// Load permissions +$user->getrights("commercial"); + +// Get parameters +$socid = isset($_GET["socid"])?$_GET["socid"]:''; + +// Protection quand utilisateur externe +if ($user->societe_id > 0) +{ + $action = ''; + $socid = $user->societe_id; +} +if ($socid == '') accessforbidden(); + + + +/******************************************************************* +* ACTIONS +* +* Put here all code to do according to value of "action" parameter +********************************************************************/ + +if ($_REQUEST["action"] == 'add') +{ + $myobject=new Skeleton_class($db); + $myobject->prop1=$_POST["field1"]; + $myobject->prop2=$_POST["field2"]; + $result=$myobject->create($user); + if ($result > 0) + { + // Creation OK + } + { + // Creation KO + $mesg=$myobject->error; + } +} + + + + + +/*************************************************** +* PAGE +* +* Put here all code to build page +****************************************************/ + +llxHeader(); + +$html=new Form($db); + + +// Put here content of your page +// ... + + +// End of page +$db->close(); +llxFooter('$Date$ - $Revision$'); +?> diff --git a/dev/skeletons/skeleton_script.php b/dev/skeletons/skeleton_script.php new file mode 100644 index 00000000000..db400c7088f --- /dev/null +++ b/dev/skeletons/skeleton_script.php @@ -0,0 +1,119 @@ + + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * $Id$ + * $Source$ + */ + +/** + \file dev/skeletons/skeleton_script.php + \ingroup core + \brief Example for scripts + \version $Revision$ +*/ + +// Test if batch mode +$sapi_type = php_sapi_name(); +$script_file=__FILE__; +if (eregi('([^\\\/]+)$',$script_file,$reg)) $script_file=$reg[1]; +$path=eregi_replace($script_file,'',$_SERVER["PHP_SELF"]); + +if (substr($sapi_type, 0, 3) == 'cgi') { + echo "Erreur: Vous utilisez l'interpreteur PHP pour le mode CGI. Pour executer $script_file en ligne de commande, vous devez utiliser l'interpreteur PHP pour le mode CLI.\n"; + exit; +} + +// Includes +require_once($path."../../htdocs/master.inc.php"); +// Put here all includes required by your script +require_once(DOL_DOCUMENT_ROOT."/../dev/skeletons/skeleton_class.class.php"); +//require_once(DOL_DOCUMENT_ROOT."/contact.class.php"); +//require_once(DOL_DOCUMENT_ROOT."/product.class.php"); + + +// Parameters +$version='$Revision$'; +$error=0; + + +print "***** $script_file ($version) *****\n"; + +// Check parameters +if (! isset($argv[1])) { + print "Usage: $script_file param1 param2 ...\n"; + exit; +} + +// Show parameters +print 'Arg1='.$argv[1]."\n"; +print 'Arg2='.$argv[2]."\n"; + + +// An example of loading an object +dolibarr_syslog("***** $script_file FETCH"); +$myobject=new Skeleton_class($db); +$result=$myobject->fetch(1,$user); +if ($result < 0) dolibarr_print_error($db,$myobject->error); + +// An example of updating an object +dolibarr_syslog("***** $script_file UPDATE"); +$myobject->prop1='newvalue'; +$result=$myobject->update($user); +if ($result < 0) dolibarr_print_error($db,$myobject->error); + +// An example of deleting an object +dolibarr_syslog("***** $script_file DELETE"); +$result=$myobject->delete($user); +if ($result < 0) dolibarr_print_error($db,$myobject->error); + + +// An example of direct a SQL read +$sql = "SELECT field1, field2"; +$sql.= " FROM ".MAIN_DB_PREFIX."c_pays"; +$sql.= " WHERE field3 = 'xxx'"; +$sql.= " ORDER BY field1 ASC"; + +dolibarr_syslog("***** $script_file sql=".$sql); +$resql=$db->query($sql); +if ($resql) +{ + $num = $db->num_rows($resql); + $i = 0; + if ($num) + { + while ($i < $num) + { + $obj = $db->fetch_object($resql); + if ($obj) + { + // You can use here results + print $obj->field1; + print $obj->field2; + } + $i++; + } + } +} +else +{ + dolibarr_print_error($db); + exit; +} + + +return $error; +?>