28 require
'../main.inc.php';
29 require_once DOL_DOCUMENT_ROOT.
'/core/lib/admin.lib.php';
30 require_once DOL_DOCUMENT_ROOT.
'/cron/class/cronjob.class.php';
31 require_once DOL_DOCUMENT_ROOT.
'/core/lib/cron.lib.php';
32 require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
35 $langs->loadLangs(array(
"admin",
"cron",
"bills",
"members"));
39 $action =
GETPOST(
'action',
'aZ09');
40 $massaction =
GETPOST(
'massaction',
'alpha');
41 $confirm =
GETPOST(
'confirm',
'alpha');
42 $toselect =
GETPOST(
'toselect',
'array');
43 $contextpage =
GETPOST(
'contextpage',
'aZ') ?
GETPOST(
'contextpage',
'aZ') :
'cronjoblist';
47 $limit =
GETPOST(
'limit',
'int') ?
GETPOST(
'limit',
'int') : $conf->liste_limit;
48 $sortfield =
GETPOST(
"sortfield",
'alpha');
49 $sortorder =
GETPOST(
"sortorder",
'alpha');
51 if (empty($page) || $page == -1) { $page = 0; }
52 $offset = $limit * $page;
53 $pageprev = $page - 1;
54 $pagenext = $page + 1;
55 if (!$sortfield) $sortfield =
't.status,t.priority';
56 if (!$sortorder) $sortorder =
'DESC,ASC';
58 $mode =
GETPOST(
'mode',
'aZ09');
61 $search_label =
GETPOST(
"search_label",
'alpha');
62 $search_module_name =
GETPOST(
"search_module_name",
'alpha');
63 $search_lastresult =
GETPOST(
"search_lastresult",
"alpha");
64 $securitykey =
GETPOST(
'securitykey',
'alpha');
66 $diroutputmassaction = $conf->cronjob->dir_output.
'/temp/massgeneration/'.$user->id;
71 $hookmanager->initHooks(array(
'cronjoblist'));
75 $extrafields->fetch_name_optionals_label($object->table_element);
77 $search_array_options = $extrafields->getOptionalsFromPost($object->table_element,
'',
'search_');
85 if (
GETPOST(
'cancel',
'alpha')) { $action =
'list'; $massaction =
''; }
86 if (!
GETPOST(
'confirmmassaction',
'alpha') && $massaction !=
'presend' && $massaction !=
'confirm_presend') { $massaction =
''; }
88 $parameters = array();
89 $reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
90 if ($reshook < 0)
setEventMessages($hookmanager->error, $hookmanager->errors,
'errors');
95 include DOL_DOCUMENT_ROOT.
'/core/actions_changeselectedfields.inc.php';
98 if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha'))
102 $search_lastresult =
'';
104 $search_array_options = array();
106 if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')
107 ||
GETPOST(
'button_search_x',
'alpha') ||
GETPOST(
'button_search.x',
'alpha') ||
GETPOST(
'button_search',
'alpha'))
113 if (!empty($search_label))
115 $filter[
't.label'] = $search_label;
119 if ($action ==
'confirm_delete' && $confirm ==
"yes" && $user->rights->cron->delete)
124 $result = $object->delete($user);
132 if ($action ==
'confirm_execute' && $confirm ==
"yes" && $user->rights->cron->execute)
134 if (!empty($conf->global->CRON_KEY) && $conf->global->CRON_KEY != $securitykey)
140 $job = $object->fetch($id);
144 $resrunjob = $object->run_jobs($user->login);
145 if ($resrunjob < 0) {
150 $res = $object->reprogram_jobs($user->login, $now);
155 if ($object->lastresult >= 0)
setEventMessages($langs->trans(
"JobFinished"), null,
'mesgs');
164 $param =
'&search_status='.urlencode($search_status);
165 if (!empty($contextpage) && $contextpage !=
$_SERVER[
"PHP_SELF"]) $param .=
'&contextpage='.urlencode($contextpage);
166 if ($limit > 0 && $limit != $conf->liste_limit) $param .=
'&limit='.urlencode($limit);
167 if ($search_label) $param .=
'&search_label='.urlencode($search_label);
168 if ($optioncss !=
'') $param .=
'&optioncss='.urlencode($optioncss);
170 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_param.tpl.php';
172 header(
"Location: ".DOL_URL_ROOT.
'/cron/list.php?'.$param.($sortfield ?
'&sortfield='.$sortfield :
'').($sortorder ?
'&sortorder='.$sortorder :
''));
178 $objectclass =
'CronJob';
179 $objectlabel =
'CronJob';
180 $permissiontoread = $user->rights->cron->read;
181 $permissiontoadd = $user->rights->cron->create ? $user->rights->cron->create : $user->rights->cron->write;
182 $permissiontodelete = $user->rights->cron->delete;
183 $uploaddir = $conf->cron->dir_output;
184 include DOL_DOCUMENT_ROOT.
'/core/actions_massactions.inc.php';
185 if ($permissiontoadd)
188 foreach ($toselect as $id)
190 $result = $tmpcron->fetch($id);
194 if ($massaction ==
'disable') $result = $tmpcron->setStatut(Cronjob::STATUS_DISABLED);
195 elseif ($massaction ==
'enable') $result = $tmpcron->setStatut(
Cronjob::STATUS_ENABLED);
210 $form =
new Form($db);
213 $pagetitle = $langs->trans(
"CronList");
221 $sql .=
" t.jobtype,";
223 $sql .=
" t.command,";
224 $sql .=
" t.classesname,";
225 $sql .=
" t.objectname,";
226 $sql .=
" t.methodename,";
227 $sql .=
" t.params,";
228 $sql .=
" t.md5params,";
229 $sql .=
" t.module_name,";
230 $sql .=
" t.priority,";
231 $sql .=
" t.processing,";
232 $sql .=
" t.datelastrun,";
233 $sql .=
" t.datenextrun,";
234 $sql .=
" t.dateend,";
235 $sql .=
" t.datestart,";
236 $sql .=
" t.lastresult,";
237 $sql .=
" t.datelastresult,";
238 $sql .=
" t.lastoutput,";
239 $sql .=
" t.unitfrequency,";
240 $sql .=
" t.frequency,";
241 $sql .=
" t.status,";
242 $sql .=
" t.fk_user_author,";
243 $sql .=
" t.fk_user_mod,";
245 $sql .=
" t.maxrun,";
247 $sql .=
" t.libname,";
249 $sql .=
" FROM ".MAIN_DB_PREFIX.
"cronjob as t";
250 $sql .=
" WHERE entity IN (0,".$conf->entity.
")";
251 if ($search_status >= 0 && $search_status < 2 && $search_status !=
'') $sql .=
" AND t.status = ".(empty($search_status) ?
'0' :
'1');
252 if ($search_lastresult !=
'') $sql .=
natural_search(
"t.lastresult", $search_lastresult, 1);
254 if (is_array($filter) && count($filter) > 0) {
255 foreach ($filter as $key => $value) {
256 $sql .=
' AND '.$key.
' LIKE \'%'.$db->escape($value).
'%\'';
260 if (!empty($search_module_name)) {
261 $sqlwhere[] =
'(t.module_name='.$db->escape($search_module_name).
')';
263 if (count($sqlwhere) > 0) {
264 $sql .=
" WHERE ".implode(
' AND ', $sqlwhere);
267 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_sql.tpl.php';
269 $parameters = array();
270 $reshook = $hookmanager->executeHooks(
'printFieldListWhere', $parameters);
271 $sql .= $hookmanager->resPrint;
273 $sql .= $db->order($sortfield, $sortorder);
276 $nbtotalofrecords =
'';
277 if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST))
279 $result = $db->query($sql);
280 $nbtotalofrecords = $db->num_rows($result);
281 if (($page * $limit) > $nbtotalofrecords)
288 $sql .= $db->plimit($limit + 1, $offset);
290 $result = $db->query($sql);
293 $num = $db->num_rows($result);
295 $arrayofselected = is_array($toselect) ? $toselect : array();
298 if (!empty($contextpage) && $contextpage !=
$_SERVER[
"PHP_SELF"]) $param .=
'&contextpage='.urlencode($contextpage);
299 if ($limit > 0 && $limit != $conf->liste_limit) $param .=
'&limit='.urlencode($limit);
300 if ($search_status) $param .=
'&search_status='.urlencode($search_status);
301 if ($search_label) $param .=
'&search_label='.urlencode($search_label);
302 if ($search_module_name) $param .=
'&search_module_name='.urlencode($search_module_name);
303 if ($search_lastresult) $param .=
'&search_lastresult='.urlencode($search_lastresult);
304 if ($mode) $param .=
'&mode='.urlencode($mode);
305 if ($optioncss !=
'') $param .=
'&optioncss='.urlencode($optioncss);
307 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_param.tpl.php';
311 if ($action ==
'delete')
313 print $form->formconfirm(
$_SERVER[
'PHP_SELF'].
"?id=".$id.$param, $langs->trans(
"CronDelete"), $langs->trans(
"CronConfirmDelete"),
"confirm_delete",
'',
'', 1);
315 if ($action ==
'execute')
317 print $form->formconfirm(
$_SERVER[
'PHP_SELF'].
"?id=".$id.
'&securitykey='.$securitykey.$param, $langs->trans(
"CronExecute"), $langs->trans(
"CronConfirmExecute"),
"confirm_execute",
'',
'', 1);
321 $arrayofmassactions = array(
324 'enable'=>$langs->trans(
"CronStatusActiveBtn"),
325 'disable'=>$langs->trans(
"CronStatusInactiveBtn"),
327 if ($user->rights->mymodule->delete) $arrayofmassactions[
'predelete'] =
'<span class="fa fa-trash paddingrightonly"></span>'.$langs->trans(
"Delete");
328 if (in_array($massaction, array(
'presend',
'predelete'))) $arrayofmassactions = array();
329 $massactionbutton = $form->selectMassAction(
'', $arrayofmassactions);
331 if ($mode ==
'modulesetup') {
332 $linkback =
'<a href="'.DOL_URL_ROOT.
'/admin/modules.php?restore_lastsearch_values=1">'.$langs->trans(
"BackToModuleList").
'</a>';
339 print '<form method="POST" id="searchFormList" action="'.$_SERVER[
"PHP_SELF"].
'" name="search_form">'.
"\n";
340 if ($optioncss !=
'')
print '<input type="hidden" name="optioncss" value="'.$optioncss.
'">';
341 print '<input type="hidden" name="token" value="'.newToken().
'">';
342 print '<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
343 print '<input type="hidden" name="action" value="list">';
344 print '<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
345 print '<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
346 print '<input type="hidden" name="page" value="'.$page.
'">';
347 print '<input type="hidden" name="contextpage" value="'.$contextpage.
'">';
348 print '<input type="hidden" name="mode" value="'.$mode.
'">';
351 $newcardbutton =
dolGetButtonTitle($langs->trans(
'New'), $langs->trans(
'CronCreateJob'),
'fa fa-plus-circle', DOL_URL_ROOT.
'/cron/card.php?action=create&backtopage='.urlencode(
$_SERVER[
'PHP_SELF'].
'?mode=modulesetup'),
'', $user->rights->cron->create);
354 if ($mode ==
'modulesetup') {
361 print_barre_liste($pagetitle, $page,
$_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, ($mode ==
'modulesetup' ?
'' :
'title_setup'), 0, $newcardbutton,
'', $limit);
364 $text = $langs->trans(
"HoursOnThisPageAreOnServerTZ").
' '.$stringcurrentdate.
'<br>';
365 if (!empty($conf->global->CRON_WARNING_DELAY_HOURS)) $text .= $langs->trans(
"WarningCronDelayed", $conf->global->CRON_WARNING_DELAY_HOURS);
370 $selectedfields =
'';
372 $selectedfields .= (count($arrayofmassactions) ? $form->showCheckAddButtons(
'checkforselect', 1) :
'');
374 print '<div class="div-table-responsive">';
375 print '<table class="noborder">';
377 print '<tr class="liste_titre_filter">';
378 print '<td class="liste_titre"> </td>';
379 print '<td class="liste_titre">';
380 print '<input type="text" class="flat" name="search_label" value="'.$search_label.
'">';
382 print '<td class="liste_titre"> </td>';
383 print '<td class="liste_titre"> </td>';
384 print '<td class="liste_titre"> </td>';
385 print '<td class="liste_titre"> </td>';
386 print '<td class="liste_titre"> </td>';
387 print '<td class="liste_titre"> </td>';
388 print '<td class="liste_titre"> </td>';
389 print '<td class="liste_titre"> </td>';
390 print '<td class="liste_titre center"><input type="text" class="width50" name="search_lastresult" value="'.$search_lastresult.
'"></td>';
391 print '<td class="liste_titre"> </td>';
392 print '<td class="liste_titre"> </td>';
393 print '<td class="liste_titre" align="center">';
394 print $form->selectarray(
'search_status', array(
'0'=>$langs->trans(
"Disabled"),
'1'=>$langs->trans(
"Scheduled")), $search_status, 1);
395 print '</td><td class="liste_titre right">';
396 $searchpicto = $form->showFilterButtons();
401 print '<tr class="liste_titre">';
426 while ($i < min($num, $limit))
428 $obj = $db->fetch_object($result);
430 if (empty($obj))
break;
433 $object->id = $obj->rowid;
434 $object->ref = $obj->rowid;
435 $object->label = $obj->label;
436 $object->status = $obj->status;
437 $object->priority = $obj->priority;
438 $object->processing = $obj->processing;
439 $object->lastresult = $obj->lastresult;
441 $datelastrun = $db->jdate($obj->datelastrun);
442 $datelastresult = $db->jdate($obj->datelastresult);
444 print '<tr class="oddeven">';
447 print '<td class="nowraponall">';
448 print $object->getNomUrl(1);
452 print '<td class="tdoverflowmax300">';
453 if (!empty($obj->label))
455 $object->ref = $langs->trans($obj->label);
456 print '<span title="'.dol_escape_htmltag($langs->trans($obj->label)).
'">'.$object->getNomUrl(0,
'', 1).
'</span>';
457 $object->ref = $obj->rowid;
464 print '<td class="right">';
465 print $object->priority;
469 if ($obj->jobtype ==
'method')
471 $text = $langs->trans(
"CronClass");
472 $texttoshow = $langs->trans(
'CronModule').
': '.$obj->module_name.
'<br>';
473 $texttoshow .= $langs->trans(
'CronClass').
': '.$obj->classesname.
'<br>';
474 $texttoshow .= $langs->trans(
'CronObject').
': '.$obj->objectname.
'<br>';
475 $texttoshow .= $langs->trans(
'CronMethod').
': '.$obj->methodename;
476 $texttoshow .=
'<br>'.$langs->trans(
'CronArgs').
': '.$obj->params;
477 $texttoshow .=
'<br>'.$langs->trans(
'Comment').
': '.$langs->trans($obj->note);
478 } elseif ($obj->jobtype ==
'command')
480 $text = $langs->trans(
'CronCommand');
481 $texttoshow = $langs->trans(
'CronCommand').
': '.
dol_trunc($obj->command);
482 $texttoshow .=
'<br>'.$langs->trans(
'CronArgs').
': '.$obj->params;
483 $texttoshow .=
'<br>'.$langs->trans(
'Comment').
': '.$langs->trans($obj->note);
485 print $form->textwithpicto($text, $texttoshow, 1);
489 if ($obj->unitfrequency ==
"60")
print $langs->trans(
'CronEach').
" ".($obj->frequency).
" ".$langs->trans(
'Minutes');
490 if ($obj->unitfrequency ==
"3600")
print $langs->trans(
'CronEach').
" ".($obj->frequency).
" ".$langs->trans(
'Hours');
491 if ($obj->unitfrequency ==
"86400")
print $langs->trans(
'CronEach').
" ".($obj->frequency).
" ".$langs->trans(
'Days');
492 if ($obj->unitfrequency ==
"604800")
print $langs->trans(
'CronEach').
" ".($obj->frequency).
" ".$langs->trans(
'Weeks');
495 print '<td class="center">';
496 if (!empty($obj->datestart)) {
print dol_print_date($db->jdate($obj->datestart),
'dayhour',
'tzserver'); }
499 print '<td class="center">';
500 if (!empty($obj->dateend)) {
print dol_print_date($db->jdate($obj->dateend),
'dayhour',
'tzserver'); }
503 print '<td class="right">';
504 if (!empty($obj->nbrun)) {
print $obj->nbrun; }
else {
print '0'; }
505 if (!empty($obj->maxrun)) {
print ' <span class="'.$langs->trans(
"Max").
'">/ '.$obj->maxrun.
'</span>'; }
509 print '<td class="center">';
510 if (!empty($datelastrun)) {
print dol_print_date($datelastrun,
'dayhoursec',
'tzserver'); }
514 print '<td class="center">';
515 if (!empty($datelastresult) && ($datelastresult >= $datelastrun)) {
522 print '<td class="center">';
523 if ($obj->lastresult !=
'') {
524 if (empty($obj->lastresult))
print $obj->lastresult;
525 else print '<span class="error">'.dol_trunc($obj->lastresult).
'</div>';
531 if (!empty($obj->lastoutput)) {
print dol_trunc(nl2br($obj->lastoutput), 50); }
534 print '<td class="center">';
535 if (!empty($obj->datenextrun)) {
536 $datenextrun = $db->jdate($obj->datenextrun);
537 if (empty($obj->status))
print '<span class="opacitymedium">';
539 if ($obj->status == Cronjob::STATUS_ENABLED)
541 if ($obj->maxrun && $obj->nbrun >= $obj->maxrun)
print img_warning($langs->trans(
"MaxRunReached"));
542 elseif ($datenextrun && $datenextrun < $now)
print img_warning($langs->trans("Late"));
544 if (empty($obj->status))
print '</span>';
549 print '<td class="center">';
550 print $object->getLibStatut(5);
553 print '<td class="nowraponall right">';
555 $backtopage = urlencode(
$_SERVER["PHP_SELF"].'?'.$param.($sortfield ? '&sortfield='.$sortfield : '').($sortorder ? '&sortorder='.$sortorder : ''));
556 if ($user->rights->cron->create)
558 print '<a class="editfielda" href="'.DOL_URL_ROOT.
"/cron/card.php?id=".$obj->rowid.
'&action=edit&token='.
newToken().($sortfield ?
'&sortfield='.$sortfield :
'').($sortorder ?
'&sortorder='.$sortorder :
'').$param;
561 if ($user->rights->cron->delete)
563 print '<a class="reposition" href="'.$_SERVER[
"PHP_SELF"].
"?id=".$obj->rowid.
'&action=delete&token='.
newToken().($page ?
'&page='.$page :
'').($sortfield ?
'&sortfield='.$sortfield :
'').($sortorder ?
'&sortorder='.$sortorder :
'').$param;
564 print "\" title=\"".dol_escape_htmltag($langs->trans(
'CronDelete')).
"\">".
img_picto($langs->trans(
'CronDelete'),
'delete',
'',
false, 0, 0,
'',
'marginleftonly').
"</a> ";
566 print "<a href=\"#\" title=\"".dol_escape_htmltag($langs->trans(
'NotEnoughPermissions')).
"\">".
img_picto($langs->trans(
'NotEnoughPermissions'),
'delete',
'',
false, 0, 0,
'',
'marginleftonly').
"</a> ";
568 if ($user->rights->cron->execute)
570 if (!empty($obj->status)) {
571 print '<a class="reposition" href="'.$_SERVER[
"PHP_SELF"].
'?id='.$obj->rowid.
'&action=execute';
572 print (empty($conf->global->CRON_KEY) ?
'' :
'&securitykey='.$conf->global->CRON_KEY);
573 print ($sortfield ?
'&sortfield='.$sortfield :
'');
574 print ($sortorder ?
'&sortorder='.$sortorder :
'');
575 print $param.
"\" title=\"".
dol_escape_htmltag($langs->trans(
'CronExecute')).
"\">".
img_picto($langs->trans(
'CronExecute'),
"play",
'',
false, 0, 0,
'',
'marginleftonly').
'</a>';
577 print '<a href="#" class="cursordefault" title="'.dol_escape_htmltag($langs->trans(
'JobDisabled')).
'">'.
img_picto($langs->trans(
'JobDisabled'),
"playdisabled",
'',
false, 0, 0,
'',
'marginleftonly').
'</a>';
580 print '<a href="#" class="cursornotallowed" title="'.dol_escape_htmltag($langs->trans(
'NotEnoughPermissions')).
'">'.
img_picto($langs->trans(
'NotEnoughPermissions'),
"playdisabled",
'',
false, 0, 0,
'',
'marginleftonly').
'</a>';
582 if ($massactionbutton || $massaction)
585 if (in_array($obj->rowid, $arrayofselected)) $selected = 1;
586 print ' <input id="cb'.$obj->rowid.
'" class="flat checkforselect valignmiddle" type="checkbox" name="toselect[]" value="'.$obj->rowid.
'"'.($selected ?
' checked="checked"' :
'').
'>';
595 print '<tr><td colspan="15" class="opacitymedium">'.$langs->trans(
'CronNoJobs').
'</td></tr>';
603 if ($mode ==
'modulesetup') {
verifCond($strRights)
Verify if condition in string is ok or not.
GETPOST($paramname, $check= 'alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
dolGetButtonTitle($label, $helpText= '', $iconClass= 'fa fa-file', $url= '', $id= '', $status=1, $params=array())
Function dolGetButtonTitle : this kind of buttons are used in title in list.
dol_now($mode= 'auto')
Return date for now.
img_warning($titlealt= 'default', $moreatt= '', $morecss= 'pictowarning')
Show warning logo.
cronadmin_prepare_head()
Return array of tabs to used on pages to setup cron module.
setEventMessages($mesg, $mesgs, $style= 'mesgs', $messagekey= '')
Set event messages in dol_events session object.
print_barre_liste($titre, $page, $file, $options= '', $sortfield= '', $sortorder= '', $morehtmlcenter= '', $num=-1, $totalnboflines= '', $picto= 'generic', $pictoisfullpath=0, $morehtmlright= '', $morecss= '', $limit=-1, $hideselectlimit=0, $hidenavigation=0, $pagenavastextinput=0, $morehtmlrightbeforearrow= '')
Print a title with navigation controls for pagination.
GETPOSTISSET($paramname)
Return true if we are in a context of submitting the parameter $paramname.
print_liste_field_titre($name, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $tooltip="", $forcenowrapcolumntitle=0)
Show title line of an array.
load_fiche_titre($titre, $morehtmlright= '', $picto= 'generic', $pictoisfullpath=0, $id= '', $morecssontable= '', $morehtmlcenter= '')
Load a title with picto.
img_picto($titlealt, $picto, $moreatt= '', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt= '', $morecss= '', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
if(!GETPOST('transkey', 'alphanohtml')&&!GETPOST('transphrase', 'alphanohtml')) else
View.
accessforbidden($message= '', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program Calling this function terminate execution ...
natural_search($fields, $value, $mode=0, $nofirstand=0)
Generate natural SQL search string for a criteria (this criteria can be tested on one or several fiel...
print $_SERVER["PHP_SELF"]
Edit parameters.
dol_get_fiche_head($links=array(), $active= '', $title= '', $notab=0, $picto= '', $pictoisfullpath=0, $morehtmlright= '', $morecss= '', $limittoshow=0, $moretabssuffix= '')
Show tabs of a record.
print
Draft customers invoices.
dol_print_date($time, $format= '', $tzoutput= 'auto', $outputlangs= '', $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
dol_print_error($db= '', $error= '', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
newToken()
Return the value of token currently saved into session with name 'newtoken'.
dol_get_fiche_end($notab=0)
Return tab footer of a card.
dol_trunc($string, $size=40, $trunc= 'right', $stringencoding= 'UTF-8', $nodot=0, $display=0)
Truncate a string to a particular length adding '...' if string larger than length.
if(!defined('CSRFCHECK_WITH_TOKEN')) define('CSRFCHECK_WITH_TOKEN'
Draft customers invoices.
info_admin($text, $infoonimgalt=0, $nodiv=0, $admin= '1', $morecss= '', $textfordropdown= '')
Show information for admin users or standard users.
convertSecondToTime($iSecond, $format= 'all', $lengthOfDay=86400, $lengthOfWeek=7)
Return, in clear text, value of a number of seconds in days, hours and minutes.
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $keepmoretags= '', $escapeonlyhtmltags=0)
Returns text escaped for inclusion in HTML alt or title tags, or into values of HTML input fields...