dolibarr 21.0.0-alpha
new.php
Go to the documentation of this file.
1<?php
2/* Copyright (C) 2001-2002 Rodolphe Quiedeville <rodolphe@quiedeville.org>
3 * Copyright (C) 2001-2002 Jean-Louis Bergamo <jlb@j1b.org>
4 * Copyright (C) 2006-2013 Laurent Destailleur <eldy@users.sourceforge.net>
5 * Copyright (C) 2012 Regis Houssin <regis.houssin@inodbox.com>
6 * Copyright (C) 2012 J. Fernando Lagrange <fernando@demo-tic.org>
7 * Copyright (C) 2018-2024 Frédéric France <frederic.france@free.fr>
8 * Copyright (C) 2018 Alexandre Spangaro <aspangaro@open-dsi.fr>
9 * Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com>
10 *
11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License as published by
13 * the Free Software Foundation; either version 3 of the License, or
14 * (at your option) any later version.
15 *
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public License
22 * along with this program. If not, see <https://www.gnu.org/licenses/>.
23 */
24
31if (!defined('NOLOGIN')) {
32 define("NOLOGIN", 1); // This means this output page does not require to be logged.
33}
34if (!defined('NOCSRFCHECK')) {
35 define("NOCSRFCHECK", 1); // We accept to go on this page from external web site.
36}
37if (!defined('NOIPCHECK')) {
38 define('NOIPCHECK', '1'); // Do not check IP defined into conf $dolibarr_main_restrict_ip
39}
40if (!defined('NOBROWSERNOTIF')) {
41 define('NOBROWSERNOTIF', '1');
42}
43
44
45// For MultiCompany module.
46// Do not use GETPOST here, function is not defined and define must be done before including main.inc.php
47// Because 2 entities can have the same ref.
48$entity = (!empty($_GET['entity']) ? (int) $_GET['entity'] : (!empty($_POST['entity']) ? (int) $_POST['entity'] : 1));
49if (is_numeric($entity)) {
50 define("DOLENTITY", $entity);
51}
52
53// Load Dolibarr environment
54require '../../main.inc.php';
55require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
56require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
57require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
58require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
59require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
60
61// Init vars
62$errmsg = '';
63$error = 0;
64$backtopage = GETPOST('backtopage', 'alpha');
65$action = GETPOST('action', 'aZ09');
66
67// Load translation files
68$langs->loadLangs(array("members", "companies", "install", "other", "projects"));
69
70if (!getDolGlobalString('PROJECT_ENABLE_PUBLIC')) {
71 print $langs->trans("Form for public lead registration has not been enabled");
72 exit;
73}
74
75// Initialize a technical object to manage hooks of page. Note that conf->hooks_modules contains an array of hook context
76$hookmanager->initHooks(array('publicnewleadcard', 'globalcard'));
77
78$extrafields = new ExtraFields($db);
79
80$object = new Project($db);
81
82$user->loadDefaultValues();
83
84// Security check
85if (empty($conf->project->enabled)) {
86 httponly_accessforbidden('Module Project not enabled');
87}
88
89
101function llxHeaderVierge($title, $head = "", $disablejs = 0, $disablehead = 0, $arrayofjs = [], $arrayofcss = [])
102{
103 global $conf, $langs, $mysoc;
104
105 top_htmlhead($head, $title, $disablejs, $disablehead, $arrayofjs, $arrayofcss); // Show html headers
106
107 print '<body id="mainbody" class="publicnewmemberform">';
108
109 // Define urllogo
110 $urllogo = DOL_URL_ROOT.'/theme/common/login_logo.png';
111
112 if (!empty($mysoc->logo_small) && is_readable($conf->mycompany->dir_output.'/logos/thumbs/'.$mysoc->logo_small)) {
113 $urllogo = DOL_URL_ROOT.'/viewimage.php?cache=1&amp;modulepart=mycompany&amp;file='.urlencode('logos/thumbs/'.$mysoc->logo_small);
114 } elseif (!empty($mysoc->logo) && is_readable($conf->mycompany->dir_output.'/logos/'.$mysoc->logo)) {
115 $urllogo = DOL_URL_ROOT.'/viewimage.php?cache=1&amp;modulepart=mycompany&amp;file='.urlencode('logos/'.$mysoc->logo);
116 } elseif (is_readable(DOL_DOCUMENT_ROOT.'/theme/dolibarr_logo.svg')) {
117 $urllogo = DOL_URL_ROOT.'/theme/dolibarr_logo.svg';
118 }
119
120 print '<div class="center">';
121
122 // Output html code for logo
123 if ($urllogo) {
124 print '<div class="backgreypublicpayment">';
125 print '<div class="logopublicpayment">';
126 print '<img id="dolpaymentlogo" src="'.$urllogo.'"';
127 print '>';
128 print '</div>';
129 if (!getDolGlobalString('MAIN_HIDE_POWERED_BY')) {
130 print '<div class="poweredbypublicpayment opacitymedium right"><a class="poweredbyhref" href="https://www.dolibarr.org?utm_medium=website&utm_source=poweredby" target="dolibarr" rel="noopener">'.$langs->trans("PoweredBy").'<br><img class="poweredbyimg" src="'.DOL_URL_ROOT.'/theme/dolibarr_logo.svg" width="80px"></a></div>';
131 }
132 print '</div>';
133 }
134
135 if (getDolGlobalString('PROJECT_IMAGE_PUBLIC_NEWLEAD')) {
136 print '<div class="backimagepublicnewlead">';
137 print '<img id="idPROJECT_IMAGE_PUBLIC_NEWLEAD" src="' . getDolGlobalString('PROJECT_IMAGE_PUBLIC_NEWLEAD').'">';
138 print '</div>';
139 }
140
141 print '</div>';
142
143 print '<div class="divmainbodylarge">';
144}
145
152{
153 print '</div>';
154
155 printCommonFooter('public');
156
157 print "</body>\n";
158 print "</html>\n";
159}
160
161
162
163/*
164 * Actions
165 */
166
167$parameters = array();
168// Note that $action and $object may have been modified by some hooks
169$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action);
170if ($reshook < 0) {
171 setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
172}
173
174// Action called when page is submitted
175if (empty($reshook) && $action == 'add') { // Test on permission not required here. This is an anonymous public submission form. Check is done on the constant to enable feature + mitigation.
176 $error = 0;
177 $urlback = '';
178
179 $db->begin();
180
181 if (!GETPOST("lastname")) {
182 $error++;
183 $errmsg .= $langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Lastname"))."<br>\n";
184 }
185 if (!GETPOST("firstname")) {
186 $error++;
187 $errmsg .= $langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Firstname"))."<br>\n";
188 }
189 if (!GETPOST("email")) {
190 $error++;
191 $errmsg .= $langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Email"))."<br>\n";
192 }
193 if (!GETPOST("description")) {
194 $error++;
195 $errmsg .= $langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Message"))."<br>\n";
196 }
197 if (GETPOST("email") && !isValidEmail(GETPOST("email"))) {
198 $error++;
199 $langs->load("errors");
200 $errmsg .= $langs->trans("ErrorBadEMail", GETPOST("email"))."<br>\n";
201 }
202 // Set default opportunity status
203 $defaultoppstatus = getDolGlobalInt('PROJECT_DEFAULT_OPPORTUNITY_STATUS_FOR_ONLINE_LEAD');
204 if (empty($defaultoppstatus)) {
205 $error++;
206 $langs->load("errors");
207 $errmsg .= $langs->trans("ErrorModuleSetupNotComplete", $langs->transnoentitiesnoconv("Project"))."<br>\n";
208 }
209
210 $visibility = getDolGlobalString('PROJET_VISIBILITY');
211
212 $proj = new Project($db);
213 $thirdparty = new Societe($db);
214
215 if (!$error) {
216 // Search thirdparty and set it if found to the new created project
217 $result = $thirdparty->fetch(0, '', '', '', '', '', '', '', '', '', GETPOST('email'));
218 if ($result > 0) {
219 $proj->socid = $thirdparty->id;
220 } else {
221 // Create the prospect
222 if (GETPOST('societe')) {
223 $thirdparty->name = GETPOST('societe');
224 $thirdparty->name_alias = dolGetFirstLastname(GETPOST('firstname'), GETPOST('lastname'));
225 } else {
226 $thirdparty->name = dolGetFirstLastname(GETPOST('firstname'), GETPOST('lastname'));
227 }
228 $thirdparty->email = GETPOST('email');
229 $thirdparty->address = GETPOST('address');
230 $thirdparty->zip = GETPOST('zip');
231 $thirdparty->town = GETPOST('town');
232 $thirdparty->country_id = GETPOSTINT('country_id');
233 $thirdparty->state_id = GETPOSTINT('state_id');
234 $thirdparty->client = $thirdparty::PROSPECT;
235 $thirdparty->code_client = 'auto';
236 $thirdparty->code_fournisseur = 'auto';
237
238 // Fill array 'array_options' with data from the form
239 $extrafields->fetch_name_optionals_label($thirdparty->table_element);
240 $ret = $extrafields->setOptionalsFromPost(null, $thirdparty, '', 1);
241 if ($ret < 0) {
242 $error++;
243 $errmsg = ($extrafields->error ? $extrafields->error.'<br>' : '').implode('<br>', $extrafields->errors);
244 }
245
246 if (!$error) {
247 $result = $thirdparty->create($user);
248 if ($result <= 0) {
249 $error++;
250 $errmsg = ($thirdparty->error ? $thirdparty->error.'<br>' : '').implode('<br>', $thirdparty->errors);
251 } else {
252 $proj->socid = $thirdparty->id;
253 }
254 }
255 }
256 }
257
258 if (!$error) {
259 // Defined the ref into $defaultref
260 $defaultref = '';
261 $modele = getDolGlobalString('PROJECT_ADDON', 'mod_project_simple');
262
263 // Search template files
264 $file = '';
265 $classname = '';
266 $reldir = '';
267 $filefound = 0;
268 $dirmodels = array_merge(array('/'), (array) $conf->modules_parts['models']);
269 foreach ($dirmodels as $reldir) {
270 $file = dol_buildpath($reldir."core/modules/project/".$modele.'.php', 0);
271 if (file_exists($file)) {
272 $filefound = 1;
273 $classname = $modele;
274 break;
275 }
276 }
277
278 if ($filefound && !empty($classname)) {
279 $result = dol_include_once($reldir."core/modules/project/".$modele.'.php');
280 if (class_exists($classname)) {
281 $modProject = new $classname();
282 '@phan-var-force ModeleNumRefProjects $modProject';
283
284 $defaultref = $modProject->getNextValue($thirdparty, $object);
285 }
286 }
287
288 if (is_numeric($defaultref) && $defaultref <= 0) {
289 $defaultref = '';
290 }
291
292 if (empty($defaultref)) {
293 $defaultref = 'PJ'.dol_print_date(dol_now(), 'dayrfc');
294 }
295
296 if ($visibility === "1") {
297 $proj->public = 1;
298 } elseif ($visibility === "0") {
299 $proj->public = 0;
300 } elseif (empty($visibility)) {
301 $proj->public = 1;
302 }
303
304 $proj->ref = $defaultref;
305 $proj->statut = $proj::STATUS_DRAFT;
306 $proj->status = $proj::STATUS_DRAFT;
307 $proj->usage_opportunity = 1;
308 $proj->title = $langs->trans("LeadFromPublicForm");
309 $proj->description = GETPOST("description", "alphanohtml");
310 $proj->opp_status = $defaultoppstatus;
311 $proj->fk_opp_status = $defaultoppstatus;
312
313 $proj->ip = getUserRemoteIP();
314 $nb_post_max = getDolGlobalInt("MAIN_SECURITY_MAX_POST_ON_PUBLIC_PAGES_BY_IP_ADDRESS", 200);
315 $now = dol_now();
316 $minmonthpost = dol_time_plus_duree($now, -1, "m");
317 $nb_post_ip = 0;
318 if ($nb_post_max > 0) { // Calculate only if there is a limit to check
319 $sql = "SELECT COUNT(rowid) as nb_projets";
320 $sql .= " FROM ".MAIN_DB_PREFIX."projet";
321 $sql .= " WHERE ip = '".$db->escape($proj->ip)."'";
322 $sql .= " AND datec > '".$db->idate($minmonthpost)."'";
323 $resql = $db->query($sql);
324 if ($resql) {
325 $num = $db->num_rows($resql);
326 $i = 0;
327 while ($i < $num) {
328 $i++;
329 $obj = $db->fetch_object($resql);
330 $nb_post_ip = $obj->nb_projets;
331 }
332 }
333 }
334
335 // Fill array 'array_options' with data from the form
336 $extrafields->fetch_name_optionals_label($proj->table_element);
337 $ret = $extrafields->setOptionalsFromPost(null, $proj);
338 if ($ret < 0) {
339 $error++;
340 }
341
342 if ($nb_post_max > 0 && $nb_post_ip >= $nb_post_max) {
343 $error++;
344 $errmsg = $langs->trans("AlreadyTooMuchPostOnThisIPAdress");
345 array_push($proj->errors, $langs->trans("AlreadyTooMuchPostOnThisIPAdress"));
346 }
347 // Create the project
348 if (!$error) {
349 $result = $proj->create($user);
350 if ($result > 0) {
351 require_once DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php';
352 $object = $proj;
353
354 if ($object->email) {
355 $subject = '';
356 $msg = '';
357
358 // Send subscription email
359 include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php';
360 $formmail = new FormMail($db);
361 // Set output language
362 $outputlangs = new Translate('', $conf);
363 $outputlangs->setDefaultLang(empty($object->thirdparty->default_lang) ? $mysoc->default_lang : $object->thirdparty->default_lang);
364 // Load traductions files required by page
365 $outputlangs->loadLangs(array("main", "members", "projects"));
366 // Get email content from template
367 $arraydefaultmessage = null;
368 $labeltouse = getDolGlobalString('PROJECT_EMAIL_TEMPLATE_AUTOLEAD');
369
370 if (!empty($labeltouse)) {
371 $arraydefaultmessage = $formmail->getEMailTemplate($db, 'project', $user, $outputlangs, 0, 1, $labeltouse);
372 }
373
374 if (!empty($labeltouse) && is_object($arraydefaultmessage) && $arraydefaultmessage->id > 0) {
375 $subject = $arraydefaultmessage->topic;
376 $msg = $arraydefaultmessage->content;
377 }
378 if (empty($labeltosue)) {
379 $appli = $mysoc->name;
380
381 $labeltouse = '['.$appli.'] '.$langs->trans("YourMessage");
382 $msg = $langs->trans("YourMessageHasBeenReceived");
383 }
384
385 $substitutionarray = getCommonSubstitutionArray($outputlangs, 0, null, $object);
386 complete_substitutions_array($substitutionarray, $outputlangs, $object);
387 $subjecttosend = make_substitutions($subject, $substitutionarray, $outputlangs);
388 $texttosend = make_substitutions($msg, $substitutionarray, $outputlangs);
389 if ($subjecttosend && $texttosend) {
390 $moreinheader = 'X-Dolibarr-Info: send_an_email by public/lead/new.php'."\r\n";
391
392 $result = $object->sendEmail($texttosend, $subjecttosend, array(), array(), array(), "", "", 0, -1, '', $moreinheader);
393 }
394 /*if ($result < 0) {
395 $error++;
396 setEventMessages($object->error, $object->errors, 'errors');
397 }*/
398 }
399
400 if (!empty($backtopage)) {
401 $urlback = $backtopage;
402 } elseif (getDolGlobalString('PROJECT_URL_REDIRECT_LEAD')) {
403 $urlback = getDolGlobalString('PROJECT_URL_REDIRECT_LEAD');
404 // TODO Make replacement of __AMOUNT__, etc...
405 } else {
406 $urlback = $_SERVER["PHP_SELF"]."?action=added&token=".newToken();
407 }
408
409 if (!empty($entity)) {
410 $urlback .= '&entity='.$entity;
411 }
412
413 dol_syslog("project lead ".$proj->ref." has been created, we redirect to ".$urlback);
414 } else {
415 $error++;
416 $errmsg .= $proj->error.'<br>'.implode('<br>', $proj->errors);
417 }
418 } else {
419 setEventMessage($errmsg, 'errors');
420 }
421 }
422
423 if (!$error) {
424 $db->commit();
425
426 header("Location: ".$urlback);
427 exit;
428 } else {
429 $db->rollback();
430 }
431}
432
433// Action called after a submitted was send and member created successfully
434// backtopage parameter with an url was set on member submit page, we never go here because a redirect was done to this url.
435if (empty($reshook) && $action == 'added') { // Test on permission not required here
436 llxHeaderVierge($langs->trans("NewLeadForm"));
437
438 // Si on a pas ete redirige
439 print '<br><br>';
440 print '<div class="center">';
441 print $langs->trans("NewLeadbyWeb");
442 print '</div>';
443
445 exit;
446}
447
448
449
450/*
451 * View
452 */
453
454$form = new Form($db);
455$formcompany = new FormCompany($db);
456
457$extrafields->fetch_name_optionals_label($object->table_element); // fetch optionals attributes and labels
458
459llxHeaderVierge($langs->trans("NewContact"));
460
461
462print load_fiche_titre($langs->trans("NewContact"), '', '', 0, '', 'center');
463
464
465print '<div align="center">';
466print '<div id="divsubscribe">';
467
468print '<div class="center subscriptionformhelptext opacitymedium justify">';
469if (getDolGlobalString('PROJECT_NEWFORM_TEXT')) {
470 print $langs->trans(getDolGlobalString('PROJECT_NEWFORM_TEXT'))."<br>\n";
471} else {
472 print $langs->trans("FormForNewLeadDesc", getDolGlobalString("MAIN_INFO_SOCIETE_MAIL"))."<br>\n";
473}
474print '</div>';
475
476dol_htmloutput_errors($errmsg);
477
478// Print form
479print '<form action="'.$_SERVER["PHP_SELF"].'" method="POST" name="newlead">'."\n";
480print '<input type="hidden" name="token" value="'.newToken().'" / >';
481print '<input type="hidden" name="entity" value="'.$entity.'" />';
482print '<input type="hidden" name="action" value="add" />';
483
484print '<br>';
485
486print '<br><span class="opacitymedium">'.$langs->trans("FieldsWithAreMandatory", '*').'</span><br>';
487//print $langs->trans("FieldsWithIsForPublic",'**').'<br>';
488
489print dol_get_fiche_head();
490
491print '<script type="text/javascript">
492jQuery(document).ready(function () {
493 jQuery(document).ready(function () {
494 jQuery("#selectcountry_id").change(function() {
495 document.newlead.action.value="create";
496 document.newlead.submit();
497 });
498 });
499});
500</script>';
501
502
503print '<table class="border" summary="form to subscribe" id="tablesubscribe">'."\n";
504
505// Lastname
506print '<tr><td>'.$langs->trans("Lastname").' <span class="star">*</span></td><td><input type="text" name="lastname" class="minwidth150" value="'.dol_escape_htmltag(GETPOST('lastname')).'" required></td></tr>'."\n";
507// Firstname
508print '<tr><td>'.$langs->trans("Firstname").' <span class="star">*</span></td><td><input type="text" name="firstname" class="minwidth150" value="'.dol_escape_htmltag(GETPOST('firstname')).'" required></td></tr>'."\n";
509// EMail
510print '<tr><td>'.$langs->trans("Email").' <span class="star">*</span></td><td><input type="text" name="email" maxlength="255" class="minwidth150" value="'.dol_escape_htmltag(GETPOST('email')).'" required></td></tr>'."\n";
511// Company
512print '<tr id="trcompany" class="trcompany"><td>'.$langs->trans("Company").'</td><td><input type="text" name="societe" class="minwidth150" value="'.dol_escape_htmltag(GETPOST('societe')).'"></td></tr>'."\n";
513// Address
514print '<tr><td>'.$langs->trans("Address").'</td><td>'."\n";
515print '<textarea name="address" id="address" wrap="soft" class="quatrevingtpercent" rows="'.ROWS_2.'">'.dol_escape_htmltag(GETPOST('address', 'restricthtml'), 0, 1).'</textarea></td></tr>'."\n";
516// Zip / Town
517print '<tr><td>'.$langs->trans('Zip').' / '.$langs->trans('Town').'</td><td>';
518print $formcompany->select_ziptown(GETPOST('zipcode'), 'zipcode', array('town', 'selectcountry_id', 'state_id'), 6, 1);
519print ' / ';
520print $formcompany->select_ziptown(GETPOST('town'), 'town', array('zipcode', 'selectcountry_id', 'state_id'), 0, 1);
521print '</td></tr>';
522// Country
523print '<tr><td>'.$langs->trans('Country').'</td><td>';
524$country_id = GETPOST('country_id');
525if (!$country_id && getDolGlobalString('PROJECT_NEWFORM_FORCECOUNTRYCODE')) {
526 $country_id = getCountry($conf->global->PROJECT_NEWFORM_FORCECOUNTRYCODE, '2', $db, $langs);
527}
528if (!$country_id && !empty($conf->geoipmaxmind->enabled)) {
529 $country_code = dol_user_country();
530 //print $country_code;
531 if ($country_code) {
532 $new_country_id = getCountry($country_code, '3', $db, $langs);
533 //print 'xxx'.$country_code.' - '.$new_country_id;
534 if ($new_country_id) {
535 $country_id = $new_country_id;
536 }
537 }
538}
539$country_code = getCountry($country_id, '2', $db, $langs);
540print $form->select_country($country_id, 'country_id');
541print '</td></tr>';
542// State
543if (!getDolGlobalString('SOCIETE_DISABLE_STATE')) {
544 print '<tr><td>'.$langs->trans('State').'</td><td>';
545 if ($country_code) {
546 print $formcompany->select_state(GETPOSTINT("state_id"), $country_code);
547 } else {
548 print '';
549 }
550 print '</td></tr>';
551}
552
553// Other attributes
554$parameters['tpl_context'] = 'public'; // define template context to public
555include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_add.tpl.php';
556// Comments
557print '<tr>';
558print '<td class="tdtop">'.$langs->trans("Message").' <span class="star">*</span></td>';
559print '<td class="tdtop"><textarea name="description" id="description" wrap="soft" class="quatrevingtpercent" rows="'.ROWS_5.'" required>'.dol_escape_htmltag(GETPOST('description', 'restricthtml'), 0, 1).'</textarea></td>';
560print '</tr>'."\n";
561
562print "</table>\n";
563
564print dol_get_fiche_end();
565
566// Save
567print '<div class="center">';
568print '<input type="submit" value="'.$langs->trans("Submit").'" id="submitsave" class="button">';
569if (!empty($backtopage)) {
570 print ' &nbsp; &nbsp; <input type="submit" value="'.$langs->trans("Cancel").'" id="submitcancel" class="button button-cancel">';
571}
572print '</div>';
573
574
575print "</form>\n";
576print "<br>";
577print '</div></div>';
578
579
581
582$db->close();
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
Definition card.php:58
Class to manage standard extra fields.
Class to build HTML component for third parties management Only common components are here.
Class to manage generation of HTML components Only common components must be here.
Class permettant la generation du formulaire html d'envoi de mail unitaire Usage: $formail = new Form...
Class to manage projects.
Class to manage third parties objects (customers, suppliers, prospects...)
Class to manage translations.
llxHeaderVierge($title, $head="", $disablejs=0, $disablehead=0, $arrayofjs=[], $arrayofcss=[])
Show header for new prospect.
Definition new.php:113
llxFooterVierge()
Show footer for new societe.
Definition new.php:162
getCountry($searchkey, $withcode='', $dbtouse=null, $outputlangs=null, $entconv=1, $searchlabel='')
Return country label, code or id from an id, code or label.
dol_time_plus_duree($time, $duration_value, $duration_unit, $ruleforendofmonth=0)
Add a delay to a date.
Definition date.lib.php:125
load_fiche_titre($title, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0, $attop=0)
Set event messages in dol_events session object.
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)
Show tabs of a record.
dol_user_country()
Return country code for current user.
dol_get_fiche_end($notab=0)
Return tab footer of a card.
setEventMessage($mesgs, $style='mesgs', $noduplicate=0, $attop=0)
Set event message in dol_events session object.
printCommonFooter($zone='private')
Print common footer : conf->global->MAIN_HTML_FOOTER js for switch of menu hider js for conf->global-...
dol_now($mode='auto')
Return date for now.
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.
newToken()
Return the value of token currently saved into session with name 'newtoken'.
dolGetFirstLastname($firstname, $lastname, $nameorder=-1)
Return firstname and lastname in correct order.
complete_substitutions_array(&$substitutionarray, $outputlangs, $object=null, $parameters=null, $callfunc="completesubstitutionarray")
Complete the $substitutionarray with more entries coming from external module that had set the "subst...
make_substitutions($text, $substitutionarray, $outputlangs=null, $converttextinhtmlifnecessary=0)
Make substitution into a text string, replacing keys with vals from $substitutionarray (oldval=>newva...
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
dol_buildpath($path, $type=0, $returnemptyifnotfound=0)
Return path of url or filesystem.
getCommonSubstitutionArray($outputlangs, $onlykey=0, $exclude=null, $object=null, $include=null)
Return array of possible common substitutions.
isValidEmail($address, $acceptsupervisorkey=0, $acceptuserkey=0)
Return true if email syntax is ok.
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
getUserRemoteIP()
Return the IP of remote user.
dol_htmloutput_errors($mesgstring='', $mesgarray=array(), $keepembedded=0)
Print formatted error messages to output (Used to show messages on html output).
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
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...
top_htmlhead($head, $title='', $disablejs=0, $disablehead=0, $arrayofjs=array(), $arrayofcss=array(), $disableforlogin=0, $disablenofollow=0, $disablenoindex=0)
Output html header of a page.
httponly_accessforbidden($message='1', $http_response_code=403, $stringalreadysanitized=0)
Show a message to say access is forbidden and stop program.