29require
'../../main.inc.php';
30require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formmailing.class.php';
31require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formcompany.class.php';
32require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formother.class.php';
33require_once DOL_DOCUMENT_ROOT.
'/core/lib/emailing.lib.php';
34require_once DOL_DOCUMENT_ROOT.
'/core/modules/mailings/advthirdparties.modules.php';
35require_once DOL_DOCUMENT_ROOT.
'/comm/mailing/class/advtargetemailing.class.php';
36require_once DOL_DOCUMENT_ROOT.
'/comm/mailing/class/html.formadvtargetemailing.class.php';
37require_once DOL_DOCUMENT_ROOT.
'/comm/mailing/class/mailing.class.php';
38require_once DOL_DOCUMENT_ROOT.
'/categories/class/categorie.class.php';
39require_once DOL_DOCUMENT_ROOT.
'/core/class/CMailFile.class.php';
40require_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)) {
206 $array_query[$key] =
GETPOST($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)) {
235 $array_query[$key] =
GETPOST($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 $query_temlate_id =
'';
274 if (!empty($template_id)) {
275 $query_temlate_id =
'&template_id='.$template_id;
278 header(
"Location: ".$_SERVER[
'PHP_SELF'].
"?id=".
$id.$query_temlate_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 $sql .=
" AND fk_mailing = ".((int)
$object->id);
414 $resql = $db->query($sql);
418 $mailingtargets->update_nb($id);
420 header(
"Location: ".$_SERVER[
'PHP_SELF'].
"?id=".$id);
423 header(
"Location: liste.php");
431if (
GETPOST(
"button_removefilter")) {
442$form =
new Form($db);
448$help_url =
'EN:Module_EMailing|FR:Module_Mailing|ES:Módulo_Mailing';
449llxHeader(
'', $langs->trans(
"MailAdvTargetRecipients"), $help_url);
451$arrayofselected = is_array($toselect) ? $toselect : array();
461 $linkback =
'<a href="'.DOL_URL_ROOT.
'/comm/mailing/list.php?restore_lastsearch_values=1">'.$langs->trans(
"BackToList").
'</a>';
463 $morehtmlref =
'<div class="refidno">';
465 $morehtmlref .= $form->editfieldkey(
"",
'title',
$object->title, $object, 0,
'string',
'', 0, 1);
466 $morehtmlref .= $form->editfieldval(
"",
'title',
$object->title, $object, 0,
'string',
'',
null,
null,
'', 1);
467 $morehtmlref .=
'</div>';
469 $morehtmlstatus =
'';
471 if (
$object->status == $object::STATUS_SENTPARTIALY ||
$object->status == $object::STATUS_SENTCOMPLETELY) {
472 $nbtry =
$object->countNbOfTargets(
'alreadysent');
473 $nbko =
$object->countNbOfTargets(
'alreadysentko');
474 $nbok = ($nbtry - $nbko);
476 $morehtmlstatus .=
' ('.$nbtry.
'/'.
$object->nbemail;
478 $morehtmlstatus .=
' - '.$nbko.
' '.$langs->trans(
"Error");
480 $morehtmlstatus .=
') ';
483 dol_banner_tab($object,
'id', $linkback, 1,
'rowid',
'ref', $morehtmlref,
'', 0,
'', $morehtmlstatus);
485 print
'<div class="fichecenter">';
486 print
'<div class="fichehalfleft">';
487 print
'<div class="underbanner clearboth"></div>';
489 print
'<table class="border centpercent tableforfield">'.
"\n";
492 print
'<tr><td class="titlefield">';
493 print $langs->trans(
"MailFrom").
'</td><td>';
495 foreach ($emailarray as $email => $name) {
496 if ($name && $name != $email) {
500 $langs->load(
"errors");
501 print
img_warning($langs->trans(
"ErrorBadEMail", $email));
511 if (
$object->messtype !=
'sms') {
512 print
'<tr><td>'.$langs->trans(
"MailErrorsTo").
'</td><td>';
514 foreach ($emailarray as $email => $name) {
515 if ($name != $email) {
519 $langs->load(
"errors");
520 print
img_warning($langs->trans(
"ErrorBadEMail", $email));
522 $langs->load(
"errors");
523 print
img_warning($langs->trans(
"ErrorBadMXDomain", $email));
533 if (
$object->messtype !=
'sms') {
535 print $form->editfieldkey(
"MailReply",
'email_replyto',
$object->email_replyto, $object, (
int) ($user->hasRight(
'mailing',
'creer') &&
$object->status < $object::STATUS_SENTCOMPLETELY),
'string');
537 print $form->editfieldval(
"MailReply",
'email_replyto',
$object->email_replyto, $object, $user->hasRight(
'mailing',
'creer') &&
$object->status < $object::STATUS_SENTCOMPLETELY,
'string');
539 if ($action !=
'editemail_replyto') {
541 $langs->load(
"errors");
542 print
img_warning($langs->trans(
"ErrorBadEMail", $email));
544 $langs->load(
"errors");
545 print
img_warning($langs->trans(
"ErrorBadMXDomain", $email));
555 print
'<div class="fichehalfright">';
556 print
'<div class="underbanner clearboth"></div>';
558 print
'<table class="border centpercent tableforfield">';
562 print $langs->trans(
"TotalNbOfDistinctRecipients");
565 if (is_numeric($nbemail)) {
569 $htmltooltip .= $langs->trans(
'LimitSendingEmailing',
getDolGlobalString(
'MAILING_LIMIT_SENDBYWEB'));
571 $htmltooltip .= $langs->trans(
'SendingFromWebInterfaceIsNotAllowed');
574 if (empty($nbemail)) {
575 $nbemail .=
' '.img_warning($langs->trans(
'ToAddRecipientsChooseHere'));
578 print $form->textwithpicto($nbemail, $htmltooltip, 1,
'info');
586 print $langs->trans(
"MAIN_MAIL_SENDMODE");
588 if (
$object->messtype !=
'sms') {
594 $text = $listofmethods[
'mail'];
599 print
' <span class="opacitymedium">('.getDolGlobalString(
'MAIN_MAIL_SMTP_SERVER_EMAILING',
getDolGlobalString(
'MAIN_MAIL_SMTP_SERVER')).
')</span>';
602 print
' <span class="opacitymedium">('.getDolGlobalString(
'MAIN_MAIL_SMTP_SERVER').
')</span>';
606 print
' <span class="opacitymedium">('.getDolGlobalString(
'MAIN_MAIL_SMTP_SERVER').
')</span>';
611 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_view.tpl.php';
617 print
'<div class="clearboth"></div>';
625 if (
$object->status == 0 && $user->hasRight(
'mailing',
'creer')) {
633 @phan-var-force FormAdvTargetEmailing $formadvtargetemaling
634 @phan-var-force AdvanceTargetingMailing $advTarget
635 @phan-var-force array<string,string|int|string[]> $array_query
642 $array_query += array(
643 'type_of_target' =>
'',
648 'cust_state' => array(),
649 'cust_country' => array(),
650 'cust_status' => array(),
651 'cust_mothercompany' =>
'',
652 'cust_typecust' => array(),
653 'cust_prospect_status' => array(),
654 'cust_comm_status' => array(),
655 'cust_typeent' => array(),
656 'cust_effectif_id' => array(),
657 'cust_saleman' => array(),
658 'cust_language' => array(),
659 'contact_status' => array(),
660 'contact_civility' =>
'',
661 'contact_lastname' =>
'',
662 'contact_firstname' =>
'',
663 'contact_country' => array(),
664 'contact_no_email' =>
'',
665 'contact_create_st_dt' =>
'',
666 'contact_create_end_dt' =>
'',
667 'contact_update_st_dt' =>
'',
668 'contact_update_end_dt' =>
'',
672 $(document).ready(function() {
675 $(":button[name=addcontact]").click(function() {
676 $(":hidden[name=action]").val("add");
677 $("#find_customer").submit();
680 $(":button[name=loadfilter]").click(function() {
681 $(":hidden[name=action]").val("loadfilter");
682 $("#find_customer").submit();
685 $(":button[name=deletefilter]").click(function() {
686 $(":hidden[name=action]").val("deletefilter");
687 $("#find_customer").submit();
690 $(":button[name=savefilter]").click(function() {
691 $(":hidden[name=action]").val("savefilter");
692 $("#find_customer").submit();
695 $(":button[name=createfilter]").click(function() {
696 $(":hidden[name=action]").val("createfilter");
697 $("#find_customer").submit();
705 print
'<form name="find_customer" id="find_customer" action="'.$_SERVER[
'PHP_SELF'].
'?id='.
$id.
'" method="POST">'.
"\n";
706 print
'<input type="hidden" name="token" value="'.newToken().
'">'.
"\n";
707 print
'<input type="hidden" name="action" value="">'.
"\n";
708 print
'<table class="border centpercent">'.
"\n";
710 print
'<tr><td class="titlefieldcreate">'.$langs->trans(
'AdvTgtNameTemplate').
'</td><td class="valignmiddle">';
711 if (!empty($template_id)) {
712 $default_template = $template_id;
714 $default_template = $advTarget->id;
716 print $formadvtargetemaling->selectAdvtargetemailingTemplate(
'template_id', $default_template, $langs->trans(
"SelectAPredefinedFilter"), $advTarget->type_element,
'minwidth100 valignmiddle');
717 print
'<input type="button" name="loadfilter" id="loadfilter" value="'.$langs->trans(
'AdvTgtLoadFilter').
'" class="button smallpaddingimp"/>';
718 print
'<input type="button" name="deletefilter" id="deletefilter" value="'.$langs->trans(
'AdvTgtDeleteFilter').
'" class="button smallpaddingimp"/>';
719 print
'<input type="button" name="savefilter" id="savefilter" value="'.$langs->trans(
'AdvTgtSaveFilter').
'" class="button smallpaddingimp"/>';
720 print
'</td><td>'.
"\n";
721 print
'</td></tr>'.
"\n";
723 print
'<tr><td>'.$langs->trans(
'AdvTgtOrCreateNewFilter').
'</td><td>';
724 print
'<input type="text" name="template_name" id="template_name" value=""/>';
725 print
'<input type="button" name="createfilter" id="createfilter" value="'.$langs->trans(
'AdvTgtCreateFilter').
'" class="button smallpaddingimp"/>';
726 print
'</td><td>'.
"\n";
727 print
'</td></tr>'.
"\n";
729 print
'<tr><td colspan="3"><hr></td></tr>';
732 print
'<td colspan="3" class="center">'.
"\n";
733 print
'<input type="button" name="addcontact" id="addcontact" value="'.$langs->trans(
'AdvTgtAddContact').
'" class="button"/>'.
"\n";
737 print
'<tr><td>'.$langs->trans(
'AdvTgtTypeOfIncude').
'</td><td>';
738 print $form->selectarray(
'type_of_target', $advTarget->select_target_type, $array_query[
'type_of_target']);
739 print
'</td><td>'.
"\n";
740 print $form->textwithpicto(
'', $langs->trans(
"AdvTgtTypeOfIncudeHelp"), 1,
'help');
741 print
'</td></tr>'.
"\n";
744 print
'<tr><td>'.$langs->trans(
'ThirdPartyName');
745 if (!empty($array_query[
'cust_name'])) {
746 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
748 print
'</td><td><input type="text" name="cust_name" value="'.$array_query[
'cust_name'].
'"/></td><td>'.
"\n";
749 print $form->textwithpicto(
'', $langs->trans(
"AdvTgtSearchTextHelp"), 1,
'help');
750 print
'</td></tr>'.
"\n";
753 print
'<tr><td>'.$langs->trans(
'CustomerCode');
754 if (!empty($array_query[
'cust_code'])) {
755 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
756 $cust_code_str = (string) $array_query[
'cust_code'];
758 $cust_code_str =
null;
760 print
'</td><td><input type="text" name="cust_code"'.($cust_code_str !=
null ?
' value="'.$cust_code_str :
'').
'"/></td><td>'.
"\n";
761 print $form->textwithpicto(
'', $langs->trans(
"AdvTgtSearchTextHelp"), 1,
'help');
762 print
'</td></tr>'.
"\n";
765 print
'<tr><td>'.$langs->trans(
'Address');
766 if (!empty($array_query[
'cust_adress'])) {
767 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
769 print
'</td><td><input type="text" name="cust_adress" value="'.$array_query[
'cust_adress'].
'"/></td><td>'.
"\n";
770 print $form->textwithpicto(
'', $langs->trans(
"AdvTgtSearchTextHelp"), 1,
'help');
771 print
'</td></tr>'.
"\n";
774 print
'<tr><td>'.$langs->trans(
'Zip');
775 if (!empty($array_query[
'cust_zip'])) {
776 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
778 print
'</td><td><input type="text" name="cust_zip" value="'.$array_query[
'cust_zip'].
'"/></td><td>'.
"\n";
779 print $form->textwithpicto(
'', $langs->trans(
"AdvTgtSearchTextHelp"), 1,
'help');
780 print
'</td></tr>'.
"\n";
783 print
'<tr><td>'.$langs->trans(
'Town');
784 if (!empty($array_query[
'cust_city'])) {
785 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
787 print
'</td><td><input type="text" name="cust_city" value="'.$array_query[
'cust_city'].
'"/></td><td>'.
"\n";
788 print $form->textwithpicto(
'', $langs->trans(
"AdvTgtSearchTextHelp"), 1,
'help');
789 print
'</td></tr>'.
"\n";
792 print
'<tr><td>'.$langs->trans(
'State');
793 if (!empty($array_query[
'cust_state'])) {
794 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
796 print
'</td><td>'.
"\n";
797 print $formadvtargetemaling->multiselectState(
'cust_state', $array_query[
'cust_state']);
798 print
'</td><td>'.
"\n";
799 print
'</td></tr>'.
"\n";
802 print
'<tr><td>'.$langs->trans(
"Country");
803 if (!empty($array_query[
'cust_country'])) {
804 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
806 print
'</td><td>'.
"\n";
807 print $formadvtargetemaling->multiselectCountry(
'cust_country', $array_query[
'cust_country']);
808 print
'</td><td>'.
"\n";
809 print
'</td></tr>'.
"\n";
812 print
'<tr><td>'.$langs->trans(
'Status').
' '.$langs->trans(
'ThirdParty');
813 if (!empty($array_query[
'cust_status'])) {
814 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
817 print $formadvtargetemaling->advMultiselectarray(
820 '0' => $langs->trans(
'ActivityCeased'),
821 '1' => $langs->trans(
'InActivity')
823 $array_query[
'cust_status']
825 print
'</td><td>'.
"\n";
826 print
'</td></tr>'.
"\n";
829 print
'<tr><td>'.$langs->trans(
"ParentCompany");
830 if (!empty($array_query[
'cust_mothercompany'])) {
831 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
833 print
'</td><td>'.
"\n";
834 print
'<input type="text" name="cust_mothercompany" value="'.$array_query[
'cust_mothercompany'].
'"/>';
835 print
'</td><td>'.
"\n";
836 print $form->textwithpicto(
'', $langs->trans(
"AdvTgtSearchTextHelp"), 1,
'help');
837 print
'</td></tr>'.
"\n";
840 $selected = $array_query[
'cust_typecust'];
841 print
'<tr><td>'.$langs->trans(
'ProspectCustomer').
' '.$langs->trans(
'ThirdParty');
842 if (!empty($array_query[
'cust_typecust'])) {
843 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
846 $options_array = array(
847 2 => $langs->trans(
'Prospect'),
848 3 => $langs->trans(
'ProspectCustomer'),
849 1 => $langs->trans(
'Customer'),
850 0 => $langs->trans(
'NorProspectNorCustomer')
852 print $formadvtargetemaling->advMultiselectarray(
'cust_typecust', $options_array, $selected);
853 print
'</td><td>'.
"\n";
854 print
'</td></tr>'.
"\n";
857 print
'<tr><td>'.$langs->trans(
'ProspectLevel');
858 if (!empty($array_query[
'cust_prospect_status'])) {
859 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
862 print $formadvtargetemaling->multiselectProspectionStatus($array_query[
'cust_prospect_status'],
'cust_prospect_status');
863 print
'</td><td>'.
"\n";
864 print
'</td></tr>'.
"\n";
867 print
'<tr><td>'.$langs->trans(
'StatusProsp');
868 if (!empty($array_query[
'cust_comm_status'])) {
869 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
872 print $formadvtargetemaling->advMultiselectarray(
'cust_comm_status', $advTarget->type_statuscommprospect, $array_query[
'cust_comm_status']);
873 print
'</td><td>'.
"\n";
874 print
'</td></tr>'.
"\n";
877 print
'<tr><td>'.$langs->trans(
"ThirdPartyType");
878 if (!empty($array_query[
'cust_typeent'])) {
879 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
881 print
'</td><td>'.
"\n";
882 print $formadvtargetemaling->advMultiselectarray(
'cust_typeent', $formcompany->typent_array(0,
" AND id <> 0"), $array_query[
'cust_typeent']);
883 print
'</td><td>'.
"\n";
884 print
'</td></tr>'.
"\n";
887 print
'<td>'.$langs->trans(
"Staff");
888 if (!empty($array_query[
'cust_effectif_id'])) {
889 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
892 print $formadvtargetemaling->advMultiselectarray(
"cust_effectif_id", $formcompany->effectif_array(0,
" AND id <> 0"), $array_query[
'cust_effectif_id']);
893 print
'</td><td>'.
"\n";
894 print
'</td></tr>'.
"\n";
897 print
'<tr><td>'.$langs->trans(
"SalesRepresentatives");
898 if (!empty($array_query[
'cust_saleman'])) {
899 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
901 print
'</td><td>'.
"\n";
902 print $formadvtargetemaling->multiselectselectSalesRepresentatives(
'cust_saleman', $array_query[
'cust_saleman'], $user);
903 print
'</td><td>'.
"\n";
904 print
'</td></tr>'.
"\n";
908 print
'<tr><td>'.$langs->trans(
"DefaultLang");
909 if (!empty($array_query[
'cust_language'])) {
910 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
912 print
'</td><td>'.
"\n";
913 print $formadvtargetemaling->multiselectselectLanguage(
'cust_language', $array_query[
'cust_language']);
914 print
'</td><td>'.
"\n";
915 print
'</td></tr>'.
"\n";
918 if (
isModEnabled(
'category') && $user->hasRight(
'categorie',
'lire')) {
920 print
'<tr><td>'.$langs->trans(
"CustomersCategoryShort");
921 print
'</td><td>'.
"\n";
922 print $form->selectCategories(Categorie::TYPE_CUSTOMER,
'cust_categ', $object);
923 print
'</td><td>'.
"\n";
924 print
'</td></tr>'.
"\n";
930 $elementtype = $socstatic->table_element;
932 require_once DOL_DOCUMENT_ROOT .
'/core/class/extrafields.class.php';
934 $extrafields->fetch_name_optionals_label($elementtype);
935 foreach ($extrafields->attributes[$elementtype][
'label'] as $key => $val) {
936 if ($key !=
'ts_nameextra' && $key !=
'ts_payeur') {
937 if (!isset($array_query[
'options_'.$key])) {
938 $array_query[
'options_'.$key] =
'';
940 if (isset($extrafields->attributes[$elementtype][
'langfile'][$key])) {
941 $langs->load($extrafields->attributes[$elementtype][
'langfile'][$key]);
943 print
'<tr><td>'.$langs->trans($extrafields->attributes[$elementtype][
'label'][$key]);
944 if (!empty($array_query[
'options_'.$key]) || (is_array($array_query[
'options_'.$key]) && count($array_query[
'options_'.$key]) > 0)) {
945 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
948 if (($extrafields->attributes[$elementtype][
'type'][$key] ==
'varchar') || ($extrafields->attributes[$elementtype][
'type'][$key] ==
'text')) {
949 print
'<input type="text" name="options_'.$key.
'"/></td><td>'.
"\n";
950 print $form->textwithpicto(
'', $langs->trans(
"AdvTgtSearchTextHelp"), 1,
'help');
951 } elseif (($extrafields->attributes[$elementtype][
'type'][$key] ==
'int') || ($extrafields->attributes[$elementtype][
'type'][$key] ==
'double')) {
952 print $langs->trans(
"AdvTgtMinVal").
'<input type="text" name="options'.$key.
'_min"/>';
953 print $langs->trans(
"AdvTgtMaxVal").
'<input type="text" name="options'.$key.
'_max"/>';
954 print
'</td><td>'.
"\n";
955 print $form->textwithpicto(
'', $langs->trans(
"AdvTgtSearchIntHelp"), 1,
'help');
956 } elseif (($extrafields->attributes[$elementtype][
'type'][$key] ==
'date') || ($extrafields->attributes[$elementtype][
'type'][$key] ==
'datetime')) {
957 print
'<table class="nobordernopadding"><tr>';
958 print
'<td>'.$langs->trans(
"AdvTgtStartDt").
'</td><td>';
959 print $form->selectDate(
'',
'options_'.$key.
'_st_dt', 0, 0, 1);
960 print
'</td><td>'.$langs->trans(
"AdvTgtEndDt").
'</td><td>';
961 print $form->selectDate(
'',
'options_'.$key.
'_end_dt', 0, 0, 1);
962 print
'</td></tr></table>';
964 print
'</td><td>'.
"\n";
965 print $form->textwithpicto(
'', $langs->trans(
"AdvTgtSearchDtHelp"), 1,
'help');
966 } elseif (($extrafields->attributes[$elementtype][
'type'][$key] ==
'boolean')) {
967 print $form->selectarray(
971 '1' => $langs->trans(
'Yes'),
972 '0' => $langs->trans(
'No')
974 $array_query[
'options_'.$key]
976 print
'</td><td>'.
"\n";
977 } elseif ($extrafields->attributes[$elementtype][
'type'][$key] ==
'select') {
978 print $formadvtargetemaling->advMultiselectarray(
'options_'.$key, $extrafields->attributes[$elementtype][
'param'][$key][
'options'], $array_query[
'options_'.$key]);
979 print
'</td><td>'.
"\n";
980 } elseif ($extrafields->attributes[$elementtype][
'type'][$key] ==
'sellist') {
981 print $formadvtargetemaling->advMultiselectarraySelllist(
'options_'.$key, $extrafields->attributes[$elementtype][
'param'][$key][
'options'], $array_query[
'options_'.$key]);
982 print
'</td><td>'.
"\n";
984 print
'<table class="nobordernopadding"><tr>';
985 print
'<td></td><td>';
986 if (is_array($array_query[
'options_'.$key])) {
987 print $extrafields->showInputField($key, implode(
',', $array_query[
'options_'.$key]),
'',
'',
'',
'', 0,
'societe', 1);
989 print $extrafields->showInputField($key, $array_query[
'options_'.$key],
'',
'',
'',
'', 0,
'societe', 1);
991 print
'</td></tr></table>';
993 print
'</td><td>'.
"\n";
995 print
'</td></tr>'.
"\n";
1000 $action_search =
'query';
1002 $parameters = array(
'advtarget' => 1);
1003 if (!empty($advTarget->id)) {
1004 $parameters = array(
'array_query' => $advTarget->filtervalue);
1007 $reshook = $hookmanager->executeHooks(
'formObjectOptions', $parameters, $std_soc, $action_search);
1008 print $hookmanager->resPrint;
1012 print
'<tr><td>'.$langs->trans(
'Status').
' '.$langs->trans(
'Contact');
1013 if (!empty($array_query[
'contact_status'])) {
1014 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
1017 print $formadvtargetemaling->advMultiselectarray(
1020 '0' => $langs->trans(
'ActivityCeased'),
1021 '1' => $langs->trans(
'InActivity')
1023 $array_query[
'contact_status']
1025 print
'</td><td>'.
"\n";
1026 print $form->textwithpicto(
'', $langs->trans(
"AdvTgtContactHelp"), 1,
'help');
1027 print
'</td></tr>'.
"\n";
1030 print
'<tr><td>'.$langs->trans(
"UserTitle");
1031 if (!empty($array_query[
'contact_civility'])) {
1032 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
1035 print $formadvtargetemaling->multiselectCivility(
'contact_civility', $array_query[
'contact_civility']);
1039 print
'<tr><td>'.$langs->trans(
'Contact').
' '.$langs->trans(
'Lastname');
1040 if (!empty($array_query[
'contact_lastname'])) {
1041 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
1043 print
'</td><td><input type="text" name="contact_lastname" value="'.$array_query[
'contact_lastname'].
'"/></td><td>'.
"\n";
1044 print $form->textwithpicto(
'', $langs->trans(
"AdvTgtSearchTextHelp"), 1,
'help');
1045 print
'</td></tr>'.
"\n";
1046 print
'<tr><td>'.$langs->trans(
'Contact').
' '.$langs->trans(
'Firstname');
1047 if (!empty($array_query[
'contact_firstname'])) {
1048 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
1050 print
'</td><td><input type="text" name="contact_firstname" value="'.$array_query[
'contact_firstname'].
'"/></td><td>'.
"\n";
1051 print $form->textwithpicto(
'', $langs->trans(
"AdvTgtSearchTextHelp"), 1,
'help');
1052 print
'</td></tr>'.
"\n";
1055 print
'<tr><td>'.$langs->trans(
'Contact').
' '.$langs->trans(
"Country");
1056 if (!empty($array_query[
'contact_country'])) {
1057 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
1059 print
'</td><td>'.
"\n";
1060 print $formadvtargetemaling->multiselectCountry(
'contact_country', $array_query[
'contact_country']);
1061 print
'</td><td>'.
"\n";
1062 print
'</td></tr>'.
"\n";
1065 print
'<tr><td>'.$langs->trans(
'Contact').
' '.$langs->trans(
"No_Email");
1066 if (!empty($array_query[
'contact_no_email'])) {
1067 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
1069 print
'</td><td>'.
"\n";
1070 print $form->selectarray(
1074 '1' => $langs->trans(
'Yes'),
1075 '0' => $langs->trans(
'No')
1077 $array_query[
'contact_no_email']
1079 print
'</td><td>'.
"\n";
1080 print
'</td></tr>'.
"\n";
1083 print
'<tr><td>'.$langs->trans(
'Contact').
' '.$langs->trans(
"DateCreation");
1084 if (!empty($array_query[
'contact_create_st_dt'])) {
1085 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
1087 print
'</td><td>'.
"\n";
1088 print
'<table class="nobordernopadding"><tr>';
1089 print
'<td>'.$langs->trans(
"AdvTgtStartDt").
'</td><td>';
1090 print $form->selectDate($array_query[
'contact_create_st_dt'],
'contact_create_st_dt', 0, 0, 1,
'find_customer', 1, 1);
1091 print
'</td><td>'.$langs->trans(
"AdvTgtEndDt").
'</td><td>';
1092 print $form->selectDate($array_query[
'contact_create_end_dt'],
'contact_create_end_dt', 0, 0, 1,
'find_customer', 1, 1);
1093 print
'</td></tr></table>';
1094 print
'</td><td>'.
"\n";
1095 print
'</td></tr>'.
"\n";
1098 print
'<tr><td>'.$langs->trans(
'Contact').
' '.$langs->trans(
"DateLastModification");
1099 if (!empty($array_query[
'contact_update_st_dt'])) {
1100 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
1102 print
'</td><td>'.
"\n";
1103 print
'<table class="nobordernopadding"><tr>';
1104 print
'<td>'.$langs->trans(
"AdvTgtStartDt").
'</td><td>';
1105 print $form->selectDate($array_query[
'contact_update_st_dt'],
'contact_update_st_dt', 0, 0, 1,
'find_customer', 1, 1);
1106 print
'</td><td>'.$langs->trans(
"AdvTgtEndDt").
'</td><td>';
1107 print $form->selectDate($array_query[
'contact_update_end_dt'],
'contact_update_end_dt', 0, 0, 1,
'find_customer', 1, 1);
1108 print
'</td></tr></table>';
1109 print
'</td><td>'.
"\n";
1110 print
'</td></tr>'.
"\n";
1112 if (
isModEnabled(
'category') && $user->hasRight(
'categorie',
'lire')) {
1114 print
'<tr><td>'.$langs->trans(
"ContactCategoriesShort");
1115 print
'</td><td>'.
"\n";
1116 print $form->selectCategories(Categorie::TYPE_CONTACT,
'contact_categ', $object);
1117 print
'</td><td>'.
"\n";
1118 print
'</td></tr>'.
"\n";
1123 $contactstatic =
new Contact($db);
1124 $elementtype = $contactstatic->table_element;
1128 $extrafields->fetch_name_optionals_label($elementtype);
1129 if (!empty($extrafields->attributes[$elementtype][
'type'])) {
1130 foreach ($extrafields->attributes[$elementtype][
'type'] as $key => &$value) {
1131 if ($value ==
'radio') {
1136 if (!empty($extrafields->attributes[$elementtype][
'label'])) {
1137 foreach ($extrafields->attributes[$elementtype][
'label'] as $key => $val) {
1138 if (!isset($array_query[
'options_'.$key.
'_cnct'])) {
1139 $array_query[
'options_'.$key.
'_cnct'] =
'';
1141 print
'<tr><td>'.$extrafields->attributes[$elementtype][
'label'][$key];
1142 if ($array_query[
'options_'.$key.
'_cnct'] !=
'' || (is_array($array_query[
'options_'.$key.
'_cnct']) && count($array_query[
'options_'.$key.
'_cnct']) > 0)) {
1143 print
img_picto($langs->trans(
'AdvTgtUse'),
'ok.png@advtargetemailing');
1146 if (($extrafields->attributes[$elementtype][
'type'][$key] ==
'varchar') || ($extrafields->attributes[$elementtype][
'type'][$key] ==
'text')) {
1147 print
'<input type="text" name="options_'.$key.
'_cnct"/></td><td>'.
"\n";
1148 print $form->textwithpicto(
'', $langs->trans(
"AdvTgtSearchTextHelp"), 1,
'help');
1149 } elseif (($extrafields->attributes[$elementtype][
'type'][$key] ==
'int') || ($extrafields->attributes[$elementtype][
'type'][$key] ==
'double')) {
1150 print $langs->trans(
"AdvTgtMinVal").
'<input type="text" name="options_'.$key.
'_min_cnct"/>';
1151 print $langs->trans(
"AdvTgtMaxVal").
'<input type="text" name="options_'.$key.
'_max_cnct"/>';
1152 print
'</td><td>'.
"\n";
1153 print $form->textwithpicto(
'', $langs->trans(
"AdvTgtSearchIntHelp"), 1,
'help');
1154 } elseif (($extrafields->attributes[$elementtype][
'type'][$key] ==
'date') || ($extrafields->attributes[$elementtype][
'type'][$key] ==
'datetime')) {
1155 print
'<table class="nobordernopadding"><tr>';
1156 print
'<td>'.$langs->trans(
"AdvTgtStartDt").
'</td><td>';
1157 print $form->selectDate(
'',
'options_'.$key.
'_st_dt_cnct', 0, 0, 1);
1158 print
'</td><td>'.$langs->trans(
"AdvTgtEndDt").
'</td><td>';
1159 print $form->selectDate(
'',
'options_'.$key.
'_end_dt_cnct', 0, 0, 1);
1160 print
'</td></tr></table>';
1161 print
'</td><td>'.
"\n";
1162 print $form->textwithpicto(
'', $langs->trans(
"AdvTgtSearchDtHelp"), 1,
'help');
1163 } elseif (($extrafields->attributes[$elementtype][
'type'][$key] ==
'boolean')) {
1164 print $form->selectarray(
1165 'options_'.$key.
'_cnct',
1168 '1' => $langs->trans(
'Yes'),
1169 '0' => $langs->trans(
'No')
1171 $array_query[
'options_'.$key.
'_cnct']
1173 print
'</td><td>'.
"\n";
1174 } elseif ($extrafields->attributes[$elementtype][
'type'][$key] ==
'select') {
1175 print $formadvtargetemaling->advMultiselectarray(
'options_'.$key.
'_cnct', $extrafields->attributes[$elementtype][
'param'][$key][
'options'], $array_query[
'options_'.$key.
'_cnct']);
1176 print
'</td><td>'.
"\n";
1177 } elseif ($extrafields->attributes[$elementtype][
'type'][$key] ==
'sellist') {
1178 print $formadvtargetemaling->advMultiselectarraySelllist(
'options_'.$key.
'_cnct', $extrafields->attributes[$elementtype][
'param'][$key][
'options'], $array_query[
'options_'.$key.
'_cnct']);
1179 print
'</td><td>'.
"\n";
1181 if (is_array($array_query[
'options_'.$key.
'_cnct'])) {
1182 print $extrafields->showInputField($key, implode(
',', $array_query[
'options_'.$key.
'_cnct']),
'',
'_cnct',
'',
'', 0,
'socpeople', 1);
1184 print $extrafields->showInputField($key, $array_query[
'options_'.$key.
'_cnct'],
'',
'_cnct',
'',
'', 0,
'socpeople', 1);
1186 print
'</td><td>'.
"\n";
1188 print
'</td></tr>'.
"\n";
1193 print
'</table>'.
"\n";
1195 print
'<center><input type="button" name="addcontact" id="addcontact" value="'.$langs->trans(
'AdvTgtAddContact').
'" class="butAction"/></center>'.
"\n";
1197 print
'</form>'.
"\n";
1202 print
'<form action="'.$_SERVER[
'PHP_SELF'].
'?action=clear&id='.
$object->id.
'" method="POST">';
1203 print
'<input type="hidden" name="token" value="'.newToken().
'">';
1205 print
'<table class="noborder centpercent">';
1206 print
'<tr class="liste_titre">';
1207 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.
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
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.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
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.
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.
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...
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.