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,),
168 public $note_private;
172 public $fk_user_creat;
176 public $fk_user_modif;
195 global $langs, $user;
199 $this->ismultientitymanaged = 1;
200 $this->isextrafieldmanaged = 1;
202 if (!
getDolGlobalInt(
'MAIN_SHOW_TECHNICAL_ID') && isset($this->fields[
'rowid']) && !empty($this->fields[
'ref'])) {
203 $this->fields[
'rowid'][
'visible'] = 0;
205 if (!isModEnabled(
'multicompany') && isset($this->fields[
'entity'])) {
206 $this->fields[
'entity'][
'enabled'] = 0;
214 $this->fields[
'visibility'][
'default'] = $user->id;
217 foreach ($this->fields as $key => $val) {
218 if (isset($val[
'enabled']) && empty($val[
'enabled'])) {
219 unset($this->fields[$key]);
224 if (is_object($langs)) {
225 foreach ($this->fields as $key => $val) {
226 if (!empty($val[
'arrayofkeyval']) && is_array($val[
'arrayofkeyval'])) {
227 foreach ($val[
'arrayofkeyval'] as $key2 => $val2) {
228 $this->fields[$key][
'arrayofkeyval'][$key2] = $langs->trans($val2);
248 return $resultcreate;
260 global $langs, $extrafields;
270 $result =
$object->fetchCommon($fromid);
271 if ($result > 0 && !empty(
$object->table_element_line)) {
285 if (property_exists(
$object,
'ref')) {
287 $object->ref = empty($this->fields[
'ref'][
'default']) ?
"Copy_Of_".$object->ref : $this->fields[
'ref'][
'default'];
289 if (property_exists(
$object,
'label')) {
291 $object->label = empty($this->fields[
'label'][
'default']) ? $langs->trans(
"CopyOf").
" ".
$object->label : $this->fields[
'label'][
'default'];
293 if (property_exists(
$object,
'status')) {
294 $object->status = self::STATUS_DRAFT;
296 if (property_exists(
$object,
'date_creation')) {
299 if (property_exists(
$object,
'date_modification')) {
300 $object->date_modification =
null;
304 if (is_array(
$object->array_options) && count(
$object->array_options) > 0) {
305 $extrafields->fetch_name_optionals_label($this->table_element);
306 foreach (
$object->array_options as $key => $option) {
307 $shortkey = preg_replace(
'/options_/',
'', $key);
308 if (!empty($extrafields->attributes[$this->table_element][
'unique'][$shortkey])) {
311 unset(
$object->array_options[$key]);
317 $object->context[
'createfromclone'] =
'createfromclone';
318 $result =
$object->createCommon($user);
333 if (!empty(
$object->socid) && property_exists($this,
'fk_soc') && $this->fk_soc ==
$object->socid) {
340 unset(
$object->context[
'createfromclone']);
347 $this->db->rollback();
359 public function fetch($id, $ref =
null)
362 if ($result > 0 && !empty($this->table_element_line)) {
375 $this->lines = array();
394 public function fetchAll($sortorder =
'', $sortfield =
'', $limit = 0, $offset = 0, $filter =
'', $filtermode =
'AND')
402 $sql .=
" FROM ".$this->db->prefix().$this->table_element.
" as t";
403 if (isset($this->ismultientitymanaged) && $this->ismultientitymanaged == 1) {
404 $sql .=
" WHERE t.entity IN (".getEntity($this->element).
")";
406 $sql .=
" WHERE 1 = 1";
413 $this->errors[] = $errormessage;
414 dol_syslog(__METHOD__.
' '.implode(
',', $this->errors), LOG_ERR);
418 if (!empty($sortfield)) {
419 $sql .= $this->db->order($sortfield, $sortorder);
421 if (!empty($limit)) {
422 $sql .= $this->db->plimit($limit, $offset);
425 $resql = $this->db->query($sql);
427 $num = $this->db->num_rows($resql);
429 while ($i < ($limit ? min($limit, $num) : $num)) {
430 $obj = $this->db->fetch_object($resql);
432 $record =
new self($this->db);
433 $record->setVarsFromFetchObj($obj);
435 $records[$record->id] = $record;
439 $this->db->free($resql);
443 $this->errors[] =
'Error '.$this->db->lasterror();
444 dol_syslog(__METHOD__.
' '.implode(
',', $this->errors), LOG_ERR);
469 public function delete(
User $user, $notrigger = 0)
486 $this->error =
'ErrorDeleteLineNotAllowedByObjectStatus';
505 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
510 if ($this->
status == self::STATUS_VALIDATED) {
511 dol_syslog(get_class($this).
"::validate action abandoned: already validated", LOG_WARNING);
520 if (!$error && (preg_match(
'/^[\(]?PROV/i', $this->
ref) || empty($this->
ref))) {
525 $this->newref = $num;
529 $sql =
"UPDATE ".MAIN_DB_PREFIX.$this->table_element;
530 $sql .=
" SET ref = '".$this->db->escape($num).
"',";
531 $sql .=
" status = ".self::STATUS_VALIDATED;
532 if (!empty($this->fields[
'date_validation'])) {
533 $sql .=
", date_validation = '".$this->db->idate($now).
"'";
535 if (!empty($this->fields[
'fk_user_valid'])) {
536 $sql .=
", fk_user_valid = ".((int) $user->id);
538 $sql .=
" WHERE rowid = ".((int) $this->
id);
540 dol_syslog(get_class($this).
"::validate()", LOG_DEBUG);
541 $resql = $this->db->query($sql);
544 $this->error = $this->db->lasterror();
548 if (!$error && !$notrigger) {
550 $result = $this->
call_trigger(
'MYOBJECT_VALIDATE', $user);
559 $this->oldref = $this->ref;
562 if (preg_match(
'/^[\(]?PROV/i', $this->
ref)) {
564 $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).
"'";
565 $sql .=
" WHERE filename LIKE '".$this->db->escape($this->
ref).
"%' AND filepath = 'calendar/".$this->db->escape($this->
ref).
"' and entity = ".$conf->entity;
566 $resql = $this->db->query($sql);
569 $this->error = $this->db->lasterror();
571 $sql =
'UPDATE '.MAIN_DB_PREFIX.
"ecm_files set filepath = 'calendar/".$this->db->escape($this->newref).
"'";
572 $sql .=
" WHERE filepath = 'calendar/".$this->db->escape($this->
ref).
"' and entity = ".$conf->entity;
573 $resql = $this->db->query($sql);
576 $this->error = $this->db->lasterror();
582 $dirsource = $conf->bookcal->dir_output.
'/calendar/'.$oldref;
583 $dirdest = $conf->bookcal->dir_output.
'/calendar/'.$newref;
584 if (!$error && file_exists($dirsource)) {
585 dol_syslog(get_class($this).
"::validate() rename dir ".$dirsource.
" into ".$dirdest);
587 if (@rename($dirsource, $dirdest)) {
590 $listoffiles =
dol_dir_list($conf->bookcal->dir_output.
'/calendar/'.$newref,
'files', 1,
'^'.preg_quote($oldref,
'/'));
591 foreach ($listoffiles as $fileentry) {
592 $dirsource = $fileentry[
'name'];
593 $dirdest = preg_replace(
'/^'.preg_quote($oldref,
'/').
'/', $newref, $dirsource);
594 $dirsource = $fileentry[
'path'].
'/'.$dirsource;
595 $dirdest = $fileentry[
'path'].
'/'.$dirdest;
596 @rename($dirsource, $dirdest);
606 $this->
status = self::STATUS_VALIDATED;
613 $this->db->rollback();
629 if ($this->
status <= self::STATUS_DRAFT) {
633 return $this->
setStatusCommon($user, self::STATUS_DRAFT, $notrigger,
'MYOBJECT_UNVALIDATE');
643 public function cancel($user, $notrigger = 0)
646 if ($this->
status != self::STATUS_VALIDATED) {
650 return $this->
setStatusCommon($user, self::STATUS_CANCELED, $notrigger,
'MYOBJECT_CANCEL');
660 public function reopen($user, $notrigger = 0)
663 if ($this->
status == self::STATUS_VALIDATED) {
667 return $this->
setStatusCommon($user, self::STATUS_VALIDATED, $notrigger,
'MYOBJECT_REOPEN');
683 return [
'optimize' => $langs->trans(
"ShowCalendar")];
685 $datas[
'picto'] =
img_picto(
'', $this->picto).
' <u>'.$langs->trans(
"Calendar").
'</u>';
686 if (isset($this->
status)) {
687 $datas[
'picto'] .=
' '.$this->getLibStatut(5);
689 $datas[
'ref'] =
'<br><b>'.$langs->trans(
'Ref').
':</b> '.$this->ref;
704 public function getNomUrl($withpicto = 0, $option =
'', $notooltip = 0, $morecss =
'', $save_lastsearch_value = -1)
706 global $conf, $langs, $hookmanager;
708 if (!empty($conf->dol_no_mouse_hover)) {
715 'objecttype' => $this->element.($this->module ?
'@'.$this->module :
''),
718 $classfortooltip =
'classfortooltip';
721 $classfortooltip =
'classforajaxtooltip';
722 $dataparams =
' data-params="'.dol_escape_htmltag(json_encode($params)).
'"';
728 $url =
dol_buildpath(
'/bookcal/calendar_card.php', 1).
'?id='.$this->id;
730 if ($option !==
'nolink') {
732 $add_save_lastsearch_values = ($save_lastsearch_value == 1 ? 1 : 0);
733 if ($save_lastsearch_value == -1 && isset($_SERVER[
"PHP_SELF"]) && preg_match(
'/list\.php/', $_SERVER[
"PHP_SELF"])) {
734 $add_save_lastsearch_values = 1;
736 if ($url && $add_save_lastsearch_values) {
737 $url .=
'&save_lastsearch_values=1';
742 if (empty($notooltip)) {
744 $label = $langs->trans(
"ShowCalendar");
745 $linkclose .=
' alt="'.dol_escape_htmltag($label, 1).
'"';
747 $linkclose .= ($label ?
' title="'.dol_escape_htmltag($label, 1).
'"' :
' title="tocomplete"');
748 $linkclose .= $dataparams.
' class="'.$classfortooltip.($morecss ?
' '.$morecss :
'').
'"';
750 $linkclose = ($morecss ?
' class="'.$morecss.
'"' :
'');
753 if ($option ==
'nolink' || empty($url)) {
754 $linkstart =
'<span';
756 $linkstart =
'<a href="'.$url.
'"';
758 $linkstart .= $linkclose.
'>';
759 if ($option ==
'nolink' || empty($url)) {
760 $linkend =
'</span>';
765 $result .= $linkstart;
767 if (empty($this->showphoto_on_popup)) {
769 $result .=
img_object(($notooltip ?
'' : $label), ($this->picto ? $this->picto :
'generic'), (($withpicto != 2) ?
'class="paddingright"' :
''), 0, 0, $notooltip ? 0 : 1);
773 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
775 list($class, $module) = explode(
'@', $this->picto);
778 $filename = $filearray[0][
'name'];
779 if (!empty($filename)) {
780 $pospoint = strpos($filearray[0][
'name'],
'.');
782 $pathtophoto = $class.
'/'.$this->
ref.
'/thumbs/'.substr($filename, 0, $pospoint).
'_mini'.substr($filename, $pospoint);
783 if (!
getDolGlobalInt(strtoupper($module.
'_'.$class).
'_FORMATLISTPHOTOSASUSERS')) {
784 $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>';
786 $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>';
791 $result .=
img_object(($notooltip ?
'' : $label), ($this->picto ? $this->picto :
'generic'), ($notooltip ? (($withpicto != 2) ?
'class="paddingright"' :
'') :
'class="'.(($withpicto != 2) ?
'paddingright ' :
'').
'"'), 0, 0, $notooltip ? 0 : 1);
796 if ($withpicto != 2) {
797 $result .= $this->ref;
803 global $action, $hookmanager;
804 $hookmanager->initHooks(array($this->element.
'dao'));
805 $parameters = array(
'id' => $this->
id,
'getnomurl' => &$result);
806 $reshook = $hookmanager->executeHooks(
'getNomUrl', $parameters, $this, $action);
808 $result = $hookmanager->resPrint;
810 $result .= $hookmanager->resPrint;
825 global $conf, $langs;
827 $selected = (empty($arraydata[
'selected']) ? 0 : $arraydata[
'selected']);
829 $return =
'<div class="box-flex-item box-flex-grow-zero">';
830 $return .=
'<div class="info-box info-box-sm">';
831 $return .=
'<span class="info-box-icon bg-infobox-action">';
833 $return .=
'</span>';
834 $return .=
'<div class="info-box-content">';
835 $return .=
'<span class="info-box-ref inline-block tdoverflowmax150 valignmiddle">'.(method_exists($this,
'getNomUrl') ? $this->
getNomUrl() : $this->ref).
'</span>';
836 if ($selected >= 0) {
837 $return .=
'<input id="cb'.$this->id.
'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->
id.
'"'.($selected ?
' checked="checked"' :
'').
'>';
839 if (property_exists($this,
'label')) {
840 $return .=
' <div class="inline-block opacitymedium valignmiddle tdoverflowmax100">'.$this->label.
'</div>';
842 if (property_exists($this,
'amount')) {
844 $return .=
'<span class="info-box-label amount">'.price($this->amount, 0, $langs, 1, -1, -1, $conf->currency).
'</span>';
846 if (method_exists($this,
'getLibStatut')) {
847 $return .=
'<br><div class="info-box-status">'.$this->getLibStatut(3).
'</div>';
889 if (empty($this->labelStatus) || empty($this->labelStatusShort)) {
892 $this->labelStatus[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv(
'Draft');
893 $this->labelStatus[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv(
'Enabled');
894 $this->labelStatus[self::STATUS_CANCELED] = $langs->transnoentitiesnoconv(
'Disabled');
895 $this->labelStatusShort[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv(
'Draft');
896 $this->labelStatusShort[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv(
'Enabled');
897 $this->labelStatusShort[self::STATUS_CANCELED] = $langs->transnoentitiesnoconv(
'Disabled');
900 $statusType =
'status'.$status;
901 if ($status == self::STATUS_VALIDATED) {
902 $statusType =
'status4';
904 if ($status == self::STATUS_CANCELED) {
905 $statusType =
'status6';
908 return dolGetStatus($this->labelStatus[$status], $this->labelStatusShort[$status],
'', $statusType, $mode);
919 $sql =
"SELECT rowid,";
920 $sql .=
" date_creation as datec, tms as datem,";
921 $sql .=
" fk_user_creat, fk_user_modif";
922 $sql .=
" FROM ".MAIN_DB_PREFIX.$this->table_element.
" as t";
923 $sql .=
" WHERE t.rowid = ".((int) $id);
925 $result = $this->db->query($sql);
927 if ($this->db->num_rows($result)) {
928 $obj = $this->db->fetch_object($result);
930 $this->
id = $obj->rowid;
932 $this->user_creation_id = $obj->fk_user_creat;
933 $this->user_modification_id = $obj->fk_user_modif;
934 $this->date_creation = $this->db->jdate($obj->datec);
935 $this->date_modification = empty($obj->datem) ?
'' : $this->db->jdate($obj->datem);
938 $this->db->free($result);
966 $this->lines = array();
969 $result = $objectline->fetchAll(
'ASC',
'position', 0, 0,
'(fk_calendar:=:'.((
int) $this->
id).
')');
971 if (is_numeric($result)) {
975 $this->lines = $result;
988 global $langs, $conf;
989 $langs->load(
"agenda");
992 $conf->global->BOOKCAL_MYOBJECT_ADDON =
'mod_calendar_standard';
1002 $dirmodels = array_merge(array(
'/'), (array) $conf->modules_parts[
'models']);
1003 foreach ($dirmodels as $reldir) {
1007 $mybool = ((bool) @include_once $dir.$file) || $mybool;
1015 if (class_exists($classname)) {
1016 $obj =
new $classname();
1017 '@phan-var-force CommonNumRefGenerator $obj';
1019 $numref = $obj->getNextValue($this);
1021 if ($numref !=
'' && $numref !=
'-1') {
1024 $this->error = $obj->error;
1029 print $langs->trans(
"Error").
" ".$langs->trans(
"ClassNotFound").
' '.$classname;
1033 print $langs->trans(
"ErrorNumberingModuleNotSetup", $this->element);
1049 public function generateDocument($modele, $outputlangs, $hidedetails = 0, $hidedesc = 0, $hideref = 0, $moreparams =
null)
1051 global $conf, $langs;
1054 $includedocgeneration = 0;
1056 $langs->load(
"agenda");
1059 $modele =
'standard_calendar';
1061 if (!empty($this->model_pdf)) {
1062 $modele = $this->model_pdf;
1068 $modelpath =
"core/modules/bookcal/doc/";
1070 if ($includedocgeneration && !empty($modele)) {
1071 $result = $this->
commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams);
1102 $this->db->commit();
1109require_once DOL_DOCUMENT_ROOT.
'/core/class/commonobjectline.class.php';
1129 $this->isextrafieldmanaged = 0;
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
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.
print $langs trans("Ref").' m titre as m m statut as status
Or an array listing all the potential status of the object: array: int of the status => translated la...
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 a Dolibarr global constant string value.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.