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 $date_creation;
137 public $fk_user_creat;
138 public $fk_user_modif;
151 global $langs, $user;
155 $this->ismultientitymanaged = 1;
156 $this->isextrafieldmanaged = 1;
158 if (!
getDolGlobalInt(
'MAIN_SHOW_TECHNICAL_ID') && isset($this->fields[
'rowid']) && !empty($this->fields[
'ref'])) {
159 $this->fields[
'rowid'][
'visible'] = 0;
161 if (!isModEnabled(
'multicompany') && isset($this->fields[
'entity'])) {
162 $this->fields[
'entity'][
'enabled'] = 0;
170 $this->fields[
'visibility'][
'default'] = $user->id;
173 foreach ($this->fields as $key => $val) {
174 if (isset($val[
'enabled']) && empty($val[
'enabled'])) {
175 unset($this->fields[$key]);
180 if (is_object($langs)) {
181 foreach ($this->fields as $key => $val) {
182 if (!empty($val[
'arrayofkeyval']) && is_array($val[
'arrayofkeyval'])) {
183 foreach ($val[
'arrayofkeyval'] as $key2 => $val2) {
184 $this->fields[$key][
'arrayofkeyval'][$key2] = $langs->trans($val2);
204 return $resultcreate;
216 global $langs, $extrafields;
226 $result =
$object->fetchCommon($fromid);
227 if ($result > 0 && !empty(
$object->table_element_line)) {
241 if (property_exists(
$object,
'ref')) {
242 $object->ref = empty($this->fields[
'ref'][
'default']) ?
"Copy_Of_".$object->ref : $this->fields[
'ref'][
'default'];
244 if (property_exists(
$object,
'label')) {
245 $object->label = empty($this->fields[
'label'][
'default']) ? $langs->trans(
"CopyOf").
" ".
$object->label : $this->fields[
'label'][
'default'];
247 if (property_exists(
$object,
'status')) {
248 $object->status = self::STATUS_DRAFT;
250 if (property_exists(
$object,
'date_creation')) {
253 if (property_exists(
$object,
'date_modification')) {
254 $object->date_modification =
null;
258 if (is_array(
$object->array_options) && count(
$object->array_options) > 0) {
259 $extrafields->fetch_name_optionals_label($this->table_element);
260 foreach (
$object->array_options as $key => $option) {
261 $shortkey = preg_replace(
'/options_/',
'', $key);
262 if (!empty($extrafields->attributes[$this->table_element][
'unique'][$shortkey])) {
265 unset(
$object->array_options[$key]);
271 $object->context[
'createfromclone'] =
'createfromclone';
272 $result =
$object->createCommon($user);
287 if (!empty(
$object->socid) && property_exists($this,
'fk_soc') && $this->fk_soc ==
$object->socid) {
294 unset(
$object->context[
'createfromclone']);
301 $this->db->rollback();
313 public function fetch($id, $ref =
null)
316 if ($result > 0 && !empty($this->table_element_line)) {
329 $this->lines = array();
348 public function fetchAll($sortorder =
'', $sortfield =
'', $limit = 0, $offset = 0, $filter =
'', $filtermode =
'AND')
356 $sql .=
" FROM ".$this->db->prefix().$this->table_element.
" as t";
357 if (isset($this->ismultientitymanaged) && $this->ismultientitymanaged == 1) {
358 $sql .=
" WHERE t.entity IN (".getEntity($this->element).
")";
360 $sql .=
" WHERE 1 = 1";
367 $this->errors[] = $errormessage;
368 dol_syslog(__METHOD__.
' '.implode(
',', $this->errors), LOG_ERR);
372 if (!empty($sortfield)) {
373 $sql .= $this->db->order($sortfield, $sortorder);
375 if (!empty($limit)) {
376 $sql .= $this->db->plimit($limit, $offset);
379 $resql = $this->db->query($sql);
381 $num = $this->db->num_rows($resql);
383 while ($i < ($limit ? min($limit, $num) : $num)) {
384 $obj = $this->db->fetch_object($resql);
386 $record =
new self($this->db);
387 $record->setVarsFromFetchObj($obj);
389 $records[$record->id] = $record;
393 $this->db->free($resql);
397 $this->errors[] =
'Error '.$this->db->lasterror();
398 dol_syslog(__METHOD__.
' '.implode(
',', $this->errors), LOG_ERR);
423 public function delete(
User $user, $notrigger = 0)
440 $this->error =
'ErrorDeleteLineNotAllowedByObjectStatus';
459 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
464 if ($this->
status == self::STATUS_VALIDATED) {
465 dol_syslog(get_class($this).
"::validate action abandoned: already validated", LOG_WARNING);
474 if (!$error && (preg_match(
'/^[\(]?PROV/i', $this->
ref) || empty($this->
ref))) {
479 $this->newref = $num;
483 $sql =
"UPDATE ".MAIN_DB_PREFIX.$this->table_element;
484 $sql .=
" SET ref = '".$this->db->escape($num).
"',";
485 $sql .=
" status = ".self::STATUS_VALIDATED;
486 if (!empty($this->fields[
'date_validation'])) {
487 $sql .=
", date_validation = '".$this->db->idate($now).
"'";
489 if (!empty($this->fields[
'fk_user_valid'])) {
490 $sql .=
", fk_user_valid = ".((int) $user->id);
492 $sql .=
" WHERE rowid = ".((int) $this->
id);
494 dol_syslog(get_class($this).
"::validate()", LOG_DEBUG);
495 $resql = $this->db->query($sql);
498 $this->error = $this->db->lasterror();
502 if (!$error && !$notrigger) {
504 $result = $this->
call_trigger(
'MYOBJECT_VALIDATE', $user);
513 $this->oldref = $this->ref;
516 if (preg_match(
'/^[\(]?PROV/i', $this->
ref)) {
518 $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).
"'";
519 $sql .=
" WHERE filename LIKE '".$this->db->escape($this->
ref).
"%' AND filepath = 'calendar/".$this->db->escape($this->
ref).
"' and entity = ".$conf->entity;
520 $resql = $this->db->query($sql);
523 $this->error = $this->db->lasterror();
525 $sql =
'UPDATE '.MAIN_DB_PREFIX.
"ecm_files set filepath = 'calendar/".$this->db->escape($this->newref).
"'";
526 $sql .=
" WHERE filepath = 'calendar/".$this->db->escape($this->
ref).
"' and entity = ".$conf->entity;
527 $resql = $this->db->query($sql);
530 $this->error = $this->db->lasterror();
536 $dirsource = $conf->bookcal->dir_output.
'/calendar/'.$oldref;
537 $dirdest = $conf->bookcal->dir_output.
'/calendar/'.$newref;
538 if (!$error && file_exists($dirsource)) {
539 dol_syslog(get_class($this).
"::validate() rename dir ".$dirsource.
" into ".$dirdest);
541 if (@rename($dirsource, $dirdest)) {
544 $listoffiles =
dol_dir_list($conf->bookcal->dir_output.
'/calendar/'.$newref,
'files', 1,
'^'.preg_quote($oldref,
'/'));
545 foreach ($listoffiles as $fileentry) {
546 $dirsource = $fileentry[
'name'];
547 $dirdest = preg_replace(
'/^'.preg_quote($oldref,
'/').
'/', $newref, $dirsource);
548 $dirsource = $fileentry[
'path'].
'/'.$dirsource;
549 $dirdest = $fileentry[
'path'].
'/'.$dirdest;
550 @rename($dirsource, $dirdest);
560 $this->
status = self::STATUS_VALIDATED;
567 $this->db->rollback();
583 if ($this->
status <= self::STATUS_DRAFT) {
587 return $this->
setStatusCommon($user, self::STATUS_DRAFT, $notrigger,
'MYOBJECT_UNVALIDATE');
597 public function cancel($user, $notrigger = 0)
600 if ($this->
status != self::STATUS_VALIDATED) {
604 return $this->
setStatusCommon($user, self::STATUS_CANCELED, $notrigger,
'MYOBJECT_CANCEL');
614 public function reopen($user, $notrigger = 0)
617 if ($this->
status == self::STATUS_VALIDATED) {
621 return $this->
setStatusCommon($user, self::STATUS_VALIDATED, $notrigger,
'MYOBJECT_REOPEN');
638 return [
'optimize' => $langs->trans(
"ShowCalendar")];
640 $datas[
'picto'] =
img_picto(
'', $this->picto).
' <u>'.$langs->trans(
"Calendar").
'</u>';
641 if (isset($this->
status)) {
642 $datas[
'picto'] .=
' '.$this->getLibStatut(5);
644 $datas[
'ref'] =
'<br><b>'.$langs->trans(
'Ref').
':</b> '.$this->ref;
659 public function getNomUrl($withpicto = 0, $option =
'', $notooltip = 0, $morecss =
'', $save_lastsearch_value = -1)
661 global $conf, $langs, $hookmanager;
663 if (!empty($conf->dol_no_mouse_hover)) {
670 'objecttype' => $this->element.($this->module ?
'@'.$this->module :
''),
673 $classfortooltip =
'classfortooltip';
676 $classfortooltip =
'classforajaxtooltip';
677 $dataparams =
' data-params="'.dol_escape_htmltag(json_encode($params)).
'"';
683 $url =
dol_buildpath(
'/bookcal/calendar_card.php', 1).
'?id='.$this->id;
685 if ($option !==
'nolink') {
687 $add_save_lastsearch_values = ($save_lastsearch_value == 1 ? 1 : 0);
688 if ($save_lastsearch_value == -1 && isset($_SERVER[
"PHP_SELF"]) && preg_match(
'/list\.php/', $_SERVER[
"PHP_SELF"])) {
689 $add_save_lastsearch_values = 1;
691 if ($url && $add_save_lastsearch_values) {
692 $url .=
'&save_lastsearch_values=1';
697 if (empty($notooltip)) {
699 $label = $langs->trans(
"ShowCalendar");
700 $linkclose .=
' alt="'.dol_escape_htmltag($label, 1).
'"';
702 $linkclose .= ($label ?
' title="'.dol_escape_htmltag($label, 1).
'"' :
' title="tocomplete"');
703 $linkclose .= $dataparams.
' class="'.$classfortooltip.($morecss ?
' '.$morecss :
'').
'"';
705 $linkclose = ($morecss ?
' class="'.$morecss.
'"' :
'');
708 if ($option ==
'nolink' || empty($url)) {
709 $linkstart =
'<span';
711 $linkstart =
'<a href="'.$url.
'"';
713 $linkstart .= $linkclose.
'>';
714 if ($option ==
'nolink' || empty($url)) {
715 $linkend =
'</span>';
720 $result .= $linkstart;
722 if (empty($this->showphoto_on_popup)) {
724 $result .=
img_object(($notooltip ?
'' : $label), ($this->picto ? $this->picto :
'generic'), (($withpicto != 2) ?
'class="paddingright"' :
''), 0, 0, $notooltip ? 0 : 1);
728 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
730 list($class, $module) = explode(
'@', $this->picto);
733 $filename = $filearray[0][
'name'];
734 if (!empty($filename)) {
735 $pospoint = strpos($filearray[0][
'name'],
'.');
737 $pathtophoto = $class.
'/'.$this->
ref.
'/thumbs/'.substr($filename, 0, $pospoint).
'_mini'.substr($filename, $pospoint);
738 if (!
getDolGlobalInt(strtoupper($module.
'_'.$class).
'_FORMATLISTPHOTOSASUSERS')) {
739 $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>';
741 $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>';
746 $result .=
img_object(($notooltip ?
'' : $label), ($this->picto ? $this->picto :
'generic'), ($notooltip ? (($withpicto != 2) ?
'class="paddingright"' :
'') :
'class="'.(($withpicto != 2) ?
'paddingright ' :
'').
'"'), 0, 0, $notooltip ? 0 : 1);
751 if ($withpicto != 2) {
752 $result .= $this->ref;
758 global $action, $hookmanager;
759 $hookmanager->initHooks(array($this->element.
'dao'));
760 $parameters = array(
'id' => $this->
id,
'getnomurl' => &$result);
761 $reshook = $hookmanager->executeHooks(
'getNomUrl', $parameters, $this, $action);
763 $result = $hookmanager->resPrint;
765 $result .= $hookmanager->resPrint;
780 global $conf, $langs;
782 $selected = (empty($arraydata[
'selected']) ? 0 : $arraydata[
'selected']);
784 $return =
'<div class="box-flex-item box-flex-grow-zero">';
785 $return .=
'<div class="info-box info-box-sm">';
786 $return .=
'<span class="info-box-icon bg-infobox-action">';
788 $return .=
'</span>';
789 $return .=
'<div class="info-box-content">';
790 $return .=
'<span class="info-box-ref inline-block tdoverflowmax150 valignmiddle">'.(method_exists($this,
'getNomUrl') ? $this->
getNomUrl() : $this->ref).
'</span>';
791 if ($selected >= 0) {
792 $return .=
'<input id="cb'.$this->id.
'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->
id.
'"'.($selected ?
' checked="checked"' :
'').
'>';
794 if (property_exists($this,
'label')) {
795 $return .=
' <div class="inline-block opacitymedium valignmiddle tdoverflowmax100">'.$this->label.
'</div>';
797 if (property_exists($this,
'amount')) {
799 $return .=
'<span class="info-box-label amount">'.price($this->amount, 0, $langs, 1, -1, -1, $conf->currency).
'</span>';
801 if (method_exists($this,
'getLibStatut')) {
802 $return .=
'<br><div class="info-box-status">'.$this->getLibStatut(3).
'</div>';
844 if (empty($this->labelStatus) || empty($this->labelStatusShort)) {
847 $this->labelStatus[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv(
'Draft');
848 $this->labelStatus[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv(
'Enabled');
849 $this->labelStatus[self::STATUS_CANCELED] = $langs->transnoentitiesnoconv(
'Disabled');
850 $this->labelStatusShort[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv(
'Draft');
851 $this->labelStatusShort[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv(
'Enabled');
852 $this->labelStatusShort[self::STATUS_CANCELED] = $langs->transnoentitiesnoconv(
'Disabled');
855 $statusType =
'status'.$status;
856 if ($status == self::STATUS_VALIDATED) {
857 $statusType =
'status4';
859 if ($status == self::STATUS_CANCELED) {
860 $statusType =
'status6';
863 return dolGetStatus($this->labelStatus[$status], $this->labelStatusShort[$status],
'', $statusType, $mode);
874 $sql =
"SELECT rowid,";
875 $sql .=
" date_creation as datec, tms as datem,";
876 $sql .=
" fk_user_creat, fk_user_modif";
877 $sql .=
" FROM ".MAIN_DB_PREFIX.$this->table_element.
" as t";
878 $sql .=
" WHERE t.rowid = ".((int) $id);
880 $result = $this->db->query($sql);
882 if ($this->db->num_rows($result)) {
883 $obj = $this->db->fetch_object($result);
885 $this->
id = $obj->rowid;
887 $this->user_creation_id = $obj->fk_user_creat;
888 $this->user_modification_id = $obj->fk_user_modif;
889 $this->date_creation = $this->db->jdate($obj->datec);
890 $this->date_modification = empty($obj->datem) ?
'' : $this->db->jdate($obj->datem);
893 $this->db->free($result);
921 $this->lines = array();
924 $result = $objectline->fetchAll(
'ASC',
'position', 0, 0,
'(fk_calendar:=:'.((
int) $this->
id).
')');
926 if (is_numeric($result)) {
930 $this->lines = $result;
942 global $langs, $conf;
943 $langs->load(
"agenda");
946 $conf->global->BOOKCAL_MYOBJECT_ADDON =
'mod_calendar_standard';
956 $dirmodels = array_merge(array(
'/'), (array) $conf->modules_parts[
'models']);
957 foreach ($dirmodels as $reldir) {
961 $mybool = ((bool) @include_once $dir.$file) || $mybool;
964 if ($mybool ===
false) {
969 if (class_exists($classname)) {
970 $obj =
new $classname();
971 $numref = $obj->getNextValue($this);
973 if ($numref !=
'' && $numref !=
'-1') {
976 $this->error = $obj->error;
981 print $langs->trans(
"Error").
" ".$langs->trans(
"ClassNotFound").
' '.$classname;
985 print $langs->trans(
"ErrorNumberingModuleNotSetup", $this->element);
1001 public function generateDocument($modele, $outputlangs, $hidedetails = 0, $hidedesc = 0, $hideref = 0, $moreparams =
null)
1003 global $conf, $langs;
1006 $includedocgeneration = 0;
1008 $langs->load(
"agenda");
1011 $modele =
'standard_calendar';
1013 if (!empty($this->model_pdf)) {
1014 $modele = $this->model_pdf;
1020 $modelpath =
"core/modules/bookcal/doc/";
1022 if ($includedocgeneration && !empty($modele)) {
1023 $result = $this->
commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams);
1054 $this->db->commit();
1061require_once DOL_DOCUMENT_ROOT.
'/core/class/commonobjectline.class.php';
1081 $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.