26 require_once DOL_DOCUMENT_ROOT.
'/core/class/commonobject.class.php';
38 public $module =
'webhook';
43 public $element =
'target';
48 public $table_element =
'webhook_target';
54 public $ismultientitymanaged = 0;
59 public $isextrafieldmanaged = 0;
64 public $picto =
'webhook';
67 const STATUS_DRAFT = 0;
68 const STATUS_VALIDATED = 1;
69 const STATUS_CANCELED = 9;
104 public $fields=array(
105 'rowid' => array(
'type'=>
'integer',
'label'=>
'TechnicalID',
'enabled'=>
'1',
'position'=>1,
'notnull'=>1,
'visible'=>0,
'noteditable'=>
'1',
'index'=>1,
'css'=>
'left',
'comment'=>
"Id"),
106 'ref' => array(
'type'=>
'varchar(128)',
'label'=>
'Ref',
'enabled'=>
'1',
'position'=>20,
'notnull'=>1,
'visible'=>4,
'noteditable'=>
'1',
'index'=>1,
'searchall'=>1,
'validate'=>
'1',
'comment'=>
"Reference of object"),
107 'label' => array(
'type'=>
'varchar(255)',
'label'=>
'Label',
'enabled'=>
'1',
'position'=>30,
'notnull'=>0,
'visible'=>1,
'searchall'=>1,
'css'=>
'minwidth300',
'cssview'=>
'wordbreak',
'help'=>
"Help text",
'showoncombobox'=>
'2',
'validate'=>
'1',),
108 'url' => array(
'type'=>
'varchar(255)',
'label'=>
'Url',
'enabled'=>
'1',
'position'=>50,
'notnull'=>1,
'visible'=>1,),
109 'trigger_codes' => array(
'type'=>
'text',
'label'=>
'TriggerCodes',
'enabled'=>
'1',
'position'=>55,
'notnull'=>1,
'visible'=>1,
'help'=>
"TriggerCodeInfo",),
110 'description' => array(
'type'=>
'text',
'label'=>
'Description',
'enabled'=>
'1',
'position'=>60,
'notnull'=>0,
'visible'=>3,
'validate'=>
'1',),
111 'note_public' => array(
'type'=>
'html',
'label'=>
'NotePublic',
'enabled'=>
'1',
'position'=>61,
'notnull'=>0,
'visible'=>0,
'cssview'=>
'wordbreak',
'validate'=>
'1',),
112 'note_private' => array(
'type'=>
'html',
'label'=>
'NotePrivate',
'enabled'=>
'1',
'position'=>62,
'notnull'=>0,
'visible'=>0,
'cssview'=>
'wordbreak',
'validate'=>
'1',),
113 'date_creation' => array(
'type'=>
'datetime',
'label'=>
'DateCreation',
'enabled'=>
'1',
'position'=>500,
'notnull'=>1,
'visible'=>-2,),
114 'tms' => array(
'type'=>
'timestamp',
'label'=>
'DateModification',
'enabled'=>
'1',
'position'=>501,
'notnull'=>0,
'visible'=>-2,),
115 'fk_user_creat' => array(
'type'=>
'integer:User:user/class/user.class.php',
'label'=>
'UserAuthor',
'enabled'=>
'1',
'position'=>510,
'notnull'=>1,
'visible'=>-2,
'foreignkey'=>
'user.rowid',),
116 'fk_user_modif' => array(
'type'=>
'integer:User:user/class/user.class.php',
'label'=>
'UserModif',
'enabled'=>
'1',
'position'=>511,
'notnull'=>-1,
'visible'=>-2,),
117 'import_key' => array(
'type'=>
'varchar(14)',
'label'=>
'ImportId',
'enabled'=>
'1',
'position'=>1000,
'notnull'=>-1,
'visible'=>-2,),
118 'status' => array(
'type'=>
'integer',
'label'=>
'Status',
'enabled'=>
'1',
'position'=>2000,
'notnull'=>1,
'default'=>1,
'visible'=>1,
'index'=>1,
'arrayofkeyval'=>array(
'0'=>
'Disabled',
'1'=>
'Enabled'),
'validate'=>
'1',),
125 public $note_private;
126 public $date_creation;
128 public $fk_user_creat;
129 public $fk_user_modif;
133 public $trigger_codes;
180 global $conf, $langs;
184 if (empty($conf->global->MAIN_SHOW_TECHNICAL_ID) && isset($this->fields[
'rowid'])) {
185 $this->fields[
'rowid'][
'visible'] = 0;
187 if (!
isModEnabled(
'multicompany') && isset($this->fields[
'entity'])) {
188 $this->fields[
'entity'][
'enabled'] = 0;
198 foreach ($this->fields as $key => $val) {
199 if (isset($val[
'enabled']) && empty($val[
'enabled'])) {
200 unset($this->fields[$key]);
205 if (is_object($langs)) {
206 foreach ($this->fields as $key => $val) {
207 if (!empty($val[
'arrayofkeyval']) && is_array($val[
'arrayofkeyval'])) {
208 foreach ($val[
'arrayofkeyval'] as $key2 => $val2) {
209 $this->fields[$key][
'arrayofkeyval'][$key2] = $langs->trans($val2);
226 $this->
ref = $this->id;
228 if ($resultcreate <= 0) {
229 return $resultcreate;
232 $resultvalidate = $this->
validate($user, $notrigger);
233 if ($resultvalidate < 0) {
234 return $resultvalidate;
237 return $resultcreate;
249 global $langs, $extrafields;
254 $object =
new self($this->db);
259 $result = $object->fetchCommon($fromid);
260 if ($result > 0 && !empty($object->table_element_line)) {
261 $object->fetchLines();
270 unset($object->fk_user_creat);
271 unset($object->import_key);
274 if (property_exists($object,
'ref')) {
275 $object->ref = empty($this->fields[
'ref'][
'default']) ?
"Copy_Of_".$object->ref : $this->fields[
'ref'][
'default'];
277 if (property_exists($object,
'label')) {
278 $object->label = empty($this->fields[
'label'][
'default']) ? $langs->trans(
"CopyOf").
" ".$object->label : $this->fields[
'label'][
'default'];
280 if (property_exists($object,
'status')) {
281 $object->status = self::STATUS_DRAFT;
283 if (property_exists($object,
'date_creation')) {
284 $object->date_creation =
dol_now();
286 if (property_exists($object,
'date_modification')) {
287 $object->date_modification =
null;
291 if (is_array($object->array_options) && count($object->array_options) > 0) {
292 $extrafields->fetch_name_optionals_label($this->table_element);
293 foreach ($object->array_options as $key => $option) {
294 $shortkey = preg_replace(
'/options_/',
'', $key);
295 if (!empty($extrafields->attributes[$this->table_element][
'unique'][$shortkey])) {
297 unset($object->array_options[$key]);
303 $object->context[
'createfromclone'] =
'createfromclone';
304 $result = $object->createCommon($user);
307 $this->error = $object->error;
308 $this->errors = $object->errors;
320 if (!empty($object->socid) && property_exists($this,
'fk_soc') && $this->fk_soc == $object->socid) {
327 unset($object->context[
'createfromclone']);
334 $this->
db->rollback();
346 public function fetch($id, $ref =
null)
349 if (empty($this->
ref)) {
350 $this->
ref = $this->id;
363 $this->lines = array();
381 public function fetchAll($sortorder =
'', $sortfield =
'', $limit = 0, $offset = 0, array $filter = array(), $filtermode =
'AND')
391 $sql .=
" FROM ".MAIN_DB_PREFIX.$this->table_element.
" as t";
392 if (isset($this->ismultientitymanaged) && $this->ismultientitymanaged == 1) {
393 $sql .=
" WHERE t.entity IN (".getEntity($this->element).
")";
395 $sql .=
" WHERE 1 = 1";
399 if (count($filter) > 0) {
400 foreach ($filter as $key => $value) {
401 if ($key ==
't.rowid') {
402 $sqlwhere[] = $key.
" = ".((int) $value);
403 } elseif (in_array($this->fields[$key][
'type'], array(
'date',
'datetime',
'timestamp'))) {
404 $sqlwhere[] = $key.
" = '".$this->
db->idate($value).
"'";
405 } elseif ($key ==
'customsql') {
406 $sqlwhere[] = $value;
407 } elseif (strpos($value,
'%') ===
false) {
408 $sqlwhere[] = $key.
" IN (".$this->
db->sanitize($this->
db->escape($value)).
")";
410 $sqlwhere[] = $key.
" LIKE '%".$this->
db->escape($value).
"%'";
414 if (count($sqlwhere) > 0) {
415 $sql .=
" AND (".implode(
" ".$filtermode.
" ", $sqlwhere).
")";
418 if (!empty($sortfield)) {
419 $sql .= $this->
db->order($sortfield, $sortorder);
421 if (!empty($limit)) {
422 $sql .= $this->
db->plimit($limit, $offset);
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;
443 $this->errors[] =
'Error '.$this->db->lasterror();
444 dol_syslog(__METHOD__.
' '.join(
',', $this->errors), LOG_ERR);
469 public function delete(
User $user, $notrigger =
false)
485 if ($this->status < 0) {
486 $this->error =
'ErrorDeleteLineNotAllowedByObjectStatus';
503 global $conf, $langs;
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 abandonned: already validated", LOG_WARNING);
528 if (!$error && (preg_match(
'/^[\(]?PROV/i', $this->
ref) || empty($this->
ref))) {
533 $this->newref = $num;
537 $sql =
"UPDATE ".MAIN_DB_PREFIX.$this->table_element;
538 $sql .=
" SET ref = '".$this->db->escape($num).
"',";
539 $sql .=
" status = ".self::STATUS_VALIDATED;
540 if (!empty($this->fields[
'date_validation'])) {
541 $sql .=
", date_validation = '".$this->db->idate($now).
"'";
543 if (!empty($this->fields[
'fk_user_valid'])) {
544 $sql .=
", fk_user_valid = ".((int) $user->id);
546 $sql .=
" WHERE rowid = ".((int) $this->
id);
548 dol_syslog(get_class($this).
"::validate()", LOG_DEBUG);
552 $this->error = $this->
db->lasterror();
556 if (!$error && !$notrigger) {
558 $result = $this->
call_trigger(
'TARGET_VALIDATE', $user);
567 $this->oldref = $this->ref;
570 if (preg_match(
'/^[\(]?PROV/i', $this->
ref)) {
572 $sql =
'UPDATE '.MAIN_DB_PREFIX.
"ecm_files set filename = CONCAT('".$this->
db->escape($this->newref).
"', SUBSTR(filename, ".(strlen($this->
ref) + 1).
")), filepath = 'target/".$this->
db->escape($this->newref).
"'";
573 $sql .=
" WHERE filename LIKE '".$this->db->escape($this->
ref).
"%' AND filepath = 'target/".$this->
db->escape($this->
ref).
"' and entity = ".$conf->entity;
576 $error++; $this->error = $this->
db->lasterror();
582 $dirsource = $conf->webhook->dir_output.
'/target/'.$oldref;
583 $dirdest = $conf->webhook->dir_output.
'/target/'.$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->webhook->dir_output.
'/target/'.$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) {
640 return $this->
setStatusCommon($user, self::STATUS_DRAFT, $notrigger,
'TARGET_UNVALIDATE');
650 public function cancel($user, $notrigger = 0)
653 if ($this->status != self::STATUS_VALIDATED) {
664 return $this->
setStatusCommon($user, self::STATUS_CANCELED, $notrigger,
'TARGET_CANCEL');
674 public function reopen($user, $notrigger = 0)
677 if ($this->status != self::STATUS_CANCELED) {
688 return $this->
setStatusCommon($user, self::STATUS_VALIDATED, $notrigger,
'TARGET_REOPEN');
701 public function getNomUrl($withpicto = 0, $option =
'', $notooltip = 0, $morecss =
'', $save_lastsearch_value = -1)
703 global $conf, $langs, $hookmanager;
705 if (!empty($conf->dol_no_mouse_hover)) {
711 $label =
img_picto(
'', $this->picto).
' <u>'.$langs->trans(
"Target").
'</u>';
712 if (isset($this->status)) {
713 $label .=
' '.$this->getLibStatut(5);
716 $label .=
'<b>'.$langs->trans(
'Ref').
':</b> '.$this->ref;
718 $url =
dol_buildpath(
'/webhook/target_card.php', 1).
'?id='.$this->id;
720 if ($option !=
'nolink') {
722 $add_save_lastsearch_values = ($save_lastsearch_value == 1 ? 1 : 0);
723 if ($save_lastsearch_value == -1 && preg_match(
'/list\.php/', $_SERVER[
"PHP_SELF"])) {
724 $add_save_lastsearch_values = 1;
726 if ($url && $add_save_lastsearch_values) {
727 $url .=
'&save_lastsearch_values=1';
732 if (empty($notooltip)) {
733 if (!empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) {
734 $label = $langs->trans(
"ShowTarget");
735 $linkclose .=
' alt="'.dol_escape_htmltag($label, 1).
'"';
737 $linkclose .=
' title="'.dol_escape_htmltag($label, 1).
'"';
738 $linkclose .=
' class="classfortooltip'.($morecss ?
' '.$morecss :
'').
'"';
740 $linkclose = ($morecss ?
' class="'.$morecss.
'"' :
'');
743 if ($option ==
'nolink' || empty($url)) {
744 $linkstart =
'<span';
746 $linkstart =
'<a href="'.$url.
'"';
748 $linkstart .= $linkclose.
'>';
749 if ($option ==
'nolink' || empty($url)) {
750 $linkend =
'</span>';
755 $result .= $linkstart;
757 if (empty($this->showphoto_on_popup)) {
759 $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);
763 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
765 list($class, $module) = explode(
'@', $this->picto);
768 $filename = $filearray[0][
'name'];
769 if (!empty($filename)) {
770 $pospoint = strpos($filearray[0][
'name'],
'.');
772 $pathtophoto = $class.
'/'.$this->
ref.
'/thumbs/'.substr($filename, 0, $pospoint).
'_mini'.substr($filename, $pospoint);
773 if (empty($conf->global->{strtoupper($module.
'_'.$class).
'_FORMATLISTPHOTOSASUSERS'})) {
774 $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>';
776 $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>';
781 $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);
786 if ($withpicto != 2) {
787 $result .= $this->ref;
793 global $action, $hookmanager;
794 $hookmanager->initHooks(array(
'targetdao'));
795 $parameters = array(
'id'=>$this->
id,
'getnomurl' => &$result);
796 $reshook = $hookmanager->executeHooks(
'getNomUrl', $parameters, $this, $action);
798 $result = $hookmanager->resPrint;
800 $result .= $hookmanager->resPrint;
814 return $this->LibStatut($this->status, $mode);
825 return $this->LibStatut($this->status, $mode);
839 if (empty($this->labelStatus) || empty($this->labelStatusShort)) {
842 $this->labelStatus[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv(
'Draft');
843 $this->labelStatus[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv(
'Enabled');
844 $this->labelStatus[self::STATUS_CANCELED] = $langs->transnoentitiesnoconv(
'Disabled');
845 $this->labelStatusShort[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv(
'Draft');
846 $this->labelStatusShort[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv(
'Enabled');
847 $this->labelStatusShort[self::STATUS_CANCELED] = $langs->transnoentitiesnoconv(
'Disabled');
850 $statusType =
'status'.$status;
852 if ($status == self::STATUS_CANCELED) {
853 $statusType =
'status6';
856 return dolGetStatus($this->labelStatus[$status], $this->labelStatusShort[$status],
'', $statusType, $mode);
867 $sql =
"SELECT rowid, date_creation as datec, tms as datem,";
868 $sql .=
" fk_user_creat, fk_user_modif";
869 $sql .=
" FROM ".MAIN_DB_PREFIX.$this->table_element.
" as t";
870 $sql .=
" WHERE t.rowid = ".((int) $id);
872 $result = $this->
db->query($sql);
874 if ($this->
db->num_rows($result)) {
875 $obj = $this->
db->fetch_object($result);
876 $this->
id = $obj->rowid;
879 $this->user_creation_id = $obj->fk_user_creat;
880 $this->user_modification_id = $obj->fk_user_modif;
881 $this->date_creation = $this->
db->jdate($obj->datec);
882 $this->date_modification = empty($obj->datem) ?
'' : $this->
db->jdate($obj->datem);
885 $this->
db->free($result);
903 $this->initAsSpecimenCommon();
913 $this->lines = array();
916 $result = $objectline->fetchAll(
'ASC',
'position', 0, 0, array(
'customsql'=>
'fk_target = '.((
int) $this->
id)));
918 if (is_numeric($result)) {
919 $this->error = $objectline->error;
920 $this->errors = $objectline->errors;
923 $this->lines = $result;
935 global $langs, $conf;
937 if (empty($conf->global->WEBHOOK_TARGET_ADDON)) {
938 $conf->global->WEBHOOK_TARGET_ADDON =
'mod_target_standard';
941 if (!empty($conf->global->WEBHOOK_TARGET_ADDON)) {
944 $file = $conf->global->WEBHOOK_TARGET_ADDON.
".php";
945 $classname = $conf->global->WEBHOOK_TARGET_ADDON;
948 $dirmodels = array_merge(array(
'/'), (array) $conf->modules_parts[
'models']);
949 foreach ($dirmodels as $reldir) {
953 $mybool |= @include_once $dir.$file;
956 if ($mybool ===
false) {
961 if (class_exists($classname)) {
962 $obj =
new $classname();
963 $numref = $obj->getNextValue($this);
965 if ($numref !=
'' && $numref !=
'-1') {
968 $this->error = $obj->error;
973 print $langs->trans(
"Error").
" ".$langs->trans(
"ClassNotFound").
' '.$classname;
977 print $langs->trans(
"ErrorNumberingModuleNotSetup", $this->element);
993 public function generateDocument($modele, $outputlangs, $hidedetails = 0, $hidedesc = 0, $hideref = 0, $moreparams =
null)
995 global $conf, $langs;
998 $includedocgeneration = 0;
1001 $modele =
'standard_target';
1003 if (!empty($this->model_pdf)) {
1004 $modele = $this->model_pdf;
1005 } elseif (!empty($conf->global->TARGET_ADDON_PDF)) {
1006 $modele = $conf->global->TARGET_ADDON_PDF;
1010 $modelpath =
"core/modules/webhook/doc/";
1012 if ($includedocgeneration && !empty($modele)) {
1013 $result = $this->commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams);
1028 global $conf, $langs;
1044 $this->
db->commit();
1051 require_once DOL_DOCUMENT_ROOT.
'/core/class/commonobjectline.class.php';
1064 public $isextrafieldmanaged = 0;
Parent class of all other business classes (invoices, contracts, proposals, orders,...
deleteLineCommon(User $user, $idline, $notrigger=false)
Delete a line of object in database.
getFieldList($alias='')
Function to concat keys of fields.
fetchCommon($id, $ref=null, $morewhere='')
Load object in memory from the database.
createCommon(User $user, $notrigger=false)
Create object into database.
deleteCommon(User $user, $notrigger=false, $forcechilddeletion=0)
Delete object in database.
setStatusCommon($user, $status, $notrigger=0, $triggercode='')
Set to a status.
copy_linked_contact($objFrom, $source='internal')
Copy contact from one element to current.
updateCommon(User $user, $notrigger=false)
Update object into database.
fetchLinesCommon($morewhere='')
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.
fetchAll($sortorder='', $sortfield='', $limit=0, $offset=0, array $filter=array(), $filtermode='AND')
Load list of objects in memory from the database.
update(User $user, $notrigger=false)
Update object into database.
deleteLine(User $user, $idline, $notrigger=false)
Delete a line of object in database.
generateDocument($modele, $outputlangs, $hidedetails=0, $hidedesc=0, $hideref=0, $moreparams=null)
Create a document onto disk according to template module.
getLinesArray()
Create an array of lines.
getLabelStatus($mode=0)
Return the label of the status.
getNomUrl($withpicto=0, $option='', $notooltip=0, $morecss='', $save_lastsearch_value=-1)
Return a link to the object card (with optionaly the picto)
fetchLines()
Load object lines in memory from the database.
info($id)
Load the info information in the object.
fetch($id, $ref=null)
Load object in memory from the database.
doScheduledJob()
Action executed by scheduler CAN BE A CRON TASK.
__construct(DoliDB $db)
Constructor.
getLibStatut($mode=0)
Return the label of the status.
reopen($user, $notrigger=0)
Set back to validated status.
createFromClone(User $user, $fromid)
Clone an object into another one.
LibStatut($status, $mode=0)
Return the 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.
cancel($user, $notrigger=0)
Set cancel status.
create(User $user, $notrigger=false)
Create object into database.
validate($user, $notrigger=0)
Validate object.
setDraft($user, $notrigger=0)
Set draft status.
__construct(DoliDB $db)
Constructor.
Class to manage Dolibarr users.
if(isModEnabled('facture') &&!empty($user->rights->facture->lire)) if((isModEnabled('fournisseur') &&empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->hasRight("fournisseur", "facture", "lire"))||(isModEnabled('supplier_invoice') && $user->hasRight("supplier_invoice", "lire"))) if(isModEnabled('don') &&!empty($user->rights->don->lire)) if(isModEnabled('tax') &&!empty($user->rights->tax->charges->lire)) if(isModEnabled('facture') &&isModEnabled('commande') && $user->hasRight("commande", "lire") &&empty($conf->global->WORKFLOW_DISABLE_CREATE_INVOICE_FROM_ORDER)) $resql
Social contributions to pay.
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.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
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_sanitizeFileName($str, $newstr='_', $unaccent=1)
Clean a string to use it as a file name.
isModEnabled($module)
Is Dolibarr module enabled.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
$conf db
API class for accounts.