dolibarr 21.0.0-beta
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
71// Init vars
72$errmsg = '';
73$num = 0;
74$error = 0;
75$backtopage = GETPOST('backtopage', 'alpha');
76$action = GETPOST('action', 'aZ09');
77
78$eventtype = GETPOSTINT("eventtype");
79$email = GETPOST("email");
80$societe = GETPOST("societe");
81$label = GETPOST("label");
82$note = GETPOST("note");
83$datestart = dol_mktime(0, 0, 0, GETPOSTINT('datestartmonth'), GETPOSTINT('datestartday'), GETPOSTINT('datestartyear'));
84$dateend = dol_mktime(23, 59, 59, GETPOSTINT('dateendmonth'), GETPOSTINT('dateendday'), GETPOSTINT('dateendyear'));
85
86$id = GETPOST('id');
87
88$project = new Project($db);
89$resultproject = $project->fetch($id);
90if ($resultproject < 0) {
91 $error++;
92 $errmsg .= $project->error;
93}
94
95// Security check
96$securekeyreceived = GETPOST('securekey', 'alpha');
97$securekeytocompare = dol_hash(getDolGlobalString('EVENTORGANIZATION_SECUREKEY') . 'conferenceorbooth'.$id, 'md5');
98
99if ($securekeytocompare != $securekeyreceived) {
100 print $langs->trans('MissingOrBadSecureKey');
101 exit;
102}
103
104// Load translation files
105$langs->loadLangs(array("main", "companies", "install", "other", "eventorganization"));
106
107// Initialize a technical object to manage hooks of page. Note that conf->hooks_modules contains an array of hook context
108$hookmanager->initHooks(array('publicnewmembercard', 'globalcard'));
109
110$extrafields = new ExtraFields($db);
111
112$user->loadDefaultValues();
113
114$cactioncomm = new CActionComm($db);
115$arrayofconfboothtype = $cactioncomm->liste_array('', 'id', '', 0, "module='conference@eventorganization'");
116if ($arrayofconfboothtype == -1) {
117 $arrayofconfboothtype = [];
118}
119
120// Security check
121if (empty($conf->eventorganization->enabled)) {
122 httponly_accessforbidden('Module Event organization not enabled');
123}
124
125
137function llxHeaderVierge($title, $head = "", $disablejs = 0, $disablehead = 0, $arrayofjs = [], $arrayofcss = [])
138{
139 global $conf, $langs, $mysoc;
140
141 top_htmlhead($head, $title, $disablejs, $disablehead, $arrayofjs, $arrayofcss); // Show html headers
142
143 print '<body id="mainbody" class="publicnewmemberform">';
144
145 // Define urllogo
146 $urllogo = DOL_URL_ROOT.'/theme/common/login_logo.png';
147
148 if (!empty($mysoc->logo_small) && is_readable($conf->mycompany->dir_output.'/logos/thumbs/'.$mysoc->logo_small)) {
149 $urllogo = DOL_URL_ROOT.'/viewimage.php?cache=1&amp;modulepart=mycompany&amp;file='.urlencode('logos/thumbs/'.$mysoc->logo_small);
150 } elseif (!empty($mysoc->logo) && is_readable($conf->mycompany->dir_output.'/logos/'.$mysoc->logo)) {
151 $urllogo = DOL_URL_ROOT.'/viewimage.php?cache=1&amp;modulepart=mycompany&amp;file='.urlencode('logos/'.$mysoc->logo);
152 } elseif (is_readable(DOL_DOCUMENT_ROOT.'/theme/dolibarr_logo.svg')) {
153 $urllogo = DOL_URL_ROOT.'/theme/dolibarr_logo.svg';
154 }
155
156 print '<div class="center">';
157
158 // Output html code for logo
159 if ($urllogo) {
160 print '<div class="backgreypublicpayment">';
161 print '<div class="logopublicpayment">';
162 print '<img id="dolpaymentlogo" src="'.$urllogo.'"';
163 print '>';
164 print '</div>';
165 if (!getDolGlobalString('MAIN_HIDE_POWERED_BY')) {
166 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>';
167 }
168 print '</div>';
169 }
170
171 if (getDolGlobalString('PROJECT_IMAGE_PUBLIC_SUGGEST_CONFERENCE')) {
172 print '<div class="backimagepublicsuggestconference">';
173 print '<img id="idPROJECT_IMAGE_PUBLIC_SUGGEST_CONFERENCE" src="' . getDolGlobalString('PROJECT_IMAGE_PUBLIC_SUGGEST_CONFERENCE').'">';
174 print '</div>';
175 }
176
177 print '</div>';
178
179 print '<div class="divmainbodylarge">';
180}
181
188{
189 print '</div>';
190
191 printCommonFooter('public');
192
193 print "</body>\n";
194 print "</html>\n";
195}
196
197
198
199/*
200 * Actions
201 */
202
203$parameters = array();
204// Note that $action and $object may have been modified by some hooks
205$reshook = $hookmanager->executeHooks('doActions', $parameters, $project, $action);
206if ($reshook < 0) {
207 setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
208}
209
210// Action called when page is submitted
211if (empty($reshook) && $action == 'add') { // Test on permission not required here. This is an anonymous public ssubmission. Check is done on the secureket + mitigation.
212 $error = 0;
213
214 $urlback = '';
215
216 $db->begin();
217
218 if (!GETPOST("lastname")) {
219 $error++;
220 $errmsg .= $langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Lastname"))."<br>\n";
221 }
222 if (!GETPOST("firstname")) {
223 $error++;
224 $errmsg .= $langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Firstname"))."<br>\n";
225 }
226 if (!GETPOST("email")) {
227 $error++;
228 $errmsg .= $langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Email"))."<br>\n";
229 }
230 if (!GETPOST("societe")) {
231 $error++;
232 $errmsg .= $langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Societe"))."<br>\n";
233 }
234 if (!GETPOST("label")) {
235 $error++;
236 $errmsg .= $langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Label"))."<br>\n";
237 }
238 if (!GETPOST("note")) {
239 $error++;
240 $errmsg .= $langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Note"))."<br>\n";
241 }
242 if (GETPOST("email") && !isValidEmail(GETPOST("email"))) {
243 $error++;
244 $langs->load("errors");
245 $errmsg .= $langs->trans("ErrorBadEMail", GETPOST("email"))."<br>\n";
246 }
247
248 if (!$error) {
249 // Getting the thirdparty or creating it
250 $thirdparty = new Societe($db);
251 $resultfetchthirdparty = $thirdparty->fetch(0, $societe);
252
253 if ($resultfetchthirdparty < 0) {
254 // If an error was found
255 $error++;
256 $errmsg .= $thirdparty->error;
257 $errors = array_merge($errors, $thirdparty->errors);
258 } elseif ($resultfetchthirdparty == 0) { // No thirdparty found + a payment is expected
259 // Creation of a new thirdparty
260 $genericcompanyname = 'Unknown company';
261
262 if (!empty($societe)) {
263 $thirdparty->name = $societe;
264 } else {
265 $thirdparty->name = $genericcompanyname;
266 }
267 $thirdparty->address = GETPOST("address");
268 $thirdparty->zip = GETPOST("zipcode");
269 $thirdparty->town = GETPOST("town");
270 $thirdparty->client = $thirdparty::PROSPECT;
271 $thirdparty->fournisseur = 0;
272 $thirdparty->country_id = GETPOSTINT("country_id");
273 $thirdparty->state_id = GETPOSTINT("state_id");
274 $thirdparty->email = ($emailcompany ? $emailcompany : $email);
275
276 // Load object modCodeTiers
277 $module = getDolGlobalString('SOCIETE_CODECLIENT_ADDON', 'mod_codeclient_leopard');
278 if (substr($module, 0, 15) == 'mod_codeclient_' && substr($module, -3) == 'php') {
279 $module = substr($module, 0, dol_strlen($module) - 4);
280 }
281 $dirsociete = array_merge(array('/core/modules/societe/'), $conf->modules_parts['societe']);
282 foreach ($dirsociete as $dirroot) {
283 $res = dol_include_once($dirroot.$module.'.php');
284 if ($res) {
285 break;
286 }
287 }
288 $modCodeClient = new $module($db);
289 '@phan-var-force ModeleThirdPartyCode $modCodeClient';
290
291 if (empty($tmpcode) && !empty($modCodeClient->code_auto)) {
292 $tmpcode = $modCodeClient->getNextValue($thirdparty, 0);
293 }
294 $thirdparty->code_client = $tmpcode;
295 $readythirdparty = $thirdparty->create($user);
296 if ($readythirdparty < 0) {
297 $error++;
298 $errmsg .= $thirdparty->error;
299 $errors = array_merge($errors, $thirdparty->errors);
300 } else {
301 $thirdparty->country_code = getCountry($thirdparty->country_id, '2', $db, $langs);
302 $thirdparty->country = getCountry($thirdparty->country_code, '', $db, $langs);
303 }
304 }
305 // From there we have a thirdparty, now looking for the contact
306 if (!$error) {
307 $contact = new Contact($db);
308 $resultcontact = $contact->fetch(0, null, '', $email);
309 if ($resultcontact <= 0) {
310 // Need to create a contact
311 $contact->socid = $thirdparty->id;
312 $contact->lastname = (string) GETPOST("lastname", 'alpha');
313 $contact->firstname = (string) GETPOST("firstname", 'alpha');
314 $contact->address = (string) GETPOST("address", 'alpha');
315 $contact->zip = (string) GETPOST("zipcode", 'alpha');
316 $contact->town = (string) GETPOST("town", 'alpha');
317 $contact->country_id = GETPOSTINT("country_id");
318 $contact->state_id = GETPOSTINT("state_id");
319 $contact->email = $email;
320 $contact->statut = 1; //Default status to Actif
321 $resultcreatecontact = $contact->create($user);
322 if ($resultcreatecontact < 0) {
323 $error++;
324 $errmsg .= $contact->error;
325 }
326 }
327 }
328
329 if (!$error) {
330 // Adding supplier tag and tag from setup to thirdparty
331 $category = new Categorie($db);
332
333 $resultcategory = $category->fetch(getDolGlobalString('EVENTORGANIZATION_CATEG_THIRDPARTY_CONF'));
334
335 if ($resultcategory <= 0) {
336 $error++;
337 $errmsg .= $category->error;
338 } else {
339 $resultsetcategory = $thirdparty->setCategoriesCommon(array($category->id), Categorie::TYPE_CUSTOMER, false);
340 if ($resultsetcategory < 0) {
341 $error++;
342 $errmsg .= $thirdparty->error;
343 } else {
344 $thirdparty->fournisseur = 1;
345
346 // Load object modCodeFournisseur
347 $module = getDolGlobalString('SOCIETE_CODECLIENT_ADDON', 'mod_codeclient_leopard');
348 if (substr($module, 0, 15) == 'mod_codeclient_' && substr($module, -3) == 'php') {
349 $module = substr($module, 0, dol_strlen($module) - 4);
350 }
351 $dirsociete = array_merge(array('/core/modules/societe/'), $conf->modules_parts['societe']);
352 foreach ($dirsociete as $dirroot) {
353 $res = dol_include_once($dirroot.$module.'.php');
354 if ($res) {
355 break;
356 }
357 }
358 $modCodeFournisseur = new $module($db);
359 '@phan-var-force ModeleThirdPartyCode $modCodeFournisseur';
360
361 if (empty($tmpcode) && !empty($modCodeFournisseur->code_auto)) {
362 $tmpcode = $modCodeFournisseur->getNextValue($thirdparty, 1);
363 }
364 $thirdparty->code_fournisseur = $tmpcode;
365
366 $res = $thirdparty->update(0, $user, 1, 1, 1);
367
368 if ($res <= 0) {
369 $error++;
370 }
371 }
372 }
373 }
374
375 if (!$error) {
376 // We have the contact and the thirdparty
377 $conforbooth = new ConferenceOrBooth($db);
378 $conforbooth->label = $label;
379 $conforbooth->fk_soc = $thirdparty->id;
380 $conforbooth->fk_project = $project->id;
381 $conforbooth->note = $note;
382 $conforbooth->fk_action = $eventtype;
383 $conforbooth->datep = $datestart;
384 $conforbooth->datep2 = $dateend;
385 $conforbooth->datec = dol_now();
386 $conforbooth->tms = dol_now();
387 $conforbooth->firstname = $contact->firstname;
388 $conforbooth->lastname = $contact->lastname;
389 $conforbooth->ip = getUserRemoteIP();
390
391 $nb_post_max = getDolGlobalInt("MAIN_SECURITY_MAX_POST_ON_PUBLIC_PAGES_BY_IP_ADDRESS", 200);
392 $now = dol_now();
393 $minmonthpost = dol_time_plus_duree($now, -1, "m");
394
395 // Calculate nb of post for IP
396 $nb_post_ip = 0;
397 if ($nb_post_max > 0) { // Calculate only if there is a limit to check
398 $sql = "SELECT COUNT(ref) as nb_confs";
399 $sql .= " FROM ".MAIN_DB_PREFIX."actioncomm";
400 $sql .= " WHERE ip = '".$db->escape($conforbooth->ip)."'";
401 $sql .= " AND datec > '".$db->idate($minmonthpost)."'";
402 $resql = $db->query($sql);
403 if ($resql) {
404 $num = $db->num_rows($resql);
405 $i = 0;
406 while ($i < $num) {
407 $i++;
408 $obj = $db->fetch_object($resql);
409 $nb_post_ip = $obj->nb_confs;
410 }
411 }
412 }
413
414 $resultconforbooth = 0;
415
416 if ($nb_post_max > 0 && $nb_post_ip >= $nb_post_max) {
417 $error++;
418 $errmsg .= $langs->trans("AlreadyTooMuchPostOnThisIPAdress");
419 array_push($conforbooth->errors, $langs->trans("AlreadyTooMuchPostOnThisIPAdress"));
420 setEventMessage($errmsg, 'errors');
421 } else {
422 $resultconforbooth = $conforbooth->create($user);
423 }
424 if ($resultconforbooth <= 0) {
425 $error++;
426 $errmsg .= $conforbooth->error;
427 } else {
428 // Adding the contact to the project
429 $resultaddcontact = $conforbooth->add_contact($contact->id, 'SPEAKER');
430 if ($resultaddcontact < 0) {
431 $error++;
432 $errmsg .= $conforbooth->error;
433 } else {
434 $conforbooth->status = ConferenceOrBooth::STATUS_SUGGESTED;
435 $conforbooth->update($user);
436
437 // Sending mail
438 require_once DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php';
439 include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php';
440 $formmail = new FormMail($db);
441 // Set output language
442 $outputlangs = new Translate('', $conf);
443 $outputlangs->setDefaultLang(empty($thirdparty->default_lang) ? $mysoc->default_lang : $thirdparty->default_lang);
444 // Load traductions files required by page
445 $outputlangs->loadLangs(array("main", "members", "eventorganization"));
446 // Get email content from template
447 $arraydefaultmessage = null;
448
449 $labeltouse = getDolGlobalString('EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF');
450 if (!empty($labeltouse)) {
451 $arraydefaultmessage = $formmail->getEMailTemplate($db, 'conferenceorbooth', $user, $outputlangs, $labeltouse, 1, '');
452 }
453
454 $subject = '';
455 $msg = '';
456 if (!empty($labeltouse) && is_object($arraydefaultmessage) && $arraydefaultmessage->id > 0) {
457 $subject = $arraydefaultmessage->topic;
458 $msg = $arraydefaultmessage->content;
459 }
460
461 $substitutionarray = getCommonSubstitutionArray($outputlangs, 0, null, $thirdparty);
462 complete_substitutions_array($substitutionarray, $outputlangs, $project);
463
464 $subjecttosend = make_substitutions($subject, $substitutionarray, $outputlangs);
465 $texttosend = make_substitutions($msg, $substitutionarray, $outputlangs);
466
467 $sendto = $thirdparty->email;
468 $from = getDolGlobalString('MAILING_EMAIL_FROM');
469 $urlback = $_SERVER["REQUEST_URI"];
470 $trackid = 'proj'.$project->id;
471
472 $ishtml = dol_textishtml($texttosend); // May contain urls
473
474 $mailfile = new CMailFile($subjecttosend, $sendto, $from, $texttosend, array(), array(), array(), '', '', 0, $ishtml ? 1 : 0, '', '', $trackid);
475
476 $result = $mailfile->sendfile();
477 if ($result) {
478 dol_syslog("EMail sent to ".$sendto, LOG_DEBUG, 0, '_payment');
479 } else {
480 dol_syslog("Failed to send EMail to ".$sendto, LOG_ERR, 0, '_payment');
481 }
482 }
483 }
484 }
485 }
486
487 if (!$error) {
488 $db->commit();
489 $securekeyurl = dol_hash(getDolGlobalString('EVENTORGANIZATION_SECUREKEY') . 'conferenceorbooth'.$id, '2');
490 $redirection = $dolibarr_main_url_root.'/public/eventorganization/subscriptionok.php?id='.((int) $id).'&securekey='.urlencode($securekeyurl);
491 header("Location: ".$redirection);
492 exit;
493 } else {
494 $db->rollback();
495 }
496}
497
498
499/*
500 * View
501 */
502
503$form = new Form($db);
504$formcompany = new FormCompany($db);
505
506llxHeaderVierge($langs->trans("NewSuggestionOfConference"));
507
508
509print '<div align="center">';
510print '<div id="divsubscribe">';
511
512print '<br>';
513
514// Sub banner
515print '<div class="center subscriptionformbanner subbanner justify margintoponly paddingtop marginbottomonly padingbottom">';
516print load_fiche_titre($langs->trans("NewSuggestionOfConference"), '', '', 0, '', 'center');
517// Welcome message
518print '<span class="opacitymedium">'.$langs->trans("EvntOrgRegistrationWelcomeMessage").'</span>';
519print '<br>';
520// Title
521print '<span class="eventlabel large">'.dol_escape_htmltag($project->title . ' '. $project->label).'</span><br>';
522print '</div>';
523
524// Help text
525print '<div class="justify subscriptionformhelptext">';
526
527if ($project->date_start_event || $project->date_end_event) {
528 print '<br><span class="fa fa-calendar pictofixedwidth opacitymedium"></span>';
529}
530if ($project->date_start_event) {
531 $format = 'day';
532 $tmparray = dol_getdate($project->date_start_event, false, '');
533 if ($tmparray['hours'] || $tmparray['minutes'] || $tmparray['minutes']) {
534 $format = 'dayhour';
535 }
536 print dol_print_date($project->date_start_event, $format);
537}
538if ($project->date_start_event && $project->date_end_event) {
539 print ' - ';
540}
541if ($project->date_end_event) {
542 $format = 'day';
543 $tmparray = dol_getdate($project->date_end_event, false, '');
544 if ($tmparray['hours'] || $tmparray['minutes'] || $tmparray['minutes']) {
545 $format = 'dayhour';
546 }
547 print dol_print_date($project->date_end_event, $format);
548}
549if ($project->date_start_event || $project->date_end_event) {
550 print '<br>';
551}
552if ($project->location) {
553 print '<span class="fa fa-map-marked-alt pictofixedwidth opacitymedium"></span>'.dol_escape_htmltag($project->location).'<br>';
554}
555if ($project->note_public) {
556 print '<br><!-- note public --><span class="opacitymedium">'.dol_htmlentitiesbr($project->note_public).'</span><br>';
557}
558
559print '</div>';
560
561print '<br>';
562
563
564dol_htmloutput_errors($errmsg, $errors);
565
566// Print form
567print '<form action="'.$_SERVER["PHP_SELF"].'" method="POST" name="newmember">'."\n";
568print '<input type="hidden" name="token" value="'.newToken().'" / >';
569print '<input type="hidden" name="entity" value="'.$entity.'" />';
570print '<input type="hidden" name="action" value="add" />';
571print '<input type="hidden" name="id" value="'.$id.'" />';
572print '<input type="hidden" name="securekey" value="'.$securekeyreceived.'" />';
573
574print '<br><span class="opacitymedium">'.$langs->trans("FieldsWithAreMandatory", '*').'</span><br>';
575//print $langs->trans("FieldsWithIsForPublic",'**').'<br>';
576
577print dol_get_fiche_head();
578
579print '<script type="text/javascript">
580jQuery(document).ready(function () {
581 jQuery(document).ready(function () {
582 jQuery("#selectcountry_id").change(function() {
583 document.newmember.action.value="create";
584 document.newmember.submit();
585 });
586 });
587});
588</script>';
589
590print '<table class="border" summary="form to subscribe" id="tablesubscribe">'."\n";
591
592// Last Name
593print '<tr><td><label for="lastname">'.$langs->trans("Lastname").'<span class="star">*</span></label></td>';
594print '<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>';
595print '</tr>';
596// First Name
597print '<tr><td><label for="firstname">'.$langs->trans("Firstname").'<span class="star">*</span></label></td>';
598print '<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>';
599print '</tr>';
600// Email
601print '<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";
602// Company
603print '<tr id="trcompany" class="trcompany"><td>'.$langs->trans("Company").'<span class="star">*</span>';
604print ' </td><td><input type="text" name="societe" class="minwidth150" value="'.dol_escape_htmltag(GETPOST('societe')).'"></td></tr>'."\n";
605// Address
606print '<tr><td>'.$langs->trans("Address").'</td><td>'."\n";
607print '<textarea name="address" id="address" wrap="soft" class="quatrevingtpercent" rows="'.ROWS_3.'">'.dol_escape_htmltag(GETPOST('address', 'restricthtml'), 0, 1).'</textarea></td></tr>'."\n";
608// Zip / Town
609print '<tr><td>'.$langs->trans('Zip').' / '.$langs->trans('Town').'</td><td>';
610print $formcompany->select_ziptown(GETPOST('zipcode'), 'zipcode', array('town', 'selectcountry_id', 'state_id'), 6, 1);
611print ' / ';
612print $formcompany->select_ziptown(GETPOST('town'), 'town', array('zipcode', 'selectcountry_id', 'state_id'), 0, 1);
613print '</td></tr>';
614// Country
615print '<tr><td>'.$langs->trans('Country').'</td><td>';
616$country_id = GETPOST('country_id');
617if (!$country_id && getDolGlobalString('MEMBER_NEWFORM_FORCECOUNTRYCODE')) {
618 $country_id = getCountry($conf->global->MEMBER_NEWFORM_FORCECOUNTRYCODE, '2', $db, $langs);
619}
620if (!$country_id && !empty($conf->geoipmaxmind->enabled)) {
621 $country_code = dol_user_country();
622 //print $country_code;
623 if ($country_code) {
624 $new_country_id = getCountry($country_code, '3', $db, $langs);
625 //print 'xxx'.$country_code.' - '.$new_country_id;
626 if ($new_country_id) {
627 $country_id = $new_country_id;
628 }
629 }
630}
631$country_code = getCountry($country_id, '2', $db, $langs);
632print $form->select_country($country_id, 'country_id');
633print '</td></tr>';
634// State
635if (!getDolGlobalString('SOCIETE_DISABLE_STATE')) {
636 print '<tr><td>'.$langs->trans('State').'</td><td>';
637 if ($country_code) {
638 print $formcompany->select_state(GETPOST("state_id"), $country_code);
639 } else {
640 print '';
641 }
642 print '</td></tr>';
643}
644// Type of event
645print '<tr><td>'.$langs->trans("Format").'<span class="star">*</span></td>'."\n";
646print '<td>'.Form::selectarray('eventtype', $arrayofconfboothtype, $eventtype, 1).'</td>';
647// Label
648print '<tr><td>'.$langs->trans("LabelOfconference").'<span class="star">*</span></td>'."\n";
649print '</td><td><input type="text" name="label" class="minwidth300" value="'.dol_escape_htmltag(GETPOST('label')).'"></td></tr>'."\n";
650// Note
651print '<tr><td>'.$langs->trans("Description").'<span class="star">*</span></td>'."\n";
652print '<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";
653
654print "</table>\n";
655
656print dol_get_fiche_end();
657
658
659// Show all action buttons
660print '<div class="center">';
661print '<br>';
662print '<input type="submit" value="'.$langs->trans("SuggestConference").'" name="suggestconference" id="suggestconference" class="button">';
663print '<br><br>';
664
665
666
667
668print "</form>\n";
669print "<br>";
670print '</div></div>';
671
672
674
675$db->close();
$id
Definition account.php:48
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
Definition card.php:66
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.
global $conf
The following vars must be defined: $type2label $form $conf, $lang, The following vars may also be de...
Definition member.php:79
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($arrayofconfboothtype==-1) 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.