dolibarr 21.0.0-beta
conferenceorbooth_card.php
Go to the documentation of this file.
1<?php
2/* Copyright (C) 2017 Laurent Destailleur <eldy@users.sourceforge.net>
3 * Copyright (C) 2021 Florian Henry <florian.henry@scopen.fr>
4 * Copyright (C) 2024 Alexandre Spangaro <alexandre@inovea-conseil.com>
5 * Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
6 * Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com>
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 3 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program. If not, see <https://www.gnu.org/licenses/>.
20 */
21
29// Load Dolibarr environment
30require '../main.inc.php';
31require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
32require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
33require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php';
34require_once DOL_DOCUMENT_ROOT.'/core/lib/project.lib.php';
35require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php';
36require_once DOL_DOCUMENT_ROOT.'/eventorganization/class/conferenceorbooth.class.php';
37require_once DOL_DOCUMENT_ROOT.'/eventorganization/lib/eventorganization_conferenceorbooth.lib.php';
38require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
39
50// Load translation files required by the page
51$langs->loadLangs(array('eventorganization', 'projects'));
52
53// Get parameters
54$action = GETPOST('action', 'aZ09');
55$confirm = GETPOST('confirm', 'alpha');
56$cancel = GETPOST('cancel', 'aZ09');
57$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'conferenceorboothcard'; // To manage different context of search
58$backtopage = GETPOST('backtopage', 'alpha');
59$backtopageforcancel = GETPOST('backtopageforcancel', 'alpha');
60$optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print')
61$mode = GETPOST('mode', 'aZ'); // The output mode ('list', 'kanban', 'hierarchy', 'calendar', ...)
62
63$id = GETPOSTINT('id');
64$ref = GETPOST('ref', 'alpha');
65$withproject = GETPOSTINT('withproject');
66
67// Initialize a technical objects
68$object = new ConferenceOrBooth($db);
69$extrafields = new ExtraFields($db);
70$projectstatic = new Project($db);
71$diroutputmassaction = $conf->eventorganization->dir_output.'/temp/massgeneration/'.$user->id;
72$hookmanager->initHooks(array($contextpage, 'globalcard')); // Note that conf->hooks_modules contains array
73
74// Fetch optionals attributes and labels
75$extrafields->fetch_name_optionals_label($object->table_element);
76
77$search_array_options = $extrafields->getOptionalsFromPost($object->table_element, '', 'search_');
78
79// Initialize array of search criteria
80$search_all = GETPOST("search_all", 'alpha');
81$search = array();
82foreach ($object->fields as $key => $val) {
83 if (GETPOST('search_'.$key, 'alpha') !== '') {
84 $search[$key] = GETPOST('search_'.$key, 'alpha');
85 }
86 if (preg_match('/^(date|timestamp|datetime)/', $val['type'])) {
87 $search[$key.'_dtstart'] = dol_mktime(0, 0, 0, GETPOSTINT('search_'.$key.'_dtstartmonth'), GETPOSTINT('search_'.$key.'_dtstartday'), GETPOSTINT('search_'.$key.'_dtstartyear'));
88 $search[$key.'_dtend'] = dol_mktime(23, 59, 59, GETPOSTINT('search_'.$key.'_dtendmonth'), GETPOSTINT('search_'.$key.'_dtendday'), GETPOSTINT('search_'.$key.'_dtendyear'));
89 }
90}
91
92if (empty($action) && empty($id) && empty($ref)) {
93 $action = 'view';
94}
95
96// Load object
97include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be 'include', not 'include_once'.
98
99// Permissions
100$permissiontoread = $user->hasRight('eventorganization', 'read');
101$permissiontoadd = $user->hasRight('eventorganization', 'write'); // Used by the include of actions_addupdatedelete.inc.php and actions_lineupdown.inc.php
102$permissiontodelete = $user->hasRight('eventorganization', 'delete') || ($permissiontoadd && isset($object->status) && $object->status == $object::STATUS_DRAFT);
103$permissionnote = $user->hasRight('eventorganization', 'write'); // Used by the include of actions_setnotes.inc.php
104$permissiondellink = $user->hasRight('eventorganization', 'write'); // Used by the include of actions_dellink.inc.php
105$upload_dir = $conf->eventorganization->multidir_output[isset($object->entity) ? $object->entity : 1];
106
107// Security check
108if ($user->socid > 0) {
110}
111$isdraft = (($object->status == $object::STATUS_DRAFT) ? 1 : 0);
112$result = restrictedArea($user, 'eventorganization', $object->id, '', '', 'fk_soc', 'id', $isdraft);
113
114if (!$permissiontoread) {
116}
117
118
119/*
120 * Actions
121 */
122
123$parameters = array();
124$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
125if ($reshook < 0) {
126 setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
127}
128
129if (empty($reshook)) {
130 $error = 0;
131
132 $backurlforlist = dol_buildpath('/eventorganization/conferenceorbooth_list.php', 1);
133
134 if (empty($backtopage) || ($cancel && empty($id))) {
135 if (empty($backtopage) || ($cancel && strpos($backtopage, '__ID__'))) {
136 if (empty($id) && (($action != 'add' && $action != 'create') || $cancel)) {
137 $backtopage = $backurlforlist;
138 } else {
139 $backtopage = dol_buildpath('/eventorganization/conferenceorbooth_card.php', 1).'?id='.($id > 0 ? $id : '__ID__').($withproject ? '&withproject=1' : '');
140 }
141 }
142 }
143
144 $triggermodname = 'EVENTORGANIZATION_CONFERENCEORBOOTH_MODIFY'; // Name of trigger action code to execute when we modify record
145
146 // Actions cancel, add, update, update_extras, confirm_validate, confirm_delete, confirm_deleteline, confirm_clone, confirm_close, confirm_setdraft, confirm_reopen
147 include DOL_DOCUMENT_ROOT.'/core/actions_addupdatedelete.inc.php';
148
149 // Actions when linking object each other
150 include DOL_DOCUMENT_ROOT.'/core/actions_dellink.inc.php';
151
152 // Actions when printing a doc from card
153 include DOL_DOCUMENT_ROOT.'/core/actions_printing.inc.php';
154
155 // Action to move up and down lines of object
156 //include DOL_DOCUMENT_ROOT.'/core/actions_lineupdown.inc.php';
157
158 // Action to build doc
159 include DOL_DOCUMENT_ROOT.'/core/actions_builddoc.inc.php';
160
161 if ($action == 'set_thirdparty' && $permissiontoadd) {
162 $object->setValueFrom('fk_soc', GETPOSTINT('fk_soc'), '', null, 'date', '', $user, $triggermodname);
163 }
164 if ($action == 'classin' && $permissiontoadd) {
165 $object->setProject(GETPOSTINT('projectid'));
166 }
167
168 // Actions to send emails
169 $triggersendname = 'EVENTORGANIZATION_CONFERENCEORBOOTH_SENTBYMAIL';
170 $autocopy = 'MAIN_MAIL_AUTOCOPY_CONFERENCEORBOOTH_TO';
171 $trackid = 'conferenceorbooth'.$object->id;
172 include DOL_DOCUMENT_ROOT.'/core/actions_sendmails.inc.php';
173}
174
175
176/*
177 * View
178 */
179
180$form = new Form($db);
181$formfile = new FormFile($db);
182$formproject = new FormProjets($db);
183
184$title = $langs->trans("ConferenceOrBooth");
185$help_url = 'EN:Module_Event_Organization';
186
187llxHeader('', $title, $help_url, '', 0, 0, '', '', '', 'mod-eventorganization page-card');
188
189if ($action == 'create') {
190 $result = $projectstatic->fetch(GETPOST('fk_project'));
191} else {
192 $result = $projectstatic->fetch($object->fk_project);
193}
194if (getDolGlobalString('PROJECT_ALLOW_COMMENT_ON_PROJECT') && method_exists($projectstatic, 'fetchComments') && empty($projectstatic->comments)) {
195 $projectstatic->fetchComments();
196}
197if (!empty($projectstatic->socid)) {
198 $projectstatic->fetch_thirdparty();
199}
200
201$withProjectUrl = '';
202$object->project = clone $projectstatic;
203
204if (!empty($withproject)) {
205 // Tabs for project
206 $tab = 'eventorganisation';
207 $withProjectUrl = "&withproject=1";
208
209 $head = project_prepare_head($projectstatic);
210
211 print dol_get_fiche_head($head, $tab, $langs->trans("Project"), -1, ($projectstatic->public ? 'projectpub' : 'project'), 0, '', '');
212
213 $param = ($mode == 'mine' ? '&mode=mine' : '');
214
215 // Project card
216
217 $linkback = '<a href="'.DOL_URL_ROOT.'/projet/list.php?restore_lastsearch_values=1">'.$langs->trans("BackToList").'</a>';
218
219 $morehtmlref = '<div class="refidno">';
220 // Title
221 $morehtmlref .= $projectstatic->title;
222 // Thirdparty
223 if (isset($projectstatic->thirdparty->id) && $projectstatic->thirdparty->id > 0) {
224 $morehtmlref .= '<br>'.$projectstatic->thirdparty->getNomUrl(1, 'project');
225 }
226 $morehtmlref .= '</div>';
227
228 // Define a complementary filter for search of next/prev ref.
229 if (!$user->hasRight('project', 'all', 'lire')) {
230 $objectsListId = $projectstatic->getProjectsAuthorizedForUser($user, 0, 0);
231 $projectstatic->next_prev_filter = "rowid:IN:".$db->sanitize(count($objectsListId) ? implode(',', array_keys($objectsListId)) : '0');
232 }
233
234 dol_banner_tab($projectstatic, 'project_ref', $linkback, 1, 'ref', 'ref', $morehtmlref);
235
236 print '<div class="fichecenter">';
237 print '<div class="fichehalfleft">';
238 print '<div class="underbanner clearboth"></div>';
239
240 print '<table class="border tableforfield centpercent">';
241
242 // Usage
243 if (getDolGlobalString('PROJECT_USE_OPPORTUNITIES') || !getDolGlobalString('PROJECT_HIDE_TASKS') || isModEnabled('eventorganization')) {
244 print '<tr><td class="tdtop">';
245 print $langs->trans("Usage");
246 print '</td>';
247 print '<td>';
248 if (getDolGlobalString('PROJECT_USE_OPPORTUNITIES')) {
249 print '<input type="checkbox" disabled name="usage_opportunity"'.(GETPOSTISSET('usage_opportunity') ? (GETPOST('usage_opportunity', 'alpha') != '' ? ' checked="checked"' : '') : ($projectstatic->usage_opportunity ? ' checked="checked"' : '')).'"> ';
250 $htmltext = $langs->trans("ProjectFollowOpportunity");
251 print $form->textwithpicto($langs->trans("ProjectFollowOpportunity"), $htmltext);
252 print '<br>';
253 }
254 if (!getDolGlobalString('PROJECT_HIDE_TASKS')) {
255 print '<input type="checkbox" disabled name="usage_task"'.(GETPOSTISSET('usage_task') ? (GETPOST('usage_task', 'alpha') != '' ? ' checked="checked"' : '') : ($projectstatic->usage_task ? ' checked="checked"' : '')).'"> ';
256 $htmltext = $langs->trans("ProjectFollowTasks");
257 print $form->textwithpicto($langs->trans("ProjectFollowTasks"), $htmltext);
258 print '<br>';
259 }
260 if (!getDolGlobalString('PROJECT_HIDE_TASKS') && getDolGlobalString('PROJECT_BILL_TIME_SPENT')) {
261 print '<input type="checkbox" disabled name="usage_bill_time"'.(GETPOSTISSET('usage_bill_time') ? (GETPOST('usage_bill_time', 'alpha') != '' ? ' checked="checked"' : '') : ($projectstatic->usage_bill_time ? ' checked="checked"' : '')).'"> ';
262 $htmltext = $langs->trans("ProjectBillTimeDescription");
263 print $form->textwithpicto($langs->trans("BillTime"), $htmltext);
264 print '<br>';
265 }
266 if (isModEnabled('eventorganization')) {
267 print '<input type="checkbox" disabled name="usage_organize_event"'.(GETPOSTISSET('usage_organize_event') ? (GETPOST('usage_organize_event', 'alpha') != '' ? ' checked="checked"' : '') : ($projectstatic->usage_organize_event ? ' checked="checked"' : '')).'"> ';
268 $htmltext = $langs->trans("EventOrganizationDescriptionLong");
269 print $form->textwithpicto($langs->trans("ManageOrganizeEvent"), $htmltext);
270 }
271 print '</td></tr>';
272 }
273
274 // Visibility
275 print '<tr><td class="titlefield">'.$langs->trans("Visibility").'</td><td>';
276 if ($projectstatic->public == 0) {
277 print img_picto($langs->trans('PrivateProject'), 'private', 'class="paddingrightonly"');
278 print $langs->trans("PrivateProject");
279 } else {
280 print img_picto($langs->trans('SharedProject'), 'world', 'class="paddingrightonly"');
281 print $langs->trans("SharedProject");
282 }
283 print '</td></tr>';
284
285 // Budget
286 print '<tr><td>'.$langs->trans("Budget").'</td><td>';
287 if (strcmp($projectstatic->budget_amount, '')) {
288 print '<span class="amount">'.price($projectstatic->budget_amount, 0, $langs, 1, 0, 0, $conf->currency).'</span>';
289 }
290 print '</td></tr>';
291
292 // Date start - end project
293 print '<tr><td>'.$langs->trans("Dates").' ('.$langs->trans("Project").')</td><td>';
294 $start = dol_print_date($projectstatic->date_start, 'day');
295 print($start ? $start : '?');
296 $end = dol_print_date($projectstatic->date_end, 'day');
297 print ' - ';
298 print($end ? $end : '?');
299 if ($object->hasDelay()) {
300 print img_warning("Late");
301 }
302 print '</td></tr>';
303
304 // Date start - end of event
305 print '<tr><td>'.$langs->trans("Dates").' ('.$langs->trans("Event").')</td><td>';
306 $start = dol_print_date($projectstatic->date_start_event, 'day');
307 print($start ? $start : '?');
308 $end = dol_print_date($projectstatic->date_end_event, 'day');
309 print ' - ';
310 print($end ? $end : '?');
311 if ($object->hasDelay()) {
312 print img_warning("Late");
313 }
314 print '</td></tr>';
315
316 // Location event
317 print '<tr><td>'.$langs->trans("Location").'</td><td>';
318 print $projectstatic->location;
319 print '</td></tr>';
320
321 // Other attributes
322 $cols = 2;
323 $objectconf = $object;
324 $object = $projectstatic;
325 include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_view.tpl.php';
326 $object = $objectconf;
327
328 print '</table>';
329
330 print '</div>';
331
332 print '<div class="fichehalfright">';
333 print '<div class="underbanner clearboth"></div>';
334
335 print '<table class="border tableforfield centpercent">';
336
337 // Description
338 print '<tr><td class="titlefield tdtop">'.$langs->trans("Description").'</td><td class="valuefield">';
339 print dol_htmlentitiesbr($projectstatic->description);
340 print '</td></tr>';
341
342 // Categories
343 if (isModEnabled('category')) {
344 print '<tr><td class="titlefield valignmiddle">'.$langs->trans("Categories").'</td><td class="valuefield">';
345 print $form->showCategories($projectstatic->id, Categorie::TYPE_PROJECT, 1);
346 print "</td></tr>";
347 }
348
349 print '<tr><td class="titlefield nowrap">';
350 $typeofdata = 'checkbox:'.($projectstatic->accept_conference_suggestions ? ' checked="checked"' : '');
351 $htmltext = $langs->trans("AllowUnknownPeopleSuggestConfHelp");
352 print $form->editfieldkey('AllowUnknownPeopleSuggestConf', 'accept_conference_suggestions', '', $projectstatic, 0, $typeofdata, '', 0, 0, 'projectid', $htmltext);
353 print '</td><td class="valuefield">';
354 print $form->editfieldval('AllowUnknownPeopleSuggestConf', 'accept_conference_suggestions', '1', $projectstatic, 0, $typeofdata, '', null, 0, '', 0, '', 'projectid');
355 print "</td></tr>";
356
357 print '<tr><td class="valuefield">';
358 $typeofdata = 'checkbox:'.($projectstatic->accept_booth_suggestions ? ' checked="checked"' : '');
359 $htmltext = $langs->trans("AllowUnknownPeopleSuggestBoothHelp");
360 print $form->editfieldkey('AllowUnknownPeopleSuggestBooth', 'accept_booth_suggestions', '', $projectstatic, 0, $typeofdata, '', 0, 0, 'projectid', $htmltext);
361 print '</td><td class="valuefield">';
362 print $form->editfieldval('AllowUnknownPeopleSuggestBooth', 'accept_booth_suggestions', '1', $projectstatic, 0, $typeofdata, '', null, 0, '', 0, '', 'projectid');
363 print "</td></tr>";
364
365 print '<tr><td class="valuefield">';
366 print $form->editfieldkey($form->textwithpicto($langs->trans('PriceOfBooth'), $langs->trans("PriceOfBoothHelp")), 'price_booth', '', $projectstatic, 0, 'amount', '', 0, 0, 'projectid');
367 print '</td><td class="valuefield">';
368 print $form->editfieldval($form->textwithpicto($langs->trans('PriceOfBooth'), $langs->trans("PriceOfBoothHelp")), 'price_booth', $projectstatic->price_booth, $projectstatic, 0, 'amount', '', null, 0, '', 0, '', 'projectid');
369 print "</td></tr>";
370
371 print '<tr><td class="valuefield">';
372 print $form->editfieldkey($form->textwithpicto($langs->trans('PriceOfRegistration'), $langs->trans("PriceOfRegistrationHelp")), 'price_registration', '', $projectstatic, 0, 'amount', '', 0, 0, 'projectid');
373 print '</td><td class="valuefield">';
374 print $form->editfieldval($form->textwithpicto($langs->trans('PriceOfRegistration'), $langs->trans("PriceOfRegistrationHelp")), 'price_registration', $projectstatic->price_registration, $projectstatic, 0, 'amount', '', null, 0, '', 0, '', 'projectid');
375 print "</td></tr>";
376
377 print '<tr><td class="titlefield">';
378 print $form->editfieldkey($form->textwithpicto($langs->trans('MaxNbOfAttendees'), ''), 'max_attendees', '', $projectstatic, $permissiontoadd, 'integer:3', '', 0, 0, 'projectid');
379 print '</td><td class="valuefield">';
380 print $form->editfieldval($form->textwithpicto($langs->trans('MaxNbOfAttendees'), ''), 'max_attendees', $projectstatic->max_attendees, $projectstatic, $permissiontoadd, 'integer:3', '', null, 0, '', 0, '', 'projectid');
381 print "</td></tr>";
382
383 print '<tr><td class="titlefield valignmiddle">'.$langs->trans("EventOrganizationICSLink").'</td><td>';
384 // Define $urlwithroot
385 $urlwithouturlroot = preg_replace('/'.preg_quote(DOL_URL_ROOT, '/').'$/i', '', trim($dolibarr_main_url_root));
386 $urlwithroot = $urlwithouturlroot.DOL_URL_ROOT;
387
388 // Show message
389 $message = '<a target="_blank" rel="noopener noreferrer" href="'.$urlwithroot.'/public/agenda/agendaexport.php?format=ical'.($conf->entity > 1 ? "&entity=".$conf->entity : "");
390 $message .= '&exportkey='.urlencode(getDolGlobalString('MAIN_AGENDA_XCAL_EXPORTKEY', '...'));
391 $message .= "&project=".$projectstatic->id.'&module='.urlencode('@eventorganization').'&status='.ConferenceOrBooth::STATUS_CONFIRMED.'">'.$langs->trans('DownloadICSLink').img_picto('', 'download', 'class="paddingleft"').'</a>';
392 print $message;
393 print "</td></tr>";
394
395 // Link to the submit vote/register page
396 print '<tr><td>';
397 //print '<span class="opacitymedium">';
398 print $form->textwithpicto($langs->trans("SuggestOrVoteForConfOrBooth"), $langs->trans("EvntOrgRegistrationHelpMessage"));
399 //print '</span>';
400 print '</td><td>';
401 $linksuggest = $dolibarr_main_url_root.'/public/project/index.php?id='.((int) $projectstatic->id);
402 $encodedsecurekey = dol_hash(getDolGlobalString('EVENTORGANIZATION_SECUREKEY').'conferenceorbooth'.((int) $projectstatic->id), 'md5');
403 $linksuggest .= '&securekey='.urlencode($encodedsecurekey);
404 //print '<div class="urllink">';
405 //print '<input type="text" value="'.$linksuggest.'" id="linkregister" class="quatrevingtpercent paddingrightonly">';
406 print '<div class="tdoverflowmax200 inline-block valignmiddle"><a target="_blank" href="'.$linksuggest.'" class="quatrevingtpercent">'.$linksuggest.'</a></div>';
407 print '<a target="_blank" rel="noopener noreferrer" href="'.$linksuggest.'">'.img_picto('', 'globe').'</a>';
408 //print '</div>';
409 //print ajax_autoselect("linkregister");
410 print '</td></tr>';
411
412 // Link to the subscribe
413 print '<tr><td>';
414 //print '<span class="opacitymedium">';
415 print $langs->trans("PublicAttendeeSubscriptionGlobalPage");
416 //print '</span>';
417 print '</td><td>';
418 $link_subscription = $dolibarr_main_url_root.'/public/eventorganization/attendee_new.php?id='.((int) $projectstatic->id).'&type=global';
419 $encodedsecurekey = dol_hash(getDolGlobalString('EVENTORGANIZATION_SECUREKEY').'conferenceorbooth'.((int) $projectstatic->id), 'md5');
420 $link_subscription .= '&securekey='.urlencode($encodedsecurekey);
421 //print '<div class="urllink">';
422 //print '<input type="text" value="'.$linkregister.'" id="linkregister" class="quatrevingtpercent paddingrightonly">';
423 print '<div class="tdoverflowmax200 inline-block valignmiddle"><a target="_blank" href="'.$link_subscription.'" class="quatrevingtpercent">'.$link_subscription.'</a></div>';
424 print '<a target="_blank" rel="noopener noreferrer" rel="noopener noreferrer" href="'.$link_subscription.'">'.img_picto('', 'globe').'</a>';
425 //print '</div>';
426 //print ajax_autoselect("linkregister");
427 print '</td></tr>';
428
429 print '</table>';
430
431 print '</div>';
432 print '</div>';
433
434 print '<div class="clearboth"></div>';
435
436 print dol_get_fiche_end();
437
438 print '<br>';
439}
440
441// Part to create
442if ($action == 'create') {
443 print load_fiche_titre($langs->trans("NewObject", $langs->transnoentitiesnoconv("ConferenceOrBooth")), '', 'object_'.$object->picto);
444
445 print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
446 print '<input type="hidden" name="token" value="'.newToken().'">';
447 print '<input type="hidden" name="action" value="add">';
448 if ($withproject) {
449 print '<input type="hidden" name="withproject" value="'.$withproject.'">';
450 print '<input type="hidden" name="fk_project" value="'.GETPOSTINT('fk_project').'">';
451 }
452 if ($backtopage) {
453 print '<input type="hidden" name="backtopage" value="'.$backtopage.'">';
454 }
455 if ($backtopageforcancel) {
456 print '<input type="hidden" name="backtopageforcancel" value="'.$backtopageforcancel.'">';
457 }
458
459 print dol_get_fiche_head(array(), '');
460
461 print '<table class="border centpercent tableforfieldcreate">'."\n";
462
463 // Common attributes
464 include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_add.tpl.php';
465
466 // Other attributes
467 include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_add.tpl.php';
468
469 print '</table>'."\n";
470
471 print dol_get_fiche_end();
472
473 print $form->buttonsSaveCancel("Create");
474
475 print '</form>';
476
477 //dol_set_focus('input[name="ref"]');
478}
479
480// Part to edit record
481if (($id || $ref) && $action == 'edit') {
482 print load_fiche_titre($langs->trans("ConferenceOrBooth"), '', 'object_'.$object->picto);
483
484 print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
485 print '<input type="hidden" name="token" value="'.newToken().'">';
486 if (!empty($withProjectUrl)) {
487 print '<input type="hidden" name="withproject" value="1">';
488 }
489 print '<input type="hidden" name="action" value="update">';
490 print '<input type="hidden" name="id" value="'.$object->id.'">';
491 if ($backtopage) {
492 print '<input type="hidden" name="backtopage" value="'.$backtopage.'">';
493 }
494 if ($backtopageforcancel) {
495 print '<input type="hidden" name="backtopageforcancel" value="'.$backtopageforcancel.'">';
496 }
497
498 print dol_get_fiche_head();
499
500 print '<table class="border centpercent tableforfieldedit">'."\n";
501
502 // Common attributes
503 include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_edit.tpl.php';
504
505 // Other attributes
506 include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_edit.tpl.php';
507
508 print '</table>';
509
510 print dol_get_fiche_end();
511
512 print $form->buttonsSaveCancel();
513
514 print '</form>';
515}
516
517// Part to show record
518if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'create'))) {
519 $res = $object->fetch_optionals();
520
521 $head = conferenceorboothPrepareHead($object, $withproject);
522
523 print dol_get_fiche_head($head, 'card', $langs->trans("ConferenceOrBooth"), -1, $object->picto);
524
525 $formconfirm = '';
526
527 // Confirmation to delete
528 if ($action == 'delete') {
529 $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id.$withProjectUrl, $langs->trans('DeleteConferenceOrBooth'), $langs->trans('ConfirmDeleteObject'), 'confirm_delete', '', 0, 1);
530 }
531 // Clone confirmation
532 if ($action == 'clone') {
533 // Create an array for form
534 $formquestion = array();
535 $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id.$withProjectUrl, $langs->trans('ToClone'), $langs->trans('ConfirmCloneAsk', $object->ref), 'confirm_clone', $formquestion, 'yes', 1);
536 }
537
538 // Confirmation of action xxxx
539 //TODO Send mass email
540 if ($action == 'xxx') {
541 $formquestion = array();
542 /*
543 $forcecombo=0;
544 if ($conf->browser->name == 'ie') $forcecombo = 1; // There is a bug in IE10 that make combo inside popup crazy
545 $formquestion = array(
546 // 'text' => $langs->trans("ConfirmClone"),
547 // array('type' => 'checkbox', 'name' => 'clone_content', 'label' => $langs->trans("CloneMainAttributes"), 'value' => 1),
548 // array('type' => 'checkbox', 'name' => 'update_prices', 'label' => $langs->trans("PuttingPricesUpToDate"), 'value' => 1),
549 // array('type' => 'other', 'name' => 'idwarehouse', 'label' => $langs->trans("SelectWarehouseForStockDecrease"), 'value' => $formproduct->selectWarehouses(GETPOST('idwarehouse')?GETPOST('idwarehouse'):'ifone', 'idwarehouse', '', 1, 0, 0, '', 0, $forcecombo))
550 );
551 */
552 $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('XXX'), $text, 'confirm_xxx', $formquestion, 0, 1, 220);
553 }
554
555 // Call Hook formConfirm
556 $parameters = array('formConfirm' => $formconfirm);
557 $reshook = $hookmanager->executeHooks('formConfirm', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
558 if (empty($reshook)) {
559 $formconfirm .= $hookmanager->resPrint;
560 } elseif ($reshook > 0) {
561 $formconfirm = $hookmanager->resPrint;
562 }
563
564 // Print form confirm
565 print $formconfirm;
566
567 // Object card
568 // ------------------------------------------------------------
569 $linkback = '<a href="'.dol_buildpath('/eventorganization/conferenceorbooth_list.php', 1).'?projectid='.$object->fk_project.$withProjectUrl.'">'.$langs->trans("BackToList").'</a>';
570
571 $morehtmlref = '<div class="refidno">';
572 $morehtmlref .= '</div>';
573
574
575 dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref);
576
577 print '<div class="fichecenter">';
578 print '<div class="fichehalfleft">';
579 print '<div class="underbanner clearboth"></div>';
580 print '<table class="border centpercent tableforfield">'."\n";
581
582 // Common attributes
583 //$keyforbreak='fieldkeytoswitchonsecondcolumn'; // We change column just before this field
584 //unset($object->fields['fk_project']); // Hide field already shown in banner
585 //unset($object->fields['fk_soc']); // Hide field already shown in banner
586 $keyforbreak = 'num_vote';
587
588 include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_view.tpl.php';
589
590 //var_dump($object);
591 // Other attributes. Fields from hook formObjectOptions and Extrafields.
592 include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_view.tpl.php';
593
594 print '</table>';
595 print '</div>';
596 print '</div>';
597
598 print '<div class="clearboth"></div>';
599
600 print dol_get_fiche_end();
601
602 // Buttons for actions
603
604 if ($action != 'presend' && $action != 'editline') {
605 print '<div class="tabsAction">'."\n";
606 $parameters = array();
607 $reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
608 if ($reshook < 0) {
609 setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
610 }
611
612 if (empty($reshook)) {
613 // Send
614 if (empty($user->socid)) {
615 print dolGetButtonAction('', $langs->trans('SendMail'), 'default', $_SERVER["PHP_SELF"].'?id='.$object->id.$withProjectUrl.'&action=presend&token='.newToken().'&mode=init#formmailbeforetitle');
616 }
617
618 print dolGetButtonAction('', $langs->trans('Modify'), 'default', $_SERVER["PHP_SELF"].'?id='.$object->id.$withProjectUrl.'&action=edit&token='.newToken(), '', $permissiontoadd);
619
620 // Clone
621 print dolGetButtonAction('', $langs->trans('ToClone'), 'default', $_SERVER['PHP_SELF'].'?id='.$object->id.$withProjectUrl.'&socid='.$object->socid.'&action=clone&token='.newToken().'&object=scrumsprint', '', $permissiontoadd);
622
623 // Delete (need delete permission, or if draft, just need create/modify permission)
624 print dolGetButtonAction($langs->trans('Delete'), '', 'delete', $_SERVER['PHP_SELF'].'?id='.$object->id.$withProjectUrl.'&action=delete&token='.newToken(), '', $permissiontodelete || ($object->status == $object::STATUS_DRAFT && $permissiontoadd));
625 }
626 print '</div>'."\n";
627 }
628
629
630 // Select mail models is same action as presend
631 if (GETPOST('modelselected')) {
632 $action = 'presend';
633 }
634
635 if ($action != 'presend') {
636 print '<div class="fichecenter"><div class="fichehalfleft">';
637 print '<a name="builddoc"></a>'; // ancre
638
639 $includedocgeneration = 1;
640
641 // Documents
642 if ($includedocgeneration) {
643 $objref = dol_sanitizeFileName($object->ref);
644 $relativepath = $objref.'/'.$objref.'.pdf';
645 $filedir = $conf->eventorganization->dir_output.'/'.$object->element.'/'.$objref;
646 $urlsource = $_SERVER["PHP_SELF"]."?id=".$object->id;
647 $genallowed = $user->hasRight('eventorganization', 'read'); // If you can read, you can build the PDF to read content
648 $delallowed = $user->hasRight('eventorganization', 'write'); // If you can create/edit, you can remove a file on card
649 print $formfile->showdocuments('eventorganization', $object->element.'/'.$objref, $filedir, $urlsource, 0, $delallowed, $object->model_pdf, 0, 0, 0, 28, 0, '', '', '', $langs->defaultlang);
650 }
651
652 // Show links to link elements
653 //$tmparray = $form->showLinkToObjectBlock($object, null, array('conferenceorbooth'), 1);
654 //$somethingshown = $form->showLinkedObjectBlock($object, $linktoelem);
655
656 $object->fetchObjectLinked();
657
658 if (is_array($object->linkedObjects) && count($object->linkedObjects) > 0 && array_key_exists("facture", $object->linkedObjects)) {
659 foreach ($object->linkedObjects["facture"] as $fac) {
660 if (empty($fac->paye)) {
661 $key = 'paymentlink_'.$fac->id;
662
663 print img_picto('', 'globe').' <span class="opacitymedium">'.$langs->trans("ToOfferALinkForOnlinePayment", $langs->transnoentitiesnoconv('Online')) . ' '. $fac->ref.'</span><br>';
664
665 $sourcetouse = 'boothlocation';
666 $reftouse = $fac->id;
667
668 $url = getOnlinePaymentUrl(0, $sourcetouse, (string) $reftouse);
669 $url .= '&booth='.$object->id;
670
671 print '<div class="urllink"><input type="text" id="onlinepaymenturl" spellcheck="false" class="quatrevingtpercent" value="'.$url.'">';
672 print '<a href="'.$url.'" target="_blank" rel="noopener noreferrer">'.img_picto('', 'globe', 'class="paddingleft"').'</a></div>';
673 }
674 }
675 }
676
677 print '</div><div class="fichehalfright">';
678 print '</div></div>';
679 }
680
681 //Select mail models is same action as presend
682 if (GETPOST('modelselected')) {
683 $action = 'presend';
684 }
685
686 // Presend form
687 $modelmail = 'conferenceorbooth';
688 $defaulttopic = 'InformationMessage';
689 $diroutput = $conf->eventorganization->dir_output;
690 $trackid = 'conferenceorbooth'.$object->id;
691
692 include DOL_DOCUMENT_ROOT.'/core/tpl/card_presend.tpl.php';
693}
694
695// End of page
696llxFooter();
697$db->close();
$id
Definition account.php:48
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
Definition card.php:66
llxFooter($comment='', $zone='private', $disabledoutputofmessages=0)
Empty footer.
Definition wrapper.php:87
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader($head='', $title='', $help_url='', $target='', $disablejs=0, $disablehead=0, $arrayofjs='', $arrayofcss='', $morequerystring='', $morecssonbody='', $replacemainareaby='', $disablenofollow=0, $disablenoindex=0)
Empty header.
Definition wrapper.php:71
Class for ConferenceOrBooth.
Class to manage standard extra fields.
Class to offer components to list and upload files.
Class to manage generation of HTML components Only common components must be here.
Class to manage building of HTML components.
Class to manage projects.
conferenceorboothPrepareHead($object, $with_project=0)
Prepare array of tabs for ConferenceOrBooth.
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.
img_warning($titlealt='default', $moreatt='', $morecss='pictowarning')
Show warning logo.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
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_get_fiche_end($notab=0)
Return tab footer of a card.
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).
newToken()
Return the value of token currently saved into session with name 'newtoken'.
dolGetButtonAction($label, $text='', $actionType='default', $url='', $id='', $userRight=1, $params=array())
Function dolGetButtonAction.
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.
dol_sanitizeFileName($str, $newstr='_', $unaccent=1)
Clean a string to use it as a file name.
dol_htmlentitiesbr($stringtoencode, $nl2brmode=0, $pagecodefrom='UTF-8', $removelasteolbr=1)
This function is called to encode a string into a HTML string but differs from htmlentities because a...
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
global $conf
The following vars must be defined: $type2label $form $conf, $lang, The following vars may also be de...
Definition member.php:79
project_prepare_head(Project $project, $moreparam='')
Prepare array with list of tabs.
restrictedArea(User $user, $features, $object=0, $tableandshare='', $feature2='', $dbt_keyfield='fk_soc', $dbt_select='rowid', $isdraft=0, $mode=0)
Check permissions of a user to show a page and an object.
dol_hash($chain, $type='0', $nosalt=0)
Returns a hash (non reversible encryption) of a string.
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.