dolibarr 21.0.0-alpha
suggestconference.php
Go to the documentation of this file.
1<?php
2/* Copyright (C) 2021 Dorian Vabre <dorian.vabre@gmail.com>
3 * Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com>
4 * Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <https://www.gnu.org/licenses/>.
18 */
19
26if (!defined('NOLOGIN')) {
27 define("NOLOGIN", 1); // This means this output page does not require to be logged.
28}
29if (!defined('NOCSRFCHECK')) {
30 define("NOCSRFCHECK", 1); // We accept to go on this page from external web site.
31}
32if (!defined('NOIPCHECK')) {
33 define('NOIPCHECK', '1'); // Do not check IP defined into conf $dolibarr_main_restrict_ip
34}
35if (!defined('NOBROWSERNOTIF')) {
36 define('NOBROWSERNOTIF', '1');
37}
38
39
40// For MultiCompany module.
41// Do not use GETPOST here, function is not defined and define must be done before including main.inc.php
42// Because 2 entities can have the same ref.
43$entity = (!empty($_GET['entity']) ? (int) $_GET['entity'] : (!empty($_POST['entity']) ? (int) $_POST['entity'] : 1));
44if (is_numeric($entity)) {
45 define("DOLENTITY", $entity);
46}
47
48// Load Dolibarr environment
49require '../../main.inc.php';
50require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
51require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
52require_once DOL_DOCUMENT_ROOT.'/eventorganization/class/conferenceorbooth.class.php';
53require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
54require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php';
55require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php';
56require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
57require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/paymentterm.class.php';
58require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
59require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
60
61global $dolibarr_main_url_root;
62
63// Init vars
64$errmsg = '';
65$num = 0;
66$error = 0;
67$backtopage = GETPOST('backtopage', 'alpha');
68$action = GETPOST('action', 'aZ09');
69
70$eventtype = GETPOSTINT("eventtype");
71$email = GETPOST("email");
72$societe = GETPOST("societe");
73$label = GETPOST("label");
74$note = GETPOST("note");
75$datestart = dol_mktime(0, 0, 0, GETPOSTINT('datestartmonth'), GETPOSTINT('datestartday'), GETPOSTINT('datestartyear'));
76$dateend = dol_mktime(23, 59, 59, GETPOSTINT('dateendmonth'), GETPOSTINT('dateendday'), GETPOSTINT('dateendyear'));
77
78$id = GETPOST('id');
79
80$project = new Project($db);
81$resultproject = $project->fetch($id);
82if ($resultproject < 0) {
83 $error++;
84 $errmsg .= $project->error;
85}
86
87// Security check
88$securekeyreceived = GETPOST('securekey', 'alpha');
89$securekeytocompare = dol_hash(getDolGlobalString('EVENTORGANIZATION_SECUREKEY') . 'conferenceorbooth'.$id, 'md5');
90
91if ($securekeytocompare != $securekeyreceived) {
92 print $langs->trans('MissingOrBadSecureKey');
93 exit;
94}
95
96// Load translation files
97$langs->loadLangs(array("main", "companies", "install", "other", "eventorganization"));
98
99// Initialize a technical object to manage hooks of page. Note that conf->hooks_modules contains an array of hook context
100$hookmanager->initHooks(array('publicnewmembercard', 'globalcard'));
101
102$extrafields = new ExtraFields($db);
103
104$user->loadDefaultValues();
105
106$cactioncomm = new CActionComm($db);
107$arrayofconfboothtype = $cactioncomm->liste_array('', 'id', '', 0, "module='conference@eventorganization'");
108
109// Security check
110if (empty($conf->eventorganization->enabled)) {
111 httponly_accessforbidden('Module Event organization not enabled');
112}
113
114
126function llxHeaderVierge($title, $head = "", $disablejs = 0, $disablehead = 0, $arrayofjs = [], $arrayofcss = [])
127{
128 global $conf, $langs, $mysoc;
129
130 top_htmlhead($head, $title, $disablejs, $disablehead, $arrayofjs, $arrayofcss); // Show html headers
131
132 print '<body id="mainbody" class="publicnewmemberform">';
133
134 // Define urllogo
135 $urllogo = DOL_URL_ROOT.'/theme/common/login_logo.png';
136
137 if (!empty($mysoc->logo_small) && is_readable($conf->mycompany->dir_output.'/logos/thumbs/'.$mysoc->logo_small)) {
138 $urllogo = DOL_URL_ROOT.'/viewimage.php?cache=1&amp;modulepart=mycompany&amp;file='.urlencode('logos/thumbs/'.$mysoc->logo_small);
139 } elseif (!empty($mysoc->logo) && is_readable($conf->mycompany->dir_output.'/logos/'.$mysoc->logo)) {
140 $urllogo = DOL_URL_ROOT.'/viewimage.php?cache=1&amp;modulepart=mycompany&amp;file='.urlencode('logos/'.$mysoc->logo);
141 } elseif (is_readable(DOL_DOCUMENT_ROOT.'/theme/dolibarr_logo.svg')) {
142 $urllogo = DOL_URL_ROOT.'/theme/dolibarr_logo.svg';
143 }
144
145 print '<div class="center">';
146
147 // Output html code for logo
148 if ($urllogo) {
149 print '<div class="backgreypublicpayment">';
150 print '<div class="logopublicpayment">';
151 print '<img id="dolpaymentlogo" src="'.$urllogo.'"';
152 print '>';
153 print '</div>';
154 if (!getDolGlobalString('MAIN_HIDE_POWERED_BY')) {
155 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>';
156 }
157 print '</div>';
158 }
159
160 if (getDolGlobalString('PROJECT_IMAGE_PUBLIC_SUGGEST_CONFERENCE')) {
161 print '<div class="backimagepublicsuggestconference">';
162 print '<img id="idPROJECT_IMAGE_PUBLIC_SUGGEST_CONFERENCE" src="' . getDolGlobalString('PROJECT_IMAGE_PUBLIC_SUGGEST_CONFERENCE').'">';
163 print '</div>';
164 }
165
166 print '</div>';
167
168 print '<div class="divmainbodylarge">';
169}
170
177{
178 print '</div>';
179
180 printCommonFooter('public');
181
182 print "</body>\n";
183 print "</html>\n";
184}
185
186
187
188/*
189 * Actions
190 */
191
192$parameters = array();
193// Note that $action and $object may have been modified by some hooks
194$reshook = $hookmanager->executeHooks('doActions', $parameters, $project, $action);
195if ($reshook < 0) {
196 setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
197}
198
199// Action called when page is submitted
200if (empty($reshook) && $action == 'add') { // Test on permission not required here. This is an anonymous public ssubmission. Check is done on the secureket + mitigation.
201 $error = 0;
202
203 $urlback = '';
204
205 $db->begin();
206
207 if (!GETPOST("lastname")) {
208 $error++;
209 $errmsg .= $langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Lastname"))."<br>\n";
210 }
211 if (!GETPOST("firstname")) {
212 $error++;
213 $errmsg .= $langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Firstname"))."<br>\n";
214 }
215 if (!GETPOST("email")) {
216 $error++;
217 $errmsg .= $langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Email"))."<br>\n";
218 }
219 if (!GETPOST("societe")) {
220 $error++;
221 $errmsg .= $langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Societe"))."<br>\n";
222 }
223 if (!GETPOST("label")) {
224 $error++;
225 $errmsg .= $langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Label"))."<br>\n";
226 }
227 if (!GETPOST("note")) {
228 $error++;
229 $errmsg .= $langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Note"))."<br>\n";
230 }
231 if (GETPOST("email") && !isValidEmail(GETPOST("email"))) {
232 $error++;
233 $langs->load("errors");
234 $errmsg .= $langs->trans("ErrorBadEMail", GETPOST("email"))."<br>\n";
235 }
236
237 if (!$error) {
238 // Getting the thirdparty or creating it
239 $thirdparty = new Societe($db);
240 $resultfetchthirdparty = $thirdparty->fetch(0, $societe);
241
242 if ($resultfetchthirdparty < 0) {
243 // If an error was found
244 $error++;
245 $errmsg .= $thirdparty->error;
246 $errors = array_merge($errors, $thirdparty->errors);
247 } elseif ($resultfetchthirdparty == 0) { // No thirdparty found + a payment is expected
248 // Creation of a new thirdparty
249 $genericcompanyname = 'Unknown company';
250
251 if (!empty($societe)) {
252 $thirdparty->name = $societe;
253 } else {
254 $thirdparty->name = $genericcompanyname;
255 }
256 $thirdparty->address = GETPOST("address");
257 $thirdparty->zip = GETPOST("zipcode");
258 $thirdparty->town = GETPOST("town");
259 $thirdparty->client = $thirdparty::PROSPECT;
260 $thirdparty->fournisseur = 0;
261 $thirdparty->country_id = GETPOSTINT("country_id");
262 $thirdparty->state_id = GETPOSTINT("state_id");
263 $thirdparty->email = ($emailcompany ? $emailcompany : $email);
264
265 // Load object modCodeTiers
266 $module = getDolGlobalString('SOCIETE_CODECLIENT_ADDON', 'mod_codeclient_leopard');
267 if (substr($module, 0, 15) == 'mod_codeclient_' && substr($module, -3) == 'php') {
268 $module = substr($module, 0, dol_strlen($module) - 4);
269 }
270 $dirsociete = array_merge(array('/core/modules/societe/'), $conf->modules_parts['societe']);
271 foreach ($dirsociete as $dirroot) {
272 $res = dol_include_once($dirroot.$module.'.php');
273 if ($res) {
274 break;
275 }
276 }
277 $modCodeClient = new $module($db);
278 '@phan-var-force ModeleThirdPartyCode $modCodeClient';
279
280 if (empty($tmpcode) && !empty($modCodeClient->code_auto)) {
281 $tmpcode = $modCodeClient->getNextValue($thirdparty, 0);
282 }
283 $thirdparty->code_client = $tmpcode;
284 $readythirdparty = $thirdparty->create($user);
285 if ($readythirdparty < 0) {
286 $error++;
287 $errmsg .= $thirdparty->error;
288 $errors = array_merge($errors, $thirdparty->errors);
289 } else {
290 $thirdparty->country_code = getCountry($thirdparty->country_id, '2', $db, $langs);
291 $thirdparty->country = getCountry($thirdparty->country_code, '', $db, $langs);
292 }
293 }
294 // From there we have a thirdparty, now looking for the contact
295 if (!$error) {
296 $contact = new Contact($db);
297 $resultcontact = $contact->fetch(0, null, '', $email);
298 if ($resultcontact <= 0) {
299 // Need to create a contact
300 $contact->socid = $thirdparty->id;
301 $contact->lastname = (string) GETPOST("lastname", 'alpha');
302 $contact->firstname = (string) GETPOST("firstname", 'alpha');
303 $contact->address = (string) GETPOST("address", 'alpha');
304 $contact->zip = (string) GETPOST("zipcode", 'alpha');
305 $contact->town = (string) GETPOST("town", 'alpha');
306 $contact->country_id = GETPOSTINT("country_id");
307 $contact->state_id = GETPOSTINT("state_id");
308 $contact->email = $email;
309 $contact->statut = 1; //Default status to Actif
310 $resultcreatecontact = $contact->create($user);
311 if ($resultcreatecontact < 0) {
312 $error++;
313 $errmsg .= $contact->error;
314 }
315 }
316 }
317
318 if (!$error) {
319 // Adding supplier tag and tag from setup to thirdparty
320 $category = new Categorie($db);
321
322 $resultcategory = $category->fetch(getDolGlobalString('EVENTORGANIZATION_CATEG_THIRDPARTY_CONF'));
323
324 if ($resultcategory <= 0) {
325 $error++;
326 $errmsg .= $category->error;
327 } else {
328 $resultsetcategory = $thirdparty->setCategoriesCommon(array($category->id), Categorie::TYPE_CUSTOMER, false);
329 if ($resultsetcategory < 0) {
330 $error++;
331 $errmsg .= $thirdparty->error;
332 } else {
333 $thirdparty->fournisseur = 1;
334
335 // Load object modCodeFournisseur
336 $module = getDolGlobalString('SOCIETE_CODECLIENT_ADDON', 'mod_codeclient_leopard');
337 if (substr($module, 0, 15) == 'mod_codeclient_' && substr($module, -3) == 'php') {
338 $module = substr($module, 0, dol_strlen($module) - 4);
339 }
340 $dirsociete = array_merge(array('/core/modules/societe/'), $conf->modules_parts['societe']);
341 foreach ($dirsociete as $dirroot) {
342 $res = dol_include_once($dirroot.$module.'.php');
343 if ($res) {
344 break;
345 }
346 }
347 $modCodeFournisseur = new $module($db);
348 '@phan-var-force ModeleThirdPartyCode $modCodeFournisseur';
349
350 if (empty($tmpcode) && !empty($modCodeFournisseur->code_auto)) {
351 $tmpcode = $modCodeFournisseur->getNextValue($thirdparty, 1);
352 }
353 $thirdparty->code_fournisseur = $tmpcode;
354
355 $res = $thirdparty->update(0, $user, 1, 1, 1);
356
357 if ($res <= 0) {
358 $error++;
359 }
360 }
361 }
362 }
363
364 if (!$error) {
365 // We have the contact and the thirdparty
366 $conforbooth = new ConferenceOrBooth($db);
367 $conforbooth->label = $label;
368 $conforbooth->fk_soc = $thirdparty->id;
369 $conforbooth->fk_project = $project->id;
370 $conforbooth->note = $note;
371 $conforbooth->fk_action = $eventtype;
372 $conforbooth->datep = $datestart;
373 $conforbooth->datep2 = $dateend;
374 $conforbooth->datec = dol_now();
375 $conforbooth->tms = dol_now();
376 $conforbooth->firstname = $contact->firstname;
377 $conforbooth->lastname = $contact->lastname;
378 $conforbooth->ip = getUserRemoteIP();
379
380 $nb_post_max = getDolGlobalInt("MAIN_SECURITY_MAX_POST_ON_PUBLIC_PAGES_BY_IP_ADDRESS", 200);
381 $now = dol_now();
382 $minmonthpost = dol_time_plus_duree($now, -1, "m");
383
384 // Calculate nb of post for IP
385 $nb_post_ip = 0;
386 if ($nb_post_max > 0) { // Calculate only if there is a limit to check
387 $sql = "SELECT COUNT(ref) as nb_confs";
388 $sql .= " FROM ".MAIN_DB_PREFIX."actioncomm";
389 $sql .= " WHERE ip = '".$db->escape($conforbooth->ip)."'";
390 $sql .= " AND datec > '".$db->idate($minmonthpost)."'";
391 $resql = $db->query($sql);
392 if ($resql) {
393 $num = $db->num_rows($resql);
394 $i = 0;
395 while ($i < $num) {
396 $i++;
397 $obj = $db->fetch_object($resql);
398 $nb_post_ip = $obj->nb_confs;
399 }
400 }
401 }
402
403 $resultconforbooth = 0;
404
405 if ($nb_post_max > 0 && $nb_post_ip >= $nb_post_max) {
406 $error++;
407 $errmsg .= $langs->trans("AlreadyTooMuchPostOnThisIPAdress");
408 array_push($conforbooth->errors, $langs->trans("AlreadyTooMuchPostOnThisIPAdress"));
409 setEventMessage($errmsg, 'errors');
410 } else {
411 $resultconforbooth = $conforbooth->create($user);
412 }
413 if ($resultconforbooth <= 0) {
414 $error++;
415 $errmsg .= $conforbooth->error;
416 } else {
417 // Adding the contact to the project
418 $resultaddcontact = $conforbooth->add_contact($contact->id, 'SPEAKER');
419 if ($resultaddcontact < 0) {
420 $error++;
421 $errmsg .= $conforbooth->error;
422 } else {
423 $conforbooth->status = ConferenceOrBooth::STATUS_SUGGESTED;
424 $conforbooth->update($user);
425
426 // Sending mail
427 require_once DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php';
428 include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php';
429 $formmail = new FormMail($db);
430 // Set output language
431 $outputlangs = new Translate('', $conf);
432 $outputlangs->setDefaultLang(empty($thirdparty->default_lang) ? $mysoc->default_lang : $thirdparty->default_lang);
433 // Load traductions files required by page
434 $outputlangs->loadLangs(array("main", "members", "eventorganization"));
435 // Get email content from template
436 $arraydefaultmessage = null;
437
438 $labeltouse = getDolGlobalString('EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF');
439 if (!empty($labeltouse)) {
440 $arraydefaultmessage = $formmail->getEMailTemplate($db, 'conferenceorbooth', $user, $outputlangs, $labeltouse, 1, '');
441 }
442
443 $subject = '';
444 $msg = '';
445 if (!empty($labeltouse) && is_object($arraydefaultmessage) && $arraydefaultmessage->id > 0) {
446 $subject = $arraydefaultmessage->topic;
447 $msg = $arraydefaultmessage->content;
448 }
449
450 $substitutionarray = getCommonSubstitutionArray($outputlangs, 0, null, $thirdparty);
451 complete_substitutions_array($substitutionarray, $outputlangs, $project);
452
453 $subjecttosend = make_substitutions($subject, $substitutionarray, $outputlangs);
454 $texttosend = make_substitutions($msg, $substitutionarray, $outputlangs);
455
456 $sendto = $thirdparty->email;
457 $from = getDolGlobalString('MAILING_EMAIL_FROM');
458 $urlback = $_SERVER["REQUEST_URI"];
459 $trackid = 'proj'.$project->id;
460
461 $ishtml = dol_textishtml($texttosend); // May contain urls
462
463 $mailfile = new CMailFile($subjecttosend, $sendto, $from, $texttosend, array(), array(), array(), '', '', 0, $ishtml ? 1 : 0, '', '', $trackid);
464
465 $result = $mailfile->sendfile();
466 if ($result) {
467 dol_syslog("EMail sent to ".$sendto, LOG_DEBUG, 0, '_payment');
468 } else {
469 dol_syslog("Failed to send EMail to ".$sendto, LOG_ERR, 0, '_payment');
470 }
471 }
472 }
473 }
474 }
475
476 if (!$error) {
477 $db->commit();
478 $securekeyurl = dol_hash(getDolGlobalString('EVENTORGANIZATION_SECUREKEY') . 'conferenceorbooth'.$id, '2');
479 $redirection = $dolibarr_main_url_root.'/public/eventorganization/subscriptionok.php?id='.((int) $id).'&securekey='.urlencode($securekeyurl);
480 header("Location: ".$redirection);
481 exit;
482 } else {
483 $db->rollback();
484 }
485}
486
487
488/*
489 * View
490 */
491
492$form = new Form($db);
493$formcompany = new FormCompany($db);
494
495llxHeaderVierge($langs->trans("NewSuggestionOfConference"));
496
497
498print '<div align="center">';
499print '<div id="divsubscribe">';
500
501print '<br>';
502
503// Sub banner
504print '<div class="center subscriptionformbanner subbanner justify margintoponly paddingtop marginbottomonly padingbottom">';
505print load_fiche_titre($langs->trans("NewSuggestionOfConference"), '', '', 0, '', 'center');
506// Welcome message
507print '<span class="opacitymedium">'.$langs->trans("EvntOrgRegistrationWelcomeMessage").'</span>';
508print '<br>';
509// Title
510print '<span class="eventlabel large">'.dol_escape_htmltag($project->title . ' '. $project->label).'</span><br>';
511print '</div>';
512
513// Help text
514print '<div class="justify subscriptionformhelptext">';
515
516if ($project->date_start_event || $project->date_end_event) {
517 print '<br><span class="fa fa-calendar pictofixedwidth opacitymedium"></span>';
518}
519if ($project->date_start_event) {
520 $format = 'day';
521 $tmparray = dol_getdate($project->date_start_event, false, '');
522 if ($tmparray['hours'] || $tmparray['minutes'] || $tmparray['minutes']) {
523 $format = 'dayhour';
524 }
525 print dol_print_date($project->date_start_event, $format);
526}
527if ($project->date_start_event && $project->date_end_event) {
528 print ' - ';
529}
530if ($project->date_end_event) {
531 $format = 'day';
532 $tmparray = dol_getdate($project->date_end_event, false, '');
533 if ($tmparray['hours'] || $tmparray['minutes'] || $tmparray['minutes']) {
534 $format = 'dayhour';
535 }
536 print dol_print_date($project->date_end_event, $format);
537}
538if ($project->date_start_event || $project->date_end_event) {
539 print '<br>';
540}
541if ($project->location) {
542 print '<span class="fa fa-map-marked-alt pictofixedwidth opacitymedium"></span>'.dol_escape_htmltag($project->location).'<br>';
543}
544if ($project->note_public) {
545 print '<br><!-- note public --><span class="opacitymedium">'.dol_htmlentitiesbr($project->note_public).'</span><br>';
546}
547
548print '</div>';
549
550print '<br>';
551
552
553dol_htmloutput_errors($errmsg, $errors);
554
555// Print form
556print '<form action="'.$_SERVER["PHP_SELF"].'" method="POST" name="newmember">'."\n";
557print '<input type="hidden" name="token" value="'.newToken().'" / >';
558print '<input type="hidden" name="entity" value="'.$entity.'" />';
559print '<input type="hidden" name="action" value="add" />';
560print '<input type="hidden" name="id" value="'.$id.'" />';
561print '<input type="hidden" name="securekey" value="'.$securekeyreceived.'" />';
562
563print '<br><span class="opacitymedium">'.$langs->trans("FieldsWithAreMandatory", '*').'</span><br>';
564//print $langs->trans("FieldsWithIsForPublic",'**').'<br>';
565
566print dol_get_fiche_head();
567
568print '<script type="text/javascript">
569jQuery(document).ready(function () {
570 jQuery(document).ready(function () {
571 jQuery("#selectcountry_id").change(function() {
572 document.newmember.action.value="create";
573 document.newmember.submit();
574 });
575 });
576});
577</script>';
578
579print '<table class="border" summary="form to subscribe" id="tablesubscribe">'."\n";
580
581// Last Name
582print '<tr><td><label for="lastname">'.$langs->trans("Lastname").'<span class="star">*</span></label></td>';
583print '<td colspan="3"><input name="lastname" id="lastname" type="text" class="maxwidth100onsmartphone" maxlength="80" value="'.dol_escape_htmltag(GETPOST("lastname", 'alpha') ? GETPOST("lastname", 'alpha') : $object->lastname).'" autofocus="autofocus"></td>';
584print '</tr>';
585// First Name
586print '<tr><td><label for="firstname">'.$langs->trans("Firstname").'<span class="star">*</span></label></td>';
587print '<td colspan="3"><input name="firstname" id="firstname" type="text" class="maxwidth100onsmartphone" maxlength="80" value="'.dol_escape_htmltag(GETPOST("firstname", 'alpha') ? GETPOST("firstname", 'alpha') : $object->firstname).'" autofocus="autofocus"></td>';
588print '</tr>';
589// Email
590print '<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')).'"></td></tr>'."\n";
591// Company
592print '<tr id="trcompany" class="trcompany"><td>'.$langs->trans("Company").'<span class="star">*</span>';
593print ' </td><td><input type="text" name="societe" class="minwidth150" value="'.dol_escape_htmltag(GETPOST('societe')).'"></td></tr>'."\n";
594// Address
595print '<tr><td>'.$langs->trans("Address").'</td><td>'."\n";
596print '<textarea name="address" id="address" wrap="soft" class="quatrevingtpercent" rows="'.ROWS_3.'">'.dol_escape_htmltag(GETPOST('address', 'restricthtml'), 0, 1).'</textarea></td></tr>'."\n";
597// Zip / Town
598print '<tr><td>'.$langs->trans('Zip').' / '.$langs->trans('Town').'</td><td>';
599print $formcompany->select_ziptown(GETPOST('zipcode'), 'zipcode', array('town', 'selectcountry_id', 'state_id'), 6, 1);
600print ' / ';
601print $formcompany->select_ziptown(GETPOST('town'), 'town', array('zipcode', 'selectcountry_id', 'state_id'), 0, 1);
602print '</td></tr>';
603// Country
604print '<tr><td>'.$langs->trans('Country').'</td><td>';
605$country_id = GETPOST('country_id');
606if (!$country_id && getDolGlobalString('MEMBER_NEWFORM_FORCECOUNTRYCODE')) {
607 $country_id = getCountry($conf->global->MEMBER_NEWFORM_FORCECOUNTRYCODE, '2', $db, $langs);
608}
609if (!$country_id && !empty($conf->geoipmaxmind->enabled)) {
610 $country_code = dol_user_country();
611 //print $country_code;
612 if ($country_code) {
613 $new_country_id = getCountry($country_code, '3', $db, $langs);
614 //print 'xxx'.$country_code.' - '.$new_country_id;
615 if ($new_country_id) {
616 $country_id = $new_country_id;
617 }
618 }
619}
620$country_code = getCountry($country_id, '2', $db, $langs);
621print $form->select_country($country_id, 'country_id');
622print '</td></tr>';
623// State
624if (!getDolGlobalString('SOCIETE_DISABLE_STATE')) {
625 print '<tr><td>'.$langs->trans('State').'</td><td>';
626 if ($country_code) {
627 print $formcompany->select_state(GETPOST("state_id"), $country_code);
628 } else {
629 print '';
630 }
631 print '</td></tr>';
632}
633// Type of event
634print '<tr><td>'.$langs->trans("Format").'<span class="star">*</span></td>'."\n";
635print '<td>'.Form::selectarray('eventtype', $arrayofconfboothtype, $eventtype, 1).'</td>';
636// Label
637print '<tr><td>'.$langs->trans("LabelOfconference").'<span class="star">*</span></td>'."\n";
638print '</td><td><input type="text" name="label" class="minwidth300" value="'.dol_escape_htmltag(GETPOST('label')).'"></td></tr>'."\n";
639// Note
640print '<tr><td>'.$langs->trans("Description").'<span class="star">*</span></td>'."\n";
641print '<td><textarea name="note" id="note" wrap="soft" class="quatrevingtpercent" rows="'.ROWS_4.'">'.dol_escape_htmltag(GETPOST('note', 'restricthtml'), 0, 1).'</textarea></td></tr>'."\n";
642
643print "</table>\n";
644
645print dol_get_fiche_end();
646
647
648// Show all action buttons
649print '<div class="center">';
650print '<br>';
651print '<input type="submit" value="'.$langs->trans("SuggestConference").'" name="suggestconference" id="suggestconference" class="button">';
652print '<br><br>';
653
654
655
656
657print "</form>\n";
658print "<br>";
659print '</div></div>';
660
661
663
664$db->close();
$id
Definition account.php:39
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
Definition card.php:58
Class to manage different types of events.
Class to send emails (with attachments or not) Usage: $mailfile = new CMailFile($subject,...
Class to manage categories.
Class for ConferenceOrBooth.
Class to manage contact/addresses.
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.
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
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...
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_strlen($string, $stringencoding='UTF-8')
Make a strlen call.
dol_now($mode='auto')
Return date for now.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
dol_print_date($time, $format='', $tzoutput='auto', $outputlangs=null, $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
if(!function_exists( 'dol_getprefix')) dol_include_once($relpath, $classname='')
Make an include_once using default root and alternate root if it fails.
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...
dol_textishtml($msg, $option=0)
Return if a text is a html content.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
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_getdate($timestamp, $fast=false, $forcetimezone='')
Return an array with locale date info.
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.
dol_hash($chain, $type='0', $nosalt=0)
Returns a hash (non reversible encryption) of a string.
if(empty( $conf->eventorganization->enabled)) llxHeaderVierge($title, $head="", $disablejs=0, $disablehead=0, $arrayofjs=[], $arrayofcss=[])
Show header for new member.
llxFooterVierge()
Show footer for new member.