dolibarr  13.0.2
ticket_public.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (C) 2013-2018 Jean-François FERRY <hello@librethic.io>
3  * Copyright (C) 2016 Christophe Battarel <christophe@altairis.fr>
4  *
5  * This program is free software: you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation, either version 3 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program. If not, see <https://www.gnu.org/licenses/>.
17  */
18 
25 require '../main.inc.php';
26 require_once DOL_DOCUMENT_ROOT."/core/lib/admin.lib.php";
27 require_once DOL_DOCUMENT_ROOT."/ticket/class/ticket.class.php";
28 require_once DOL_DOCUMENT_ROOT."/core/lib/ticket.lib.php";
29 
30 // Load translation files required by the page
31 $langs->loadLangs(array("admin", "ticket"));
32 
33 // Access control
34 if (!$user->admin) {
36 }
37 
38 // Parameters
39 $value = GETPOST('value', 'alpha');
40 $action = GETPOST('action', 'aZ09');
41 $label = GETPOST('label', 'alpha');
42 $scandir = GETPOST('scandir', 'alpha');
43 $type = 'ticket';
44 
45 $error = 0;
46 
47 /*
48  * Actions
49  */
50 
51 if ($action == 'setTICKET_ENABLE_PUBLIC_INTERFACE')
52 {
53  if (GETPOST('value')) dolibarr_set_const($db, 'TICKET_ENABLE_PUBLIC_INTERFACE', 1, 'chaine', 0, '', $conf->entity);
54  else dolibarr_set_const($db, 'TICKET_ENABLE_PUBLIC_INTERFACE', 0, 'chaine', 0, '', $conf->entity);
55 }
56 
57 if ($action == 'setvar') {
58  include_once DOL_DOCUMENT_ROOT."/core/lib/files.lib.php";
59 
60  $topic_interface = GETPOST('TICKET_PUBLIC_INTERFACE_TOPIC', 'nohtml');
61  if (!empty($topic_interface)) {
62  $res = dolibarr_set_const($db, 'TICKET_PUBLIC_INTERFACE_TOPIC', $topic_interface, 'chaine', 0, '', $conf->entity);
63  } else {
64  $res = dolibarr_set_const($db, 'TICKET_PUBLIC_INTERFACE_TOPIC', '', 'chaine', 0, '', $conf->entity);
65  }
66  if (!($res > 0)) {
67  $error++;
68  }
69 
70  $text_home = GETPOST('TICKET_PUBLIC_TEXT_HOME', 'restricthtml');
71  if (!empty($text_home)) {
72  $res = dolibarr_set_const($db, 'TICKET_PUBLIC_TEXT_HOME', $text_home, 'chaine', 0, '', $conf->entity);
73  } else {
74  $res = dolibarr_set_const($db, 'TICKET_PUBLIC_TEXT_HOME', $langs->trans('TicketPublicInterfaceTextHome'), 'chaine', 0, '', $conf->entity);
75  }
76  if (!($res > 0)) {
77  $error++;
78  }
79 
80  $text_help = GETPOST('TICKET_PUBLIC_TEXT_HELP_MESSAGE', 'restricthtml');
81  if (!empty($text_help)) {
82  $res = dolibarr_set_const($db, 'TICKET_PUBLIC_TEXT_HELP_MESSAGE', $text_help, 'chaine', 0, '', $conf->entity);
83  } else {
84  $res = dolibarr_set_const($db, 'TICKET_PUBLIC_TEXT_HELP_MESSAGE', $langs->trans('TicketPublicPleaseBeAccuratelyDescribe'), 'chaine', 0, '', $conf->entity);
85  }
86  if (!($res > 0)) {
87  $error++;
88  }
89 
90  $mail_new_ticket = GETPOST('TICKET_MESSAGE_MAIL_NEW', 'restricthtml');
91  if (!empty($mail_new_ticket)) {
92  $res = dolibarr_set_const($db, 'TICKET_MESSAGE_MAIL_NEW', $mail_new_ticket, 'chaine', 0, '', $conf->entity);
93  } else {
94  $res = dolibarr_set_const($db, 'TICKET_MESSAGE_MAIL_NEW', $langs->trans('TicketMessageMailNewText'), 'chaine', 0, '', $conf->entity);
95  }
96  if (!($res > 0)) {
97  $error++;
98  }
99 
100  $url_interface = GETPOST('TICKET_URL_PUBLIC_INTERFACE', 'alpha');
101  if (!empty($url_interface)) {
102  $res = dolibarr_set_const($db, 'TICKET_URL_PUBLIC_INTERFACE', $url_interface, 'chaine', 0, '', $conf->entity);
103  } else {
104  $res = dolibarr_set_const($db, 'TICKET_URL_PUBLIC_INTERFACE', '', 'chaine', 0, '', $conf->entity);
105  }
106  if (!($res > 0)) {
107  $error++;
108  }
109 
110  $param_public_notification_new_message_default_email = GETPOST('TICKET_PUBLIC_NOTIFICATION_NEW_MESSAGE_DEFAULT_EMAIL', 'alpha');
111  $res = dolibarr_set_const($db, 'TICKET_PUBLIC_NOTIFICATION_NEW_MESSAGE_DEFAULT_EMAIL', $param_public_notification_new_message_default_email, 'chaine', 0, '', $conf->entity);
112  if (!($res > 0)) {
113  $error++;
114  }
115 }
116 
117 if ($action == 'setvarother') {
118  $param_enable_public_interface = GETPOST('TICKET_ENABLE_PUBLIC_INTERFACE', 'alpha');
119  $res = dolibarr_set_const($db, 'TICKET_ENABLE_PUBLIC_INTERFACE', $param_enable_public_interface, 'chaine', 0, '', $conf->entity);
120  if (!($res > 0)) {
121  $error++;
122  }
123 
124  $param_must_exists = GETPOST('TICKET_EMAIL_MUST_EXISTS', 'alpha');
125  $res = dolibarr_set_const($db, 'TICKET_EMAIL_MUST_EXISTS', $param_must_exists, 'chaine', 0, '', $conf->entity);
126  if (!($res > 0)) {
127  $error++;
128  }
129 
130  $param_disable_email = GETPOST('TICKET_DISABLE_CUSTOMER_MAILS', 'alpha');
131  $res = dolibarr_set_const($db, 'TICKET_DISABLE_CUSTOMER_MAILS', $param_disable_email, 'chaine', 0, '', $conf->entity);
132  if (!($res > 0)) {
133  $error++;
134  }
135 
136  $param_show_module_logo = GETPOST('TICKET_SHOW_COMPANY_LOGO', 'alpha');
137  $res = dolibarr_set_const($db, 'TICKET_SHOW_COMPANY_LOGO', $param_show_module_logo, 'chaine', 0, '', $conf->entity);
138  if (!($res > 0)) {
139  $error++;
140  }
141 
142  if ($conf->global->MAIN_FEATURES_LEVEL >= 2)
143  {
144  $param_notification_also_main_addressemail = GETPOST('TICKET_NOTIFICATION_ALSO_MAIN_ADDRESS', 'alpha');
145  $res = dolibarr_set_const($db, 'TICKET_NOTIFICATION_ALSO_MAIN_ADDRESS', $param_notification_also_main_addressemail, 'chaine', 0, '', $conf->entity);
146  if (!($res > 0)) {
147  $error++;
148  }
149  }
150 }
151 
152 
153 
154 /*
155  * View
156  */
157 
158 $dirmodels = array_merge(array('/'), (array) $conf->modules_parts['models']);
159 
160 $form = new Form($db);
161 
162 $help_url = "FR:Module_Ticket";
163 $page_name = "TicketSetup";
164 llxHeader('', $langs->trans($page_name), $help_url);
165 
166 // Subheader
167 $linkback = '<a href="'.DOL_URL_ROOT.'/admin/modules.php?restore_lastsearch_values=1">'.$langs->trans("BackToModuleList").'</a>';
168 
169 print load_fiche_titre($langs->trans($page_name), $linkback, 'title_setup');
170 
171 // Configuration header
172 $head = ticketAdminPrepareHead();
173 
174 print dol_get_fiche_head($head, 'public', $langs->trans("Module56000Name"), -1, "ticket");
175 
176 print '<span class="opacitymedium">'.$langs->trans("TicketPublicAccess").'</span> : <a class="wordbreak" href="'.dol_buildpath('/public/ticket/index.php', 1).'" target="_blank" >'.dol_buildpath('/public/ticket/index.php', 2).'</a>';
177 
179 
180 
181 $enabledisablehtml = $langs->trans("TicketsActivatePublicInterface").' ';
182 if (empty($conf->global->TICKET_ENABLE_PUBLIC_INTERFACE))
183 {
184  // Button off, click to enable
185  $enabledisablehtml .= '<a class="reposition valignmiddle" href="'.$_SERVER["PHP_SELF"].'?action=setTICKET_ENABLE_PUBLIC_INTERFACE&token='.newToken().'&value=1'.$param.'">';
186  $enabledisablehtml .= img_picto($langs->trans("Disabled"), 'switch_off');
187  $enabledisablehtml .= '</a>';
188 } else {
189  // Button on, click to disable
190  $enabledisablehtml .= '<a class="reposition valignmiddle" href="'.$_SERVER["PHP_SELF"].'?action=setTICKET_ENABLE_PUBLIC_INTERFACE&token='.newToken().'&value=0'.$param.'">';
191  $enabledisablehtml .= img_picto($langs->trans("Activated"), 'switch_on');
192  $enabledisablehtml .= '</a>';
193 }
194 print $enabledisablehtml;
195 print '<input type="hidden" id="TICKET_ENABLE_PUBLIC_INTERFACE" name="TICKET_ENABLE_PUBLIC_INTERFACE" value="'.(empty($conf->global->TICKET_ENABLE_PUBLIC_INTERFACE) ? 0 : 1).'">';
196 
197 print '<br><br>';
198 
199 if (!empty($conf->global->TICKET_ENABLE_PUBLIC_INTERFACE))
200 {
201  if (empty($conf->use_javascript_ajax)) {
202  print '<form method="post" action="'.$_SERVER['PHP_SELF'].'" enctype="multipart/form-data" >';
203  print '<input type="hidden" name="token" value="'.newToken().'">';
204  print '<input type="hidden" name="action" value="setvarother">';
205  }
206 
207  print '<div class="div-table-responsive-no-min">';
208  print '<table class="noborder centpercent">';
209  print '<tr class="liste_titre"><td>'.$langs->trans("Parameters").'</td>';
210  print '<td class="left">';
211  print '</td>';
212  print '<td class="center">';
213  print '</td>';
214  print '</tr>';
215 
216  // Check if email exists
217  print '<tr class="oddeven"><td>'.$langs->trans("TicketsEmailMustExist").'</td>';
218  print '<td class="left">';
219  if ($conf->use_javascript_ajax) {
220  print ajax_constantonoff('TICKET_EMAIL_MUST_EXISTS');
221  } else {
222  $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
223  print $form->selectarray("TICKET_EMAIL_MUST_EXISTS", $arrval, $conf->global->TICKET_EMAIL_MUST_EXISTS);
224  }
225  print '</td>';
226  print '<td class="center">';
227  print $form->textwithpicto('', $langs->trans("TicketsEmailMustExistHelp"), 1, 'help');
228  print '</td>';
229  print '</tr>';
230 
231  /*if ($conf->global->MAIN_FEATURES_LEVEL >= 2)
232  {
233  // Show logo for module
234  print '<tr class="oddeven"><td>' . $langs->trans("TicketsShowModuleLogo") . '</td>';
235  print '<td class="left">';
236  if ($conf->use_javascript_ajax) {
237  print ajax_constantonoff('TICKET_SHOW_MODULE_LOGO');
238  } else {
239  $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
240  print $form->selectarray("TICKET_SHOW_MODULE_LOGO", $arrval, $conf->global->TICKET_SHOW_MODULE_LOGO);
241  }
242  print '</td>';
243  print '<td class="center">';
244  print $form->textwithpicto('', $langs->trans("TicketsShowModuleLogoHelp"), 1, 'help');
245  print '</td>';
246  print '</tr>';
247  }*/
248 
249  // Show logo for company
250  print '<tr class="oddeven"><td>'.$langs->trans("TicketsShowCompanyLogo").'</td>';
251  print '<td class="left">';
252  if ($conf->use_javascript_ajax) {
253  print ajax_constantonoff('TICKET_SHOW_COMPANY_LOGO');
254  } else {
255  $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
256  print $form->selectarray("TICKET_SHOW_COMPANY_LOGO", $arrval, $conf->global->TICKET_SHOW_COMPANY_LOGO);
257  }
258  print '</td>';
259  print '<td class="center">';
260  print $form->textwithpicto('', $langs->trans("TicketsShowCompanyLogoHelp"), 1, 'help');
261  print '</td>';
262  print '</tr>';
263 
264  // Also send to main email address
265  if ($conf->global->MAIN_FEATURES_LEVEL >= 2)
266  {
267  print '<tr class="oddeven"><td>'.$langs->trans("TicketsEmailAlsoSendToMainAddress").'</td>';
268  print '<td class="left">';
269  if ($conf->use_javascript_ajax) {
270  print ajax_constantonoff('TICKET_NOTIFICATION_ALSO_MAIN_ADDRESS');
271  } else {
272  $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
273  print $form->selectarray("TICKET_NOTIFICATION_ALSO_MAIN_ADDRESS", $arrval, $conf->global->TICKET_NOTIFICATION_ALSO_MAIN_ADDRESS);
274  }
275  print '</td>';
276  print '<td class="center">';
277  print $form->textwithpicto('', $langs->trans("TicketsEmailAlsoSendToMainAddressHelp"), 1, 'help');
278  print '</td>';
279  print '</tr>';
280  }
281 
282  if (!$conf->use_javascript_ajax) {
283  print '<tr class="impair"><td colspan="3" align="center"><input type="submit" class="button button-save" value="'.$langs->trans("Save").'"></td>';
284  print '</tr>';
285  }
286 
287  print '</table>';
288  print '</div>';
289  print '<br>';
290 
291  if (!$conf->use_javascript_ajax) {
292  print '</form>';
293  }
294 
295  // Admin var of module
296  print load_fiche_titre($langs->trans("TicketParamMail"));
297 
298  print '<div class="div-table-responsive-no-min">';
299  print '<table class="noborder centpercent">';
300 
301  print '<form method="post" action="'.$_SERVER['PHP_SELF'].'" enctype="multipart/form-data" >';
302  print '<input type="hidden" name="token" value="'.newToken().'">';
303  print '<input type="hidden" name="action" value="setvar">';
304 
305  print '<tr class="liste_titre">';
306  print '<td colspan="3">'.$langs->trans("Parameter").'</td>';
307  print "</tr>\n";
308 
309  if (empty($conf->global->FCKEDITOR_ENABLE_MAIL)) {
310  print '<tr>';
311  print '<td colspan="3"><div class="info">'.$langs->trans("TicketCkEditorEmailNotActivated").'</div></td>';
312  print "</tr>\n";
313  }
314 
315  // Interface topic
316  $url_interface = $conf->global->TICKET_PUBLIC_INTERFACE_TOPIC;
317  print '<tr><td>'.$langs->trans("TicketPublicInterfaceTopicLabelAdmin").'</label>';
318  print '</td><td>';
319  print '<input type="text" name="TICKET_PUBLIC_INTERFACE_TOPIC" value="'.$conf->global->TICKET_PUBLIC_INTERFACE_TOPIC.'" size="40" ></td>';
320  print '</td>';
321  print '<td class="center">';
322  print $form->textwithpicto('', $langs->trans("TicketPublicInterfaceTopicHelp"), 1, 'help');
323  print '</td></tr>';
324 
325  // Texte d'accueil homepage
326  $public_text_home = $conf->global->TICKET_PUBLIC_TEXT_HOME ? $conf->global->TICKET_PUBLIC_TEXT_HOME : $langs->trans('TicketPublicInterfaceTextHome');
327  print '<tr><td>'.$langs->trans("TicketPublicInterfaceTextHomeLabelAdmin").'</label>';
328  print '</td><td>';
329  require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
330  $doleditor = new DolEditor('TICKET_PUBLIC_TEXT_HOME', $public_text_home, '100%', 180, 'dolibarr_notes', '', false, true, $conf->global->FCKEDITOR_ENABLE_SOCIETE, ROWS_2, 70);
331  $doleditor->Create();
332  print '</td>';
333  print '<td class="center">';
334  print $form->textwithpicto('', $langs->trans("TicketPublicInterfaceTextHomeHelpAdmin"), 1, 'help');
335  print '</td></tr>';
336 
337  // Texte d'aide à la saisie du message
338  $public_text_help_message = $conf->global->TICKET_PUBLIC_TEXT_HELP_MESSAGE ? $conf->global->TICKET_PUBLIC_TEXT_HELP_MESSAGE : $langs->trans('TicketPublicPleaseBeAccuratelyDescribe');
339  print '<tr><td>'.$langs->trans("TicketPublicInterfaceTextHelpMessageLabelAdmin").'</label>';
340  print '</td><td>';
341  require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
342  $doleditor = new DolEditor('TICKET_PUBLIC_TEXT_HELP_MESSAGE', $public_text_help_message, '100%', 180, 'dolibarr_notes', '', false, true, $conf->global->FCKEDITOR_ENABLE_SOCIETE, ROWS_2, 70);
343  $doleditor->Create();
344  print '</td>';
345  print '<td class="center">';
346  print $form->textwithpicto('', $langs->trans("TicketPublicInterfaceTextHelpMessageHelpAdmin"), 1, 'help');
347  print '</td></tr>';
348 
349  // Activate email creation to user
350  print '<tr class="pair"><td>'.$langs->trans("TicketsDisableCustomerEmail").'</td>';
351  print '<td class="left">';
352  if ($conf->use_javascript_ajax) {
353  print ajax_constantonoff('TICKET_DISABLE_CUSTOMER_MAILS');
354  } else {
355  $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
356  print $form->selectarray("TICKET_DISABLE_CUSTOMER_MAILS", $arrval, $conf->global->TICKET_DISABLE_CUSTOMER_MAILS);
357  }
358  print '</td>';
359  print '<td class="center">';
360  print $form->textwithpicto('', $langs->trans("TicketsDisableEmailHelp"), 1, 'help');
361  print '</td>';
362  print '</tr>';
363 
364  // Texte de création d'un ticket
365  $mail_mesg_new = $conf->global->TICKET_MESSAGE_MAIL_NEW ? $conf->global->TICKET_MESSAGE_MAIL_NEW : $langs->trans('TicketNewEmailBody');
366  print '<tr><td>'.$langs->trans("TicketNewEmailBodyLabel").'</label>';
367  print '</td><td>';
368  require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
369  $doleditor = new DolEditor('TICKET_MESSAGE_MAIL_NEW', $mail_mesg_new, '100%', 120, 'dolibarr_mailings', '', false, true, $conf->global->FCKEDITOR_ENABLE_MAIL, ROWS_2, 70);
370  $doleditor->Create();
371  print '</td>';
372  print '<td class="center">';
373  print $form->textwithpicto('', $langs->trans("TicketNewEmailBodyHelp"), 1, 'help');
374  print '</td></tr>';
375 
376  // Url public interface
377  $url_interface = $conf->global->TICKET_URL_PUBLIC_INTERFACE;
378  print '<tr><td>'.$langs->trans("TicketUrlPublicInterfaceLabelAdmin").'</label>';
379  print '</td><td>';
380  print '<input type="text" class="minwidth500" name="TICKET_URL_PUBLIC_INTERFACE" value="'.$conf->global->TICKET_URL_PUBLIC_INTERFACE.'"></td>';
381  print '</td>';
382  print '<td class="center">';
383  print $form->textwithpicto('', $langs->trans("TicketUrlPublicInterfaceHelpAdmin"), 1, 'help');
384  print '</td></tr>';
385 
386  // Activate email notification when a new message is added
387  print '<tr class="pair"><td>'.$langs->trans("TicketsPublicNotificationNewMessage").'</td>';
388  print '<td class="left">';
389  if ($conf->use_javascript_ajax) {
390  print ajax_constantonoff('TICKET_PUBLIC_NOTIFICATION_NEW_MESSAGE_ENABLED');
391  } else {
392  $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
393  print $form->selectarray("TICKET_PUBLIC_NOTIFICATION_NEW_MESSAGE_ENABLED", $arrval, $conf->global->TICKET_PUBLIC_NOTIFICATION_NEW_MESSAGE_ENABLED);
394  }
395  print '</td>';
396  print '<td align="center">';
397  print $form->textwithpicto('', $langs->trans("TicketsPublicNotificationNewMessageHelp"), 1, 'help');
398  print '</td>';
399  print '</tr>';
400 
401  // Send notification when a new message is added to a email if a user is not assigned to the ticket
402  print '<tr><td>'.$langs->trans("TicketPublicNotificationNewMessageDefaultEmail").'</label>';
403  print '</td><td>';
404  print '<input type="text" name="TICKET_PUBLIC_NOTIFICATION_NEW_MESSAGE_DEFAULT_EMAIL" value="'.$conf->global->TICKET_PUBLIC_NOTIFICATION_NEW_MESSAGE_DEFAULT_EMAIL.'" size="40" ></td>';
405  print '</td>';
406  print '<td align="center">';
407  print $form->textwithpicto('', $langs->trans("TicketPublicNotificationNewMessageDefaultEmailHelp"), 1, 'help');
408  print '</td></tr>';
409 
410  print '</table>';
411  print '</div>';
412 
413  print '<div class="center"><input type="submit" class="button button-save" value="'.$langs->trans("Save").'"></div>';
414 
415  print '</form>';
416 }
417 
418 // End of page
419 llxFooter();
420 $db->close();
GETPOST($paramname, $check= 'alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
dolibarr_set_const($db, $name, $value, $type= 'chaine', $visible=0, $note= '', $entity=1)
Insert a parameter (key,value) into database (delete old key then insert it again).
Definition: admin.lib.php:575
dol_buildpath($path, $type=0, $returnemptyifnotfound=0)
Return path of url or filesystem.
llxHeader()
Empty header.
Definition: wrapper.php:45
Class to manage generation of HTML components Only common components must be here.
ticketAdminPrepareHead()
Build tabs for admin page.
Definition: ticket.lib.php:31
load_fiche_titre($titre, $morehtmlright= '', $picto= 'generic', $pictoisfullpath=0, $id= '', $morecssontable= '', $morehtmlcenter= '')
Load a title with picto.
img_picto($titlealt, $picto, $moreatt= '', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt= '', $morecss= '', $marginleftonlyshort=2)
Show picto whatever it&#39;s its name (generic function)
ajax_constantonoff($code, $input=array(), $entity=null, $revertonoff=0, $strict=0, $forcereload=0, $marginleftonlyshort=2, $forcenoajax=0)
On/off button for constant.
Definition: ajax.lib.php:503
accessforbidden($message= '', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program Calling this function terminate execution ...
dol_get_fiche_head($links=array(), $active= '', $title= '', $notab=0, $picto= '', $pictoisfullpath=0, $morehtmlright= '', $morecss= '', $limittoshow=0, $moretabssuffix= '')
Show tabs of a record.
print
Draft customers invoices.
Definition: index.php:89
newToken()
Return the value of token currently saved into session with name &#39;newtoken&#39;.
dol_get_fiche_end($notab=0)
Return tab footer of a card.
Class to manage a WYSIWYG editor.
llxFooter()
Empty footer.
Definition: wrapper.php:59