29require
'../../main.inc.php';
38require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formmailing.class.php';
39require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formcompany.class.php';
40require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formother.class.php';
41require_once DOL_DOCUMENT_ROOT.
'/core/lib/emailing.lib.php';
42require_once DOL_DOCUMENT_ROOT.
'/core/modules/mailings/advthirdparties.modules.php';
43require_once DOL_DOCUMENT_ROOT.
'/comm/mailing/class/advtargetemailing.class.php';
44require_once DOL_DOCUMENT_ROOT.
'/comm/mailing/class/html.formadvtargetemailing.class.php';
45require_once DOL_DOCUMENT_ROOT.
'/comm/mailing/class/mailing.class.php';
46require_once DOL_DOCUMENT_ROOT.
'/categories/class/categorie.class.php';
47require_once DOL_DOCUMENT_ROOT.
'/core/class/CMailFile.class.php';
48require_once DOL_DOCUMENT_ROOT.
'/core/lib/functions2.lib.php';
51$langs->loadLangs(array(
'mails',
'admin',
'companies',
'categories'));
53$action =
GETPOST(
'action',
'aZ09');
54$toselect =
GETPOST(
'toselect',
'array:int');
58$sortfield =
GETPOST(
'sortfield',
'aZ09comma');
59$sortorder =
GETPOST(
'sortorder',
'aZ09comma');
61if (empty($page) || $page == -1) {
64$offset = $limit * $page;
76$search_nom =
GETPOST(
"search_nom");
77$search_prenom =
GETPOST(
"search_prenom");
78$search_email =
GETPOST(
"search_email");
82if (
GETPOST(
'button_removefilter_x',
'alpha')) {
87$array_query = array();
88'@phan-var-force array<string,int|string|string[]> $array_query';
95if ($template_id <= 0) {
96 $advTarget->fk_element =
$id;
97 $advTarget->type_element =
'mailing';
98 $result = $advTarget->fetch_by_mailing();
100 $result = $advTarget->fetch($template_id);
106 if (!empty($advTarget->id)) {
107 $array_query = json_decode($advTarget->filtervalue,
true);
112$listofmethods = array();
114$listofmethods[
'mail'] =
'PHP mail function';
116$listofmethods[
'smtps'] =
'SMTP/SMTPS socket library';
117if (version_compare(phpversion(),
'7.0',
'>=')) {
118 $listofmethods[
'swiftmailer'] =
'Swift Mailer socket library';
122if (!$user->hasRight(
'mailing',
'lire') || (!
getDolGlobalString(
'EXTERNAL_USERS_ARE_AUTHORIZED') && $user->socid > 0)) {
125if (empty($action) && empty(
$object->id)) {
129$permissiontoread = $user->hasRight(
'mailing',
'lire');
130$permissiontoadd = $user->hasRight(
'mailing',
'creer');
131$permissiontovalidatesend = $user->hasRight(
'mailing',
'valider');
132$permissiontodelete = $user->hasRight(
'mailing',
'supprimer');
139if ($action ==
'loadfilter' && $permissiontoread) {
140 if (!empty($template_id)) {
141 $result = $advTarget->fetch($template_id);
145 if (!empty($advTarget->id)) {
146 $array_query = json_decode($advTarget->filtervalue,
true);
152if ($action ==
'add' && $permissiontoadd) {
153 $user_contact_query =
false;
155 $array_query = array();
159 foreach ($_POST as $key => $value) {
161 if (preg_match(
"/^options_.*(?<!_cnct)$/", $key)) {
163 if (preg_match(
"/st_dt/", $key)) {
165 $dtarr = explode(
'_', $key);
166 if (!array_key_exists(
'options_'.$dtarr[1].
'_st_dt', $array_query)) {
167 $array_query[
'options_'.$dtarr[1].
'_st_dt'] =
dol_mktime(0, 0, 0,
GETPOSTINT(
'options_'.$dtarr[1].
'_st_dtmonth'),
GETPOSTINT(
'options_'.$dtarr[1].
'_st_dtday'),
GETPOSTINT(
'options_'.$dtarr[1].
'_st_dtyear'));
169 } elseif (preg_match(
"/end_dt/", $key)) {
172 $dtarr = explode(
'_', $key);
173 if (!array_key_exists(
'options_'.$dtarr[1].
'_end_dt', $array_query)) {
174 $array_query[
'options_'.$dtarr[1].
'_end_dt'] =
dol_mktime(0, 0, 0,
GETPOSTINT(
'options_'.$dtarr[1].
'_end_dtmonth'),
GETPOSTINT(
'options_'.$dtarr[1].
'_end_dtday'),
GETPOSTINT(
'options_'.$dtarr[1].
'_end_dtyear'));
177 $array_query[$key] =
GETPOST($key);
180 if (preg_match(
"/^options_.*_cnct/", $key)) {
181 $user_contact_query =
true;
183 if (preg_match(
"/st_dt/", $key)) {
185 $dtarr = explode(
'_', $key);
186 if (!array_key_exists(
'options_'.$dtarr[1].
'_st_dt_cnct', $array_query)) {
187 $array_query[
'options_'.$dtarr[1].
'_st_dt_cnct'] =
dol_mktime(0, 0, 0,
GETPOSTINT(
'options_'.$dtarr[1].
'_st_dtmonth_cnct'),
GETPOSTINT(
'options_'.$dtarr[1].
'_st_dtday_cnct'),
GETPOSTINT(
'options_'.$dtarr[1].
'_st_dtyear_cnct'));
189 } elseif (preg_match(
"/end_dt/", $key)) {
192 $dtarr = explode(
'_', $key);
193 if (!array_key_exists(
'options_'.$dtarr[1].
'_end_dt_cnct', $array_query)) {
194 $array_query[
'options_'.$dtarr[1].
'_end_dt_cnct'] =
dol_mktime(0, 0, 0,
GETPOSTINT(
'options_'.$dtarr[1].
'_end_dtmonth_cnct'),
GETPOSTINT(
'options_'.$dtarr[1].
'_end_dtday_cnct'),
GETPOSTINT(
'options_'.$dtarr[1].
'_end_dtyear_cnct'));
197 $array_query[$key] =
GETPOST($key);
201 if (preg_match(
"/^cust_/", $key)) {
202 $array_query[$key] =
GETPOST($key);
205 if (preg_match(
"/^contact_/", $key)) {
208 $specials_date_key = array(
209 'contact_update_st_dt',
210 'contact_update_end_dt',
211 'contact_create_st_dt',
212 'contact_create_end_dt'
214 foreach ($specials_date_key as $date_key) {
215 if ($key == $date_key) {
220 $array_query[$key] =
'';
225 if (!empty($array_query[$key])) {
226 $user_contact_query =
true;
230 if ($array_query[
'type_of_target'] == 2 || $array_query[
'type_of_target'] == 4) {
231 $user_contact_query =
true;
234 if (preg_match(
"/^type_of_target/", $key)) {
240 $result = $advTarget->query_thirdparty($array_query);
248 if ($user_contact_query && ($array_query[
'type_of_target'] == 1 || $array_query[
'type_of_target'] == 2 || $array_query[
'type_of_target'] == 4)) {
249 $result = $advTarget->query_contact($array_query, 1);
254 if (count($advTarget->contact_lines) == 0) {
255 $advTarget->contact_lines = array(
260 $advTarget->contact_lines = array();
263 $mailingadvthirdparties =
null;
264 if ((count($advTarget->thirdparty_lines) > 0) || (count($advTarget->contact_lines) > 0)) {
267 $result = $mailingadvthirdparties->add_to_target_spec($id, $advTarget->thirdparty_lines, $array_query[
'type_of_target'], $advTarget->contact_lines);
273 $get_param_template_id =
'';
274 if (!empty($template_id)) {
275 $get_param_template_id =
'&template_id='.$template_id;
278 header(
"Location: ".$_SERVER[
'PHP_SELF'].
"?id=".
$id.$get_param_template_id);
284 if ($result < 0 && is_object($mailingadvthirdparties)) {
285 setEventMessages($mailingadvthirdparties->error, $mailingadvthirdparties->errors,
'errors');
289if ($action ==
'clear' && $permissiontoadd) {
291 $mailingtargets->clear_target($id);
293 header(
"Location: ".$_SERVER[
'PHP_SELF'].
"?id=".$id);
297if (($action ==
'savefilter' || $action ==
'createfilter') && $permissiontoadd) {
298 $template_name =
GETPOST(
'template_name');
301 if ($action ==
'createfilter' && empty($template_name) && $permissiontoadd) {
302 setEventMessages($langs->trans(
'ErrorFieldRequired', $langs->transnoentitiesnoconv(
'AdvTgtOrCreateNewFilter')),
null,
'errors');
307 $array_query = array();
310 foreach ($_POST as $key => $value) {
311 if (preg_match(
"/^options_.*(?<!_cnct)$/", $key)) {
313 if (preg_match(
"/st_dt/", $key)) {
315 $dtarr = explode(
'_', $key);
316 if (!array_key_exists(
'options_'.$dtarr[1].
'_st_dt', $array_query)) {
317 $array_query[
'options_'.$dtarr[1].
'_st_dt'] =
dol_mktime(0, 0, 0,
GETPOSTINT(
'options_'.$dtarr[1].
'_st_dtmonth'),
GETPOSTINT(
'options_'.$dtarr[1].
'_st_dtday'),
GETPOSTINT(
'options_'.$dtarr[1].
'_st_dtyear'));
319 } elseif (preg_match(
"/end_dt/", $key)) {
322 $dtarr = explode(
'_', $key);
323 if (!array_key_exists(
'options_'.$dtarr[1].
'_end_dt', $array_query)) {
324 $array_query[
'options_'.$dtarr[1].
'_end_dt'] =
dol_mktime(0, 0, 0,
GETPOSTINT(
'options_'.$dtarr[1].
'_end_dtmonth'),
GETPOSTINT(
'options_'.$dtarr[1].
'_end_dtday'),
GETPOSTINT(
'options_'.$dtarr[1].
'_end_dtyear'));
329 $array_query[$key] =
GETPOST($key);
332 if (preg_match(
"/^options_.*_cnct/", $key)) {
334 if (preg_match(
"/st_dt/", $key)) {
336 $dtarr = explode(
'_', $key);
337 if (!array_key_exists(
'options_'.$dtarr[1].
'_st_dt_cnct', $array_query)) {
338 $array_query[
'options_'.$dtarr[1].
'_st_dt_cnct'] =
dol_mktime(0, 0, 0,
GETPOSTINT(
'options_'.$dtarr[1].
'_st_dtmonth_cnct'),
GETPOSTINT(
'options_'.$dtarr[1].
'_st_dtday_cnct'),
GETPOSTINT(
'options_'.$dtarr[1].
'_st_dtyear_cnct'));
340 } elseif (preg_match(
"/end_dt/", $key)) {
343 $dtarr = explode(
'_', $key);
344 if (!array_key_exists(
'options_'.$dtarr[1].
'_end_dt_cnct', $array_query)) {
345 $array_query[
'options_'.$dtarr[1].
'_end_dt_cnct'] =
dol_mktime(0, 0, 0,
GETPOSTINT(
'options_'.$dtarr[1].
'_end_dtmonth_cnct'),
GETPOSTINT(
'options_'.$dtarr[1].
'_end_dtday_cnct'),
GETPOSTINT(
'options_'.$dtarr[1].
'_end_dtyear_cnct'));
350 $array_query[$key] =
GETPOST($key);
354 if (preg_match(
"/^cust_/", $key)) {
355 $array_query[$key] =
GETPOST($key);
358 if (preg_match(
"/^contact_/", $key)) {
359 $array_query[$key] =
GETPOST($key);
361 $specials_date_key = array(
362 'contact_update_st_dt',
363 'contact_update_end_dt',
364 'contact_create_st_dt',
365 'contact_create_end_dt'
367 foreach ($specials_date_key as $date_key) {
368 if ($key == $date_key) {
373 $array_query[$key] =
'';
379 if (preg_match(
"/^type_of_target/", $key)) {
380 $array_query[$key] =
GETPOST($key);
383 $advTarget->filtervalue = json_encode($array_query);
385 if ($action ==
'createfilter') {
386 $advTarget->name = $template_name;
387 $result = $advTarget->create($user);
391 } elseif ($action ==
'savefilter') {
392 $result = $advTarget->update($user);
397 $template_id = $advTarget->id;
401if ($action ==
'deletefilter' && $permissiontoadd) {
402 $result = $advTarget->delete($user);
406 header(
"Location: ".$_SERVER[
'PHP_SELF'].
"?id=".$id);
410if ($action ==
'delete' && $permissiontoadd) {
412 $sql =
"DELETE FROM ".MAIN_DB_PREFIX.
"mailing_cibles WHERE rowid = ".((int) $rowid);
413 $resql =
$db->query($sql);
417 $mailingtargets->update_nb($id);
419 header(
"Location: ".$_SERVER[
'PHP_SELF'].
"?id=".$id);
422 header(
"Location: liste.php");
430if (
GETPOST(
"button_removefilter")) {
447$help_url =
'EN:Module_EMailing|FR:Module_Mailing|ES:Módulo_Mailing';
448llxHeader(
'', $langs->trans(
"MailAdvTargetRecipients"), $help_url);
450$arrayofselected = is_array($toselect) ? $toselect : array();
460 $linkback =
'<a href="'.DOL_URL_ROOT.
'/comm/mailing/list.php?restore_lastsearch_values=1">'.$langs->trans(
"BackToList").
'</a>';
462 $morehtmlref =
'<div class="refidno">';
464 $morehtmlref .= $form->editfieldkey(
"",
'title',
$object->title, $object, 0,
'string',
'', 0, 1);
465 $morehtmlref .= $form->editfieldval(
"",
'title',
$object->title, $object, 0,
'string',
'',
null,
null,
'', 1);
466 $morehtmlref .=
'</div>';
468 $morehtmlstatus =
'';
470 if (
$object->status == $object::STATUS_SENTPARTIALY ||
$object->status == $object::STATUS_SENTCOMPLETELY) {
471 $nbtry =
$object->countNbOfTargets(
'alreadysent');
472 $nbko =
$object->countNbOfTargets(
'alreadysentko');
473 $nbok = ($nbtry - $nbko);
475 $morehtmlstatus .=
' ('.$nbtry.
'/'.
$object->nbemail;
477 $morehtmlstatus .=
' - '.$nbko.
' '.$langs->trans(
"Error");
479 $morehtmlstatus .=
') ';
482 dol_banner_tab($object,
'id', $linkback, 1,
'rowid',
'ref', $morehtmlref,
'', 0,
'', $morehtmlstatus);
484 print
'<div class="fichecenter">';
485 print
'<div class="fichehalfleft">';
486 print
'<div class="underbanner clearboth"></div>';
488 print
'<table class="border centpercent tableforfield">'.
"\n";
491 print
'<tr><td class="titlefield">';
492 print $langs->trans(
"MailFrom").
'</td><td>';
494 foreach ($emailarray as $email => $name) {
495 if ($name && $name != $email) {
499 $langs->load(
"errors");
500 print
img_warning($langs->trans(
"ErrorBadEMail", $email));
510 if (
$object->messtype !=
'sms') {
511 print
'<tr><td>'.$langs->trans(
"MailErrorsTo").
'</td><td>';
513 foreach ($emailarray as $email => $name) {
514 if ($name != $email) {
518 $langs->load(
"errors");
519 print
img_warning($langs->trans(
"ErrorBadEMail", $email));
521 $langs->load(
"errors");
522 print
img_warning($langs->trans(
"ErrorBadMXDomain", $email));
532 if (
$object->messtype !=
'sms') {
534 print $form->editfieldkey(
"MailReply",
'email_replyto',
$object->email_replyto, $object, (
int) ($user->hasRight(
'mailing',
'creer') &&
$object->status < $object::STATUS_SENTCOMPLETELY),
'string');
536 print $form->editfieldval(
"MailReply",
'email_replyto',
$object->email_replyto, $object, $user->hasRight(
'mailing',
'creer') &&
$object->status < $object::STATUS_SENTCOMPLETELY,
'string');
538 if ($action !=
'editemail_replyto') {
540 $langs->load(
"errors");
541 print
img_warning($langs->trans(
"ErrorBadEMail", $email));
543 $langs->load(
"errors");
544 print
img_warning($langs->trans(
"ErrorBadMXDomain", $email));
554 print
'<div class="fichehalfright">';
555 print
'<div class="underbanner clearboth"></div>';
557 print
'<table class="border centpercent tableforfield">';
561 print $langs->trans(
"TotalNbOfDistinctRecipients");
564 if (is_numeric($nbemail)) {
568 $htmltooltip .= $langs->trans(
'LimitSendingEmailing',
getDolGlobalString(
'MAILING_LIMIT_SENDBYWEB'));
570 $htmltooltip .= $langs->trans(
'SendingFromWebInterfaceIsNotAllowed');
573 if (empty($nbemail)) {
574 $nbemail .=
' '.img_warning($langs->trans(
'ToAddRecipientsChooseHere'));
577 print $form->textwithpicto($nbemail, $htmltooltip, 1,
'info');
585 print $langs->trans(
"MAIN_MAIL_SENDMODE");
587 if (
$object->messtype !=
'sms') {
593 $text = $listofmethods[
'mail'];
598 print
' <span class="opacitymedium">('.getDolGlobalString(
'MAIN_MAIL_SMTP_SERVER_EMAILING',
getDolGlobalString(
'MAIN_MAIL_SMTP_SERVER')).
')</span>';
601 print
' <span class="opacitymedium">('.getDolGlobalString(
'MAIN_MAIL_SMTP_SERVER').
')</span>';
605 print
' <span class="opacitymedium">('.getDolGlobalString(
'MAIN_MAIL_SMTP_SERVER').
')</span>';
610 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_view.tpl.php';
616 print
'<div class="clearboth"></div>';
622 if (
$object->status < 2 && $user->hasRight(
'mailing',
'creer')) {
630 @phan-var-force FormAdvTargetEmailing $formadvtargetemaling
631 @phan-var-force AdvanceTargetingMailing $advTarget
632 @phan-var-force array<string,string|int|string[]> $array_query
636 $(document).ready(function() {
639 $(":button[name=addcontact]").click(function() {
640 $(":hidden[name=action]").val("add");
641 $("#find_customer").submit();
644 $(":button[name=loadfilter]").click(function() {
645 $(":hidden[name=action]").val("loadfilter");
646 $("#find_customer").submit();
649 $(":button[name=deletefilter]").click(function() {
650 $(":hidden[name=action]").val("deletefilter");
651 $("#find_customer").submit();
654 $(":button[name=savefilter]").click(function() {
655 $(":hidden[name=action]").val("savefilter");
656 $("#find_customer").submit();
659 $(":button[name=createfilter]").click(function() {
660 $(":hidden[name=action]").val("createfilter");
661 $("#find_customer").submit();
667 print
'<div class="info">';
668 print $langs->trans(
"AdvTgtTitle").
'...';
671 print
'<form name="find_customer" id="find_customer" action="'.$_SERVER[
'PHP_SELF'].
'?id='.
$id.
'" method="POST">'.
"\n";
672 print
'<input type="hidden" name="token" value="'.newToken().
'">'.
"\n";
673 print
'<input type="hidden" name="action" value="">'.
"\n";
674 print
'<table class="border centpercent">'.
"\n";
676 print
'<tr><td class="titlefieldcreate">'.$langs->trans(
'AdvTgtNameTemplate').
'</td><td class="valignmiddle">';
677 if (!empty($template_id)) {
678 $default_template = $template_id;
680 $default_template = $advTarget->id;
682 print $formadvtargetemaling->selectAdvtargetemailingTemplate(
'template_id', $default_template, $langs->trans(
"SelectAPredefinedFilter"), $advTarget->type_element,
'minwidth100 valignmiddle');
683 print
'<input type="button" name="loadfilter" id="loadfilter" value="'.$langs->trans(
'AdvTgtLoadFilter').
'" class="button smallpaddingimp"/>';
684 print
'<input type="button" name="deletefilter" id="deletefilter" value="'.$langs->trans(
'AdvTgtDeleteFilter').
'" class="button smallpaddingimp"/>';
685 print
'<input type="button" name="savefilter" id="savefilter" value="'.$langs->trans(
'AdvTgtSaveFilter').
'" class="button smallpaddingimp"/>';
686 print
'</td><td>'.
"\n";
687 print
'</td></tr>'.
"\n";
689 print
'<tr><td>'.$langs->trans(
'AdvTgtOrCreateNewFilter').
'</td><td>';
690 print
'<input type="text" name="template_name" id="template_name" value=""/>';
691 print
'<input type="button" name="createfilter" id="createfilter" value="'.$langs->trans(
'AdvTgtCreateFilter').
'" class="button smallpaddingimp"/>';
692 print
'</td><td>'.
"\n";
693 print
'</td></tr>'.
"\n";
695 print
'<tr><td colspan="3"><hr></td></tr>';
698 print
'<td colspan="3" class="center">'.
"\n";
699 print
'<input type="button" name="addcontact" id="addcontact" value="'.$langs->trans(
'AdvTgtAddContact').
'" class="button"/>'.
"\n";
703 print
'<tr><td>'.$langs->trans(
'AdvTgtTypeOfIncude').
'</td><td>';
704 print $form->selectarray(
'type_of_target', $advTarget->select_target_type, $array_query[
'type_of_target']);
705 print
'</td><td>'.
"\n";
706 print $form->textwithpicto(
'', $langs->trans(
"AdvTgtTypeOfIncudeHelp"), 1,
'help');
707 print
'</td></tr>'.
"\n";
710 print
'<tr><td>'.$langs->trans(
'ThirdPartyName');
711 if (!empty($array_query[
'cust_name'])) {
712 print
img_picto($langs->trans(
'AdvTgtUse'),
'tick',
'class="marginleftonly"');
714 print
'</td><td><input type="text" name="cust_name" value="'.$array_query[
'cust_name'].
'"/></td><td>'.
"\n";
715 print $form->textwithpicto(
'', $langs->trans(
"AdvTgtSearchTextHelp"), 1,
'help');
716 print
'</td></tr>'.
"\n";
719 print
'<tr><td>'.$langs->trans(
'CustomerCode');
720 if (!empty($array_query[
'cust_code'])) {
721 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
722 $cust_code_str = (
string) $array_query[
'cust_code'];
724 $cust_code_str =
null;
726 print
'</td><td><input type="text" name="cust_code"'.($cust_code_str !=
null ?
' value="'.$cust_code_str :
'').
'"/></td><td>'.
"\n";
727 print $form->textwithpicto(
'', $langs->trans(
"AdvTgtSearchTextHelp"), 1,
'help');
728 print
'</td></tr>'.
"\n";
731 print
'<tr><td>'.$langs->trans(
'Address');
732 if (!empty($array_query[
'cust_adress'])) {
733 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
735 print
'</td><td><input type="text" name="cust_adress" value="'.$array_query[
'cust_adress'].
'"/></td><td>'.
"\n";
736 print $form->textwithpicto(
'', $langs->trans(
"AdvTgtSearchTextHelp"), 1,
'help');
737 print
'</td></tr>'.
"\n";
740 print
'<tr><td>'.$langs->trans(
'Zip');
741 if (!empty($array_query[
'cust_zip'])) {
742 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
744 print
'</td><td><input type="text" name="cust_zip" value="'.$array_query[
'cust_zip'].
'"/></td><td>'.
"\n";
745 print $form->textwithpicto(
'', $langs->trans(
"AdvTgtSearchTextHelp"), 1,
'help');
746 print
'</td></tr>'.
"\n";
749 print
'<tr><td>'.$langs->trans(
'Town');
750 if (!empty($array_query[
'cust_city'])) {
751 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
753 print
'</td><td><input type="text" name="cust_city" value="'.$array_query[
'cust_city'].
'"/></td><td>'.
"\n";
754 print $form->textwithpicto(
'', $langs->trans(
"AdvTgtSearchTextHelp"), 1,
'help');
755 print
'</td></tr>'.
"\n";
758 print
'<tr><td>'.$langs->trans(
'State');
759 if (!empty($array_query[
'cust_state'])) {
760 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
762 print
'</td><td>'.
"\n";
763 print $formadvtargetemaling->multiselectState(
'cust_state', $array_query[
'cust_state']);
764 print
'</td><td>'.
"\n";
765 print
'</td></tr>'.
"\n";
768 print
'<tr><td>'.$langs->trans(
"Country");
769 if (!empty($array_query[
'cust_country'])) {
770 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
772 print
'</td><td>'.
"\n";
773 print $formadvtargetemaling->multiselectCountry(
'cust_country', $array_query[
'cust_country']);
774 print
'</td><td>'.
"\n";
775 print
'</td></tr>'.
"\n";
778 print
'<tr><td>'.$langs->trans(
'Status').
' '.$langs->trans(
'ThirdParty');
779 if (!empty($array_query[
'cust_status'])) {
780 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
783 print $formadvtargetemaling->advMultiselectarray(
786 '0' => $langs->trans(
'ActivityCeased'),
787 '1' => $langs->trans(
'InActivity')
789 $array_query[
'cust_status']
791 print
'</td><td>'.
"\n";
792 print
'</td></tr>'.
"\n";
795 print
'<tr><td>'.$langs->trans(
"ParentCompany");
796 if (!empty($array_query[
'cust_mothercompany'])) {
797 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
799 print
'</td><td>'.
"\n";
800 print
'<input type="text" name="cust_mothercompany" value="'.$array_query[
'cust_mothercompany'].
'"/>';
801 print
'</td><td>'.
"\n";
802 print $form->textwithpicto(
'', $langs->trans(
"AdvTgtSearchTextHelp"), 1,
'help');
803 print
'</td></tr>'.
"\n";
806 $selected = $array_query[
'cust_typecust'];
807 print
'<tr><td>'.$langs->trans(
'ProspectCustomer').
' '.$langs->trans(
'ThirdParty');
808 if (!empty($array_query[
'cust_typecust'])) {
809 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
812 $options_array = array(
813 2 => $langs->trans(
'Prospect'),
814 3 => $langs->trans(
'ProspectCustomer'),
815 1 => $langs->trans(
'Customer'),
816 0 => $langs->trans(
'NorProspectNorCustomer')
818 print $formadvtargetemaling->advMultiselectarray(
'cust_typecust', $options_array, $selected);
819 print
'</td><td>'.
"\n";
820 print
'</td></tr>'.
"\n";
823 print
'<tr><td>'.$langs->trans(
'ProspectLevel');
824 if (!empty($array_query[
'cust_prospect_status'])) {
825 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
828 print $formadvtargetemaling->multiselectProspectionStatus($array_query[
'cust_prospect_status'],
'cust_prospect_status');
829 print
'</td><td>'.
"\n";
830 print
'</td></tr>'.
"\n";
833 print
'<tr><td>'.$langs->trans(
'StatusProsp');
834 if (!empty($array_query[
'cust_comm_status'])) {
835 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
838 print $formadvtargetemaling->advMultiselectarray(
'cust_comm_status', $advTarget->type_statuscommprospect, $array_query[
'cust_comm_status']);
839 print
'</td><td>'.
"\n";
840 print
'</td></tr>'.
"\n";
843 print
'<tr><td>'.$langs->trans(
"ThirdPartyType");
844 if (!empty($array_query[
'cust_typeent'])) {
845 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
847 print
'</td><td>'.
"\n";
848 print $formadvtargetemaling->advMultiselectarray(
'cust_typeent', $formcompany->typent_array(0,
"(id:<>:0)"), $array_query[
'cust_typeent']);
849 print
'</td><td>'.
"\n";
850 print
'</td></tr>'.
"\n";
853 print
'<td>'.$langs->trans(
"Staff");
854 if (!empty($array_query[
'cust_effectif_id'])) {
855 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
858 print $formadvtargetemaling->advMultiselectarray(
"cust_effectif_id", $formcompany->effectif_array(0,
"(id:<>:0)"), $array_query[
'cust_effectif_id']);
859 print
'</td><td>'.
"\n";
860 print
'</td></tr>'.
"\n";
863 print
'<tr><td>'.$langs->trans(
"SalesRepresentatives");
864 if (!empty($array_query[
'cust_saleman'])) {
865 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
867 print
'</td><td>'.
"\n";
868 print $formadvtargetemaling->multiselectselectSalesRepresentatives(
'cust_saleman', $array_query[
'cust_saleman'], $user);
869 print
'</td><td>'.
"\n";
870 print
'</td></tr>'.
"\n";
874 print
'<tr><td>'.$langs->trans(
"DefaultLang");
875 if (!empty($array_query[
'cust_language'])) {
876 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
878 print
'</td><td>'.
"\n";
879 print $formadvtargetemaling->multiselectselectLanguage(
'cust_language', $array_query[
'cust_language']);
880 print
'</td><td>'.
"\n";
881 print
'</td></tr>'.
"\n";
884 if (
isModEnabled(
'category') && $user->hasRight(
'categorie',
'lire')) {
886 print
'<tr><td>'.$langs->trans(
"CustomersCategoryShort");
887 print
'</td><td>'.
"\n";
888 print $form->selectCategories(Categorie::TYPE_CUSTOMER,
'cust_categ', $object);
889 print
'</td><td>'.
"\n";
890 print
'</td></tr>'.
"\n";
896 $elementtype = $socstatic->table_element;
898 $extrafields->fetch_name_optionals_label($elementtype);
899 $extrafieldinfo = $extrafields->attributes[$elementtype] ?? [];
900 foreach ($extrafieldinfo[
'label'] as $key => $val) {
901 if ($key !=
'ts_nameextra' && $key !=
'ts_payeur') {
902 if (isset($extrafieldinfo[
'langfile'][$key])) {
903 $langs->load($extrafieldinfo[
'langfile'][$key]);
905 print
'<tr><td>'.$langs->trans($extrafieldinfo[
'label'][$key]);
906 if (!empty($array_query[
'options_'.$key]) || (is_array($array_query[
'options_'.$key]) && count($array_query[
'options_'.$key]) > 0)) {
907 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
910 if (($extrafieldinfo[
'type'][$key] ==
'varchar') || ($extrafieldinfo[
'type'][$key] ==
'text')) {
911 print
'<input type="text" name="options_'.$key.
'"/></td><td>'.
"\n";
912 print $form->textwithpicto(
'', $langs->trans(
"AdvTgtSearchTextHelp"), 1,
'help');
913 } elseif (($extrafieldinfo[
'type'][$key] ==
'int') || ($extrafieldinfo[
'type'][$key] ==
'double')) {
914 print $langs->trans(
"AdvTgtMinVal").
'<input type="text" name="options'.$key.
'_min"/>';
915 print $langs->trans(
"AdvTgtMaxVal").
'<input type="text" name="options'.$key.
'_max"/>';
916 print
'</td><td>'.
"\n";
917 print $form->textwithpicto(
'', $langs->trans(
"AdvTgtSearchIntHelp"), 1,
'help');
918 } elseif (($extrafieldinfo[
'type'][$key] ==
'date') || ($extrafieldinfo[
'type'][$key] ==
'datetime')) {
919 print
'<table class="nobordernopadding"><tr>';
920 print
'<td>'.$langs->trans(
"AdvTgtStartDt").
'</td><td>';
921 print $form->selectDate(
'',
'options_'.$key.
'_st_dt', 0, 0, 1);
922 print
'</td><td>'.$langs->trans(
"AdvTgtEndDt").
'</td><td>';
923 print $form->selectDate(
'',
'options_'.$key.
'_end_dt', 0, 0, 1);
924 print
'</td></tr></table>';
926 print
'</td><td>'.
"\n";
927 print $form->textwithpicto(
'', $langs->trans(
"AdvTgtSearchDtHelp"), 1,
'help');
928 } elseif (($extrafieldinfo[
'type'][$key] ==
'boolean')) {
929 print $form->selectarray(
933 '1' => $langs->trans(
'Yes'),
934 '0' => $langs->trans(
'No')
936 $array_query[
'options_'.$key]
938 print
'</td><td>'.
"\n";
939 } elseif ($extrafieldinfo[
'type'][$key] ==
'select') {
940 print $formadvtargetemaling->advMultiselectarray(
'options_'.$key, $extrafieldinfo[
'param'][$key][
'options'], $array_query[
'options_'.$key]);
941 print
'</td><td>'.
"\n";
942 } elseif ($extrafieldinfo[
'type'][$key] ==
'sellist') {
943 print $formadvtargetemaling->advMultiselectarraySelllist(
'options_'.$key, $extrafieldinfo[
'param'][$key][
'options'], $array_query[
'options_'.$key]);
944 print
'</td><td>'.
"\n";
946 print
'<table class="nobordernopadding"><tr>';
947 print
'<td></td><td>';
948 if (is_array($array_query[
'options_'.$key])) {
949 print $extrafields->showInputField($key, implode(
',', $array_query[
'options_'.$key]),
'',
'',
'',
'', 0,
'societe', 1);
951 print $extrafields->showInputField($key, $array_query[
'options_'.$key],
'',
'',
'',
'', 0,
'societe', 1);
953 print
'</td></tr></table>';
955 print
'</td><td>'.
"\n";
957 print
'</td></tr>'.
"\n";
962 $action_search =
'query';
964 $parameters = array(
'advtarget' => 1);
965 if (!empty($advTarget->id)) {
966 $parameters = array(
'array_query' => $advTarget->filtervalue);
969 $reshook = $hookmanager->executeHooks(
'formObjectOptions', $parameters, $std_soc, $action_search);
970 print $hookmanager->resPrint;
974 print
'<tr><td>'.$langs->trans(
'Status').
' '.$langs->trans(
'Contact');
975 if (!empty($array_query[
'contact_status'])) {
976 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
979 print $formadvtargetemaling->advMultiselectarray(
982 '0' => $langs->trans(
'ActivityCeased'),
983 '1' => $langs->trans(
'InActivity')
985 $array_query[
'contact_status']
987 print
'</td><td>'.
"\n";
988 print $form->textwithpicto(
'', $langs->trans(
"AdvTgtContactHelp"), 1,
'help');
989 print
'</td></tr>'.
"\n";
992 print
'<tr><td>'.$langs->trans(
"UserTitle");
993 if (!empty($array_query[
'contact_civility'])) {
994 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
997 print $formadvtargetemaling->multiselectCivility(
'contact_civility', $array_query[
'contact_civility']);
1001 print
'<tr><td>'.$langs->trans(
'Contact').
' '.$langs->trans(
'Lastname');
1002 if (!empty($array_query[
'contact_lastname'])) {
1003 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
1005 print
'</td><td><input type="text" name="contact_lastname" value="'.$array_query[
'contact_lastname'].
'"/></td><td>'.
"\n";
1006 print $form->textwithpicto(
'', $langs->trans(
"AdvTgtSearchTextHelp"), 1,
'help');
1007 print
'</td></tr>'.
"\n";
1008 print
'<tr><td>'.$langs->trans(
'Contact').
' '.$langs->trans(
'Firstname');
1009 if (!empty($array_query[
'contact_firstname'])) {
1010 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
1012 print
'</td><td><input type="text" name="contact_firstname" value="'.$array_query[
'contact_firstname'].
'"/></td><td>'.
"\n";
1013 print $form->textwithpicto(
'', $langs->trans(
"AdvTgtSearchTextHelp"), 1,
'help');
1014 print
'</td></tr>'.
"\n";
1017 print
'<tr><td>'.$langs->trans(
'Contact').
' '.$langs->trans(
"Country");
1018 if (!empty($array_query[
'contact_country'])) {
1019 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
1021 print
'</td><td>'.
"\n";
1022 print $formadvtargetemaling->multiselectCountry(
'contact_country', $array_query[
'contact_country']);
1023 print
'</td><td>'.
"\n";
1024 print
'</td></tr>'.
"\n";
1027 print
'<tr><td>'.$langs->trans(
'Contact').
' '.$langs->trans(
"No_Email");
1028 if (!empty($array_query[
'contact_no_email'])) {
1029 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
1031 print
'</td><td>'.
"\n";
1032 print $form->selectarray(
1036 '1' => $langs->trans(
'Yes'),
1037 '0' => $langs->trans(
'No')
1039 $array_query[
'contact_no_email']
1041 print
'</td><td>'.
"\n";
1042 print
'</td></tr>'.
"\n";
1045 print
'<tr><td>'.$langs->trans(
'Contact').
' '.$langs->trans(
"DateCreation");
1046 if (!empty($array_query[
'contact_create_st_dt'])) {
1047 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
1049 print
'</td><td>'.
"\n";
1050 print
'<table class="nobordernopadding"><tr>';
1051 print
'<td>'.$langs->trans(
"AdvTgtStartDt").
'</td><td>';
1052 print $form->selectDate($array_query[
'contact_create_st_dt'],
'contact_create_st_dt', 0, 0, 1,
'find_customer', 1, 1);
1053 print
'</td><td>'.$langs->trans(
"AdvTgtEndDt").
'</td><td>';
1054 print $form->selectDate($array_query[
'contact_create_end_dt'],
'contact_create_end_dt', 0, 0, 1,
'find_customer', 1, 1);
1055 print
'</td></tr></table>';
1056 print
'</td><td>'.
"\n";
1057 print
'</td></tr>'.
"\n";
1060 print
'<tr><td>'.$langs->trans(
'Contact').
' '.$langs->trans(
"DateLastModification");
1061 if (!empty($array_query[
'contact_update_st_dt'])) {
1062 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
1064 print
'</td><td>'.
"\n";
1065 print
'<table class="nobordernopadding"><tr>';
1066 print
'<td>'.$langs->trans(
"AdvTgtStartDt").
'</td><td>';
1067 print $form->selectDate($array_query[
'contact_update_st_dt'],
'contact_update_st_dt', 0, 0, 1,
'find_customer', 1, 1);
1068 print
'</td><td>'.$langs->trans(
"AdvTgtEndDt").
'</td><td>';
1069 print $form->selectDate($array_query[
'contact_update_end_dt'],
'contact_update_end_dt', 0, 0, 1,
'find_customer', 1, 1);
1070 print
'</td></tr></table>';
1071 print
'</td><td>'.
"\n";
1072 print
'</td></tr>'.
"\n";
1074 if (
isModEnabled(
'category') && $user->hasRight(
'categorie',
'lire')) {
1076 print
'<tr><td>'.$langs->trans(
"ContactCategoriesShort");
1077 print
'</td><td>'.
"\n";
1078 print $form->selectCategories(Categorie::TYPE_CONTACT,
'contact_categ', $object);
1079 print
'</td><td>'.
"\n";
1080 print
'</td></tr>'.
"\n";
1086 $elementtype = $contactstatic->table_element;
1089 $extrafields->fetch_name_optionals_label($elementtype);
1090 $extrafieldinfo = $extrafields->attributes[$elementtype] ?? [];
1091 if (!empty($extrafieldinfo[
'type'])) {
1092 foreach ($extrafieldinfo[
'type'] as $key => &$value) {
1093 if ($value ==
'radio') {
1098 if (!empty($extrafieldinfo[
'label'])) {
1099 foreach ($extrafieldinfo[
'label'] as $key => $val) {
1100 print
'<tr><td>'.$extrafieldinfo[
'label'][$key];
1101 if ($array_query[
'options_'.$key.
'_cnct'] !=
'' || (is_array($array_query[
'options_'.$key.
'_cnct']) && count($array_query[
'options_'.$key.
'_cnct']) > 0)) {
1102 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
1105 if (($extrafieldinfo[
'type'][$key] ==
'varchar') || ($extrafieldinfo[
'type'][$key] ==
'text')) {
1106 print
'<input type="text" name="options_'.$key.
'_cnct"/></td><td>'.
"\n";
1107 print $form->textwithpicto(
'', $langs->trans(
"AdvTgtSearchTextHelp"), 1,
'help');
1108 } elseif (($extrafieldinfo[
'type'][$key] ==
'int') || ($extrafieldinfo[
'type'][$key] ==
'double')) {
1109 print $langs->trans(
"AdvTgtMinVal").
'<input type="text" name="options_'.$key.
'_min_cnct"/>';
1110 print $langs->trans(
"AdvTgtMaxVal").
'<input type="text" name="options_'.$key.
'_max_cnct"/>';
1111 print
'</td><td>'.
"\n";
1112 print $form->textwithpicto(
'', $langs->trans(
"AdvTgtSearchIntHelp"), 1,
'help');
1113 } elseif (($extrafieldinfo[
'type'][$key] ==
'date') || ($extrafieldinfo[
'type'][$key] ==
'datetime')) {
1114 print
'<table class="nobordernopadding"><tr>';
1115 print
'<td>'.$langs->trans(
"AdvTgtStartDt").
'</td><td>';
1116 print $form->selectDate(
'',
'options_'.$key.
'_st_dt_cnct', 0, 0, 1);
1117 print
'</td><td>'.$langs->trans(
"AdvTgtEndDt").
'</td><td>';
1118 print $form->selectDate(
'',
'options_'.$key.
'_end_dt_cnct', 0, 0, 1);
1119 print
'</td></tr></table>';
1120 print
'</td><td>'.
"\n";
1121 print $form->textwithpicto(
'', $langs->trans(
"AdvTgtSearchDtHelp"), 1,
'help');
1122 } elseif (($extrafieldinfo[
'type'][$key] ==
'boolean')) {
1123 print $form->selectarray(
1124 'options_'.$key.
'_cnct',
1127 '1' => $langs->trans(
'Yes'),
1128 '0' => $langs->trans(
'No')
1130 $array_query[
'options_'.$key.
'_cnct']
1132 print
'</td><td>'.
"\n";
1133 } elseif ($extrafieldinfo[
'type'][$key] ==
'select') {
1134 print $formadvtargetemaling->advMultiselectarray(
'options_'.$key.
'_cnct', $extrafieldinfo[
'param'][$key][
'options'], $array_query[
'options_'.$key.
'_cnct']);
1135 print
'</td><td>'.
"\n";
1136 } elseif ($extrafieldinfo[
'type'][$key] ==
'sellist') {
1137 print $formadvtargetemaling->advMultiselectarraySelllist(
'options_'.$key.
'_cnct', $extrafieldinfo[
'param'][$key][
'options'], $array_query[
'options_'.$key.
'_cnct']);
1138 print
'</td><td>'.
"\n";
1140 if (is_array($array_query[
'options_'.$key.
'_cnct'])) {
1141 print $extrafields->showInputField($key, implode(
',', $array_query[
'options_'.$key.
'_cnct']),
'',
'_cnct',
'',
'', 0,
'socpeople', 1);
1143 print $extrafields->showInputField($key, $array_query[
'options_'.$key.
'_cnct'],
'',
'_cnct',
'',
'', 0,
'socpeople', 1);
1145 print
'</td><td>'.
"\n";
1147 print
'</td></tr>'.
"\n";
1152 print
'</table>'.
"\n";
1154 print
'<center><input type="button" name="addcontact" id="addcontact" value="'.$langs->trans(
'AdvTgtAddContact').
'" class="butAction"/></center>'.
"\n";
1156 print
'</form>'.
"\n";
1161 print
'<form action="'.$_SERVER[
'PHP_SELF'].
'?action=clear&id='.
$object->id.
'" method="POST">';
1162 print
'<input type="hidden" name="token" value="'.newToken().
'">';
1164 print
'<table class="noborder centpercent">';
1165 print
'<tr class="liste_titre">';
1166 print
'<td class="liste_titre right"><input type="submit" class="button" value="'.$langs->trans(
"TargetsReset").
'"></td>';
$id
Support class for third parties, contacts, members, users or resources.
if(! $sortfield) if(! $sortorder) $object
llxFooter($comment='', $zone='private', $disabledoutputofmessages=0)
Empty footer.
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader($head='', $title='', $help_url='', $target='', $disablejs=0, $disablehead=0, $arrayofjs='', $arrayofcss='', $morequerystring='', $morecssonbody='', $replacemainareaby='', $disablenofollow=0, $disablenoindex=0)
Empty header.
Class to manage advanced emailing target selector.
static getValidAddress($address, $format, $encode=0, $maxnumberofemail=0)
Return a formatted address string for SMTP protocol.
static getArrayAddress($address)
Return a formatted array of address string for SMTP protocol.
Class to manage emailings module.
Parent class of emailing target selectors modules.
Class to manage third parties objects (customers, suppliers, prospects...)
Class to manage a list of personalised recipients for mailing feature.
emailing_prepare_head(Mailing $object)
Prepare array with list of tabs.
isValidMailDomain($mail)
Return true if email has a domain name that can be resolved to MX type.
dol_mktime($hour, $minute, $second, $month, $day, $year, $gm='auto', $check=1)
Return a timestamp date built from detailed information (by default a local PHP server timestamp) Rep...
dol_print_email($email, $contactid=0, $socid=0, $addlink=0, $max=0, $showinvalid=2, $withpicto=0, $morecss='paddingrightonly')
Show EMail link formatted for HTML output.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0, $attop=0)
Set event messages in dol_events session object.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2, $allowothertags=array())
Show picto whatever it's its name (generic function)
img_warning($titlealt='default', $moreatt='', $morecss='pictowarning')
Show warning logo.
dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limittoshow=0, $moretabssuffix='', $dragdropfile=0, $morecssdiv='')
Show tabs of a record.
dol_get_fiche_end($notab=0)
Return tab footer of a card.
GETPOSTISARRAY($paramname, $method=0)
Return true if the parameter $paramname is submit from a POST OR GET as an array.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0, $nodefault=0)
Return value of a param into GET or POST supervariable.
GETPOSTINT($paramname, $method=0, $nodefault=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
load_fiche_titre($title, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='', $morecssonpicto='widthpictotitle')
Load a title with picto.
GETPOSTISSET($paramname)
Return true if we are in a context of submitting the parameter $paramname from a POST of a form.
isValidEmail($address, $acceptsupervisorkey=0, $acceptuserkey=0)
Return true if email syntax is ok.
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
isModEnabled($module)
Is Dolibarr module enabled.
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $noescapetags='', $escapeonlyhtmltags=0, $cleanalsojavascript=0)
Returns text escaped for inclusion in HTML alt or title or value tags, or into values of HTML input f...
print $langs trans("Show") . '< td style="' . $timeColor . '" align="center"> s</td > badge status0 badge status4 badge status3 Error badge status8< td align="center">< span class="badge ' . $badge . '"></span ></td >< td align="center">< a href="#" class="button button-small" onclick="openLogModal(this)" data-req="' . dol_escape_htmltag($reqSafe) . '" data-res="' . dol_escape_htmltag($resSafe) . '" data-err="' . dol_escape_htmltag($errSafe) . '">< span class="fa fa-search-plus"></span ></a ></td ></tr >< tr >< td colspan="' . $colspan . '" class="opacitymedium"></td ></tr ></table ></div ></form > logModal none logModal none s a JSON string
buildzip.php
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.