29 require_once DOL_DOCUMENT_ROOT.
'/core/class/commonobject.class.php';
 
   41   public $module = 
'hrm';
 
   46   public $element = 
'skilldet';
 
   51   public $table_element = 
'hrm_skilldet';
 
   57   public $ismultientitymanaged = 0;
 
   62   public $isextrafieldmanaged = 1;
 
   67   public $picto = 
'skilldet@hrm';
 
   70   const STATUS_DRAFT = 0;
 
   71   const STATUS_VALIDATED = 1;
 
   72   const STATUS_CANCELED = 9;
 
  105   public $fields=array(
 
  106     'rowid' => array(
'type'=>
'integer', 
'label'=>
'TechnicalID', 
'enabled'=>
'1', 
'position'=>1, 
'notnull'=>1, 
'visible'=>0, 
'noteditable'=>
'1', 
'index'=>1, 
'css'=>
'left', 
'comment'=>
"Id"),
 
  107     'fk_skill' => array(
'type'=>
'integer:Skill:/hrm/class/skill.class.php', 
'label'=>
'fk_skill', 
'enabled'=>
'1', 
'position'=>5, 
'notnull'=>1, 
'visible'=>0,),
 
  108     'rankorder' => array(
'type'=>
'integer', 
'label'=>
'rank', 
'enabled'=>
'1', 
'position'=>10, 
'notnull'=>0, 
'visible'=>2,),
 
  109     'description' => array(
'type'=>
'text', 
'label'=>
'Description', 
'enabled'=>
'1', 
'position'=>60, 
'notnull'=>0, 
'visible'=>1,),
 
  110     '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',),
 
  111     'fk_user_modif' => array(
'type'=>
'integer:User:user/class/user.class.php', 
'label'=>
'UserModif', 
'enabled'=>
'1', 
'position'=>511, 
'notnull'=>-1, 
'visible'=>0,),
 
  117   public $fk_user_creat;
 
  118   public $fk_user_modif;
 
  165     global $conf, $langs;
 
  169     if (empty($conf->global->MAIN_SHOW_TECHNICAL_ID) && isset($this->fields[
'rowid'])) {
 
  170       $this->fields[
'rowid'][
'visible'] = 0;
 
  172     if (!
isModEnabled(
'multicompany') && isset($this->fields[
'entity'])) {
 
  173       $this->fields[
'entity'][
'enabled'] = 0;
 
  183     foreach ($this->fields as $key => $val) {
 
  184       if (isset($val[
'enabled']) && empty($val[
'enabled'])) {
 
  185         unset($this->fields[$key]);
 
  190     if (is_object($langs)) {
 
  191       foreach ($this->fields as $key => $val) {
 
  192         if (!empty($val[
'arrayofkeyval']) && is_array($val[
'arrayofkeyval'])) {
 
  193           foreach ($val[
'arrayofkeyval'] as $key2 => $val2) {
 
  194             $this->fields[$key][
'arrayofkeyval'][$key2] = $langs->trans($val2);
 
  214     return $resultcreate;
 
  226     global $langs, $extrafields;
 
  231     $object = 
new self($this->db);
 
  236     $result = $object->fetchCommon($fromid);
 
  237     if ($result > 0 && !empty($object->table_element_line)) {
 
  238       $object->fetchLines();
 
  247     unset($object->fk_user_creat);
 
  248     unset($object->import_key);
 
  251     if (property_exists($object, 
'ref')) {
 
  252       $object->ref = empty($this->fields[
'ref'][
'default']) ? 
"Copy_Of_".$object->ref : $this->fields[
'ref'][
'default'];
 
  254     if (property_exists($object, 
'label')) {
 
  255       $object->label = empty($this->fields[
'label'][
'default']) ? $langs->trans(
"CopyOf").
" ".$object->label : $this->fields[
'label'][
'default'];
 
  257     if (property_exists($object, 
'status')) {
 
  258       $object->status = self::STATUS_DRAFT;
 
  260     if (property_exists($object, 
'date_creation')) {
 
  261       $object->date_creation = 
dol_now();
 
  263     if (property_exists($object, 
'date_modification')) {
 
  264       $object->date_modification = 
null;
 
  268     if (is_array($object->array_options) && count($object->array_options) > 0) {
 
  269       $extrafields->fetch_name_optionals_label($this->table_element);
 
  270       foreach ($object->array_options as $key => $option) {
 
  271         $shortkey = preg_replace(
'/options_/', 
'', $key);
 
  272         if (!empty($extrafields->attributes[$this->table_element][
'unique'][$shortkey])) {
 
  274           unset($object->array_options[$key]);
 
  280     $object->context[
'createfromclone'] = 
'createfromclone';
 
  281     $result = $object->createCommon($user);
 
  284       $this->error = $object->error;
 
  285       $this->errors = $object->errors;
 
  297       if (property_exists($this, 
'fk_soc') && $this->fk_soc == $object->socid) {
 
  304     unset($object->context[
'createfromclone']);
 
  311       $this->
db->rollback();
 
  323   public function fetch($id, $ref = 
null)
 
  326     if ($result > 0 && !empty($this->table_element_line)) {
 
  339     $this->lines = array();
 
  357   public function fetchAll($sortorder = 
'', $sortfield = 
'', $limit = 0, $offset = 0, array $filter = array(), $filtermode = 
'AND')
 
  367     $sql .= 
' FROM '.MAIN_DB_PREFIX.$this->table_element.
' as t';
 
  368     if (isset($this->ismultientitymanaged) && $this->ismultientitymanaged == 1) {
 
  369       $sql .= 
' WHERE t.entity IN ('.getEntity($this->table_element).
')';
 
  371       $sql .= 
' WHERE 1 = 1';
 
  375     if (count($filter) > 0) {
 
  376       foreach ($filter as $key => $value) {
 
  377         if ($key == 
't.rowid') {
 
  378           $sqlwhere[] = $key.
'='.$value;
 
  379         } elseif ($key == 
'customsql') {
 
  380           $sqlwhere[] = $value;
 
  381         } elseif (in_array($this->fields[$key][
'type'], array(
'date', 
'datetime', 
'timestamp'))) {
 
  382           $sqlwhere[] = $key.
" = '".$this->
db->idate($value).
"'";
 
  383         } elseif (strpos($value, 
'%') === 
false) {
 
  384           $sqlwhere[] = $key.
" IN (".$this->
db->sanitize($this->
db->escape($value)).
")";
 
  386           $sqlwhere[] = $key.
" LIKE '%".$this->
db->escape($value).
"%'";
 
  390     if (count($sqlwhere) > 0) {
 
  391       $sql .= 
" AND (".implode(
" ".$filtermode.
" ", $sqlwhere).
")";
 
  394     if (!empty($sortfield)) {
 
  395       $sql .= $this->
db->order($sortfield, $sortorder);
 
  397     if (!empty($limit)) {
 
  398       $sql .= 
" ".$this->db->plimit($limit, $offset);
 
  405       while ($i < ($limit ? min($limit, $num) : $num)) {
 
  406         $obj = $this->
db->fetch_object(
$resql);
 
  408         $record = 
new self($this->db);
 
  409         $record->setVarsFromFetchObj($obj);
 
  411         $records[$record->id] = $record;
 
  419       $this->errors[] = 
'Error '.$this->db->lasterror();
 
  420       dol_syslog(__METHOD__.
' '.join(
',', $this->errors), LOG_ERR);
 
  445   public function delete(
User $user, $notrigger = 
false)
 
  461     if ($this->status < 0) {
 
  462       $this->error = 
'ErrorDeleteLineNotAllowedByObjectStatus';
 
  479     global $conf, $langs;
 
  481     require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
 
  486     if ($this->status == self::STATUS_VALIDATED) {
 
  487       dol_syslog(get_class($this).
"::validate action abandonned: already validated", LOG_WARNING);
 
  504     if (!$error && (preg_match(
'/^[\(]?PROV/i', $this->
ref) || empty($this->
ref))) { 
 
  509     $this->newref = $num;
 
  513       $sql = 
"UPDATE ".MAIN_DB_PREFIX.$this->table_element;
 
  514       $sql .= 
" SET ref = '".$this->db->escape($num).
"',";
 
  515       $sql .= 
" status = ".self::STATUS_VALIDATED;
 
  516       if (!empty($this->fields[
'date_validation'])) {
 
  517         $sql .= 
", date_validation = '".$this->db->idate($now).
"'";
 
  519       if (!empty($this->fields[
'fk_user_valid'])) {
 
  520         $sql .= 
", fk_user_valid = ".((int) $user->id);
 
  522       $sql .= 
" WHERE rowid = ".((int) $this->
id);
 
  524       dol_syslog(get_class($this).
"::validate()", LOG_DEBUG);
 
  528         $this->error = $this->
db->lasterror();
 
  532       if (!$error && !$notrigger) {
 
  534         $result = $this->
call_trigger(
'SKILLDET_VALIDATE', $user);
 
  543       $this->oldref = $this->ref;
 
  546       if (preg_match(
'/^[\(]?PROV/i', $this->
ref)) {
 
  548         $sql = 
'UPDATE '.MAIN_DB_PREFIX.
"ecm_files set filename = CONCAT('".$this->
db->escape($this->newref).
"', SUBSTR(filename, ".(strlen($this->
ref) + 1).
")), filepath = 'skilldet/".$this->
db->escape($this->newref).
"'";
 
  549         $sql .= 
" WHERE filename LIKE '".$this->db->escape($this->
ref).
"%' AND filepath = 'skilldet/".$this->
db->escape($this->
ref).
"' and entity = ".$conf->entity;
 
  552           $error++; $this->error = $this->
db->lasterror();
 
  558         $dirsource = $conf->hrm->dir_output.
'/skilldet/'.$oldref;
 
  559         $dirdest = $conf->hrm->dir_output.
'/skilldet/'.$newref;
 
  560         if (!$error && file_exists($dirsource)) {
 
  561           dol_syslog(get_class($this).
"::validate() rename dir ".$dirsource.
" into ".$dirdest);
 
  563           if (@rename($dirsource, $dirdest)) {
 
  566             $listoffiles = 
dol_dir_list($conf->hrm->dir_output.
'/skilldet/'.$newref, 
'files', 1, 
'^'.preg_quote($oldref, 
'/'));
 
  567             foreach ($listoffiles as $fileentry) {
 
  568               $dirsource = $fileentry[
'name'];
 
  569               $dirdest = preg_replace(
'/^'.preg_quote($oldref, 
'/').
'/', $newref, $dirsource);
 
  570               $dirsource = $fileentry[
'path'].
'/'.$dirsource;
 
  571               $dirdest = $fileentry[
'path'].
'/'.$dirdest;
 
  572               @rename($dirsource, $dirdest);
 
  582       $this->status = self::STATUS_VALIDATED;
 
  589       $this->
db->rollback();
 
  605     if ($this->status <= self::STATUS_DRAFT) {
 
  616     return $this->
setStatusCommon($user, self::STATUS_DRAFT, $notrigger, 
'SKILLDET_UNVALIDATE');
 
  626   public function cancel($user, $notrigger = 0)
 
  629     if ($this->status != self::STATUS_VALIDATED) {
 
  640     return $this->
setStatusCommon($user, self::STATUS_CANCELED, $notrigger, 
'SKILLDET_CANCEL');
 
  650   public function reopen($user, $notrigger = 0)
 
  653     if ($this->status != self::STATUS_CANCELED) {
 
  664     return $this->
setStatusCommon($user, self::STATUS_VALIDATED, $notrigger, 
'SKILLDET_REOPEN');
 
  677   public function getNomUrl($withpicto = 0, $option = 
'', $notooltip = 0, $morecss = 
'', $save_lastsearch_value = -1)
 
  679     global $conf, $langs, $hookmanager;
 
  681     if (!empty($conf->dol_no_mouse_hover)) {
 
  687     $label = 
img_picto(
'', $this->picto).
' <u>'.$langs->trans(
"Skilldet").
'</u>';
 
  688     if (isset($this->status)) {
 
  689       $label .= 
' '.$this->getLibStatut(5);
 
  692     $label .= 
'<b>'.$langs->trans(
'Ref').
':</b> '.$this->ref;
 
  694     $url = 
dol_buildpath(
'/hrm/skilldet_card.php', 1).
'?id='.$this->id;
 
  696     if ($option != 
'nolink') {
 
  698       $add_save_lastsearch_values = ($save_lastsearch_value == 1 ? 1 : 0);
 
  699       if ($save_lastsearch_value == -1 && preg_match(
'/list\.php/', $_SERVER[
"PHP_SELF"])) {
 
  700         $add_save_lastsearch_values = 1;
 
  702       if ($add_save_lastsearch_values) {
 
  703         $url .= 
'&save_lastsearch_values=1';
 
  708     if (empty($notooltip)) {
 
  709       if (!empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) {
 
  710         $label = $langs->trans(
"ShowSkilldet");
 
  711         $linkclose .= 
' alt="'.dol_escape_htmltag($label, 1).
'"';
 
  713       $linkclose .= 
' title="'.dol_escape_htmltag($label, 1).
'"';
 
  714       $linkclose .= 
' class="classfortooltip'.($morecss ? 
' '.$morecss : 
'').
'"';
 
  716       $linkclose = ($morecss ? 
' class="'.$morecss.
'"' : 
'');
 
  719     if ($option == 
'nolink') {
 
  720       $linkstart = 
'<span';
 
  722       $linkstart = 
'<a href="'.$url.
'"';
 
  724     $linkstart .= $linkclose.
'>';
 
  725     if ($option == 
'nolink') {
 
  726       $linkend = 
'</span>';
 
  731     $result .= $linkstart;
 
  733     if (empty($this->showphoto_on_popup)) {
 
  735         $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);
 
  739         require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
 
  741         list($class, $module) = explode(
'@', $this->picto);
 
  744         $filename = $filearray[0][
'name'];
 
  745         if (!empty($filename)) {
 
  746           $pospoint = strpos($filearray[0][
'name'], 
'.');
 
  748           $pathtophoto = $class.
'/'.$this->
ref.
'/thumbs/'.substr($filename, 0, $pospoint).
'_mini'.substr($filename, $pospoint);
 
  749           if (empty($conf->global->{strtoupper($module.
'_'.$class).
'_FORMATLISTPHOTOSASUSERS'})) {
 
  750             $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>';
 
  752             $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>';
 
  757           $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);
 
  762     if ($withpicto != 2) {
 
  763       $result .= $this->ref;
 
  769     global $action, $hookmanager;
 
  770     $hookmanager->initHooks(array(
'skilldetdao'));
 
  771     $parameters = array(
'id'=>$this->
id, 
'getnomurl' => &$result);
 
  772     $reshook = $hookmanager->executeHooks(
'getNomUrl', $parameters, $this, $action); 
 
  774       $result = $hookmanager->resPrint;
 
  776       $result .= $hookmanager->resPrint;
 
  790     return $this->LibStatut($this->status, $mode);
 
  804     if (empty($this->labelStatus) || empty($this->labelStatusShort)) {
 
  807       $this->labelStatus[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv(
'Draft');
 
  808       $this->labelStatus[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv(
'Enabled');
 
  809       $this->labelStatus[self::STATUS_CANCELED] = $langs->transnoentitiesnoconv(
'Disabled');
 
  810       $this->labelStatusShort[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv(
'Draft');
 
  811       $this->labelStatusShort[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv(
'Enabled');
 
  812       $this->labelStatusShort[self::STATUS_CANCELED] = $langs->transnoentitiesnoconv(
'Disabled');
 
  815     $statusType = 
'status'.$status;
 
  817     if ($status == self::STATUS_CANCELED) {
 
  818       $statusType = 
'status6';
 
  821     return dolGetStatus($this->labelStatus[$status], $this->labelStatusShort[$status], 
'', $statusType, $mode);
 
  832     $sql = 
'SELECT rowid, date_creation as datec, tms as datem,';
 
  833     $sql .= 
' fk_user_creat, fk_user_modif';
 
  834     $sql .= 
' FROM '.MAIN_DB_PREFIX.$this->table_element.
' as t';
 
  835     $sql .= 
' WHERE t.rowid = '.((int) $id);
 
  836     $result = $this->
db->query($sql);
 
  838       if ($this->
db->num_rows($result)) {
 
  839         $obj = $this->
db->fetch_object($result);
 
  840         $this->
id = $obj->rowid;
 
  842         $this->user_creation_id = $obj->fk_user_creat;
 
  843         $this->user_modification_id = $obj->fk_user_modif;
 
  844         $this->date_creation     = $this->
db->jdate($obj->datec);
 
  845         $this->date_modification = empty($obj->datem) ? 
'' : $this->
db->jdate($obj->datem);
 
  848       $this->
db->free($result);
 
  866     $this->initAsSpecimenCommon();
 
  877     global $langs, $conf;
 
  880     if (empty($conf->global->hrm_SKILLDET_ADDON)) {
 
  881       $conf->global->hrm_SKILLDET_ADDON = 
'mod_skilldet_standard';
 
  884     if (!empty($conf->global->hrm_SKILLDET_ADDON)) {
 
  887       $file = $conf->global->hrm_SKILLDET_ADDON.
".php";
 
  888       $classname = $conf->global->hrm_SKILLDET_ADDON;
 
  891       $dirmodels = array_merge(array(
'/'), (array) $conf->modules_parts[
'models']);
 
  892       foreach ($dirmodels as $reldir) {
 
  896         $mybool |= @include_once $dir.$file;
 
  899       if ($mybool === 
false) {
 
  904       if (class_exists($classname)) {
 
  905         $obj = 
new $classname();
 
  906         $numref = $obj->getNextValue($this);
 
  908         if ($numref != 
'' && $numref != 
'-1') {
 
  911           $this->error = $obj->error;
 
  916         print $langs->trans(
"Error").
" ".$langs->trans(
"ClassNotFound").
' '.$classname;
 
  920       print $langs->trans(
"ErrorNumberingModuleNotSetup", $this->element);
 
  936   public function generateDocument($modele, $outputlangs, $hidedetails = 0, $hidedesc = 0, $hideref = 0, $moreparams = 
null)
 
  938     global $conf, $langs;
 
  941     $includedocgeneration = 0;
 
  946       $modele = 
'standard_skilldet';
 
  948       if (!empty($this->model_pdf)) {
 
  949         $modele = $this->model_pdf;
 
  950       } elseif (!empty($conf->global->SKILLDET_ADDON_PDF)) {
 
  951         $modele = $conf->global->SKILLDET_ADDON_PDF;
 
  955     $modelpath = 
"core/modules/hrm/doc/";
 
  957     if ($includedocgeneration && !empty($modele)) {
 
  958       $result = $this->commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams);
 
  973     global $conf, $langs;
 
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.
 
Class to manage Dolibarr database access.
 
update(User $user, $notrigger=false)
Update object into database.
 
generateDocument($modele, $outputlangs, $hidedetails=0, $hidedesc=0, $hideref=0, $moreparams=null)
Create a document onto disk according to template module.
 
getNextNumRef()
Returns the reference to the following non used object depending on the active numbering module.
 
initAsSpecimen()
Initialise object with example values Id must be 0 if object instance is a specimen.
 
cancel($user, $notrigger=0)
Set cancel status.
 
getLibStatut($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)
 
LibStatut($status, $mode=0)
Return the status.
 
fetchAll($sortorder='', $sortfield='', $limit=0, $offset=0, array $filter=array(), $filtermode='AND')
Load list of objects in memory from the database.
 
fetchLines()
Load object lines in memory from the database.
 
create(User $user, $notrigger=false)
Create object into database.
 
deleteLine(User $user, $idline, $notrigger=false)
Delete a line of object in database.
 
__construct(DoliDB $db)
Constructor.
 
fetch($id, $ref=null)
Load object in memory from the database.
 
createFromClone(User $user, $fromid)
Clone an object into another one.
 
doScheduledJob()
Action executed by scheduler CAN BE A CRON TASK.
 
validate($user, $notrigger=0)
Validate object.
 
info($id)
Load the info information in the object.
 
reopen($user, $notrigger=0)
Set back to validated status.
 
setDraft($user, $notrigger=0)
Set draft status.
 
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.