dolibarr  19.0.0-dev
setup_candidatures.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (C) 2004-2020 Laurent Destailleur <eldy@users.sourceforge.net>
3  *
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program. If not, see <https://www.gnu.org/licenses/>.
16  */
17 
24 // Load Dolibarr environment
25 $res = 0;
26 // Try main.inc.php into web root known defined into CONTEXT_DOCUMENT_ROOT (not always defined)
27 if (!$res && !empty($_SERVER["CONTEXT_DOCUMENT_ROOT"])) {
28  $res = @include $_SERVER["CONTEXT_DOCUMENT_ROOT"]."/main.inc.php";
29 }
30 // Try main.inc.php into web root detected using web root calculated from SCRIPT_FILENAME
31 $tmp = empty($_SERVER['SCRIPT_FILENAME']) ? '' : $_SERVER['SCRIPT_FILENAME']; $tmp2 = realpath(__FILE__); $i = strlen($tmp) - 1; $j = strlen($tmp2) - 1;
32 while ($i > 0 && $j > 0 && isset($tmp[$i]) && isset($tmp2[$j]) && $tmp[$i] == $tmp2[$j]) {
33  $i--; $j--;
34 }
35 if (!$res && $i > 0 && file_exists(substr($tmp, 0, ($i + 1))."/main.inc.php")) {
36  $res = @include substr($tmp, 0, ($i + 1))."/main.inc.php";
37 }
38 if (!$res && $i > 0 && file_exists(dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php")) {
39  $res = @include dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php";
40 }
41 // Try main.inc.php using relative path
42 if (!$res && file_exists("../../main.inc.php")) {
43  $res = @include "../../main.inc.php";
44 }
45 if (!$res && file_exists("../../../main.inc.php")) {
46  $res = @include "../../../main.inc.php";
47 }
48 if (!$res) {
49  die("Include of main fails");
50 }
51 
52 global $langs, $user;
53 
54 // Libraries
55 require_once DOL_DOCUMENT_ROOT."/core/lib/admin.lib.php";
56 require_once DOL_DOCUMENT_ROOT.'/recruitment/lib/recruitment.lib.php';
57 require_once DOL_DOCUMENT_ROOT."/recruitment/class/recruitmentjobposition.class.php";
58 
59 // Translations
60 $langs->loadLangs(array("admin", "recruitment"));
61 
62 // Access control
63 if (!$user->admin) {
65 }
66 
67 // Parameters
68 $action = GETPOST('action', 'aZ09');
69 $backtopage = GETPOST('backtopage', 'alpha');
70 $modulepart = GETPOST('modulepart', 'aZ09'); // Used by actions_setmoduleoptions.inc.php
71 
72 $value = GETPOST('value', 'alpha');
73 $label = GETPOST('label', 'alpha');
74 $scandir = GETPOST('scan_dir', 'alpha');
75 $type = 'recruitmentcandidature';
76 
77 $arrayofparameters = array(
78 // 'RECRUITMENT_MYPARAM1'=>array('css'=>'minwidth200', 'enabled'=>1),
79 // 'RECRUITMENT_MYPARAM2'=>array('css'=>'minwidth500', 'enabled'=>1)
80 );
81 
82 $error = 0;
83 $setupnotempty = 0;
84 
85 
86 /*
87  * Actions
88  */
89 
90 include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
91 
92 if ($action == 'updateMask') {
93  $maskconst = GETPOST('maskconstcand', 'aZ09');
94  $maskvalue = GETPOST('maskcand', 'alpha');
95 
96  if ($maskconst && preg_match('/_MASK$/', $maskconst)) {
97  $res = dolibarr_set_const($db, $maskconst, $maskvalue, 'chaine', 0, '', $conf->entity);
98  }
99 
100  if (!($res > 0)) {
101  $error++;
102  }
103 
104  if (!$error) {
105  setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
106  } else {
107  setEventMessages($langs->trans("Error"), null, 'errors');
108  }
109 } elseif ($action == 'specimen') {
110  $modele = GETPOST('module', 'alpha');
111  $tmpobjectkey = GETPOST('object');
112 
113  $tmpobject = new $tmpobjectkey($db);
114  $tmpobject->initAsSpecimen();
115 
116  // Search template files
117  $file = ''; $classname = ''; $filefound = 0;
118  $dirmodels = array_merge(array('/'), (array) $conf->modules_parts['models']);
119  foreach ($dirmodels as $reldir) {
120  $file = dol_buildpath($reldir."core/modules/mymodule/doc/pdf_".$modele."_".strtolower($tmpobjectkey).".modules.php", 0);
121  if (file_exists($file)) {
122  $filefound = 1;
123  $classname = "pdf_".$modele;
124  break;
125  }
126  }
127 
128  if ($filefound) {
129  require_once $file;
130 
131  $module = new $classname($db);
132 
133  if ($module->write_file($tmpobject, $langs) > 0) {
134  header("Location: ".DOL_URL_ROOT."/document.php?modulepart=".strtolower($tmpobjectkey)."&file=SPECIMEN.pdf");
135  return;
136  } else {
137  setEventMessages($module->error, null, 'errors');
138  dol_syslog($module->error, LOG_ERR);
139  }
140  } else {
141  setEventMessages($langs->trans("ErrorModuleNotFound"), null, 'errors');
142  dol_syslog($langs->trans("ErrorModuleNotFound"), LOG_ERR);
143  }
144 } elseif ($action == 'set') {
145  // Activate a model
146  $ret = addDocumentModel($value, $type, $label, $scandir);
147 } elseif ($action == 'del') {
148  $tmpobjectkey = GETPOST('object');
149 
150  $ret = delDocumentModel($value, $type);
151  if ($ret > 0) {
152  $constforval = 'RECRUITMENT_'.strtoupper($tmpobjectkey).'_ADDON_PDF';
153  if ($conf->global->$constforval == "$value") {
154  dolibarr_del_const($db, $constforval, $conf->entity);
155  }
156  }
157 } elseif ($action == 'setmod') {
158  // TODO Check if numbering module chosen can be activated by calling method canBeActivated
159  $tmpobjectkey = GETPOST('object');
160  if (!empty($tmpobjectkey)) {
161  $constforval = 'RECRUITMENT_'.strtoupper($tmpobjectkey)."_ADDON";
162 
163  dolibarr_set_const($db, $constforval, $value, 'chaine', 0, '', $conf->entity);
164  }
165 } elseif ($action == 'setdoc') {
166  // Set default model
167  $tmpobjectkey = GETPOST('object');
168  $constforval = 'RECRUITMENT_'.strtoupper($tmpobjectkey).'_ADDON_PDF';
169  if (dolibarr_set_const($db, $constforval, $value, 'chaine', 0, '', $conf->entity)) {
170  // The constant that was read before the new set
171  // We therefore requires a variable to have a coherent view
172  $conf->global->$constforval = $value;
173  }
174 
175  // We disable/enable the document template (into llx_document_model table)
176  $ret = delDocumentModel($value, $type);
177  if ($ret > 0) {
178  $ret = addDocumentModel($value, $type, $label, $scandir);
179  }
180 } elseif ($action == 'unsetdoc') {
181  $tmpobjectkey = GETPOST('object');
182  if (!empty($tmpobjectkey)) {
183  $constforval = 'RECRUITMENT_'.strtoupper($tmpobjectkey).'_ADDON_PDF';
184  dolibarr_del_const($db, $constforval, $conf->entity);
185  }
186 }
187 
188 
189 
190 /*
191  * View
192  */
193 
194 $form = new Form($db);
195 
196 $dirmodels = array_merge(array('/'), (array) $conf->modules_parts['models']);
197 
198 $page_name = "RecruitmentSetup";
199 llxHeader('', $langs->trans($page_name));
200 
201 // Subheader
202 $linkback = '<a href="'.($backtopage ? $backtopage : DOL_URL_ROOT.'/admin/modules.php?restore_lastsearch_values=1').'">'.$langs->trans("BackToModuleList").'</a>';
203 
204 print load_fiche_titre($langs->trans($page_name), $linkback, 'title_setup');
205 
206 // Configuration header
208 print dol_get_fiche_head($head, 'settings_candidatures', '', -1, '');
209 
210 // Setup page goes here
211 //echo '<span class="opacitymedium">'.$langs->trans("RecruitmentSetupPage").'</span><br><br>';
212 
213 
214 if ($action == 'edit') {
215  print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
216  print '<input type="hidden" name="token" value="'.newToken().'">';
217  print '<input type="hidden" name="action" value="update">';
218 
219  print '<table class="noborder centpercent">';
220  print '<tr class="liste_titre"><td class="titlefield">'.$langs->trans("Parameter").'</td><td>'.$langs->trans("Value").'</td></tr>';
221 
222  foreach ($arrayofparameters as $key => $val) {
223  print '<tr class="oddeven"><td>';
224  $tooltiphelp = (($langs->trans($key.'Tooltip') != $key.'Tooltip') ? $langs->trans($key.'Tooltip') : '');
225  print $form->textwithpicto($langs->trans($key), $tooltiphelp);
226  print '</td><td><input name="'.$key.'" class="flat '.(empty($val['css']) ? 'minwidth200' : $val['css']).'" value="'.getDolGlobalString($key).'"></td></tr>';
227  }
228  print '</table>';
229 
230  print '<br><div class="center">';
231  print '<input class="button button-save" type="submit" value="'.$langs->trans("Save").'">';
232  print '</div>';
233 
234  print '</form>';
235  print '<br>';
236 } else {
237  if (!empty($arrayofparameters)) {
238  print '<table class="noborder centpercent">';
239  print '<tr class="liste_titre"><td class="titlefield">'.$langs->trans("Parameter").'</td><td>'.$langs->trans("Value").'</td></tr>';
240 
241  foreach ($arrayofparameters as $key => $val) {
242  $setupnotempty++;
243 
244  print '<tr class="oddeven"><td>';
245  $tooltiphelp = (($langs->trans($key.'Tooltip') != $key.'Tooltip') ? $langs->trans($key.'Tooltip') : '');
246  print $form->textwithpicto($langs->trans($key), $tooltiphelp);
247  print '</td><td>'.getDolGlobalString($key).'</td></tr>';
248  }
249 
250  print '</table>';
251 
252  print '<div class="tabsAction">';
253  print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=edit&token='.newToken().'">'.$langs->trans("Modify").'</a>';
254  print '</div>';
255  }
256 }
257 
258 
259 $moduledir = 'recruitment';
260 $myTmpObjects = array();
261 $myTmpObjects['RecruitmentCandidature'] = array('includerefgeneration'=>1, 'includedocgeneration'=>0);
262 
263 
264 foreach ($myTmpObjects as $myTmpObjectKey => $myTmpObjectArray) {
265  if ($myTmpObjectArray['includerefgeneration']) {
266  /*
267  * Orders Numbering model
268  */
269  $setupnotempty++;
270 
271  print load_fiche_titre($langs->trans("NumberingModules", $myTmpObjectKey), '', '');
272 
273  print '<table class="noborder centpercent">';
274  print '<tr class="liste_titre">';
275  print '<td>'.$langs->trans("Name").'</td>';
276  print '<td>'.$langs->trans("Description").'</td>';
277  print '<td class="nowrap">'.$langs->trans("Example").'</td>';
278  print '<td class="center" width="60">'.$langs->trans("Status").'</td>';
279  print '<td class="center" width="16">'.$langs->trans("ShortInfo").'</td>';
280  print '</tr>'."\n";
281 
282  clearstatcache();
283 
284  foreach ($dirmodels as $reldir) {
285  $dir = dol_buildpath($reldir."core/modules/".$moduledir);
286 
287  if (is_dir($dir)) {
288  $handle = opendir($dir);
289  if (is_resource($handle)) {
290  while (($file = readdir($handle)) !== false) {
291  if (strpos($file, 'mod_'.strtolower($myTmpObjectKey).'_') === 0 && substr($file, dol_strlen($file) - 3, 3) == 'php') {
292  $file = substr($file, 0, dol_strlen($file) - 4);
293 
294  require_once $dir.'/'.$file.'.php';
295 
296  $module = new $file($db);
297 
298  // Show modules according to features level
299  if ($module->version == 'development' && $conf->global->MAIN_FEATURES_LEVEL < 2) {
300  continue;
301  }
302  if ($module->version == 'experimental' && $conf->global->MAIN_FEATURES_LEVEL < 1) {
303  continue;
304  }
305 
306  if ($module->isEnabled()) {
307  dol_include_once('/'.$moduledir.'/class/'.strtolower($myTmpObjectKey).'.class.php');
308 
309  print '<tr class="oddeven"><td>'.$module->name."</td><td>\n";
310  print $module->info();
311  print '</td>';
312 
313  // Show example of numbering model
314  print '<td class="nowrap">';
315  $tmp = $module->getExample();
316  if (preg_match('/^Error/', $tmp)) {
317  $langs->load("errors");
318  print '<div class="error">'.$langs->trans($tmp).'</div>';
319  } elseif ($tmp == 'NotConfigured') {
320  print $langs->trans($tmp);
321  } else {
322  print $tmp;
323  }
324  print '</td>'."\n";
325 
326  print '<td class="center">';
327  $constforvar = 'RECRUITMENT_'.strtoupper($myTmpObjectKey).'_ADDON';
328  if (getDolGlobalString($constforvar) == $file) {
329  print img_picto($langs->trans("Activated"), 'switch_on');
330  } else {
331  print '<a href="'.$_SERVER["PHP_SELF"].'?action=setmod&token='.newToken().'&object='.strtolower($myTmpObjectKey).'&value='.urlencode($file).'">';
332  print img_picto($langs->trans("Disabled"), 'switch_off');
333  print '</a>';
334  }
335  print '</td>';
336 
337  $mytmpinstance = new $myTmpObjectKey($db);
338  $mytmpinstance->initAsSpecimen();
339 
340  // Info
341  $htmltooltip = '';
342  $htmltooltip .= ''.$langs->trans("Version").': <b>'.$module->getVersion().'</b><br>';
343 
344  $nextval = $module->getNextValue($mytmpinstance);
345  if ("$nextval" != $langs->trans("NotAvailable")) { // Keep " on nextval
346  $htmltooltip .= ''.$langs->trans("NextValue").': ';
347  if ($nextval) {
348  if (preg_match('/^Error/', $nextval) || $nextval == 'NotConfigured') {
349  $nextval = $langs->trans($nextval);
350  }
351  $htmltooltip .= $nextval.'<br>';
352  } else {
353  $htmltooltip .= $langs->trans($module->error).'<br>';
354  }
355  }
356 
357  print '<td class="center">';
358  print $form->textwithpicto('', $htmltooltip, 1, 0);
359  print '</td>';
360 
361  print "</tr>\n";
362  }
363  }
364  }
365  closedir($handle);
366  }
367  }
368  }
369  print "</table><br>\n";
370  }
371 
372  if ($myTmpObjectArray['includedocgeneration']) {
373  /*
374  * Document templates generators
375  */
376  $setupnotempty++;
377  $type = strtolower($myTmpObjectKey);
378 
379  print load_fiche_titre($langs->trans("DocumentModules", $myTmpObjectKey), '', '');
380 
381  // Load array def with activated templates
382  $def = array();
383  $sql = "SELECT nom";
384  $sql .= " FROM ".MAIN_DB_PREFIX."document_model";
385  $sql .= " WHERE type = '".$db->escape($type)."'";
386  $sql .= " AND entity = ".$conf->entity;
387  $resql = $db->query($sql);
388  if ($resql) {
389  $i = 0;
390  $num_rows = $db->num_rows($resql);
391  while ($i < $num_rows) {
392  $array = $db->fetch_array($resql);
393  array_push($def, $array[0]);
394  $i++;
395  }
396  } else {
397  dol_print_error($db);
398  }
399 
400 
401  print "<table class=\"noborder\" width=\"100%\">\n";
402  print "<tr class=\"liste_titre\">\n";
403  print '<td>'.$langs->trans("Name").'</td>';
404  print '<td>'.$langs->trans("Description").'</td>';
405  print '<td class="center" width="60">'.$langs->trans("Status")."</td>\n";
406  print '<td class="center" width="60">'.$langs->trans("Default")."</td>\n";
407  print '<td class="center" width="38">'.$langs->trans("ShortInfo").'</td>';
408  print '<td class="center" width="38">'.$langs->trans("Preview").'</td>';
409  print "</tr>\n";
410 
411  clearstatcache();
412 
413  foreach ($dirmodels as $reldir) {
414  foreach (array('', '/doc') as $valdir) {
415  $realpath = $reldir."core/modules/".$moduledir.$valdir;
416  $dir = dol_buildpath($realpath);
417 
418  if (is_dir($dir)) {
419  $handle = opendir($dir);
420  if (is_resource($handle)) {
421  while (($file = readdir($handle)) !== false) {
422  $filelist[] = $file;
423  }
424  closedir($handle);
425  arsort($filelist);
426 
427  foreach ($filelist as $file) {
428  if (preg_match('/\.modules\.php$/i', $file) && preg_match('/^(pdf_|doc_)/', $file)) {
429  if (file_exists($dir.'/'.$file)) {
430  $name = substr($file, 4, dol_strlen($file) - 16);
431  $classname = substr($file, 0, dol_strlen($file) - 12);
432 
433  require_once $dir.'/'.$file;
434  $module = new $classname($db);
435 
436  $modulequalified = 1;
437  if ($module->version == 'development' && $conf->global->MAIN_FEATURES_LEVEL < 2) {
438  $modulequalified = 0;
439  }
440  if ($module->version == 'experimental' && $conf->global->MAIN_FEATURES_LEVEL < 1) {
441  $modulequalified = 0;
442  }
443 
444  if ($modulequalified) {
445  print '<tr class="oddeven"><td width="100">';
446  print (empty($module->name) ? $name : $module->name);
447  print "</td><td>\n";
448  if (method_exists($module, 'info')) {
449  print $module->info($langs);
450  } else {
451  print $module->description;
452  }
453  print '</td>';
454 
455  // Active
456  if (in_array($name, $def)) {
457  print '<td class="center">'."\n";
458  print '<a href="'.$_SERVER["PHP_SELF"].'?action=del&token='.newToken().'&value='.urlencode($name).'">';
459  print img_picto($langs->trans("Enabled"), 'switch_on');
460  print '</a>';
461  print '</td>';
462  } else {
463  print '<td class="center">'."\n";
464  print '<a href="'.$_SERVER["PHP_SELF"].'?action=set&token='.newToken().'&value='.urlencode($name).'&scan_dir='.urlencode($module->scandir).'&label='.urlencode($module->name).'">'.img_picto($langs->trans("Disabled"), 'switch_off').'</a>';
465  print "</td>";
466  }
467 
468  // Default
469  print '<td class="center">';
470  $constforvar = 'RECRUITMENT_'.strtoupper($myTmpObjectKey).'_ADDON';
471  if (getDolGlobalString($constforvar) == $name) {
472  //print img_picto($langs->trans("Default"), 'on');
473  // Even if choice is the default value, we allow to disable it. Replace this with previous line if you need to disable unset
474  print '<a href="'.$_SERVER["PHP_SELF"].'?action=unsetdoc&token='.newToken().'&object='.urlencode(strtolower($myTmpObjectKey)).'&value='.urlencode($name).'&scan_dir='.urlencode($module->scandir).'&label='.urlencode($module->name).'&type='.urlencode($type).'" alt="'.$langs->trans("Disable").'">'.img_picto($langs->trans("Enabled"), 'on').'</a>';
475  } else {
476  print '<a href="'.$_SERVER["PHP_SELF"].'?action=setdoc&amp;token='.newToken().'&object='.urlencode(strtolower($myTmpObjectKey)).'&value='.urlencode($name).'&scan_dir='.urlencode($module->scandir).'&label='.urlencode($module->name).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"), 'off').'</a>';
477  }
478  print '</td>';
479 
480  // Info
481  $htmltooltip = ''.$langs->trans("Name").': '.$module->name;
482  $htmltooltip .= '<br>'.$langs->trans("Type").': '.($module->type ? $module->type : $langs->trans("Unknown"));
483  if ($module->type == 'pdf') {
484  $htmltooltip .= '<br>'.$langs->trans("Width").'/'.$langs->trans("Height").': '.$module->page_largeur.'/'.$module->page_hauteur;
485  }
486  $htmltooltip .= '<br>'.$langs->trans("Path").': '.preg_replace('/^\//', '', $realpath).'/'.$file;
487 
488  $htmltooltip .= '<br><br><u>'.$langs->trans("FeaturesSupported").':</u>';
489  $htmltooltip .= '<br>'.$langs->trans("Logo").': '.yn($module->option_logo, 1, 1);
490  $htmltooltip .= '<br>'.$langs->trans("MultiLanguage").': '.yn($module->option_multilang, 1, 1);
491 
492  print '<td class="center">';
493  print $form->textwithpicto('', $htmltooltip, 1, 0);
494  print '</td>';
495 
496  // Preview
497  print '<td class="center">';
498  if ($module->type == 'pdf') {
499  print '<a href="'.$_SERVER["PHP_SELF"].'?action=specimen&module='.$name.'&object='.$myTmpObjectKey.'">'.img_object($langs->trans("Preview"), 'generic').'</a>';
500  } else {
501  print img_object($langs->trans("PreviewNotAvailable"), 'generic');
502  }
503  print '</td>';
504 
505  print "</tr>\n";
506  }
507  }
508  }
509  }
510  }
511  }
512  }
513  }
514 
515  print '</table>';
516  }
517 }
518 
519 if (empty($setupnotempty)) {
520  print '<br>'.$langs->trans("NothingToSetup");
521 }
522 
523 // Page end
524 print dol_get_fiche_end();
525 
526 llxFooter();
527 $db->close();
addDocumentModel($name, $type, $label='', $description='')
Add document model used by doc generator.
Definition: admin.lib.php:1918
dolibarr_set_const($db, $name, $value, $type='chaine', $visible=0, $note='', $entity=1)
Insert a parameter (key,value) into database (delete old key then insert it again).
Definition: admin.lib.php:638
dolibarr_del_const($db, $name, $entity=1)
Delete a constant.
Definition: admin.lib.php:562
delDocumentModel($name, $type)
Delete document model used by doc generator.
Definition: admin.lib.php:1949
if(!defined('NOREQUIRESOC')) if(!defined('NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined('NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined('NOREQUIREAJAX')) llxHeader()
Empty header.
Definition: wrapper.php:56
llxFooter()
Empty footer.
Definition: wrapper.php:70
Class to manage generation of HTML components Only common components must be here.
if(isModEnabled('facture') && $user->hasRight('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') && $user->hasRight('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)) $sql
Social contributions to pay.
Definition: index.php:746
if($cancel &&! $id) if($action=='add' &&! $cancel) if($action=='delete') if($id) $form
Actions.
Definition: card.php:143
load_fiche_titre($titre, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
yn($yesno, $case=1, $color=0)
Return yes or no in current language.
dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limittoshow=0, $moretabssuffix='', $dragdropfile=0)
Show tabs of a record.
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_get_fiche_end($notab=0)
Return tab footer of a card.
dol_strlen($string, $stringencoding='UTF-8')
Make a strlen call.
if(!function_exists('dol_getprefix')) dol_include_once($relpath, $classname='')
Make an include_once using default root and alternate root if it fails.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
newToken()
Return the value of token currently saved into session with name 'newtoken'.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0)
Set event messages in dol_events session object.
dol_buildpath($path, $type=0, $returnemptyifnotfound=0)
Return path of url or filesystem.
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.
recruitmentAdminPrepareHead()
Prepare admin pages header.
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.