dolibarr  x.y.z
suggestconference.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (C) 2021 Dorian Vabre <dorian.vabre@gmail.com>
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program. If not, see <https://www.gnu.org/licenses/>.
16  */
17 
24 if (!defined('NOLOGIN')) {
25  define("NOLOGIN", 1); // This means this output page does not require to be logged.
26 }
27 if (!defined('NOCSRFCHECK')) {
28  define("NOCSRFCHECK", 1); // We accept to go on this page from external web site.
29 }
30 if (!defined('NOIPCHECK')) {
31  define('NOIPCHECK', '1'); // Do not check IP defined into conf $dolibarr_main_restrict_ip
32 }
33 if (!defined('NOBROWSERNOTIF')) {
34  define('NOBROWSERNOTIF', '1');
35 }
36 
37 
38 // For MultiCompany module.
39 // Do not use GETPOST here, function is not defined and define must be done before including main.inc.php
40 // TODO This should be useless. Because entity must be retrieve from object ref and not from url.
41 $entity = (!empty($_GET['entity']) ? (int) $_GET['entity'] : (!empty($_POST['entity']) ? (int) $_POST['entity'] : 1));
42 if (is_numeric($entity)) {
43  define("DOLENTITY", $entity);
44 }
45 
46 // Load Dolibarr environment
47 require '../../main.inc.php';
48 require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
49 require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
50 require_once DOL_DOCUMENT_ROOT.'/eventorganization/class/conferenceorbooth.class.php';
51 require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
52 require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php';
53 require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php';
54 require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
55 require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/paymentterm.class.php';
56 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
57 require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
58 
59 global $dolibarr_main_url_root;
60 
61 // Init vars
62 $errmsg = '';
63 $num = 0;
64 $error = 0;
65 $backtopage = GETPOST('backtopage', 'alpha');
66 $action = GETPOST('action', 'aZ09');
67 
68 $eventtype = GETPOST("eventtype");
69 $email = GETPOST("email");
70 $societe = GETPOST("societe");
71 $label = GETPOST("label");
72 $note = GETPOST("note");
73 $datestart = GETPOST("datestart");
74 $dateend = GETPOST("dateend");
75 
76 $id = GETPOST('id');
77 
78 $project = new Project($db);
79 $resultproject = $project->fetch($id);
80 if ($resultproject < 0) {
81  $error++;
82  $errmsg .= $project->error;
83 }
84 
85 // Security check
86 $securekeyreceived = GETPOST("securekey");
87 $securekeytocompare = dol_hash($conf->global->EVENTORGANIZATION_SECUREKEY.'conferenceorbooth'.$id, 'md5');
88 
89 if ($securekeytocompare != $securekeyreceived) {
90  print $langs->trans('MissingOrBadSecureKey');
91  exit;
92 }
93 
94 // Load translation files
95 $langs->loadLangs(array("main", "companies", "install", "other", "eventorganization"));
96 
97 // Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context
98 $hookmanager->initHooks(array('publicnewmembercard', 'globalcard'));
99 
100 $extrafields = new ExtraFields($db);
101 
102 $user->loadDefaultValues();
103 
104 $cactioncomm = new CActionComm($db);
105 $arrayofconfboothtype = $cactioncomm->liste_array('', 'id', '', 0, "module='conference@eventorganization'");
106 
107 // Security check
108 if (empty($conf->eventorganization->enabled)) {
109  httponly_accessforbidden('Module Event organization not enabled');
110 }
111 
112 
124 function llxHeaderVierge($title, $head = "", $disablejs = 0, $disablehead = 0, $arrayofjs = '', $arrayofcss = '')
125 {
126  global $user, $conf, $langs, $mysoc;
127 
128  top_htmlhead($head, $title, $disablejs, $disablehead, $arrayofjs, $arrayofcss); // Show html headers
129 
130  print '<body id="mainbody" class="publicnewmemberform">';
131 
132  // Define urllogo
133  $urllogo = DOL_URL_ROOT.'/theme/common/login_logo.png';
134 
135  if (!empty($mysoc->logo_small) && is_readable($conf->mycompany->dir_output.'/logos/thumbs/'.$mysoc->logo_small)) {
136  $urllogo = DOL_URL_ROOT.'/viewimage.php?cache=1&amp;modulepart=mycompany&amp;file='.urlencode('logos/thumbs/'.$mysoc->logo_small);
137  } elseif (!empty($mysoc->logo) && is_readable($conf->mycompany->dir_output.'/logos/'.$mysoc->logo)) {
138  $urllogo = DOL_URL_ROOT.'/viewimage.php?cache=1&amp;modulepart=mycompany&amp;file='.urlencode('logos/'.$mysoc->logo);
139  } elseif (is_readable(DOL_DOCUMENT_ROOT.'/theme/dolibarr_logo.svg')) {
140  $urllogo = DOL_URL_ROOT.'/theme/dolibarr_logo.svg';
141  }
142 
143  print '<div class="center">';
144 
145  // Output html code for logo
146  if ($urllogo) {
147  print '<div class="backgreypublicpayment">';
148  print '<div class="logopublicpayment">';
149  print '<img id="dolpaymentlogo" src="'.$urllogo.'"';
150  print '>';
151  print '</div>';
152  if (empty($conf->global->MAIN_HIDE_POWERED_BY)) {
153  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>';
154  }
155  print '</div>';
156  }
157 
158  if (!empty($conf->global->PROJECT_IMAGE_PUBLIC_SUGGEST_CONFERENCE)) {
159  print '<div class="backimagepublicsuggestconference">';
160  print '<img id="idPROJECT_IMAGE_PUBLIC_SUGGEST_CONFERENCE" src="'.$conf->global->PROJECT_IMAGE_PUBLIC_SUGGEST_CONFERENCE.'">';
161  print '</div>';
162  }
163 
164  print '</div>';
165 
166  print '<div class="divmainbodylarge">';
167 }
168 
174 function llxFooterVierge()
175 {
176  print '</div>';
177 
178  printCommonFooter('public');
179 
180  print "</body>\n";
181  print "</html>\n";
182 }
183 
184 
185 
186 /*
187  * Actions
188  */
189 
190 $parameters = array();
191 // Note that $action and $object may have been modified by some hooks
192 $reshook = $hookmanager->executeHooks('doActions', $parameters, $project, $action);
193 if ($reshook < 0) {
194  setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
195 }
196 
197 // Action called when page is submitted
198 if (empty($reshook) && $action == 'add') {
199  $error = 0;
200 
201  $urlback = '';
202 
203  $db->begin();
204 
205  if (!GETPOST("lastname")) {
206  $error++;
207  $errmsg .= $langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Lastname"))."<br>\n";
208  }
209  if (!GETPOST("firstname")) {
210  $error++;
211  $errmsg .= $langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Firstname"))."<br>\n";
212  }
213  if (!GETPOST("email")) {
214  $error++;
215  $errmsg .= $langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Email"))."<br>\n";
216  }
217  if (!GETPOST("societe")) {
218  $error++;
219  $errmsg .= $langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Societe"))."<br>\n";
220  }
221  if (!GETPOST("label")) {
222  $error++;
223  $errmsg .= $langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Label"))."<br>\n";
224  }
225  if (!GETPOST("note")) {
226  $error++;
227  $errmsg .= $langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Note"))."<br>\n";
228  }
229  if (GETPOST("email") && !isValidEmail(GETPOST("email"))) {
230  $error++;
231  $langs->load("errors");
232  $errmsg .= $langs->trans("ErrorBadEMail", GETPOST("email"))."<br>\n";
233  }
234 
235  if (!$error) {
236  // Getting the thirdparty or creating it
237  $thirdparty = new Societe($db);
238  $resultfetchthirdparty = $thirdparty->fetch('', $societe);
239 
240  if ($resultfetchthirdparty<=0) {
241  // Need to create a new one (not found or multiple with the same name)
242  $thirdparty->name = $societe;
243  $thirdparty->address = GETPOST("address");
244  $thirdparty->zip = GETPOST("zipcode");
245  $thirdparty->town = GETPOST("town");
246  $thirdparty->client = 2;
247  $thirdparty->fournisseur = 0;
248  $thirdparty->country_id = GETPOST("country_id", 'int');
249  $thirdparty->state_id = GETPOST("state_id", 'int');
250  $thirdparty->email = $email;
251 
252  // Load object modCodeTiers
253  $module = (!empty($conf->global->SOCIETE_CODECLIENT_ADDON) ? $conf->global->SOCIETE_CODECLIENT_ADDON : 'mod_codeclient_leopard');
254  if (substr($module, 0, 15) == 'mod_codeclient_' && substr($module, -3) == 'php') {
255  $module = substr($module, 0, dol_strlen($module) - 4);
256  }
257  $dirsociete = array_merge(array('/core/modules/societe/'), $conf->modules_parts['societe']);
258  foreach ($dirsociete as $dirroot) {
259  $res = dol_include_once($dirroot.$module.'.php');
260  if ($res) {
261  break;
262  }
263  }
264  $modCodeClient = new $module($db);
265 
266  if (empty($tmpcode) && !empty($modCodeClient->code_auto)) {
267  $tmpcode = $modCodeClient->getNextValue($thirdparty, 0);
268  }
269  $thirdparty->code_client = $tmpcode;
270  $readythirdparty = $thirdparty->create($user);
271  if ($readythirdparty <0) {
272  $error++;
273  $errmsg .= $thirdparty->error;
274  } else {
275  $thirdparty->country_code = getCountry($thirdparty->country_id, 2, $db, $langs);
276  $thirdparty->country = getCountry($thirdparty->country_code, 0, $db, $langs);
277  }
278  }
279  // From there we have a thirdparty, now looking for the contact
280  if (!$error) {
281  $contact = new Contact($db);
282  $resultcontact = $contact->fetch('', '', '', $email);
283  if ($resultcontact<=0) {
284  // Need to create a contact
285  $contact->socid = $thirdparty->id;
286  $contact->lastname = (string) GETPOST("lastname", 'alpha');
287  $contact->firstname = (string) GETPOST("firstname", 'alpha');
288  $contact->address = (string) GETPOST("address", 'alpha');
289  $contact->zip = (string) GETPOST("zipcode", 'alpha');
290  $contact->town = (string) GETPOST("town", 'alpha');
291  $contact->country_id = (int) GETPOST("country_id", 'int');
292  $contact->state_id = (int) GETPOST("state_id", 'int');
293  $contact->email = $email;
294  $contact->statut = 1; //Default status to Actif
295  $resultcreatecontact = $contact->create($user);
296  if ($resultcreatecontact<0) {
297  $error++;
298  $errmsg .= $contact->error;
299  }
300  }
301  }
302 
303  if (!$error) {
304  // Adding supplier tag and tag from setup to thirdparty
305  $category = new Categorie($db);
306 
307  $resultcategory = $category->fetch($conf->global->EVENTORGANIZATION_CATEG_THIRDPARTY_CONF);
308 
309  if ($resultcategory<=0) {
310  $error++;
311  $errmsg .= $category->error;
312  } else {
313  $resultsetcategory = $thirdparty->setCategoriesCommon(array($category->id), CATEGORIE::TYPE_CUSTOMER, false);
314  if ($resultsetcategory < 0) {
315  $error++;
316  $errmsg .= $thirdparty->error;
317  } else {
318  $thirdparty->fournisseur = 1;
319 
320  // Load object modCodeFournisseur
321  $module = (!empty($conf->global->SOCIETE_CODECLIENT_ADDON) ? $conf->global->SOCIETE_CODECLIENT_ADDON : 'mod_codeclient_leopard');
322  if (substr($module, 0, 15) == 'mod_codeclient_' && substr($module, -3) == 'php') {
323  $module = substr($module, 0, dol_strlen($module) - 4);
324  }
325  $dirsociete = array_merge(array('/core/modules/societe/'), $conf->modules_parts['societe']);
326  foreach ($dirsociete as $dirroot) {
327  $res = dol_include_once($dirroot.$module.'.php');
328  if ($res) {
329  break;
330  }
331  }
332  $modCodeFournisseur = new $module;
333  if (empty($tmpcode) && !empty($modCodeFournisseur->code_auto)) {
334  $tmpcode = $modCodeFournisseur->getNextValue($thirdparty, 1);
335  }
336  $thirdparty->code_fournisseur = $tmpcode;
337 
338  $res = $thirdparty->update(0, $user, 1, 1, 1);
339 
340  if ($res <= 0) {
341  $error++;
342  }
343  }
344  }
345  }
346 
347  if (!$error) {
348  // We have the contact and the thirdparty
349  $conforbooth = new ConferenceOrBooth($db);
350  $conforbooth->label = $label;
351  $conforbooth->fk_soc = $thirdparty->id;
352  $conforbooth->fk_project = $project->id;
353  $conforbooth->note = $note;
354  $conforbooth->fk_action = $eventtype;
355  $conforbooth->datep =$datestart;
356  $conforbooth->datep2 = $dateend;
357  $conforbooth->datec = dol_now();
358  $conforbooth->tms = dol_now();
359  $conforbooth->firstname = $contact->firstname;
360  $conforbooth->lastname = $contact->lastname;
361  $conforbooth->ip = getUserRemoteIP();
362 
363  $nb_post_max = getDolGlobalInt("MAIN_SECURITY_MAX_POST_ON_PUBLIC_PAGES_BY_IP_ADDRESS", 200);
364  $now = dol_now();
365  $minmonthpost = dol_time_plus_duree($now, -1, "m");
366 
367  // Calculate nb of post for IP
368  $nb_post_ip = 0;
369  if ($nb_post_max > 0) { // Calculate only if there is a limit to check
370  $sql = "SELECT COUNT(ref) as nb_confs";
371  $sql .= " FROM ".MAIN_DB_PREFIX."actioncomm";
372  $sql .= " WHERE ip = '".$db->escape($conforbooth->ip)."'";
373  $sql .= " AND datec > '".$db->idate($minmonthpost)."'";
374  $resql = $db->query($sql);
375  if ($resql) {
376  $num = $db->num_rows($resql);
377  $i = 0;
378  while ($i < $num) {
379  $i++;
380  $obj = $db->fetch_object($resql);
381  $nb_post_ip = $obj->nb_confs;
382  }
383  }
384  }
385 
386  $resultconforbooth = 0;
387 
388  if ($nb_post_max > 0 && $nb_post_ip >= $nb_post_max) {
389  $error++;
390  $errmsg .= $langs->trans("AlreadyTooMuchPostOnThisIPAdress");
391  array_push($conforbooth->errors, $langs->trans("AlreadyTooMuchPostOnThisIPAdress"));
392  setEventMessage($errmsg, 'errors');
393  } else {
394  $resultconforbooth = $conforbooth->create($user);
395  }
396  if ($resultconforbooth<=0) {
397  $error++;
398  $errmsg .= $conforbooth->error;
399  } else {
400  // Adding the contact to the project
401  $resultaddcontact = $conforbooth->add_contact($contact->id, 'SPEAKER');
402  if ($resultaddcontact<0) {
403  $error++;
404  $errmsg .= $conforbooth->error;
405  } else {
406  $conforbooth->status = ConferenceOrBooth::STATUS_SUGGESTED;
407  $conforbooth->update($user);
408 
409  // Sending mail
410  require_once DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php';
411  include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php';
412  $formmail = new FormMail($db);
413  // Set output language
414  $outputlangs = new Translate('', $conf);
415  $outputlangs->setDefaultLang(empty($thirdparty->default_lang) ? $mysoc->default_lang : $thirdparty->default_lang);
416  // Load traductions files required by page
417  $outputlangs->loadLangs(array("main", "members"));
418  // Get email content from template
419  $arraydefaultmessage = null;
420 
421  $labeltouse = $conf->global->EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF;
422  if (!empty($labeltouse)) {
423  $arraydefaultmessage = $formmail->getEMailTemplate($db, 'conferenceorbooth', $user, $outputlangs, $labeltouse, 1, '');
424  }
425 
426  if (!empty($labeltouse) && is_object($arraydefaultmessage) && $arraydefaultmessage->id > 0) {
427  $subject = $arraydefaultmessage->topic;
428  $msg = $arraydefaultmessage->content;
429  }
430 
431  $substitutionarray = getCommonSubstitutionArray($outputlangs, 0, null, $thirdparty);
432  complete_substitutions_array($substitutionarray, $outputlangs, $object);
433 
434  $subjecttosend = make_substitutions($subject, $substitutionarray, $outputlangs);
435  $texttosend = make_substitutions($msg, $substitutionarray, $outputlangs);
436 
437  $sendto = $thirdparty->email;
438  $from = $conf->global->MAILING_EMAIL_FROM;
439  $urlback = $_SERVER["REQUEST_URI"];
440 
441  $ishtml = dol_textishtml($texttosend); // May contain urls
442 
443  $mailfile = new CMailFile($subjecttosend, $sendto, $from, $texttosend, array(), array(), array(), '', '', 0, $ishtml);
444 
445  $result = $mailfile->sendfile();
446  if ($result) {
447  dol_syslog("EMail sent to ".$sendto, LOG_DEBUG, 0, '_payment');
448  } else {
449  dol_syslog("Failed to send EMail to ".$sendto, LOG_ERR, 0, '_payment');
450  }
451  }
452  }
453  }
454  }
455  if (!$error) {
456  $db->commit();
457  $securekeyurl = dol_hash($conf->global->EVENTORGANIZATION_SECUREKEY.'conferenceorbooth'.$id, 2);
458  $redirection = $dolibarr_main_url_root.'/public/eventorganization/subscriptionok.php?id='.$id.'&securekey='.$securekeyurl;
459  Header("Location: ".$redirection);
460  exit;
461  } else {
462  $db->rollback();
463  }
464 }
465 
466 
467 /*
468  * View
469  */
470 
471 $form = new Form($db);
472 $formcompany = new FormCompany($db);
473 
474 llxHeaderVierge($langs->trans("NewSuggestionOfConference"));
475 
476 print '<br>';
477 
478 // Event summary
479 print '<div class="center">';
480 print '<span class="large">'.$project->title.'</span><br>';
481 print img_picto('', 'calendar', 'class="pictofixedwidth"').$langs->trans("Date").': ';
482 print dol_print_date($project->date_start, 'daytext');
483 if ($project->date_end && $project->date_start != $project->date_end) {
484  print ' - '.dol_print_date($project->date_end, 'daytext');
485 }
486 print '<br><br>'."\n";
487 //print $langs->trans("EvntOrgRegistrationWelcomeMessage")."\n";
488 //print $project->note_public."\n";
489 //print img_picto('', 'map-marker-alt').$langs->trans("Location").': xxxx';
490 print '</div>';
491 
492 
493 print load_fiche_titre($langs->trans("NewSuggestionOfConference"), '', '', 0, 0, 'center');
494 
495 
496 print '<div align="center">';
497 print '<div id="divsubscribe">';
498 print '<div class="center subscriptionformhelptext justify">';
499 
500 dol_htmloutput_errors($errmsg, $errors);
501 
502 // Print form
503 print '<form action="'.$_SERVER["PHP_SELF"].'" method="POST" name="newmember">'."\n";
504 print '<input type="hidden" name="token" value="'.newToken().'" / >';
505 print '<input type="hidden" name="entity" value="'.$entity.'" />';
506 print '<input type="hidden" name="action" value="add" />';
507 print '<input type="hidden" name="id" value="'.$id.'" />';
508 print '<input type="hidden" name="securekey" value="'.$securekeyreceived.'" />';
509 
510 print '<br>';
511 
512 print '<br><span class="opacitymedium">'.$langs->trans("FieldsWithAreMandatory", '*').'</span><br>';
513 //print $langs->trans("FieldsWithIsForPublic",'**').'<br>';
514 
515 print dol_get_fiche_head('');
516 
517 print '<script type="text/javascript">
518 jQuery(document).ready(function () {
519  jQuery(document).ready(function () {
520  jQuery("#selectcountry_id").change(function() {
521  document.newmember.action.value="create";
522  document.newmember.submit();
523  });
524  });
525 });
526 </script>';
527 
528 print '<table class="border" summary="form to subscribe" id="tablesubscribe">'."\n";
529 
530 // Last Name
531 print '<tr><td><label for="lastname">'.$langs->trans("Lastname").'<span style="color: red">*</span></label></td>';
532 print '<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>';
533 print '</tr>';
534 // First Name
535 print '<tr><td><label for="firstname">'.$langs->trans("Firstname").'<span style="color: red">*</span></label></td>';
536 print '<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>';
537 print '</tr>';
538 // Email
539 print '<tr><td>'.$langs->trans("Email").'<span style="color: red">*</span></td><td><input type="text" name="email" maxlength="255" class="minwidth150" value="'.dol_escape_htmltag(GETPOST('email')).'"></td></tr>'."\n";
540 // Company
541 print '<tr id="trcompany" class="trcompany"><td>'.$langs->trans("Company").'<span style="color: red">*</span>';
542 print ' </td><td><input type="text" name="societe" class="minwidth150" value="'.dol_escape_htmltag(GETPOST('societe')).'"></td></tr>'."\n";
543 // Address
544 print '<tr><td>'.$langs->trans("Address").'</td><td>'."\n";
545 print '<textarea name="address" id="address" wrap="soft" class="quatrevingtpercent" rows="'.ROWS_3.'">'.dol_escape_htmltag(GETPOST('address', 'restricthtml'), 0, 1).'</textarea></td></tr>'."\n";
546 // Zip / Town
547 print '<tr><td>'.$langs->trans('Zip').' / '.$langs->trans('Town').'</td><td>';
548 print $formcompany->select_ziptown(GETPOST('zipcode'), 'zipcode', array('town', 'selectcountry_id', 'state_id'), 6, 1);
549 print ' / ';
550 print $formcompany->select_ziptown(GETPOST('town'), 'town', array('zipcode', 'selectcountry_id', 'state_id'), 0, 1);
551 print '</td></tr>';
552 // Country
553 print '<tr><td>'.$langs->trans('Country').'</td><td>';
554 $country_id = GETPOST('country_id');
555 if (!$country_id && !empty($conf->global->MEMBER_NEWFORM_FORCECOUNTRYCODE)) {
556  $country_id = getCountry($conf->global->MEMBER_NEWFORM_FORCECOUNTRYCODE, 2, $db, $langs);
557 }
558 if (!$country_id && !empty($conf->geoipmaxmind->enabled)) {
559  $country_code = dol_user_country();
560  //print $country_code;
561  if ($country_code) {
562  $new_country_id = getCountry($country_code, 3, $db, $langs);
563  //print 'xxx'.$country_code.' - '.$new_country_id;
564  if ($new_country_id) {
565  $country_id = $new_country_id;
566  }
567  }
568 }
569 $country_code = getCountry($country_id, 2, $db, $langs);
570 print $form->select_country($country_id, 'country_id');
571 print '</td></tr>';
572 // State
573 if (empty($conf->global->SOCIETE_DISABLE_STATE)) {
574  print '<tr><td>'.$langs->trans('State').'</td><td>';
575  if ($country_code) {
576  print $formcompany->select_state(GETPOST("state_id"), $country_code);
577  } else {
578  print '';
579  }
580  print '</td></tr>';
581 }
582 // Type of event
583 print '<tr><td>'.$langs->trans("Format").'<span style="color: red">*</span></td>'."\n";
584 print '<td>'.Form::selectarray('eventtype', $arrayofconfboothtype, $eventtype, 1).'</td>';
585 // Label
586 print '<tr><td>'.$langs->trans("LabelOfconference").'<span style="color: red">*</span></td>'."\n";
587 print '</td><td><input type="text" name="label" class="minwidth150" value="'.dol_escape_htmltag(GETPOST('label')).'"></td></tr>'."\n";
588 // Note
589 print '<tr><td>'.$langs->trans("Description").'<span style="color: red">*</span></td>'."\n";
590 print '<td><textarea name="note" id="note" wrap="soft" class="quatrevingtpercent" rows="'.ROWS_3.'">'.dol_escape_htmltag(GETPOST('note', 'restricthtml'), 0, 1).'</textarea></td></tr>'."\n";
591 
592 print "</table>\n";
593 
594 print dol_get_fiche_end();
595 
596 
597 // Show all action buttons
598 print '<div class="center">';
599 print '<br>';
600 print '<input type="submit" value="'.$langs->trans("SuggestConference").'" name="suggestconference" id="suggestconference" class="button">';
601 print '<br><br>';
602 
603 
604 
605 
606 print "</form>\n";
607 print "<br>";
608 print '</div></div>';
609 
610 
612 
613 $db->close();
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.
Classe permettant la generation du formulaire html d'envoi de mail unitaire Usage: $formail = new For...
Class to manage projects.
Class to manage third parties objects (customers, suppliers, prospects...)
Class to manage translations.
getCountry($searchkey, $withcode='', $dbtouse=0, $outputlangs='', $entconv=1, $searchlabel='')
Return country label, code or id from an id, code or label.
if(isModEnabled('facture') &&!empty($user->rights->facture->lire)) if((isModEnabled('fournisseur') &&empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->hasRight("fournisseur", "facture", "lire"))||(isModEnabled('supplier_invoice') && $user->hasRight("supplier_invoice", "lire"))) if(isModEnabled('don') &&!empty($user->rights->don->lire)) if(isModEnabled('tax') &&!empty($user->rights->tax->charges->lire)) if(isModEnabled('facture') &&isModEnabled('commande') && $user->hasRight("commande", "lire") &&empty($conf->global->WORKFLOW_DISABLE_CREATE_INVOICE_FROM_ORDER)) $resql
Social contributions to pay.
Definition: index.php:745
if($cancel &&! $id) if($action=='add' &&! $cancel) if($action=='delete') if($id) $form
Actions.
Definition: card.php:143
dol_time_plus_duree($time, $duration_value, $duration_unit, $ruleforendofmonth=0)
Add a delay to a date.
Definition: date.lib.php:121
load_fiche_titre($titre, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limittoshow=0, $moretabssuffix='')
Show tabs of a record.
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $noescapetags='', $escapeonlyhtmltags=0)
Returns text escaped for inclusion in HTML alt or title tags, or into values of HTML input fields.
dol_user_country()
Return country code for current user.
dol_get_fiche_end($notab=0)
Return tab footer of a card.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='')
Set event messages 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_print_date($time, $format='', $tzoutput='auto', $outputlangs='', $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.
dol_now($mode='auto')
Return date for now.
getDolGlobalInt($key, $default=0)
Return dolibarr global constant int value.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
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.
setEventMessage($mesgs, $style='mesgs')
Set event message in dol_events session object.
getCommonSubstitutionArray($outputlangs, $onlykey=0, $exclude=null, $object=null)
Return array of possible common substitutions.
isValidEmail($address, $acceptsupervisorkey=0, $acceptuserkey=0)
Return true if email syntax is ok.
getUserRemoteIP()
Return the IP of remote user.
dol_htmloutput_errors($mesgstring='', $mesgarray=array(), $keepembedded=0)
Print formated 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.
top_htmlhead($head, $title='', $disablejs=0, $disablehead=0, $arrayofjs='', $arrayofcss='', $disableforlogin=0, $disablenofollow=0, $disablenoindex=0)
Ouput html header of a page.
Definition: main.inc.php:1530
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')
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.