2017-05-27 13:46:34 +02:00
< ? php
2017-10-31 23:10:29 +01:00
/* Copyright ( C ) 2017 Laurent Destailleur < eldy @ users . sourceforge . net >
2017-05-27 13:46:34 +02:00
* Copyright ( C ) --- Put here your own copyright and developer email ---
*
* 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 3 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 , see < http :// www . gnu . org / licenses />.
*/
/**
* \file htdocs / modulebuilder / template / class / myobject . class . php
2017-06-17 21:23:52 +02:00
* \ingroup mymodule
* \brief This file is a CRUD class file for MyObject ( Create / Read / Update / Delete )
2017-05-27 13:46:34 +02:00
*/
// Put here all includes required by your class file
require_once DOL_DOCUMENT_ROOT . '/core/class/commonobject.class.php' ;
//require_once DOL_DOCUMENT_ROOT . '/societe/class/societe.class.php';
//require_once DOL_DOCUMENT_ROOT . '/product/class/product.class.php';
/**
2017-06-17 21:23:52 +02:00
* Class for MyObject
2017-05-27 13:46:34 +02:00
*/
2017-06-17 19:40:48 +02:00
class MyObject extends CommonObject
2017-05-27 13:46:34 +02:00
{
/**
2017-06-18 12:30:18 +02:00
* @ var string ID to identify managed object
2017-05-27 13:46:34 +02:00
*/
2017-06-17 21:23:52 +02:00
public $element = 'myobject' ;
2017-05-27 13:46:34 +02:00
/**
* @ var string Name of table without prefix where object is stored
*/
2017-11-21 11:56:49 +01:00
public $table_element = 'mymodule_myobject' ;
2017-06-18 12:30:18 +02:00
/**
2018-02-15 00:01:25 +01:00
* @ var int Does myobject support multicompany module ? 0 = No test on entity , 1 = Test with field entity , 2 = Test with link by societe
2017-06-18 12:30:18 +02:00
*/
2017-10-25 22:02:07 +02:00
public $ismultientitymanaged = 0 ;
2018-02-15 00:01:25 +01:00
/**
* @ var int Does myobject support extrafields ? 0 = No , 1 = Yes
*/
public $isextrafieldmanaged = 1 ;
2017-06-18 12:30:18 +02:00
/**
2017-10-26 02:55:43 +02:00
* @ var string String with name of icon for myobject . Must be the part after the 'object_' into object_myobject . png
2017-07-11 20:47:49 +02:00
*/
2017-07-25 10:38:39 +02:00
public $picto = 'myobject@mymodule' ;
2017-06-07 16:44:04 +02:00
2017-06-18 12:30:18 +02:00
2017-07-24 21:03:35 +02:00
/**
2017-10-25 22:02:07 +02:00
* 'type' if the field format .
* 'label' the translation key .
* 'enabled' is a condition when the field must be managed .
2017-10-26 02:55:43 +02:00
* 'visible' says if field is visible in list ( Examples : 0 = Not visible , 1 = Visible on list and create / update / view forms , 2 = Visible on list only . Using a negative value means field is not shown by default on list but can be selected for viewing )
2017-10-25 22:02:07 +02:00
* 'notnull' is set to 1 if not null in database . Set to - 1 if we must set data to null if empty ( '' or 0 ) .
2018-03-27 23:44:49 +02:00
* 'default' is a default value for creation ( can still be replaced by the global setup of default values )
2017-10-25 22:02:07 +02:00
* 'index' if we want an index in database .
* 'foreignkey' => 'tablename.field' if the field is a foreign key ( it is recommanded to name the field fk_ ... ) .
* 'position' is the sort order of field .
* 'searchall' is 1 if we want to search in this field when making a search from the quick search button .
* 'isameasure' must be set to 1 if you want to have a total on list for this field . Field type must be summable like integer or double ( 24 , 8 ) .
* 'help' is a string visible as a tooltip on field
2017-10-26 01:02:13 +02:00
* 'comment' is not used . You can store here any text of your choice . It is not used by application .
2018-03-27 23:01:54 +02:00
* 'showoncombobox' if value of the field must be visible into the label of the combobox that list record
2018-03-27 23:44:49 +02:00
* 'arraykeyval' to set list of value if type is a list of predefined values . For example : array ( " 0 " => " Draft " , " 1 " => " Active " , " -1 " => " Cancel " )
2017-07-24 13:55:12 +02:00
*/
2017-07-12 11:52:07 +02:00
// BEGIN MODULEBUILDER PROPERTIES
2017-05-27 13:46:34 +02:00
/**
2017-07-27 01:47:27 +02:00
* @ var array Array with all fields and their property . Do not use it as a static var . It may be modified by constructor .
2017-06-18 12:30:18 +02:00
*/
2017-07-11 20:47:49 +02:00
public $fields = array (
2017-10-24 19:57:36 +02:00
'rowid' => array ( 'type' => 'integer' , 'label' => 'TechnicalID' , 'enabled' => 1 , 'visible' =>- 2 , 'notnull' => 1 , 'index' => 1 , 'position' => 1 , 'comment' => 'Id' ),
2017-10-25 22:02:07 +02:00
'ref' => array ( 'type' => 'varchar(128)' , 'label' => 'Ref' , 'enabled' => 1 , 'visible' => 1 , 'notnull' => 1 , 'showoncombobox' => 1 , 'index' => 1 , 'position' => 10 , 'searchall' => 1 , 'comment' => 'Reference of object' ),
2017-10-20 21:39:19 +02:00
'entity' => array ( 'type' => 'integer' , 'label' => 'Entity' , 'enabled' => 1 , 'visible' => 0 , 'default' => 1 , 'notnull' => 1 , 'index' => 1 , 'position' => 20 ),
2018-03-27 23:44:49 +02:00
'label' => array ( 'type' => 'varchar(255)' , 'label' => 'Label' , 'enabled' => 1 , 'visible' => 1 , 'position' => 30 , 'searchall' => 1 , 'css' => 'minwidth200' , 'help' => 'Help text' , 'showoncombobox' => 1 ),
2017-10-24 19:57:36 +02:00
'amount' => array ( 'type' => 'double(24,8)' , 'label' => 'Amount' , 'enabled' => 1 , 'visible' => 1 , 'default' => 'null' , 'position' => 40 , 'searchall' => 0 , 'isameasure' => 1 , 'help' => 'Help text' ),
2018-03-27 23:01:54 +02:00
'fk_soc' => array ( 'type' => 'integer:Societe:societe/class/societe.class.php' , 'label' => 'ThirdParty' , 'visible' => 1 , 'enabled' => 1 , 'position' => 50 , 'notnull' =>- 1 , 'index' => 1 , 'help' => 'LinkToThirparty' ),
2017-12-09 20:17:47 +01:00
'description' => array ( 'type' => 'text' , 'label' => 'Descrption' , 'enabled' => 1 , 'visible' => 0 , 'position' => 60 ),
'note_public' => array ( 'type' => 'html' , 'label' => 'NotePublic' , 'enabled' => 1 , 'visible' => 0 , 'position' => 61 ),
'note_private' => array ( 'type' => 'html' , 'label' => 'NotePrivate' , 'enabled' => 1 , 'visible' => 0 , 'position' => 62 ),
2017-10-24 17:30:05 +02:00
'date_creation' => array ( 'type' => 'datetime' , 'label' => 'DateCreation' , 'enabled' => 1 , 'visible' =>- 2 , 'notnull' => 1 , 'position' => 500 ),
'tms' => array ( 'type' => 'timestamp' , 'label' => 'DateModification' , 'enabled' => 1 , 'visible' =>- 2 , 'notnull' => 1 , 'position' => 501 ),
//'date_valid' =>array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>1, 'visible'=>-2, 'position'=>502),
2018-03-27 23:26:20 +02:00
'fk_user_creat' => array ( 'type' => 'integer' , 'label' => 'UserAuthor' , 'enabled' => 1 , 'visible' =>- 2 , 'notnull' => 1 , 'position' => 510 , 'foreignkey' => 'llx_user.rowid' ),
2017-10-24 17:30:05 +02:00
'fk_user_modif' => array ( 'type' => 'integer' , 'label' => 'UserModif' , 'enabled' => 1 , 'visible' =>- 2 , 'notnull' =>- 1 , 'position' => 511 ),
2017-10-22 16:45:18 +02:00
//'fk_user_valid' =>array('type'=>'integer', 'label'=>'UserValidation', 'enabled'=>1, 'visible'=>-1, 'position'=>512),
2017-10-26 01:02:13 +02:00
'import_key' => array ( 'type' => 'varchar(14)' , 'label' => 'ImportId' , 'enabled' => 1 , 'visible' =>- 2 , 'notnull' =>- 1 , 'index' => 0 , 'position' => 1000 ),
2017-12-09 20:40:11 +01:00
'status' => array ( 'type' => 'integer' , 'label' => 'Status' , 'enabled' => 1 , 'visible' => 1 , 'notnull' => 1 , 'default' => 0 , 'index' => 1 , 'position' => 1000 , 'arrayofkeyval' => array ( 0 => 'Draft' , 1 => 'Active' , - 1 => 'Cancel' )),
2017-07-11 20:47:49 +02:00
);
2017-09-05 20:42:34 +02:00
public $rowid ;
public $ref ;
public $entity ;
public $label ;
public $amount ;
public $status ;
public $date_creation ;
public $tms ;
public $fk_user_creat ;
public $fk_user_modif ;
public $import_key ;
2017-07-12 11:52:07 +02:00
// END MODULEBUILDER PROPERTIES
2017-07-25 00:00:08 +02:00
2017-06-07 16:44:04 +02:00
2017-06-18 12:30:18 +02:00
// If this object has a subtable with lines
2017-05-27 13:46:34 +02:00
2017-06-18 12:30:18 +02:00
/**
* @ var int Name of subtable line
*/
//public $table_element_line = 'myobjectdet';
/**
* @ var int Field with ID of parent key if this field has a parent
*/
//public $fk_element = 'fk_myobject';
/**
* @ var int Name of subtable class that manage subtable lines
*/
//public $class_element_line = 'MyObjectline';
/**
* @ var array Array of child tables ( child tables to delete before deleting a record )
*/
//protected $childtables=array('myobjectdet');
/**
* @ var MyObjectLine [] Array of subtable lines
2017-05-27 13:46:34 +02:00
*/
2017-06-18 12:30:18 +02:00
//public $lines = array();
2017-06-07 16:44:04 +02:00
2017-05-27 13:46:34 +02:00
/**
* Constructor
*
* @ param DoliDb $db Database handler
*/
public function __construct ( DoliDB $db )
{
2018-03-13 22:43:50 +01:00
global $conf , $user ;
2017-07-27 01:47:27 +02:00
2017-05-27 13:46:34 +02:00
$this -> db = $db ;
2017-07-27 01:47:27 +02:00
2018-03-13 22:43:50 +01:00
if ( empty ( $conf -> global -> MAIN_SHOW_TECHNICAL_ID ) && isset ( $this -> fields [ 'rowid' ])) $this -> fields [ 'rowid' ][ 'visible' ] = 0 ;
if ( empty ( $conf -> multicompany -> enabled ) && isset ( $this -> fields [ 'entity' ])) $this -> fields [ 'entity' ][ 'enabled' ] = 0 ;
// Unset fields that are disabled
foreach ( $this -> fields as $key => $val )
{
if ( isset ( $val [ 'enabled' ]) && empty ( $val [ 'enabled' ]))
{
unset ( $this -> fields [ $key ]);
}
}
2017-05-27 13:46:34 +02:00
}
2017-07-25 02:56:19 +02:00
/**
* Create object into database
*
* @ param User $user User that creates
* @ param bool $notrigger false = launch triggers after , true = disable triggers
* @ return int < 0 if KO , Id of created object if OK
*/
public function create ( User $user , $notrigger = false )
{
return $this -> createCommon ( $user , $notrigger );
}
2017-08-03 01:45:31 +02:00
/**
* Clone and object into another one
*
2017-08-21 00:40:45 +02:00
* @ param User $user User that creates
* @ param int $fromid Id of object to clone
* @ return mixed New object created , < 0 if KO
2017-08-03 01:45:31 +02:00
*/
public function createFromClone ( User $user , $fromid )
{
global $hookmanager , $langs ;
$error = 0 ;
dol_syslog ( __METHOD__ , LOG_DEBUG );
$object = new self ( $this -> db );
$this -> db -> begin ();
// Load source object
$object -> fetchCommon ( $fromid );
// Reset some properties
unset ( $object -> id );
unset ( $object -> fk_user_creat );
unset ( $object -> import_key );
// Clear fields
$object -> ref = " copy_of_ " . $object -> ref ;
$object -> title = $langs -> trans ( " CopyOf " ) . " " . $object -> title ;
// ...
// Create clone
$object -> context [ 'createfromclone' ] = 'createfromclone' ;
$result = $object -> createCommon ( $user );
if ( $result < 0 ) {
$error ++ ;
$this -> error = $object -> error ;
$this -> errors = $object -> errors ;
}
// End
if ( ! $error ) {
$this -> db -> commit ();
2017-08-21 00:40:45 +02:00
return $object ;
2017-08-03 01:45:31 +02:00
} else {
$this -> db -> rollback ();
return - 1 ;
}
}
2017-07-25 02:56:19 +02:00
/**
* Load object in memory from the database
*
* @ param int $id Id object
* @ param string $ref Ref
* @ return int < 0 if KO , 0 if not found , > 0 if OK
*/
public function fetch ( $id , $ref = null )
{
2017-08-03 01:45:31 +02:00
$result = $this -> fetchCommon ( $id , $ref );
2017-08-03 03:58:42 +02:00
if ( $result > 0 && ! empty ( $this -> table_element_line )) $this -> fetchLines ();
2017-08-03 01:45:31 +02:00
return $result ;
}
/**
* Load object lines in memory from the database
*
* @ return int < 0 if KO , 0 if not found , > 0 if OK
*/
2017-10-31 23:10:29 +01:00
/* public function fetchLines ()
2017-08-03 01:45:31 +02:00
{
$this -> lines = array ();
// Load lines with object MyObjectLine
return count ( $this -> lines ) ? 1 : 0 ;
2017-10-31 23:10:29 +01:00
} */
2017-07-25 02:56:19 +02:00
/**
* Update object into database
*
* @ param User $user User that modifies
* @ param bool $notrigger false = launch triggers after , true = disable triggers
* @ return int < 0 if KO , > 0 if OK
*/
public function update ( User $user , $notrigger = false )
{
return $this -> updateCommon ( $user , $notrigger );
}
/**
* Delete object in database
*
* @ param User $user User that deletes
* @ param bool $notrigger false = launch triggers after , true = disable triggers
* @ return int < 0 if KO , > 0 if OK
*/
public function delete ( User $user , $notrigger = false )
{
2017-10-13 13:10:36 +02:00
return $this -> deleteCommon ( $user , $notrigger );
2017-07-25 02:56:19 +02:00
}
2017-05-27 13:46:34 +02:00
/**
* Return a link to the object card ( with optionaly the picto )
*
2017-07-25 12:44:55 +02:00
* @ param int $withpicto Include picto in link ( 0 = No picto , 1 = Include picto into link , 2 = Only picto )
2017-10-03 16:00:52 +02:00
* @ param string $option On what the link point to ( 'nolink' , ... )
2017-07-25 12:44:55 +02:00
* @ param int $notooltip 1 = Disable tooltip
* @ param string $morecss Add more css on link
* @ param int $save_lastsearch_value - 1 = Auto , 0 = No save of lastsearch_values when clicking , 1 = Save lastsearch_values whenclicking
* @ return string String with URL
2017-05-27 13:46:34 +02:00
*/
2017-07-25 12:44:55 +02:00
function getNomUrl ( $withpicto = 0 , $option = '' , $notooltip = 0 , $morecss = '' , $save_lastsearch_value =- 1 )
2017-05-27 13:46:34 +02:00
{
2018-06-04 12:55:55 +02:00
global $db , $conf , $langs , $hoomanager ;
2017-05-27 13:46:34 +02:00
global $dolibarr_main_authentication , $dolibarr_main_demo ;
global $menumanager ;
if ( ! empty ( $conf -> dol_no_mouse_hover )) $notooltip = 1 ; // Force disable tooltips
2017-06-07 16:44:04 +02:00
2017-05-27 13:46:34 +02:00
$result = '' ;
$companylink = '' ;
2017-07-25 00:00:08 +02:00
$label = '<u>' . $langs -> trans ( " MyObject " ) . '</u>' ;
2017-05-27 13:46:34 +02:00
$label .= '<br>' ;
$label .= '<b>' . $langs -> trans ( 'Ref' ) . ':</b> ' . $this -> ref ;
2017-10-03 16:00:52 +02:00
$url = dol_buildpath ( '/mymodule/myobject_card.php' , 1 ) . '?id=' . $this -> id ;
2017-07-25 12:44:55 +02:00
if ( $option != 'nolink' )
{
// Add param to save lastsearch_values or not
$add_save_lastsearch_values = ( $save_lastsearch_value == 1 ? 1 : 0 );
if ( $save_lastsearch_value == - 1 && preg_match ( '/list\.php/' , $_SERVER [ " PHP_SELF " ])) $add_save_lastsearch_values = 1 ;
if ( $add_save_lastsearch_values ) $url .= '&save_lastsearch_values=1' ;
}
2017-06-07 16:44:04 +02:00
2017-05-27 13:46:34 +02:00
$linkclose = '' ;
if ( empty ( $notooltip ))
{
if ( ! empty ( $conf -> global -> MAIN_OPTIMIZEFORTEXTBROWSER ))
{
2017-07-25 00:00:08 +02:00
$label = $langs -> trans ( " ShowMyObject " );
2017-05-27 13:46:34 +02:00
$linkclose .= ' alt="' . dol_escape_htmltag ( $label , 1 ) . '"' ;
}
$linkclose .= ' title="' . dol_escape_htmltag ( $label , 1 ) . '"' ;
$linkclose .= ' class="classfortooltip' . ( $morecss ? ' ' . $morecss : '' ) . '"' ;
2018-06-04 12:55:55 +02:00
/*
$hookmanager -> initHooks ( array ( 'myobjectdao' ));
$parameters = array ( 'id' => $this -> id );
$reshook = $hookmanager -> executeHooks ( 'getnomurltooltip' , $parameters , $this , $action ); // Note that $action and $object may have been modified by some hooks
if ( $reshook > 0 ) $linkclose = $hookmanager -> resPrint ;
*/
2017-05-27 13:46:34 +02:00
}
else $linkclose = ( $morecss ? ' class="' . $morecss . '"' : '' );
2017-06-07 16:44:04 +02:00
2017-05-27 13:46:34 +02:00
$linkstart = '<a href="' . $url . '"' ;
$linkstart .= $linkclose . '>' ;
$linkend = '</a>' ;
2017-11-02 15:03:09 +01:00
$result .= $linkstart ;
if ( $withpicto ) $result .= img_object (( $notooltip ? '' : $label ), ( $this -> picto ? $this -> picto : 'generic' ), ( $notooltip ? (( $withpicto != 2 ) ? 'class="paddingright"' : '' ) : 'class="' . (( $withpicto != 2 ) ? 'paddingright ' : '' ) . 'classfortooltip"' ), 0 , 0 , $notooltip ? 0 : 1 );
if ( $withpicto != 2 ) $result .= $this -> ref ;
$result .= $linkend ;
//if ($withpicto != 2) $result.=(($addlabel && $this->label) ? $sep . dol_trunc($this->label, ($addlabel > 1 ? $addlabel : 0)) : '');
2018-06-04 12:55:55 +02:00
global $action ;
$hookmanager -> initHooks ( array ( 'myobjectdao' ));
$parameters = array ( 'id' => $this -> id , 'getnomurl' => $result );
$reshook = $hookmanager -> executeHooks ( 'getNomUrl' , $parameters , $this , $action ); // Note that $action and $object may have been modified by some hooks
if ( $reshook > 0 ) $result = $hookmanager -> resPrint ;
else $result .= $hookmanager -> resPrint ;
2017-05-27 13:46:34 +02:00
return $result ;
}
/**
2018-04-21 16:07:40 +02:00
* Return label of the status
2017-05-27 13:46:34 +02:00
*
2018-04-21 16:07:40 +02:00
* @ param int $mode 0 = long label , 1 = short label , 2 = Picto + short label , 3 = Picto , 4 = Picto + long label , 5 = Short label + Picto , 6 = Long label + Picto
2017-05-27 13:46:34 +02:00
* @ return string Label of status
*/
function getLibStatut ( $mode = 0 )
{
2018-04-21 16:07:40 +02:00
return $this -> LibStatut ( $this -> status , $mode );
2017-05-27 13:46:34 +02:00
}
/**
* Return the status
*
2018-04-21 16:07:40 +02:00
* @ param int $status Id status
* @ param int $mode 0 = long label , 1 = short label , 2 = Picto + short label , 3 = Picto , 4 = Picto + long label , 5 = Short label + Picto , 6 = Long label + Picto
* @ return string Label of status
2017-05-27 13:46:34 +02:00
*/
2018-05-16 15:23:52 +02:00
function LibStatut ( $status , $mode = 0 )
2017-05-27 13:46:34 +02:00
{
2018-04-21 16:07:40 +02:00
if ( empty ( $this -> labelstatus ))
{
global $langs ;
//$langs->load("mymodule");
$this -> labelstatus [ 1 ] = $langs -> trans ( 'Enabled' );
$this -> labelstatus [ 0 ] = $langs -> trans ( 'Disabled' );
}
2017-05-27 13:46:34 +02:00
if ( $mode == 0 )
{
2018-04-21 16:07:40 +02:00
return $this -> labelstatus [ $status ];
2017-05-27 13:46:34 +02:00
}
if ( $mode == 1 )
{
2018-04-21 16:07:40 +02:00
return $this -> labelstatus [ $status ];
2017-05-27 13:46:34 +02:00
}
if ( $mode == 2 )
{
2018-04-21 16:07:40 +02:00
if ( $status == 1 ) return img_picto ( $this -> labelstatus [ $status ], 'statut4' ) . ' ' . $this -> labelstatus [ $status ];
if ( $status == 0 ) return img_picto ( $this -> labelstatus [ $status ], 'statut5' ) . ' ' . $this -> labelstatus [ $status ];
2017-05-27 13:46:34 +02:00
}
if ( $mode == 3 )
{
2018-04-21 16:07:40 +02:00
if ( $status == 1 ) return img_picto ( $this -> labelstatus [ $status ], 'statut4' );
if ( $status == 0 ) return img_picto ( $this -> labelstatus [ $status ], 'statut5' );
2017-05-27 13:46:34 +02:00
}
if ( $mode == 4 )
{
2018-04-21 16:07:40 +02:00
if ( $status == 1 ) return img_picto ( $this -> labelstatus [ $status ], 'statut4' ) . ' ' . $this -> labelstatus [ $status ];
if ( $status == 0 ) return img_picto ( $this -> labelstatus [ $status ], 'statut5' ) . ' ' . $this -> labelstatus [ $status ];
2017-05-27 13:46:34 +02:00
}
if ( $mode == 5 )
{
2018-04-21 16:07:40 +02:00
if ( $status == 1 ) return $this -> labelstatus [ $status ] . ' ' . img_picto ( $this -> labelstatus [ $status ], 'statut4' );
if ( $status == 0 ) return $this -> labelstatus [ $status ] . ' ' . img_picto ( $this -> labelstatus [ $status ], 'statut5' );
2017-05-27 13:46:34 +02:00
}
if ( $mode == 6 )
{
2018-04-21 16:07:40 +02:00
if ( $status == 1 ) return $this -> labelstatus [ $status ] . ' ' . img_picto ( $this -> labelstatus [ $status ], 'statut4' );
if ( $status == 0 ) return $this -> labelstatus [ $status ] . ' ' . img_picto ( $this -> labelstatus [ $status ], 'statut5' );
2017-05-27 13:46:34 +02:00
}
}
2017-07-25 12:44:55 +02:00
/**
* Charge les informations d 'ordre info dans l' objet commande
*
* @ param int $id Id of order
* @ return void
*/
function info ( $id )
{
$sql = 'SELECT rowid, date_creation as datec, tms as datem,' ;
$sql .= ' fk_user_creat, fk_user_modif' ;
$sql .= ' FROM ' . MAIN_DB_PREFIX . $this -> table_element . ' as t' ;
$sql .= ' WHERE t.rowid = ' . $id ;
$result = $this -> db -> query ( $sql );
if ( $result )
{
if ( $this -> db -> num_rows ( $result ))
{
$obj = $this -> db -> fetch_object ( $result );
$this -> id = $obj -> rowid ;
if ( $obj -> fk_user_author )
{
$cuser = new User ( $this -> db );
$cuser -> fetch ( $obj -> fk_user_author );
$this -> user_creation = $cuser ;
}
if ( $obj -> fk_user_valid )
{
$vuser = new User ( $this -> db );
$vuser -> fetch ( $obj -> fk_user_valid );
$this -> user_validation = $vuser ;
}
if ( $obj -> fk_user_cloture )
{
$cluser = new User ( $this -> db );
$cluser -> fetch ( $obj -> fk_user_cloture );
$this -> user_cloture = $cluser ;
}
$this -> date_creation = $this -> db -> jdate ( $obj -> datec );
$this -> date_modification = $this -> db -> jdate ( $obj -> datem );
$this -> date_validation = $this -> db -> jdate ( $obj -> datev );
}
$this -> db -> free ( $result );
}
else
{
dol_print_error ( $this -> db );
}
}
2017-05-27 13:46:34 +02:00
/**
* Initialise object with example values
* Id must be 0 if object instance is a specimen
*
* @ return void
*/
public function initAsSpecimen ()
{
2017-07-12 13:25:18 +02:00
$this -> initAsSpecimenCommon ();
2017-05-27 13:46:34 +02:00
}
2017-08-03 11:42:22 +02:00
/**
* Action executed by scheduler
2018-03-16 19:03:16 +01:00
* CAN BE A CRON TASK . In such a case , paramerts come from the schedule job setup field 'Parameters'
2017-08-03 11:42:22 +02:00
*
* @ return int 0 if OK , <> 0 if KO ( this function is used also by cron so only 0 is OK )
*/
2018-03-16 19:03:16 +01:00
//public function doScheduledJob($param1, $param2, ...)
2017-08-03 11:42:22 +02:00
public function doScheduledJob ()
{
global $conf , $langs ;
2018-03-24 18:28:06 +01:00
//$conf->global->SYSLOG_FILE = 'DOL_DATA_ROOT/dolibarr_mydedicatedlofile.log';
$error = 0 ;
2017-08-04 11:25:10 +02:00
$this -> output = '' ;
$this -> error = '' ;
2017-08-03 11:42:22 +02:00
dol_syslog ( __METHOD__ , LOG_DEBUG );
2018-03-24 18:28:06 +01:00
$now = dol_now ();
$this -> db -> begin ();
2017-08-04 11:25:10 +02:00
// ...
2017-08-03 11:42:22 +02:00
2018-03-24 18:28:06 +01:00
$this -> db -> commit ();
return $error ;
2017-08-03 11:42:22 +02:00
}
2017-05-27 13:46:34 +02:00
}
/**
2017-08-03 01:45:31 +02:00
* Class MyObjectLine . You can also remove this and generate a CRUD class for lines objects .
2017-05-27 13:46:34 +02:00
*/
2017-08-03 01:45:31 +02:00
/*
class MyObjectLine
2017-05-27 13:46:34 +02:00
{
2017-08-03 01:45:31 +02:00
// @var int ID
2017-05-27 13:46:34 +02:00
public $id ;
2017-08-03 01:45:31 +02:00
// @var mixed Sample line property 1
2017-05-27 13:46:34 +02:00
public $prop1 ;
2017-08-03 01:45:31 +02:00
// @var mixed Sample line property 2
2017-05-27 13:46:34 +02:00
public $prop2 ;
}
2017-08-03 01:45:31 +02:00
*/