24 require
'../main.inc.php';
25 require_once DOL_DOCUMENT_ROOT.
'/core/lib/admin.lib.php';
26 require_once DOL_DOCUMENT_ROOT.
'/core/lib/agenda.lib.php';
27 require_once DOL_DOCUMENT_ROOT.
'/core/class/events.class.php';
29 include_once DOL_DOCUMENT_ROOT.
'/core/class/html.formcompany.class.php';
30 include_once DOL_DOCUMENT_ROOT.
'/core/class/html.formfile.class.php';
31 include_once DOL_DOCUMENT_ROOT.
'/emailcollector/class/emailcollector.class.php';
32 include_once DOL_DOCUMENT_ROOT.
'/emailcollector/class/emailcollectorfilter.class.php';
33 include_once DOL_DOCUMENT_ROOT.
'/emailcollector/class/emailcollectoraction.class.php';
34 include_once DOL_DOCUMENT_ROOT.
'/emailcollector/lib/emailcollector.lib.php';
40 $langs->loadLangs(array(
"admin",
"mails",
"other"));
45 $action =
GETPOST(
'action',
'aZ09');
46 $confirm =
GETPOST(
'confirm',
'alpha');
47 $cancel =
GETPOST(
'cancel',
'aZ09');
48 $contextpage =
GETPOST(
'contextpage',
'aZ') ?
GETPOST(
'contextpage',
'aZ') :
'emailcollectorcard';
49 $backtopage =
GETPOST(
'backtopage',
'alpha');
51 $operationid =
GETPOST(
'operationid',
'int');
56 $diroutputmassaction = $conf->emailcollector->dir_output.
'/temp/massgeneration/'.$user->id;
57 $hookmanager->initHooks(array(
'emailcollectorcard'));
60 $extrafields->fetch_name_optionals_label($object->table_element);
62 $search_array_options = $extrafields->getOptionalsFromPost($object->table_element,
'',
'search_');
65 $search_all =
GETPOST(
"search_all",
'alpha');
67 foreach ($object->fields as $key => $val) {
68 if (
GETPOST(
'search_'.$key,
'alpha')) $search[$key] =
GETPOST(
'search_'.$key,
'alpha');
71 if (
GETPOST(
'saveoperation2')) $action =
'updateoperation';
72 if (empty($action) && empty($id) && empty($ref)) $action =
'view';
75 include DOL_DOCUMENT_ROOT.
'/core/actions_fetchobject.inc.php';
83 $permissionnote = $user->rights->emailcollector->write;
84 $permissiondellink = $user->rights->emailcollector->write;
85 $permissiontoadd = $user->rights->emailcollector->write;
94 $parameters = array();
95 $reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
96 if ($reshook < 0)
setEventMessages($hookmanager->error, $hookmanager->errors,
'errors');
102 $permissiontoadd = 1;
103 $permissiontodelete = 1;
104 if (empty($backtopage)) $backtopage = DOL_URL_ROOT.
'/admin/emailcollector_card.php?id='.($id > 0 ? $id :
'__ID__');
105 $backurlforlist = DOL_URL_ROOT.
'/admin/emailcollector_list.php';
108 include DOL_DOCUMENT_ROOT.
'/core/actions_addupdatedelete.inc.php';
111 include DOL_DOCUMENT_ROOT.
'/core/actions_dellink.inc.php';
114 include DOL_DOCUMENT_ROOT.
'/core/actions_printing.inc.php';
117 if (
GETPOST(
'addfilter',
'alpha'))
120 $emailcollectorfilter->type =
GETPOST(
'filtertype',
'aZ09');
121 $emailcollectorfilter->rulevalue =
GETPOST(
'rulevalue',
'alpha');
122 $emailcollectorfilter->fk_emailcollector = $object->id;
123 $emailcollectorfilter->status = 1;
124 $result = $emailcollectorfilter->create($user);
128 $object->fetchFilters();
130 setEventMessages($emailcollectorfilter->errors, $emailcollectorfilter->error,
'errors');
134 if ($action ==
'deletefilter')
137 $emailcollectorfilter->fetch(
GETPOST(
'filterid',
'int'));
138 if ($emailcollectorfilter->id > 0) {
139 $result = $emailcollectorfilter->delete($user);
141 $object->fetchFilters();
143 setEventMessages($emailcollectorfilter->errors, $emailcollectorfilter->error,
'errors');
148 if (
GETPOST(
'addoperation',
'alpha'))
151 $emailcollectoroperation->type =
GETPOST(
'operationtype',
'aZ09');
152 $emailcollectoroperation->actionparam =
GETPOST(
'operationparam',
'restricthtml');
153 $emailcollectoroperation->fk_emailcollector = $object->id;
154 $emailcollectoroperation->status = 1;
155 $emailcollectoroperation->position = 50;
157 if ($emailcollectoroperation->type ==
'-1') {
159 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"Operation")), null,
'errors');
161 if (in_array($emailcollectoroperation->type, array(
'loadthirdparty',
'loadandcreatethirdparty'))
162 && empty($emailcollectoroperation->actionparam)) {
164 setEventMessages($langs->trans(
"ErrorAParameterIsRequiredForThisOperation"), null,
'errors');
168 $result = $emailcollectoroperation->create($user);
171 $object->fetchActions();
174 setEventMessages($emailcollectoroperation->errors, $emailcollectoroperation->error,
'errors');
179 if ($action ==
'updateoperation')
182 $emailcollectoroperation->fetch(
GETPOST(
'rowidoperation2',
'int'));
184 $emailcollectoroperation->actionparam =
GETPOST(
'operationparam2',
'restricthtml');
186 if (in_array($emailcollectoroperation->type, array(
'loadthirdparty',
'loadandcreatethirdparty'))
187 && empty($emailcollectoroperation->actionparam)) {
189 setEventMessages($langs->trans(
"ErrorAParameterIsRequiredForThisOperation"), null,
'errors');
193 $result = $emailcollectoroperation->update($user);
197 $object->fetchActions();
200 setEventMessages($emailcollectoroperation->errors, $emailcollectoroperation->error,
'errors');
204 if ($action ==
'deleteoperation')
207 $emailcollectoroperation->fetch(
GETPOST(
'operationid',
'int'));
208 if ($emailcollectoroperation->id > 0) {
209 $result = $emailcollectoroperation->delete($user);
211 $object->fetchActions();
213 setEventMessages($emailcollectoroperation->errors, $emailcollectoroperation->error,
'errors');
218 if ($action ==
'confirm_collect')
222 $res = $object->doCollectOneCollector();
225 $debuginfo = $object->debuginfo;
228 $debuginfo = $object->debuginfo;
242 $form =
new Form($db);
245 $help_url =
"EN:Module_EMail_Collector|FR:Module_Collecteur_de_courrier_électronique|ES:Module_EMail_Collector";
247 llxHeader(
'',
'EmailCollector', $help_url);
250 if ($action ==
'create') {
251 print load_fiche_titre($langs->trans(
"NewEmailCollector", $langs->transnoentitiesnoconv(
"EmailCollector")));
253 print '<form method="POST" action="'.$_SERVER[
"PHP_SELF"].
'">';
254 print '<input type="hidden" name="token" value="'.newToken().
'">';
255 print '<input type="hidden" name="action" value="add">';
256 print '<input type="hidden" name="backtopage" value="'.$backtopage.
'">';
260 print '<table class="border centpercent tableforfield">'.
"\n";
265 include DOL_DOCUMENT_ROOT.
'/core/tpl/commonfields_add.tpl.php';
268 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_add.tpl.php';
270 print '</table>'.
"\n";
274 print '<div class="center">';
275 print '<input type="submit" class="button" name="add" value="'.dol_escape_htmltag($langs->trans(
"Create")).
'">';
277 print '<input type="'.($backtopage ?
"submit" :
"button").
'" class="button button-cancel" name="cancel" value="'.
dol_escape_htmltag($langs->trans(
"Cancel")).
'"'.($backtopage ?
'' :
' onclick="javascript:history.go(-1)"').
'>';
284 if (($id || $ref) && $action ==
'edit')
288 print '<form method="POST" action="'.$_SERVER[
"PHP_SELF"].
'">';
289 print '<input type="hidden" name="token" value="'.newToken().
'">';
290 print '<input type="hidden" name="action" value="update">';
291 print '<input type="hidden" name="backtopage" value="'.$backtopage.
'">';
292 print '<input type="hidden" name="id" value="'.$object->id.
'">';
296 print '<table class="border centpercent tableforfield">'.
"\n";
299 include DOL_DOCUMENT_ROOT.
'/core/tpl/commonfields_edit.tpl.php';
302 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_edit.tpl.php';
308 print '<div class="center"><input type="submit" class="button button-save" name="save" value="'.$langs->trans(
"Save").
'">';
309 print ' <input type="submit" class="button button-cancel" name="cancel" value="'.$langs->trans(
"Cancel").
'">';
316 if ($object->id > 0 && (empty($action) || ($action !=
'edit' && $action !=
'create')))
318 $res = $object->fetch_optionals();
320 $object->fetchFilters();
321 $object->fetchActions();
329 if ($action ==
'delete')
331 $formconfirm = $form->formconfirm(
$_SERVER[
"PHP_SELF"].
'?id='.$object->id, $langs->trans(
'DeleteEmailCollector'), $langs->trans(
'ConfirmDeleteEmailCollector'),
'confirm_delete',
'', 0, 1);
335 if ($action ==
'clone') {
337 $formquestion = array();
338 $formconfirm = $form->formconfirm(
$_SERVER[
"PHP_SELF"].
'?id='.$object->id, $langs->trans(
'ToClone'), $langs->trans(
'ConfirmCloneEmailCollector', $object->ref),
'confirm_clone', $formquestion,
'yes', 1);
342 if ($action ==
'collect') {
343 $formquestion = array(
344 'text' => $langs->trans(
"EmailCollectorConfirmCollect"),
346 $formconfirm = $form->formconfirm(
$_SERVER[
"PHP_SELF"].
'?id='.$object->id, $langs->trans(
'EmailCollectorConfirmCollectTitle'), $text,
'confirm_collect', $formquestion, 0, 1, 220);
350 $parameters = array(
'formConfirm' => $formconfirm,
'lineid' => $lineid);
351 $reshook = $hookmanager->executeHooks(
'formConfirm', $parameters, $object, $action);
352 if (empty($reshook)) $formconfirm .= $hookmanager->resPrint;
353 elseif ($reshook > 0) $formconfirm = $hookmanager->resPrint;
360 $linkback = '<a href="'.
dol_buildpath('/admin/emailcollector_list.php', 1).'?restore_lastsearch_values=1'.(!empty($socid) ? '&socid='.$socid : '').'">'.$langs->trans("BackToList").'</a>';
362 $morehtmlref = '<div class="refidno">';
404 $morehtmlref .= '</div>';
406 $morehtml = $langs->trans("NbOfEmailsInInbox").' : ';
408 $sourcedir = $object->source_directory;
409 $targetdir = ($object->target_directory ? $object->target_directory : '');
412 $connectstringserver = '';
413 $connectstringsource = '';
414 $connectstringtarget = '';
416 if (function_exists('imap_open'))
421 $connectstringserver = $object->getConnectStringIMAP($usessl);
426 $connectstringsource = $connectstringserver.$object->getEncodedUtf7($sourcedir);
430 $connectstringtarget = $connectstringserver.$object->getEncodedUtf7($targetdir);
433 $connection = imap_open($connectstringsource, $object->login, $object->password);
436 print $e->getMessage();
439 $morehtml .= $form->textwithpicto(
'',
'connect string '.$connectstringserver);
441 $morehtml .=
'IMAP functions not available on your PHP. ';
446 $morehtml .=
'Failed to open IMAP connection '.$connectstringsource;
447 if (function_exists(
'imap_last_error')) {
448 $morehtml .=
'<br>'.imap_last_error();
452 $morehtml .= imap_num_msg($connection);
457 imap_close($connection);
460 dol_banner_tab($object,
'ref', $linkback, 1,
'ref',
'ref', $morehtmlref.
'<div class="refidno">'.$morehtml.
'</div>',
'', 0,
'',
'', 0,
'');
462 print '<div class="fichecenter">';
463 print '<div class="fichehalfleft">';
464 print '<div class="underbanner clearboth"></div>';
465 print '<table class="border centpercent tableforfield">'.
"\n";
469 include DOL_DOCUMENT_ROOT.
'/core/tpl/commonfields_view.tpl.php';
472 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_view.tpl.php';
477 print '<form method="POST" action="'.$_SERVER[
"PHP_SELF"].
'">';
478 print '<input type="hidden" name="token" value="'.newToken().
'">';
479 print '<input type="hidden" name="action" value="updatefiltersactions">';
480 print '<input type="hidden" name="backtopage" value="'.$backtopage.
'">';
481 print '<input type="hidden" name="id" value="'.$object->id.
'">';
484 print '<div class="div-table-responsive">';
485 print '<table class="border centpercent tableforfield">';
486 print '<tr class="liste_titre">';
487 print '<td>'.$form->textwithpicto($langs->trans(
"Filters"), $langs->trans(
"EmailCollectorFilterDesc")).
'</td><td></td><td></td>';
490 print '<tr class="oddeven">';
492 $arrayoftypes = array(
493 'from'=>array(
'label'=>
'MailFrom',
'data-placeholder'=>$langs->trans(
'SearchString')),
494 'to'=>array(
'label'=>
'MailTo',
'data-placeholder'=>$langs->trans(
'SearchString')),
495 'cc'=>array(
'label'=>
'Cc',
'data-placeholder'=>$langs->trans(
'SearchString')),
496 'bcc'=>array(
'label'=>
'Bcc',
'data-placeholder'=>$langs->trans(
'SearchString')),
497 'subject'=>array(
'label'=>
'Subject',
'data-placeholder'=>$langs->trans(
'SearchString')),
498 'body'=>array(
'label'=>
'Body',
'data-placeholder'=>$langs->trans(
'SearchString')),
505 'seen'=>array(
'label'=>
'AlreadyRead',
'data-noparam'=>1),
506 'unseen'=>array(
'label'=>
'NotRead',
'data-noparam'=>1),
507 'unanswered'=>array(
'label'=>
'Unanswered',
'data-noparam'=>1),
508 'answered'=>array(
'label'=>
'Answered',
'data-noparam'=>1),
509 'smaller'=>array(
'label'=>
'SmallerThan',
'data-placeholder'=>$langs->trans(
'NumberOfBytes')),
510 'larger'=>array(
'label'=>
'LargerThan',
'data-placeholder'=>$langs->trans(
'NumberOfBytes')),
512 'withtrackingid'=>array(
'label'=>
'WithDolTrackingID',
'data-noparam'=>1),
513 'withouttrackingid'=>array(
'label'=>
'WithoutDolTrackingID',
'data-noparam'=>1),
514 'withtrackingidinmsgid'=>array(
'label'=>
'WithDolTrackingIDInMsgId',
'data-noparam'=>1),
515 'withouttrackingidinmsgid'=>array(
'label'=>
'WithoutDolTrackingIDInMsgId',
'data-noparam'=>1),
517 'isnotanswer'=>array(
'label'=>
'IsNotAnAnswer',
'data-noparam'=>1),
518 'isanswer'=>array(
'label'=>
'IsAnAnswer',
'data-noparam'=>1)
520 print $form->selectarray(
'filtertype', $arrayoftypes,
'', 1, 0, 0,
'', 1, 0, 0,
'',
'maxwidth500', 1,
'', 2);
524 print 'jQuery("#filtertype").change(function() {
525 console.log("We change a filter");
526 if (jQuery("#filtertype option:selected").attr("data-noparam")) {
527 jQuery("#rulevalue").attr("placeholder", "");
528 jQuery("#rulevalue").text(""); jQuery("#rulevalue").prop("disabled", true);
530 else { jQuery("#rulevalue").prop("disabled", false); }
531 jQuery("#rulevalue").attr("placeholder", (jQuery("#filtertype option:selected").attr("data-placeholder")));
539 print '</script>'.
"\n";
542 print '<input type="text" name="rulevalue" id="rulevalue">';
544 print '<td class="right"><input type="submit" name="addfilter" id="addfilter" class="flat button" value="'.$langs->trans(
"Add").
'"></td>';
547 foreach ($object->filters as $rulefilter)
550 $rulefilterobj->fetch($rulefilter[
'id']);
552 print '<tr class="oddeven">';
554 print $langs->trans($arrayoftypes[$rulefilter[
'type']][
'label']);
556 print '<td>'.$rulefilter[
'rulevalue'].
'</td>';
557 print '<td class="right">';
558 print ' <a href="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'&action=deletefilter&token='.urlencode(
newToken()).
'&filterid='.$rulefilter[
'id'].
'">'.
img_delete().
'</a>';
567 print '<div class="clearboth"></div><br>';
570 print '<div class="div-table-responsive">';
571 print '<table id="tablelines" class="noborder noshadow tableforfield">';
572 print '<tr class="liste_titre">';
573 print '<td>'.$form->textwithpicto($langs->trans(
"EmailcollectorOperations"), $langs->trans(
"EmailcollectorOperationsDesc")).
'</td><td></td><td></td><td></td>';
576 print '<tr class="oddeven">';
578 $arrayoftypes = array(
579 'loadthirdparty'=>$langs->trans(
'LoadThirdPartyFromName', $langs->transnoentities(
"ThirdPartyName")),
580 'loadandcreatethirdparty'=>$langs->trans(
'LoadThirdPartyFromNameOrCreate', $langs->transnoentities(
"ThirdPartyName")),
581 'recordevent'=>
'RecordEvent');
582 if ($conf->projet->enabled) $arrayoftypes[
'project'] =
'CreateLeadAndThirdParty';
583 if ($conf->ticket->enabled) $arrayoftypes[
'ticket'] =
'CreateTicketAndThirdParty';
584 if ($conf->recruitment->enabled) $arrayoftypes[
'candidature'] =
'CreateCandidature';
587 $parameters = array(
'arrayoftypes' => $arrayoftypes);
588 $res = $hookmanager->executeHooks(
'addMoreActionsEmailCollector', $parameters, $object, $action);
591 $arrayoftypes = $hookmanager->resArray;
593 foreach ($hookmanager->resArray as $k=>$desc) {
594 $arrayoftypes[$k] = $desc;
598 print $form->selectarray(
'operationtype', $arrayoftypes,
'', 1, 0, 0,
'', 1, 0, 0,
'',
'maxwidth300', 1);
600 print '<input type="text" name="operationparam">';
603 $htmltext = $langs->transnoentitiesnoconv(
"OperationParamDesc");
604 print $form->textwithpicto(
'', $htmltext, 1,
'help',
'', 0, 2,
'operationparamtt');
606 print '<td class="right"><input type="submit" name="addoperation" id="addoperation" class="flat button" value="'.$langs->trans(
"Add").
'"></td>';
609 $nboflines = count($object->actions);
610 $table_element_line =
'emailcollector_emailcollectoraction';
611 $fk_element =
'position';
613 foreach ($object->actions as $ruleaction)
615 $ruleactionobj =
new EmailcollectorAction($db);
616 $ruleactionobj->fetch($ruleaction[
'id']);
618 print '<tr class="drag drop oddeven" id="row-'.$ruleaction[
'id'].
'">';
620 print '<!-- type of action: '.$ruleaction[
'type'].
' -->';
621 print $langs->trans($arrayoftypes[$ruleaction[
'type']]);
622 if (in_array($ruleaction[
'type'], array(
'recordevent')))
624 print $form->textwithpicto(
'', $langs->transnoentitiesnoconv(
'IfTrackingIDFoundEventWillBeLinked'));
625 } elseif (in_array($ruleaction[
'type'], array(
'loadthirdparty',
'loadandcreatethirdparty'))) {
626 print $form->textwithpicto(
'', $langs->transnoentitiesnoconv(
'EmailCollectorLoadThirdPartyHelp'));
629 print '<td class="wordbreak">';
630 if ($action ==
'editoperation' && $ruleaction[
'id'] == $operationid)
632 print '<input type="text" class="quatrevingtquinzepercent" name="operationparam2" value="'.$ruleaction[
'actionparam'].
'"><br>';
633 print '<input type="hidden" name="rowidoperation2" value="'.$ruleaction[
'id'].
'"><br>';
634 print '<input type="submit" class="button button-save" name="saveoperation2" value="'.$langs->trans(
"Save").
'">';
635 print '<input type="submit" class="button button-cancel" name="cancel" value="'.$langs->trans(
"Cancel").
'">';
637 print $ruleaction[
'actionparam'];
641 print '<td class="center linecolmove tdlineupdown">';
644 print '<a class="lineupdown" href="'.$_SERVER[
'PHP_SELF'].
'?action=up&rowid='.$ruleaction[
'id'].
'">'.
img_up(
'default', 0,
'imgupforline').
'</a>';
646 if ($i < count($object->actions) - 1) {
647 print '<a class="lineupdown" href="'.$_SERVER[
'PHP_SELF'].
'?action=down&rowid='.$ruleaction[
'id'].
'">'.
img_down(
'default', 0,
'imgdownforline').
'</a>';
651 print '<td class="right nowraponall">';
652 print '<a class="editfielda marginrightonly" href="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'&action=editoperation&operationid='.$ruleaction[
'id'].
'">'.
img_edit().
'</a>';
653 print ' <a href="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'&action=deleteoperation&token='.
newToken().
'&operationid='.$ruleaction[
'id'].
'">'.
img_delete().
'</a>';
663 if (!empty($conf->use_javascript_ajax)) {
664 $urltorefreshaftermove = DOL_URL_ROOT.
'/admin/emailcollector_card.php?id='.$id;
665 include DOL_DOCUMENT_ROOT.
'/core/tpl/ajaxrow.tpl.php';
674 print '<div class="clearboth"></div><br>';
679 if ($action !=
'presend' && $action !=
'editline') {
680 print '<div class="tabsAction">'.
"\n";
681 $parameters = array();
682 $reshook = $hookmanager->executeHooks(
'addMoreActionsButtons', $parameters, $object, $action);
683 if ($reshook < 0)
setEventMessages($hookmanager->error, $hookmanager->errors,
'errors');
688 print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'&action=edit">'.$langs->trans(
"Edit").
'</a></div>';
691 print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER[
'PHP_SELF'].
'?id='.$object->id.
'&socid='.$object->socid.
'&action=clone&object=order">'.$langs->trans(
"ToClone").
'</a></div>';
694 if (count($object->actions) > 0) {
695 print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'&action=collect">'.$langs->trans(
"CollectNow").
'</a></div>';
697 print '<div class="inline-block divButAction"><a class="butActionRefused" href="#" title="'.dol_escape_htmltag($langs->trans(
"NoOperations")).
'">'.$langs->trans(
"CollectNow").
'</a></div>';
700 print '<div class="inline-block divButAction"><a class="butActionDelete" href="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'&action=delete&token='.urlencode(
newToken()).
'">'.$langs->trans(
'Delete').
'</a></div>';
705 if (!empty($debuginfo))
if(!function_exists('dol_getprefix')) dol_include_once($relpath, $classname= '')
Make an include_once using default root and alternate root if it fails.
GETPOST($paramname, $check= 'alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
img_edit($titlealt= 'default', $float=0, $other= '')
Show logo editer/modifier fiche.
Class for EmailCollectorAction.
dol_buildpath($path, $type=0, $returnemptyifnotfound=0)
Return path of url or filesystem.
setEventMessages($mesg, $mesgs, $style= 'mesgs', $messagekey= '')
Set event messages in dol_events session object.
img_down($titlealt= 'default', $selected=0, $moreclass= '')
Show down arrow logo.
load_fiche_titre($titre, $morehtmlright= '', $picto= 'generic', $pictoisfullpath=0, $id= '', $morecssontable= '', $morehtmlcenter= '')
Load a title with picto.
img_up($titlealt= 'default', $selected=0, $moreclass= '')
Show top arrow logo.
Class for EmailCollector.
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 ...
print $_SERVER["PHP_SELF"]
Edit parameters.
Class for EmailCollectorFilter.
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.
emailcollectorPrepareHead($object)
Prepare array of tabs for EmailCollector.
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_banner_tab($object, $paramid, $morehtml= '', $shownav=1, $fieldid= 'rowid', $fieldref= 'ref', $morehtmlref= '', $moreparam= '', $nodbprefix=0, $morehtmlleft= '', $morehtmlstatus= '', $onlybanner=0, $morehtmlright= '')
Show tab footer of a card.
img_delete($titlealt= 'default', $other= 'class="pictodelete"', $morecss= '')
Show delete logo.
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.
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...