27require_once DOL_DOCUMENT_ROOT.
'/core/class/commonobject.class.php';
39 public $module =
'bookcal';
44 public $element =
'calendar';
49 public $table_element =
'bookcal_calendar';
55 public $ismultientitymanaged = 0;
60 public $isextrafieldmanaged = 1;
65 public $picto =
'fa-file';
68 const STATUS_DRAFT = 0;
69 const STATUS_VALIDATED = 1;
70 const STATUS_CANCELED = 9;
116 public $fields=array(
117 'rowid' => array(
'type'=>
'integer',
'label'=>
'TechnicalID',
'enabled'=>
'1',
'position'=>1,
'notnull'=>1,
'visible'=>0,
'noteditable'=>
'1',
'index'=>1,
'css'=>
'right',
'comment'=>
"Id"),
118 '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'),
119 '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',),
120 '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',),
121 'type' => array(
'type'=>
'integer',
'label'=>
'Type',
'enabled'=>
'1',
'position'=>42,
'notnull'=>1,
'visible'=>1,
'arrayofkeyval'=>array(
'0'=>
'Customer',
'1'=>
'Supplier',
'3'=>
'Other'),),
122 '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',),
123 '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',),
124 'description' => array(
'type'=>
'text',
'label'=>
'Description',
'enabled'=>
'1',
'position'=>60,
'notnull'=>0,
'visible'=>3,
'validate'=>
'1',),
125 'note_public' => array(
'type'=>
'html',
'label'=>
'NotePublic',
'enabled'=>
'1',
'position'=>61,
'notnull'=>0,
'visible'=>0,
'cssview'=>
'wordbreak',
'validate'=>
'1',),
126 'note_private' => array(
'type'=>
'html',
'label'=>
'NotePrivate',
'enabled'=>
'1',
'position'=>62,
'notnull'=>0,
'visible'=>0,
'cssview'=>
'wordbreak',
'validate'=>
'1',),
127 'date_creation' => array(
'type'=>
'datetime',
'label'=>
'DateCreation',
'enabled'=>
'1',
'position'=>500,
'notnull'=>1,
'visible'=>-2,),
128 'tms' => array(
'type'=>
'timestamp',
'label'=>
'DateModification',
'enabled'=>
'1',
'position'=>501,
'notnull'=>0,
'visible'=>-2,),
129 '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',),
130 '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',),
131 'import_key' => array(
'type'=>
'varchar(14)',
'label'=>
'ImportId',
'enabled'=>
'1',
'position'=>1000,
'notnull'=>-1,
'visible'=>-2,),
132 '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',),
143 public $note_private;
144 public $date_creation;
146 public $fk_user_creat;
147 public $fk_user_modif;
160 global $langs, $user;
164 if (!
getDolGlobalInt(
'MAIN_SHOW_TECHNICAL_ID') && isset($this->fields[
'rowid']) && !empty($this->fields[
'ref'])) {
165 $this->fields[
'rowid'][
'visible'] = 0;
167 if (!isModEnabled(
'multicompany') && isset($this->fields[
'entity'])) {
168 $this->fields[
'entity'][
'enabled'] = 0;
176 $this->fields[
'visibility'][
'default'] = $user->id;
179 foreach ($this->fields as $key => $val) {
180 if (isset($val[
'enabled']) && empty($val[
'enabled'])) {
181 unset($this->fields[$key]);
186 if (is_object($langs)) {
187 foreach ($this->fields as $key => $val) {
188 if (!empty($val[
'arrayofkeyval']) && is_array($val[
'arrayofkeyval'])) {
189 foreach ($val[
'arrayofkeyval'] as $key2 => $val2) {
190 $this->fields[$key][
'arrayofkeyval'][$key2] = $langs->trans($val2);
210 return $resultcreate;
222 global $langs, $extrafields;
227 $object =
new self($this->db);
232 $result = $object->fetchCommon($fromid);
233 if ($result > 0 && !empty($object->table_element_line)) {
234 $object->fetchLines();
243 unset($object->fk_user_creat);
244 unset($object->import_key);
247 if (property_exists($object,
'ref')) {
248 $object->ref = empty($this->fields[
'ref'][
'default']) ?
"Copy_Of_".$object->ref : $this->fields[
'ref'][
'default'];
250 if (property_exists($object,
'label')) {
251 $object->label = empty($this->fields[
'label'][
'default']) ? $langs->trans(
"CopyOf").
" ".$object->label : $this->fields[
'label'][
'default'];
253 if (property_exists($object,
'status')) {
254 $object->status = self::STATUS_DRAFT;
256 if (property_exists($object,
'date_creation')) {
257 $object->date_creation =
dol_now();
259 if (property_exists($object,
'date_modification')) {
260 $object->date_modification =
null;
264 if (is_array($object->array_options) && count($object->array_options) > 0) {
265 $extrafields->fetch_name_optionals_label($this->table_element);
266 foreach ($object->array_options as $key => $option) {
267 $shortkey = preg_replace(
'/options_/',
'', $key);
268 if (!empty($extrafields->attributes[$this->table_element][
'unique'][$shortkey])) {
271 unset($object->array_options[$key]);
277 $object->context[
'createfromclone'] =
'createfromclone';
278 $result = $object->createCommon($user);
293 if (!empty($object->socid) && property_exists($this,
'fk_soc') && $this->fk_soc == $object->socid) {
300 unset($object->context[
'createfromclone']);
307 $this->db->rollback();
319 public function fetch($id, $ref =
null)
322 if ($result > 0 && !empty($this->table_element_line)) {
335 $this->lines = array();
353 public function fetchAll($sortorder =
'', $sortfield =
'', $limit = 0, $offset = 0, array $filter = array(), $filtermode =
'AND')
361 $sql .=
" FROM ".$this->db->prefix().$this->table_element.
" as t";
362 if (isset($this->ismultientitymanaged) && $this->ismultientitymanaged == 1) {
363 $sql .=
" WHERE t.entity IN (".getEntity($this->element).
")";
365 $sql .=
" WHERE 1 = 1";
369 if (count($filter) > 0) {
370 foreach ($filter as $key => $value) {
371 if ($key ==
't.rowid') {
372 $sqlwhere[] = $key.
" = ".((int) $value);
373 } elseif (array_key_exists($key, $this->fields) && in_array($this->fields[$key][
'type'], array(
'date',
'datetime',
'timestamp'))) {
374 $sqlwhere[] = $key.
" = '".$this->db->idate($value).
"'";
375 } elseif ($key ==
'customsql') {
376 $sqlwhere[] = $value;
377 } elseif (strpos($value,
'%') ===
false) {
378 $sqlwhere[] = $key.
" IN (".$this->db->sanitize($this->db->escape($value)).
")";
380 $sqlwhere[] = $key.
" LIKE '%".$this->db->escape($value).
"%'";
384 if (count($sqlwhere) > 0) {
385 $sql .=
" AND (".implode(
" ".$filtermode.
" ", $sqlwhere).
")";
388 if (!empty($sortfield)) {
389 $sql .= $this->db->order($sortfield, $sortorder);
391 if (!empty($limit)) {
392 $sql .= $this->db->plimit($limit, $offset);
395 $resql = $this->db->query($sql);
397 $num = $this->db->num_rows($resql);
399 while ($i < ($limit ? min($limit, $num) : $num)) {
400 $obj = $this->db->fetch_object($resql);
402 $record =
new self($this->db);
403 $record->setVarsFromFetchObj($obj);
405 $records[$record->id] = $record;
409 $this->db->free($resql);
413 $this->errors[] =
'Error '.$this->db->lasterror();
414 dol_syslog(__METHOD__.
' '.join(
',', $this->errors), LOG_ERR);
439 public function delete(
User $user, $notrigger =
false)
456 $this->error =
'ErrorDeleteLineNotAllowedByObjectStatus';
475 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
480 if ($this->
status == self::STATUS_VALIDATED) {
481 dol_syslog(get_class($this).
"::validate action abandonned: already validated", LOG_WARNING);
498 if (!$error && (preg_match(
'/^[\(]?PROV/i', $this->
ref) || empty($this->
ref))) {
503 $this->newref = $num;
507 $sql =
"UPDATE ".MAIN_DB_PREFIX.$this->table_element;
508 $sql .=
" SET ref = '".$this->db->escape($num).
"',";
509 $sql .=
" status = ".self::STATUS_VALIDATED;
510 if (!empty($this->fields[
'date_validation'])) {
511 $sql .=
", date_validation = '".$this->db->idate($now).
"'";
513 if (!empty($this->fields[
'fk_user_valid'])) {
514 $sql .=
", fk_user_valid = ".((int) $user->id);
516 $sql .=
" WHERE rowid = ".((int) $this->
id);
518 dol_syslog(get_class($this).
"::validate()", LOG_DEBUG);
519 $resql = $this->db->query($sql);
522 $this->error = $this->db->lasterror();
526 if (!$error && !$notrigger) {
528 $result = $this->
call_trigger(
'MYOBJECT_VALIDATE', $user);
537 $this->oldref = $this->ref;
540 if (preg_match(
'/^[\(]?PROV/i', $this->
ref)) {
542 $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).
"'";
543 $sql .=
" WHERE filename LIKE '".$this->db->escape($this->
ref).
"%' AND filepath = 'calendar/".$this->db->escape($this->
ref).
"' and entity = ".$conf->entity;
544 $resql = $this->db->query($sql);
547 $this->error = $this->db->lasterror();
549 $sql =
'UPDATE '.MAIN_DB_PREFIX.
"ecm_files set filepath = 'calendar/".$this->db->escape($this->newref).
"'";
550 $sql .=
" WHERE filepath = 'calendar/".$this->db->escape($this->
ref).
"' and entity = ".$conf->entity;
551 $resql = $this->db->query($sql);
554 $this->error = $this->db->lasterror();
560 $dirsource = $conf->bookcal->dir_output.
'/calendar/'.$oldref;
561 $dirdest = $conf->bookcal->dir_output.
'/calendar/'.$newref;
562 if (!$error && file_exists($dirsource)) {
563 dol_syslog(get_class($this).
"::validate() rename dir ".$dirsource.
" into ".$dirdest);
565 if (@rename($dirsource, $dirdest)) {
568 $listoffiles =
dol_dir_list($conf->bookcal->dir_output.
'/calendar/'.$newref,
'files', 1,
'^'.preg_quote($oldref,
'/'));
569 foreach ($listoffiles as $fileentry) {
570 $dirsource = $fileentry[
'name'];
571 $dirdest = preg_replace(
'/^'.preg_quote($oldref,
'/').
'/', $newref, $dirsource);
572 $dirsource = $fileentry[
'path'].
'/'.$dirsource;
573 $dirdest = $fileentry[
'path'].
'/'.$dirdest;
574 @rename($dirsource, $dirdest);
584 $this->
status = self::STATUS_VALIDATED;
591 $this->db->rollback();
607 if ($this->
status <= self::STATUS_DRAFT) {
618 return $this->
setStatusCommon($user, self::STATUS_DRAFT, $notrigger,
'MYOBJECT_UNVALIDATE');
628 public function cancel($user, $notrigger = 0)
631 if ($this->
status != self::STATUS_VALIDATED) {
642 return $this->
setStatusCommon($user, self::STATUS_CANCELED, $notrigger,
'MYOBJECT_CANCEL');
652 public function reopen($user, $notrigger = 0)
655 if ($this->
status == self::STATUS_VALIDATED) {
666 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, array(
'customsql'=>
'fk_calendar = '.((
int) $this->
id)));
971 if (is_numeric($result)) {
975 $this->lines = $result;
987 global $langs, $conf;
988 $langs->load(
"agenda");
991 $conf->global->BOOKCAL_MYOBJECT_ADDON =
'mod_calendar_standard';
1001 $dirmodels = array_merge(array(
'/'), (array) $conf->modules_parts[
'models']);
1002 foreach ($dirmodels as $reldir) {
1006 $mybool |= @include_once $dir.$file;
1009 if ($mybool ===
false) {
1014 if (class_exists($classname)) {
1015 $obj =
new $classname();
1016 $numref = $obj->getNextValue($this);
1018 if ($numref !=
'' && $numref !=
'-1') {
1021 $this->error = $obj->error;
1026 print $langs->trans(
"Error").
" ".$langs->trans(
"ClassNotFound").
' '.$classname;
1030 print $langs->trans(
"ErrorNumberingModuleNotSetup", $this->element);
1046 public function generateDocument($modele, $outputlangs, $hidedetails = 0, $hidedesc = 0, $hideref = 0, $moreparams =
null)
1048 global $conf, $langs;
1051 $includedocgeneration = 0;
1053 $langs->load(
"agenda");
1056 $modele =
'standard_calendar';
1058 if (!empty($this->model_pdf)) {
1059 $modele = $this->model_pdf;
1065 $modelpath =
"core/modules/bookcal/doc/";
1067 if ($includedocgeneration && !empty($modele)) {
1068 $result = $this->
commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams);
1099 $this->db->commit();
1106require_once DOL_DOCUMENT_ROOT.
'/core/class/commonobjectline.class.php';
1119 public $isextrafieldmanaged = 0;
print $langs trans("AuditedSecurityEvents").'</strong >< span class="opacitymedium"></span >< br > status
createFromClone(User $user, $fromid)
Clone an object into another one.
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 optionaly 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.
generateDocument($modele, $outputlangs, $hidedetails=0, $hidedesc=0, $hideref=0, $moreparams=null)
Create a document onto disk according to template module.
fetchAll($sortorder='', $sortfield='', $limit=0, $offset=0, array $filter=array(), $filtermode='AND')
Load list of objects in memory from the database.
deleteLine(User $user, $idline, $notrigger=false)
Delete a line of object in database.
update(User $user, $notrigger=false)
Update object into database.
doScheduledJob()
Action executed by scheduler CAN BE A CRON TASK.
create(User $user, $notrigger=false)
Create object into database.
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.
__construct(DoliDB $db)
Constructor.
Parent class of all other business classes (invoices, contracts, proposals, orders,...
commonGenerateDocument($modelspath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams=null)
Common function for all objects extending CommonObject for generating documents.
deleteLineCommon(User $user, $idline, $notrigger=false)
Delete a line of object in database.
setErrorsFromObject($object)
setErrorsFromObject
createCommon(User $user, $notrigger=false)
Create object into database.
deleteCommon(User $user, $notrigger=false, $forcechilddeletion=0)
Delete object in database.
getFieldList($alias='', $excludefields=array())
Function to concat keys of fields.
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.
updateCommon(User $user, $notrigger=false)
Update object into database.
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.
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($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.
dol_print_error($db='', $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
img_object($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0)
Show a picto called object_picto (generic function)
dol_strlen($string, $stringencoding='UTF-8')
Make a strlen call.
dol_now($mode='auto')
Return date for now.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
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.
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.