28require_once DOL_DOCUMENT_ROOT.
'/core/class/commonobject.class.php';
38 public $module =
'bookcal';
43 public $element =
'availabilities';
49 public $TRIGGER_PREFIX =
'AVAILABILITIES';
54 public $table_element =
'bookcal_availabilities';
59 public $picto =
'fa-calendar-check';
62 const STATUS_DRAFT = 0;
63 const STATUS_VALIDATED = 1;
64 const STATUS_CANCELED = 9;
110 public $fields = array(
111 'rowid' => array(
'type' =>
'integer',
'label' =>
'TechnicalID',
'enabled' => 1,
'position' => 1,
'notnull' => 1,
'visible' => 2,
'noteditable' => 1,
'index' => 1,
'css' =>
'left',
'comment' =>
"Id"),
112 'label' => array(
'type' =>
'varchar(255)',
'label' =>
'Label',
'enabled' => 1,
'position' => 20,
'notnull' => 0,
'visible' => 1,
'searchall' => 1,
'css' =>
'minwidth300',
'csslist' =>
'tdoverflowmax150',
'cssview' =>
'wordbreak',
'help' =>
"BookcalLabelAvailabilityHelp",
'showoncombobox' => 2,
'validate' => 1,),
113 'fk_bookcal_calendar' => array(
'type' =>
'integer:Calendar:bookcal/class/calendar.class.php:1',
'label' =>
'Calendar',
'enabled' => 1,
'position' => 25,
'notnull' => 1,
'visible' => 1,
'css' =>
'maxwidth500 widthcentpercentminusxx',
'csslist' =>
'tdoverflowmax100'),
114 'description' => array(
'type' =>
'text',
'label' =>
'Description',
'enabled' => 1,
'position' => 60,
'notnull' => 0,
'visible' => 3,
'validate' => 1,),
115 'note_public' => array(
'type' =>
'html',
'label' =>
'NotePublic',
'enabled' => 1,
'position' => 61,
'notnull' => 0,
'visible' => 0,
'cssview' =>
'wordbreak',
'validate' => 1,),
116 'note_private' => array(
'type' =>
'html',
'label' =>
'NotePrivate',
'enabled' => 1,
'position' => 62,
'notnull' => 0,
'visible' => 0,
'cssview' =>
'wordbreak',
'validate' => 1,),
117 'date_creation' => array(
'type' =>
'datetime',
'label' =>
'DateCreation',
'enabled' => 1,
'position' => 500,
'notnull' => 1,
'visible' => -2,),
118 'tms' => array(
'type' =>
'timestamp',
'label' =>
'DateModification',
'enabled' => 1,
'position' => 501,
'notnull' => 0,
'visible' => -2,),
119 'fk_user_creat' => array(
'type' =>
'integer:User:user/class/user.class.php',
'label' =>
'UserAuthor',
'picto' =>
'user',
'enabled' => 1,
'position' => 510,
'notnull' => 1,
'visible' => -2,
'css' =>
'maxwidth500 widthcentpercentminusxx',
'csslist' =>
'tdoverflowmax150'),
120 'fk_user_modif' => array(
'type' =>
'integer:User:user/class/user.class.php',
'label' =>
'UserModif',
'picto' =>
'user',
'enabled' => 1,
'position' => 511,
'notnull' => -1,
'visible' => -2,
'css' =>
'maxwidth500 widthcentpercentminusxx',
'csslist' =>
'tdoverflowmax150'),
121 'last_main_doc' => array(
'type' =>
'varchar(255)',
'label' =>
'LastMainDoc',
'enabled' => 1,
'position' => 600,
'notnull' => 0,
'visible' => 0,),
122 'import_key' => array(
'type' =>
'varchar(14)',
'label' =>
'ImportId',
'enabled' => 1,
'position' => 1000,
'notnull' => -1,
'visible' => -2,),
123 'model_pdf' => array(
'type' =>
'varchar(255)',
'label' =>
'Model pdf',
'enabled' => 1,
'position' => 1010,
'notnull' => -1,
'visible' => 0,),
124 'start' => array(
'type' =>
'date',
'label' =>
'Start Date',
'enabled' => 1,
'position' => 40,
'notnull' => 1,
'visible' => 1,
'searchall' => 1,),
125 'end' => array(
'type' =>
'date',
'label' =>
'End Date',
'enabled' => 1,
'position' => 45,
'notnull' => 1,
'visible' => 1,
'searchall' => 1,),
126 'duration' => array(
'type' =>
'integer',
'label' =>
'DurationOfRange',
'enabled' => 1,
'position' => 48,
'notnull' => 1,
'visible' => 1,
'default' =>
'30',
'css' =>
'width50 right'),
127 'startHour' => array(
'type' =>
'integer',
'label' =>
'Start Hour',
'enabled' => 1,
'position' => 46,
'notnull' => 1,
'visible' => 1,),
128 'endHour' => array(
'type' =>
'integer',
'label' =>
'End Hour',
'enabled' => 1,
'position' => 47,
'notnull' => 1,
'visible' => 1,),
129 'status' => array(
'type' =>
'integer',
'label' =>
'Status',
'enabled' => 1,
'position' => 2000,
'notnull' => 1,
'visible' => 1,
'index' => 1,
'arrayofkeyval' => array(0 =>
'Draft', 1 =>
'Validated', 9 =>
'Closed'),
'default' =>
'1',
'validate' => 1),
150 public $note_private;
154 public $fk_user_creat;
158 public $fk_user_modif;
162 public $last_main_doc;
195 public $fk_bookcal_calendar;
205 global $conf, $langs;
209 $this->ismultientitymanaged =
'fk_bookcal_calendar@bookcal_calendar';
210 $this->isextrafieldmanaged = 1;
212 if (!
getDolGlobalString(
'MAIN_SHOW_TECHNICAL_ID') && isset($this->fields[
'rowid']) && !empty($this->fields[
'ref'])) {
213 $this->fields[
'rowid'][
'visible'] = 0;
215 if (!
isModEnabled(
'multicompany') && isset($this->fields[
'entity'])) {
216 $this->fields[
'entity'][
'enabled'] = 0;
226 foreach ($this->fields as $key => $val) {
227 if (isset($val[
'enabled']) && empty($val[
'enabled'])) {
228 unset($this->fields[$key]);
233 if (is_object($langs)) {
234 foreach ($this->fields as $key => $val) {
235 if (!empty($val[
'arrayofkeyval']) && is_array($val[
'arrayofkeyval'])) {
236 foreach ($val[
'arrayofkeyval'] as $key2 => $val2) {
237 $this->fields[$key][
'arrayofkeyval'][$key2] = $langs->trans($val2);
257 return $resultcreate;
269 global $langs, $extrafields;
279 $result =
$object->fetchCommon($fromid);
280 if ($result > 0 && !empty(
$object->table_element_line)) {
294 $object->ref = empty($this->fields[
'ref'][
'default']) ?
"Copy_Of_".$object->ref : $this->fields[
'ref'][
'default'];
296 $object->status = self::STATUS_DRAFT;
298 $object->date_modification =
null;
301 if (is_array(
$object->array_options) && count(
$object->array_options) > 0) {
302 $extrafields->fetch_name_optionals_label($this->table_element);
303 foreach (
$object->array_options as $key => $option) {
304 $shortkey = preg_replace(
'/options_/',
'', $key);
305 if (!empty($extrafields->attributes[$this->table_element][
'unique'][$shortkey])) {
308 unset(
$object->array_options[$key]);
314 $object->context[
'createfromclone'] =
'createfromclone';
315 $result =
$object->createCommon($user);
328 unset(
$object->context[
'createfromclone']);
335 $this->db->rollback();
347 public function fetch($id, $ref =
null)
350 if ($result > 0 && !empty($this->table_element_line)) {
363 $this->lines = array();
382 public function fetchAll($sortorder =
'', $sortfield =
'', $limit = 0, $offset = 0, $filter =
'', $filtermode =
'AND')
390 $sql .=
" FROM ".MAIN_DB_PREFIX.$this->table_element.
" as t";
391 if (isset($this->ismultientitymanaged) && $this->ismultientitymanaged == 1) {
392 $sql .=
" WHERE t.entity IN (".getEntity($this->element).
")";
394 $sql .=
" WHERE 1 = 1";
401 $this->errors[] = $errormessage;
402 dol_syslog(__METHOD__.
' '.implode(
',', $this->errors), LOG_ERR);
406 if (!empty($sortfield)) {
407 $sql .= $this->db->order($sortfield, $sortorder);
409 if (!empty($limit)) {
410 $sql .= $this->db->plimit($limit, $offset);
413 $resql = $this->db->query($sql);
415 $num = $this->db->num_rows($resql);
417 while ($i < ($limit ? min($limit, $num) : $num)) {
418 $obj = $this->db->fetch_object($resql);
420 $record =
new self($this->db);
421 $record->setVarsFromFetchObj($obj);
423 $records[$record->id] = $record;
427 $this->db->free($resql);
431 $this->errors[] =
'Error '.$this->db->lasterror();
432 dol_syslog(__METHOD__.
' '.implode(
',', $this->errors), LOG_ERR);
457 public function delete(
User $user, $notrigger = 0)
474 $this->error =
'ErrorDeleteLineNotAllowedByObjectStatus';
493 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
498 if ($this->
status == self::STATUS_VALIDATED) {
499 dol_syslog(get_class($this).
"::validate action abandoned: already validated", LOG_WARNING);
508 if (preg_match(
'/^[\(]?PROV/i', $this->
ref) || empty($this->
ref)) {
511 $num = (string) $this->
ref;
513 $this->newref = $num;
517 $sql =
"UPDATE ".MAIN_DB_PREFIX.$this->table_element;
518 $sql .=
" SET label = '".$this->db->escape($num).
"',";
519 $sql .=
" status = ".self::STATUS_VALIDATED;
520 if (!empty($this->fields[
'date_validation'])) {
521 $sql .=
", date_validation = '".$this->db->idate($now).
"'";
523 if (!empty($this->fields[
'fk_user_valid'])) {
524 $sql .=
", fk_user_valid = ".((int) $user->id);
526 $sql .=
" WHERE rowid = ".((int) $this->
id);
528 dol_syslog(get_class($this).
"::validate()", LOG_DEBUG);
529 $resql = $this->db->query($sql);
532 $this->error = $this->db->lasterror();
536 if (!$error && !$notrigger) {
538 $result = $this->call_trigger(
'AVAILABILITIES_VALIDATE', $user);
547 $this->oldref = $this->ref;
550 if (preg_match(
'/^[\(]?PROV/i', $this->
ref)) {
552 $sql =
'UPDATE '.MAIN_DB_PREFIX.
"ecm_files set filename = CONCAT('".$this->db->escape($this->newref).
"', SUBSTR(filename, ".(strlen($this->
ref) + 1).
")), filepath = 'availabilities/".$this->db->escape($this->newref).
"'";
553 $sql .=
" WHERE filename LIKE '".$this->db->escape($this->
ref).
"%' AND filepath = 'availabilities/".$this->db->escape($this->
ref).
"' and entity = ".$conf->entity;
554 $resql = $this->db->query($sql);
557 $this->error = $this->db->lasterror();
559 $sql =
'UPDATE '.MAIN_DB_PREFIX.
"ecm_files set filepath = 'availabilities/".$this->db->escape($this->newref).
"'";
560 $sql .=
" WHERE filepath = 'availabilities/".$this->db->escape($this->
ref).
"' and entity = ".$conf->entity;
561 $resql = $this->db->query($sql);
564 $this->error = $this->db->lasterror();
570 $dirsource = $conf->bookcal->dir_output.
'/availabilities/'.$oldref;
571 $dirdest = $conf->bookcal->dir_output.
'/availabilities/'.$newref;
572 if (!$error && file_exists($dirsource)) {
573 dol_syslog(get_class($this).
"::validate() rename dir ".$dirsource.
" into ".$dirdest);
575 if (@rename($dirsource, $dirdest)) {
578 $listoffiles =
dol_dir_list($conf->bookcal->dir_output.
'/availabilities/'.$newref,
'files', 1,
'^'.preg_quote($oldref,
'/'));
579 foreach ($listoffiles as $fileentry) {
580 $dirsource = $fileentry[
'name'];
581 $dirdest = preg_replace(
'/^'.preg_quote($oldref,
'/').
'/', $newref, $dirsource);
582 $dirsource = $fileentry[
'path'].
'/'.$dirsource;
583 $dirdest = $fileentry[
'path'].
'/'.$dirdest;
584 @rename($dirsource, $dirdest);
594 $this->
status = self::STATUS_VALIDATED;
601 $this->db->rollback();
617 if ($this->
status <= self::STATUS_DRAFT) {
621 return $this->
setStatusCommon($user, self::STATUS_DRAFT, $notrigger,
'AVAILABILITIES_UNVALIDATE');
631 public function cancel($user, $notrigger = 0)
634 if ($this->
status != self::STATUS_VALIDATED) {
638 return $this->
setStatusCommon($user, self::STATUS_CANCELED, $notrigger,
'AVAILABILITIES_CANCEL');
648 public function reopen($user, $notrigger = 0)
651 if ($this->
status != self::STATUS_CANCELED) {
655 return $this->
setStatusCommon($user, self::STATUS_VALIDATED, $notrigger,
'AVAILABILITIES_REOPEN');
668 public function getNomUrl($withpicto = 0, $option =
'', $notooltip = 0, $morecss =
'', $save_lastsearch_value = -1)
670 global $conf, $langs, $hookmanager;
672 if (!empty($conf->dol_no_mouse_hover)) {
678 $label =
img_picto(
'', $this->picto).
' <u>'.$langs->trans(
"Availabilities").
'</u>';
679 if (isset($this->
status)) {
680 $label .=
' '.$this->getLibStatut(5);
683 $label .=
'<b>'.$langs->trans(
'Ref').
':</b> '.$this->ref;
685 $url =
dol_buildpath(
'/bookcal/availabilities_card.php', 1).
'?id='.$this->id;
687 if ($option !=
'nolink') {
689 $add_save_lastsearch_values = ($save_lastsearch_value == 1 ? 1 : 0);
690 if ($save_lastsearch_value == -1 && isset($_SERVER[
"PHP_SELF"]) && preg_match(
'/list\.php/', $_SERVER[
"PHP_SELF"])) {
691 $add_save_lastsearch_values = 1;
693 if ($add_save_lastsearch_values) {
694 $url .=
'&save_lastsearch_values=1';
699 if (empty($notooltip)) {
701 $label = $langs->trans(
"ShowAvailabilities");
702 $linkclose .=
' alt="'.dolPrintHTMLForAttribute($label).
'"';
704 $linkclose .=
' title="'.dolPrintHTMLForAttribute($label).
'"';
705 $linkclose .=
' class="classfortooltip'.($morecss ?
' '.$morecss :
'').
'"';
707 $linkclose = ($morecss ?
' class="'.$morecss.
'"' :
'');
710 if ($option ==
'nolink') {
711 $linkstart =
'<span';
713 $linkstart =
'<a href="'.$url.
'"';
715 $linkstart .= $linkclose.
'>';
716 if ($option ==
'nolink') {
717 $linkend =
'</span>';
722 $result .= $linkstart;
724 if (empty($this->showphoto_on_popup)) {
726 $result .=
img_object(($notooltip ?
'' : $label), ($this->picto ? $this->picto :
'generic'), ($notooltip ? (($withpicto != 2) ?
'class="paddingright"' :
'') :
'class="'.(($withpicto != 2) ?
'paddingright ' :
'').
'classfortooltip"'), 0, 0, $notooltip ? 0 : 1);
730 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
732 list($class, $module) = explode(
'@', $this->picto);
735 $filename = $filearray[0][
'name'];
736 if (!empty($filename)) {
737 $pospoint = strpos($filearray[0][
'name'],
'.');
739 $pathtophoto = $class.
'/'.$this->
ref.
'/thumbs/'.substr($filename, 0, $pospoint).
'_mini'.substr($filename, $pospoint);
741 $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>';
743 $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>';
748 $result .=
img_object(($notooltip ?
'' : $label), ($this->picto ? $this->picto :
'generic'), ($notooltip ? (($withpicto != 2) ?
'class="paddingright"' :
'') :
'class="'.(($withpicto != 2) ?
'paddingright ' :
'').
'classfortooltip"'), 0, 0, $notooltip ? 0 : 1);
753 if ($withpicto != 2) {
754 $result .= $this->ref;
760 global $action, $hookmanager;
761 $hookmanager->initHooks(array(
'availabilitiesdao'));
762 $parameters = array(
'id' => $this->
id,
'getnomurl' => &$result);
763 $reshook = $hookmanager->executeHooks(
'getNomUrl', $parameters, $this, $action);
765 $result = $hookmanager->resPrint;
767 $result .= $hookmanager->resPrint;
782 global $conf, $langs;
784 $selected = (empty($arraydata[
'selected']) ? 0 : $arraydata[
'selected']);
786 $return =
'<div class="box-flex-item box-flex-grow-zero">';
787 $return .=
'<div class="info-box info-box-sm">';
788 $return .=
'<span class="info-box-icon bg-infobox-action">';
790 $return .=
'</span>';
791 $return .=
'<div class="info-box-content">';
792 $return .=
'<span class="info-box-ref inline-block tdoverflowmax150 valignmiddle">' . $this->
getNomUrl() .
'</span>';
793 if ($selected >= 0) {
794 $return .=
'<input id="cb'.$this->id.
'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->
id.
'"'.($selected ?
' checked="checked"' :
'').
'>';
796 $return .=
' <div class="inline-block opacitymedium valignmiddle tdoverflowmax100">'.$this->label.
'</div>';
797 $return .=
'<br><div class="info-box-status">'.$this->getLibStatut(3).
'</div>';
838 if (empty($this->labelStatus) || empty($this->labelStatusShort)) {
841 $this->labelStatus[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv(
'Draft');
842 $this->labelStatus[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv(
'Enabled');
843 $this->labelStatus[self::STATUS_CANCELED] = $langs->transnoentitiesnoconv(
'Disabled');
844 $this->labelStatusShort[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv(
'Draft');
845 $this->labelStatusShort[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv(
'Enabled');
846 $this->labelStatusShort[self::STATUS_CANCELED] = $langs->transnoentitiesnoconv(
'Disabled');
849 $statusType =
'status'.$status;
850 if ($status == self::STATUS_VALIDATED) {
851 $statusType =
'status4';
853 if ($status == self::STATUS_CANCELED) {
854 $statusType =
'status6';
857 return dolGetStatus($this->labelStatus[$status], $this->labelStatusShort[$status],
'', $statusType, $mode);
868 $sql =
"SELECT rowid,";
869 $sql .=
" date_creation as datec, tms as datem,";
870 $sql .=
" fk_user_creat, fk_user_modif";
871 $sql .=
" FROM ".MAIN_DB_PREFIX.$this->table_element.
" as t";
872 $sql .=
" WHERE t.rowid = ".((int) $id);
874 $result = $this->db->query($sql);
876 if ($this->db->num_rows($result)) {
877 $obj = $this->db->fetch_object($result);
879 $this->
id = $obj->rowid;
881 $this->user_creation_id = $obj->fk_user_creat;
882 $this->user_modification_id = $obj->fk_user_modif;
883 $this->date_creation = $this->db->jdate($obj->datec);
884 $this->date_modification = empty($obj->datem) ?
'' : $this->db->jdate($obj->datem);
887 $this->db->free($result);
915 $this->lines = array();
918 $result = $objectline->fetchAll(
'ASC',
'position', 0, 0,
'(fk_availabilities:=:'.((
int) $this->
id).
')');
920 if (is_numeric($result)) {
924 $this->lines = $result;
951 public function generateDocument($modele, $outputlangs, $hidedetails = 0, $hidedesc = 0, $hideref = 0, $moreparams =
null)
957 $langs->load(
"agenda");
960 $modele =
'standard_availabilities';
962 if (!empty($this->model_pdf)) {
963 $modele = $this->model_pdf;
969 $modelpath =
"core/modules/bookcal/doc/";
971 if (!empty($modele)) {
972 $result = $this->
commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams);
987 global $conf, $langs;
1003 $this->db->commit();
1010require_once DOL_DOCUMENT_ROOT.
'/core/class/commonobjectline.class.php';
1028 $this->isextrafieldmanaged = 0;
if(! $sortfield) if(! $sortorder) $object
Class for Availabilities.
create(User $user, $notrigger=0)
Create object into database.
getLabelStatus($mode=0)
Return the label of the status.
getNextNumRef()
Returns the reference to the following non used object depending on the active numbering module.
fetch($id, $ref=null)
Load object in memory from the database.
fetchLines()
Load object lines in memory from the database.
generateDocument($modele, $outputlangs, $hidedetails=0, $hidedesc=0, $hideref=0, $moreparams=null)
Create a document onto disk according to template module.
initAsSpecimen()
Initialise object with example values Id must be 0 if object instance is a specimen.
doScheduledJob()
Action executed by scheduler CAN BE A CRON TASK.
getNomUrl($withpicto=0, $option='', $notooltip=0, $morecss='', $save_lastsearch_value=-1)
Return a link to the object card (with optionally the picto)
getLibStatut($mode=0)
Return the label of the status.
__construct(DoliDB $db)
Constructor.
LibStatut($status, $mode=0)
Return the status.
createFromClone(User $user, $fromid)
Clone an object into another one.
info($id)
Load the info information in the object.
deleteLine(User $user, $idline, $notrigger=0)
Delete a line of object in database.
update(User $user, $notrigger=0)
Update object into database.
fetchAll($sortorder='', $sortfield='', $limit=0, $offset=0, $filter='', $filtermode='AND')
Load list of objects in memory from the database.
setDraft($user, $notrigger=0)
Set draft status.
validate($user, $notrigger=0)
Validate object.
getKanbanView($option='', $arraydata=null)
Return a thumb for kanban views.
getLinesArray()
Create an array of lines.
cancel($user, $notrigger=0)
Set cancel status.
reopen($user, $notrigger=0)
Set back to validated status.
Class AvailabilitiesLine.
__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.
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.
dol_now($mode='gmt')
Return date for now.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2, $allowothertags=array())
Show picto whatever it's its name (generic function)
img_object($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $allowothertags=array())
Show a picto called object_picto (generic function)
dol_sanitizeFileName($str, $newstr='_', $unaccent=1, $includequotes=0, $allowdash=0)
Clean a string to use it as a file name.
dol_strlen($string, $stringencoding='UTF-8')
Make a strlen call.
forgeSQLFromUniversalSearchCriteria($filter, &$errorstr='', $noand=0, $nopar=0, $noerror=0)
forgeSQLFromUniversalSearchCriteria
dolGetStatus($statusLabel='', $statusLabelShort='', $html='', $statusType='status0', $displayMode=0, $url='', $params=array())
Output the badge of a status.
dol_buildpath($path, $type=0, $returnemptyifnotfound=0)
Return path of url or filesystem.
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.
isModEnabled($module)
Is Dolibarr module enabled.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.