28require_once DOL_DOCUMENT_ROOT.
'/core/class/commonobject.class.php';
40 public $module =
'bookcal';
45 public $element =
'calendar';
50 public $table_element =
'bookcal_calendar';
55 public $picto =
'fa-calendar-check';
58 const STATUS_DRAFT = 0;
59 const STATUS_VALIDATED = 1;
60 const STATUS_CANCELED = 9;
106 public $fields = array(
107 'rowid' => array(
'type' =>
'integer',
'label' =>
'TechnicalID',
'enabled' => 1,
'position' => 1,
'notnull' => 1,
'visible' => 0,
'noteditable' => 1,
'index' => 1,
'css' =>
'right',
'comment' =>
"Id"),
108 'entity' => array(
'type' =>
'integer',
'label' =>
'Entity',
'default' =>
'1',
'enabled' => 1,
'visible' => -2,
'notnull' => 1,
'position' => 40,
'index' => 1),
109 'ref' => array(
'type' =>
'varchar(128)',
'label' =>
'Ref',
'enabled' => 1,
'position' => 20,
'notnull' => 1,
'visible' => 1,
'index' => 1,
'searchall' => 1,
'showoncombobox' => 1,
'validate' => 1,
'comment' =>
"Reference of object",
'css' =>
'width100'),
110 'label' => array(
'type' =>
'varchar(255)',
'label' =>
'Label',
'enabled' => 1,
'position' => 30,
'notnull' => 0,
'visible' => 1,
'alwayseditable' => 1,
'searchall' => 1,
'css' =>
'minwidth300',
'cssview' =>
'wordbreak',
'help' =>
"Help text",
'showoncombobox' => 2,
'validate' => 1,),
111 'visibility' => array(
'type' =>
'integer:User:user/class/user.class.php',
'label' =>
'Owner',
'enabled' => 1,
'position' => 40,
'notnull' => 1,
'visible' => 1,
'picto' =>
'user',
'css' =>
'maxwidth500 widthcentpercentminusxx',
'csslist' =>
'tdoverflowmax150',),
112 'type' => array(
'type' =>
'integer',
'label' =>
'Type',
'enabled' => 1,
'position' => 42,
'notnull' => 1,
'visible' => 1,
'arrayofkeyval' => array(
'0' =>
'Customer',
'1' =>
'Supplier',
'3' =>
'Other'),),
113 'fk_soc' => array(
'type' =>
'integer:Societe:societe/class/societe.class.php:1:((status:=:1) AND (entity:IN:__SHARED_ENTITIES__))',
'label' =>
'ThirdParty',
'picto' =>
'company',
'enabled' =>
'isModEnabled("societe")',
'position' => 50,
'notnull' => -1,
'visible' => 1,
'index' => 1,
'css' =>
'maxwidth500 widthcentpercentminusxx',
'csslist' =>
'tdoverflowmax150',
'help' =>
"ThirdPartyBookCalHelp",
'validate' => 1,),
114 'fk_project' => array(
'type' =>
'integer:Project:projet/class/project.class.php:1',
'label' =>
'Project',
'picto' =>
'project',
'enabled' =>
'isModEnabled("project")',
'position' => 52,
'notnull' => -1,
'visible' => -1,
'index' => 1,
'css' =>
'maxwidth500 widthcentpercentminusxx',
'csslist' =>
'tdoverflowmax150',
'validate' => 1,),
115 'description' => array(
'type' =>
'text',
'label' =>
'Description',
'enabled' => 1,
'position' => 60,
'notnull' => 0,
'visible' => 3,
'validate' => 1,),
116 'note_public' => array(
'type' =>
'html',
'label' =>
'NotePublic',
'enabled' => 1,
'position' => 61,
'notnull' => 0,
'visible' => 0,
'cssview' =>
'wordbreak',
'validate' => 1,),
117 'note_private' => array(
'type' =>
'html',
'label' =>
'NotePrivate',
'enabled' => 1,
'position' => 62,
'notnull' => 0,
'visible' => 0,
'cssview' =>
'wordbreak',
'validate' => 1,),
118 'date_creation' => array(
'type' =>
'datetime',
'label' =>
'DateCreation',
'enabled' => 1,
'position' => 500,
'notnull' => 1,
'visible' => -2,),
119 'tms' => array(
'type' =>
'timestamp',
'label' =>
'DateModification',
'enabled' => 1,
'position' => 501,
'notnull' => 0,
'visible' => -2,),
120 'fk_user_creat' => array(
'type' =>
'integer:User:user/class/user.class.php',
'label' =>
'UserAuthor',
'picto' =>
'user',
'enabled' => 1,
'position' => 510,
'notnull' => 1,
'visible' => -2,
'foreignkey' =>
'user.rowid',
'csslist' =>
'tdoverflowmax150',),
121 'fk_user_modif' => array(
'type' =>
'integer:User:user/class/user.class.php',
'label' =>
'UserModif',
'picto' =>
'user',
'enabled' => 1,
'position' => 511,
'notnull' => -1,
'visible' => -2,
'csslist' =>
'tdoverflowmax150',),
122 'import_key' => array(
'type' =>
'varchar(14)',
'label' =>
'ImportId',
'enabled' => 1,
'position' => 1000,
'notnull' => -1,
'visible' => -2,),
123 'status' => array(
'type' =>
'integer',
'label' =>
'Status',
'enabled' => 1,
'position' => 2000,
'notnull' => 1,
'default' =>
'0',
'visible' => 1,
'index' => 1,
'arrayofkeyval' => array(
'0' =>
'Draft',
'1' =>
'Validated',
'9' =>
'Closed'),
'validate' => 1,),
135 public $note_private;
136 public $fk_user_creat;
137 public $fk_user_modif;
150 global $langs, $user;
154 $this->ismultientitymanaged = 1;
155 $this->isextrafieldmanaged = 1;
157 if (!
getDolGlobalInt(
'MAIN_SHOW_TECHNICAL_ID') && isset($this->fields[
'rowid']) && !empty($this->fields[
'ref'])) {
158 $this->fields[
'rowid'][
'visible'] = 0;
160 if (!isModEnabled(
'multicompany') && isset($this->fields[
'entity'])) {
161 $this->fields[
'entity'][
'enabled'] = 0;
169 $this->fields[
'visibility'][
'default'] = $user->id;
172 foreach ($this->fields as $key => $val) {
173 if (isset($val[
'enabled']) && empty($val[
'enabled'])) {
174 unset($this->fields[$key]);
179 if (is_object($langs)) {
180 foreach ($this->fields as $key => $val) {
181 if (!empty($val[
'arrayofkeyval']) && is_array($val[
'arrayofkeyval'])) {
182 foreach ($val[
'arrayofkeyval'] as $key2 => $val2) {
183 $this->fields[$key][
'arrayofkeyval'][$key2] = $langs->trans($val2);
203 return $resultcreate;
215 global $langs, $extrafields;
225 $result =
$object->fetchCommon($fromid);
226 if ($result > 0 && !empty(
$object->table_element_line)) {
240 if (property_exists(
$object,
'ref')) {
241 $object->ref = empty($this->fields[
'ref'][
'default']) ?
"Copy_Of_".$object->ref : $this->fields[
'ref'][
'default'];
243 if (property_exists(
$object,
'label')) {
244 $object->label = empty($this->fields[
'label'][
'default']) ? $langs->trans(
"CopyOf").
" ".
$object->label : $this->fields[
'label'][
'default'];
246 if (property_exists(
$object,
'status')) {
247 $object->status = self::STATUS_DRAFT;
249 if (property_exists(
$object,
'date_creation')) {
252 if (property_exists(
$object,
'date_modification')) {
253 $object->date_modification =
null;
257 if (is_array(
$object->array_options) && count(
$object->array_options) > 0) {
258 $extrafields->fetch_name_optionals_label($this->table_element);
259 foreach (
$object->array_options as $key => $option) {
260 $shortkey = preg_replace(
'/options_/',
'', $key);
261 if (!empty($extrafields->attributes[$this->table_element][
'unique'][$shortkey])) {
264 unset(
$object->array_options[$key]);
270 $object->context[
'createfromclone'] =
'createfromclone';
271 $result =
$object->createCommon($user);
286 if (!empty(
$object->socid) && property_exists($this,
'fk_soc') && $this->fk_soc ==
$object->socid) {
293 unset(
$object->context[
'createfromclone']);
300 $this->db->rollback();
312 public function fetch($id, $ref =
null)
315 if ($result > 0 && !empty($this->table_element_line)) {
328 $this->lines = array();
347 public function fetchAll($sortorder =
'', $sortfield =
'', $limit = 0, $offset = 0, $filter =
'', $filtermode =
'AND')
355 $sql .=
" FROM ".$this->db->prefix().$this->table_element.
" as t";
356 if (isset($this->ismultientitymanaged) && $this->ismultientitymanaged == 1) {
357 $sql .=
" WHERE t.entity IN (".getEntity($this->element).
")";
359 $sql .=
" WHERE 1 = 1";
366 $this->errors[] = $errormessage;
367 dol_syslog(__METHOD__.
' '.implode(
',', $this->errors), LOG_ERR);
371 if (!empty($sortfield)) {
372 $sql .= $this->db->order($sortfield, $sortorder);
374 if (!empty($limit)) {
375 $sql .= $this->db->plimit($limit, $offset);
378 $resql = $this->db->query($sql);
380 $num = $this->db->num_rows($resql);
382 while ($i < ($limit ? min($limit, $num) : $num)) {
383 $obj = $this->db->fetch_object($resql);
385 $record =
new self($this->db);
386 $record->setVarsFromFetchObj($obj);
388 $records[$record->id] = $record;
392 $this->db->free($resql);
396 $this->errors[] =
'Error '.$this->db->lasterror();
397 dol_syslog(__METHOD__.
' '.implode(
',', $this->errors), LOG_ERR);
422 public function delete(
User $user, $notrigger = 0)
439 $this->error =
'ErrorDeleteLineNotAllowedByObjectStatus';
458 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
463 if ($this->
status == self::STATUS_VALIDATED) {
464 dol_syslog(get_class($this).
"::validate action abandoned: already validated", LOG_WARNING);
473 if (!$error && (preg_match(
'/^[\(]?PROV/i', $this->
ref) || empty($this->
ref))) {
478 $this->newref = $num;
482 $sql =
"UPDATE ".MAIN_DB_PREFIX.$this->table_element;
483 $sql .=
" SET ref = '".$this->db->escape($num).
"',";
484 $sql .=
" status = ".self::STATUS_VALIDATED;
485 if (!empty($this->fields[
'date_validation'])) {
486 $sql .=
", date_validation = '".$this->db->idate($now).
"'";
488 if (!empty($this->fields[
'fk_user_valid'])) {
489 $sql .=
", fk_user_valid = ".((int) $user->id);
491 $sql .=
" WHERE rowid = ".((int) $this->
id);
493 dol_syslog(get_class($this).
"::validate()", LOG_DEBUG);
494 $resql = $this->db->query($sql);
497 $this->error = $this->db->lasterror();
501 if (!$error && !$notrigger) {
503 $result = $this->
call_trigger(
'MYOBJECT_VALIDATE', $user);
512 $this->oldref = $this->ref;
515 if (preg_match(
'/^[\(]?PROV/i', $this->
ref)) {
517 $sql =
'UPDATE '.MAIN_DB_PREFIX.
"ecm_files set filename = CONCAT('".$this->db->escape($this->newref).
"', SUBSTR(filename, ".(strlen($this->
ref) + 1).
")), filepath = 'calendar/".$this->db->escape($this->newref).
"'";
518 $sql .=
" WHERE filename LIKE '".$this->db->escape($this->
ref).
"%' AND filepath = 'calendar/".$this->db->escape($this->
ref).
"' and entity = ".$conf->entity;
519 $resql = $this->db->query($sql);
522 $this->error = $this->db->lasterror();
524 $sql =
'UPDATE '.MAIN_DB_PREFIX.
"ecm_files set filepath = 'calendar/".$this->db->escape($this->newref).
"'";
525 $sql .=
" WHERE filepath = 'calendar/".$this->db->escape($this->
ref).
"' and entity = ".$conf->entity;
526 $resql = $this->db->query($sql);
529 $this->error = $this->db->lasterror();
535 $dirsource = $conf->bookcal->dir_output.
'/calendar/'.$oldref;
536 $dirdest = $conf->bookcal->dir_output.
'/calendar/'.$newref;
537 if (!$error && file_exists($dirsource)) {
538 dol_syslog(get_class($this).
"::validate() rename dir ".$dirsource.
" into ".$dirdest);
540 if (@rename($dirsource, $dirdest)) {
543 $listoffiles =
dol_dir_list($conf->bookcal->dir_output.
'/calendar/'.$newref,
'files', 1,
'^'.preg_quote($oldref,
'/'));
544 foreach ($listoffiles as $fileentry) {
545 $dirsource = $fileentry[
'name'];
546 $dirdest = preg_replace(
'/^'.preg_quote($oldref,
'/').
'/', $newref, $dirsource);
547 $dirsource = $fileentry[
'path'].
'/'.$dirsource;
548 $dirdest = $fileentry[
'path'].
'/'.$dirdest;
549 @rename($dirsource, $dirdest);
559 $this->
status = self::STATUS_VALIDATED;
566 $this->db->rollback();
582 if ($this->
status <= self::STATUS_DRAFT) {
586 return $this->
setStatusCommon($user, self::STATUS_DRAFT, $notrigger,
'MYOBJECT_UNVALIDATE');
596 public function cancel($user, $notrigger = 0)
599 if ($this->
status != self::STATUS_VALIDATED) {
603 return $this->
setStatusCommon($user, self::STATUS_CANCELED, $notrigger,
'MYOBJECT_CANCEL');
613 public function reopen($user, $notrigger = 0)
616 if ($this->
status == self::STATUS_VALIDATED) {
620 return $this->
setStatusCommon($user, self::STATUS_VALIDATED, $notrigger,
'MYOBJECT_REOPEN');
637 return [
'optimize' => $langs->trans(
"ShowCalendar")];
639 $datas[
'picto'] =
img_picto(
'', $this->picto).
' <u>'.$langs->trans(
"Calendar").
'</u>';
640 if (isset($this->
status)) {
641 $datas[
'picto'] .=
' '.$this->getLibStatut(5);
643 $datas[
'ref'] =
'<br><b>'.$langs->trans(
'Ref').
':</b> '.$this->ref;
658 public function getNomUrl($withpicto = 0, $option =
'', $notooltip = 0, $morecss =
'', $save_lastsearch_value = -1)
660 global $conf, $langs, $hookmanager;
662 if (!empty($conf->dol_no_mouse_hover)) {
669 'objecttype' => $this->element.($this->module ?
'@'.$this->module :
''),
672 $classfortooltip =
'classfortooltip';
675 $classfortooltip =
'classforajaxtooltip';
676 $dataparams =
' data-params="'.dol_escape_htmltag(json_encode($params)).
'"';
682 $url =
dol_buildpath(
'/bookcal/calendar_card.php', 1).
'?id='.$this->id;
684 if ($option !==
'nolink') {
686 $add_save_lastsearch_values = ($save_lastsearch_value == 1 ? 1 : 0);
687 if ($save_lastsearch_value == -1 && isset($_SERVER[
"PHP_SELF"]) && preg_match(
'/list\.php/', $_SERVER[
"PHP_SELF"])) {
688 $add_save_lastsearch_values = 1;
690 if ($url && $add_save_lastsearch_values) {
691 $url .=
'&save_lastsearch_values=1';
696 if (empty($notooltip)) {
698 $label = $langs->trans(
"ShowCalendar");
699 $linkclose .=
' alt="'.dol_escape_htmltag($label, 1).
'"';
701 $linkclose .= ($label ?
' title="'.dol_escape_htmltag($label, 1).
'"' :
' title="tocomplete"');
702 $linkclose .= $dataparams.
' class="'.$classfortooltip.($morecss ?
' '.$morecss :
'').
'"';
704 $linkclose = ($morecss ?
' class="'.$morecss.
'"' :
'');
707 if ($option ==
'nolink' || empty($url)) {
708 $linkstart =
'<span';
710 $linkstart =
'<a href="'.$url.
'"';
712 $linkstart .= $linkclose.
'>';
713 if ($option ==
'nolink' || empty($url)) {
714 $linkend =
'</span>';
719 $result .= $linkstart;
721 if (empty($this->showphoto_on_popup)) {
723 $result .=
img_object(($notooltip ?
'' : $label), ($this->picto ? $this->picto :
'generic'), (($withpicto != 2) ?
'class="paddingright"' :
''), 0, 0, $notooltip ? 0 : 1);
727 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
729 list($class, $module) = explode(
'@', $this->picto);
732 $filename = $filearray[0][
'name'];
733 if (!empty($filename)) {
734 $pospoint = strpos($filearray[0][
'name'],
'.');
736 $pathtophoto = $class.
'/'.$this->
ref.
'/thumbs/'.substr($filename, 0, $pospoint).
'_mini'.substr($filename, $pospoint);
737 if (!
getDolGlobalInt(strtoupper($module.
'_'.$class).
'_FORMATLISTPHOTOSASUSERS')) {
738 $result .=
'<div class="floatleft inline-block valignmiddle divphotoref"><div class="photoref"><img class="photo'.$module.
'" alt="No photo" border="0" src="'.DOL_URL_ROOT.
'/viewimage.php?modulepart='.$module.
'&entity='.$conf->entity.
'&file='.urlencode($pathtophoto).
'"></div></div>';
740 $result .=
'<div class="floatleft inline-block valignmiddle divphotoref"><img class="photouserphoto userphoto" alt="No photo" border="0" src="'.DOL_URL_ROOT.
'/viewimage.php?modulepart='.$module.
'&entity='.$conf->entity.
'&file='.urlencode($pathtophoto).
'"></div>';
745 $result .=
img_object(($notooltip ?
'' : $label), ($this->picto ? $this->picto :
'generic'), ($notooltip ? (($withpicto != 2) ?
'class="paddingright"' :
'') :
'class="'.(($withpicto != 2) ?
'paddingright ' :
'').
'"'), 0, 0, $notooltip ? 0 : 1);
750 if ($withpicto != 2) {
751 $result .= $this->ref;
757 global $action, $hookmanager;
758 $hookmanager->initHooks(array($this->element.
'dao'));
759 $parameters = array(
'id' => $this->
id,
'getnomurl' => &$result);
760 $reshook = $hookmanager->executeHooks(
'getNomUrl', $parameters, $this, $action);
762 $result = $hookmanager->resPrint;
764 $result .= $hookmanager->resPrint;
779 global $conf, $langs;
781 $selected = (empty($arraydata[
'selected']) ? 0 : $arraydata[
'selected']);
783 $return =
'<div class="box-flex-item box-flex-grow-zero">';
784 $return .=
'<div class="info-box info-box-sm">';
785 $return .=
'<span class="info-box-icon bg-infobox-action">';
787 $return .=
'</span>';
788 $return .=
'<div class="info-box-content">';
789 $return .=
'<span class="info-box-ref inline-block tdoverflowmax150 valignmiddle">'.(method_exists($this,
'getNomUrl') ? $this->
getNomUrl() : $this->ref).
'</span>';
790 if ($selected >= 0) {
791 $return .=
'<input id="cb'.$this->id.
'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->
id.
'"'.($selected ?
' checked="checked"' :
'').
'>';
793 if (property_exists($this,
'label')) {
794 $return .=
' <div class="inline-block opacitymedium valignmiddle tdoverflowmax100">'.$this->label.
'</div>';
796 if (property_exists($this,
'amount')) {
798 $return .=
'<span class="info-box-label amount">'.price($this->amount, 0, $langs, 1, -1, -1, $conf->currency).
'</span>';
800 if (method_exists($this,
'getLibStatut')) {
801 $return .=
'<br><div class="info-box-status">'.$this->getLibStatut(3).
'</div>';
843 if (empty($this->labelStatus) || empty($this->labelStatusShort)) {
846 $this->labelStatus[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv(
'Draft');
847 $this->labelStatus[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv(
'Enabled');
848 $this->labelStatus[self::STATUS_CANCELED] = $langs->transnoentitiesnoconv(
'Disabled');
849 $this->labelStatusShort[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv(
'Draft');
850 $this->labelStatusShort[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv(
'Enabled');
851 $this->labelStatusShort[self::STATUS_CANCELED] = $langs->transnoentitiesnoconv(
'Disabled');
854 $statusType =
'status'.$status;
855 if ($status == self::STATUS_VALIDATED) {
856 $statusType =
'status4';
858 if ($status == self::STATUS_CANCELED) {
859 $statusType =
'status6';
862 return dolGetStatus($this->labelStatus[$status], $this->labelStatusShort[$status],
'', $statusType, $mode);
873 $sql =
"SELECT rowid,";
874 $sql .=
" date_creation as datec, tms as datem,";
875 $sql .=
" fk_user_creat, fk_user_modif";
876 $sql .=
" FROM ".MAIN_DB_PREFIX.$this->table_element.
" as t";
877 $sql .=
" WHERE t.rowid = ".((int) $id);
879 $result = $this->db->query($sql);
881 if ($this->db->num_rows($result)) {
882 $obj = $this->db->fetch_object($result);
884 $this->
id = $obj->rowid;
886 $this->user_creation_id = $obj->fk_user_creat;
887 $this->user_modification_id = $obj->fk_user_modif;
888 $this->date_creation = $this->db->jdate($obj->datec);
889 $this->date_modification = empty($obj->datem) ?
'' : $this->db->jdate($obj->datem);
892 $this->db->free($result);
920 $this->lines = array();
923 $result = $objectline->fetchAll(
'ASC',
'position', 0, 0,
'(fk_calendar:=:'.((
int) $this->
id).
')');
925 if (is_numeric($result)) {
929 $this->lines = $result;
941 global $langs, $conf;
942 $langs->load(
"agenda");
945 $conf->global->BOOKCAL_MYOBJECT_ADDON =
'mod_calendar_standard';
955 $dirmodels = array_merge(array(
'/'), (array) $conf->modules_parts[
'models']);
956 foreach ($dirmodels as $reldir) {
960 $mybool = ((bool) @include_once $dir.$file) || $mybool;
963 if ($mybool ===
false) {
968 if (class_exists($classname)) {
969 $obj =
new $classname();
970 $numref = $obj->getNextValue($this);
972 if ($numref !=
'' && $numref !=
'-1') {
975 $this->error = $obj->error;
980 print $langs->trans(
"Error").
" ".$langs->trans(
"ClassNotFound").
' '.$classname;
984 print $langs->trans(
"ErrorNumberingModuleNotSetup", $this->element);
1000 public function generateDocument($modele, $outputlangs, $hidedetails = 0, $hidedesc = 0, $hideref = 0, $moreparams =
null)
1002 global $conf, $langs;
1005 $includedocgeneration = 0;
1007 $langs->load(
"agenda");
1010 $modele =
'standard_calendar';
1012 if (!empty($this->model_pdf)) {
1013 $modele = $this->model_pdf;
1019 $modelpath =
"core/modules/bookcal/doc/";
1021 if ($includedocgeneration && !empty($modele)) {
1022 $result = $this->
commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams);
1053 $this->db->commit();
1060require_once DOL_DOCUMENT_ROOT.
'/core/class/commonobjectline.class.php';
1080 $this->isextrafieldmanaged = 0;
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
print $langs trans("AuditedSecurityEvents").'</strong >< span class="opacitymedium"></span >< br > status
Or an array listing all the potential status of the object: array: int of the status => translated la...
createFromClone(User $user, $fromid)
Clone an object into another one.
fetchAll($sortorder='', $sortfield='', $limit=0, $offset=0, $filter='', $filtermode='AND')
Load list of objects in memory from the database.
getLinesArray()
Create an array of lines.
getKanbanView($option='', $arraydata=null)
Return a thumb for kanban views.
getTooltipContentArray($params)
getTooltipContentArray
getLabelStatus($mode=0)
Return the label of the status.
__construct(DoliDB $db)
Constructor.
setDraft($user, $notrigger=0)
Set draft status.
initAsSpecimen()
Initialise object with example values Id must be 0 if object instance is a specimen.
getNextNumRef()
Returns the reference to the following non used object depending on the active numbering module.
getNomUrl($withpicto=0, $option='', $notooltip=0, $morecss='', $save_lastsearch_value=-1)
Return a link to the object card (with optionally the picto)
info($id)
Load the info information in the object.
LibStatut($status, $mode=0)
Return the label of a given status.
validate($user, $notrigger=0)
Validate object.
cancel($user, $notrigger=0)
Set cancel status.
getLibStatut($mode=0)
Return the label of the status.
create(User $user, $notrigger=0)
Create object into database.
generateDocument($modele, $outputlangs, $hidedetails=0, $hidedesc=0, $hideref=0, $moreparams=null)
Create a document onto disk according to template module.
deleteLine(User $user, $idline, $notrigger=0)
Delete a line of object in database.
doScheduledJob()
Action executed by scheduler CAN BE A CRON TASK.
reopen($user, $notrigger=0)
Set back to validated status.
fetch($id, $ref=null)
Load object in memory from the database.
fetchLines()
Load object lines in memory from the database.
update(User $user, $notrigger=0)
Update object into database.
__construct(DoliDB $db)
Constructor.
Parent class of all other business classes (invoices, contracts, proposals, orders,...
deleteLineCommon(User $user, $idline, $notrigger=0)
Delete a line of object in database.
commonGenerateDocument($modelspath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams=null)
Common function for all objects extending CommonObject for generating documents.
setErrorsFromObject($object)
setErrorsFromObject
createCommon(User $user, $notrigger=0)
Create object in the database.
getFieldList($alias='', $excludefields=array())
Function to concat keys of fields.
updateCommon(User $user, $notrigger=0)
Update object into database.
setStatusCommon($user, $status, $notrigger=0, $triggercode='')
Set to a status.
initAsSpecimenCommon()
Initialise object with example values Id must be 0 if object instance is a specimen.
copy_linked_contact($objFrom, $source='internal')
Copy contact from one element to current.
fetchLinesCommon($morewhere='', $noextrafields=0)
Load object in memory from the database.
fetchCommon($id, $ref=null, $morewhere='', $noextrafields=0)
Load object in memory from the database.
deleteCommon(User $user, $notrigger=0, $forcechilddeletion=0)
Delete object in database.
call_trigger($triggerName, $user)
Call trigger based on this instance.
Parent class for class inheritance lines of business objects This class is useless for the moment so ...
Class to manage Dolibarr database access.
Class to manage Dolibarr users.
dol_dir_list($utf8_path, $types="all", $recursive=0, $filter="", $excludefilter=null, $sortcriteria="name", $sortorder=SORT_ASC, $mode=0, $nohook=0, $relativename="", $donotfollowsymlinks=0, $nbsecondsold=0)
Scan a directory and return a list of files/directories.
img_object($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0)
Show a picto called object_picto (generic function)
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
dol_strlen($string, $stringencoding='UTF-8')
Make a strlen call.
forgeSQLFromUniversalSearchCriteria($filter, &$errorstr='', $noand=0, $nopar=0, $noerror=0)
forgeSQLFromUniversalSearchCriteria
dol_now($mode='auto')
Return date for now.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
dol_buildpath($path, $type=0, $returnemptyifnotfound=0)
Return path of url or filesystem.
dol_sanitizeFileName($str, $newstr='_', $unaccent=1)
Clean a string to use it as a file name.
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.