dolibarr 19.0.3
list.php
Go to the documentation of this file.
1<?php
2/* Copyright (C) 2013-2017 Laurent Destailleur <eldy@users.sourceforge.net>
3 * Copyright (C) 2014 Marcos García <marcosgdf@gmail.com>
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// Load Dolibarr environment
26require '../main.inc.php';
27require_once DOL_DOCUMENT_ROOT."/core/lib/admin.lib.php";
28require_once DOL_DOCUMENT_ROOT."/core/lib/files.lib.php";
29require_once DOL_DOCUMENT_ROOT."/opensurvey/class/opensurveysondage.class.php";
30
31// Load translation files required by the page
32$langs->load("opensurvey");
33
34$action = GETPOST('action', 'aZ09') ? GETPOST('action', 'aZ09') : 'view'; // The action 'add', 'create', 'edit', 'update', 'view', ...
35$massaction = GETPOST('massaction', 'alpha'); // The bulk action (combo box choice into lists)
36$show_files = GETPOST('show_files', 'int'); // Show files area generated by bulk actions ?
37$confirm = GETPOST('confirm', 'alpha'); // Result of a confirmation
38$cancel = GETPOST('cancel', 'alpha'); // We click on a Cancel button
39$toselect = GETPOST('toselect', 'array'); // Array of ids of elements selected into a list
40$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'opensurveylist'; // To manage different context of search
41$backtopage = GETPOST('backtopage', 'alpha'); // Go back to a dedicated page
42$optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print')
43$sall = trim((GETPOST('search_all', 'alphanohtml') != '') ? GETPOST('search_all', 'alphanohtml') : GETPOST('sall', 'alphanohtml'));
44
45$id = GETPOST('id', 'alpha');
46$search_ref = GETPOST('search_ref', 'alpha');
47$search_title = GETPOST('search_title', 'alpha');
48$search_status = GETPOST('search_status', 'alpha');
49
50// Load variable for pagination
51$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit;
52$sortfield = GETPOST('sortfield', 'aZ09comma');
53$sortorder = GETPOST('sortorder', 'aZ09comma');
54$page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int');
55if (empty($page) || $page == -1 || GETPOST('button_search', 'alpha') || GETPOST('button_removefilter', 'alpha') || (empty($toselect) && $massaction === '0')) {
56 $page = 0;
57} // If $page is not defined, or '' or -1 or if we click on clear filters or if we select empty mass action
58$offset = $limit * $page;
59$pageprev = $page - 1;
60$pagenext = $page + 1;
61
62// Initialize technical objects
63$object = new Opensurveysondage($db);
64$opensurvey_static = new Opensurveysondage($db);
65
66$extrafields = new ExtraFields($db);
67$diroutputmassaction = $conf->opensurvey->dir_output.'/temp/massgeneration/'.$user->id;
68$hookmanager->initHooks(array('surveylist')); // Note that conf->hooks_modules contains array
69// Fetch optionals attributes and labels
70$extrafields->fetch_name_optionals_label($object->table_element);
71$search_array_options = $extrafields->getOptionalsFromPost($object->table_element, '', 'search_');
72
73// Default sort order (if not yet defined by previous GETPOST)
74if (!$sortfield) {
75 $sortfield = "p.date_fin";
76}
77if (!$sortorder) {
78 $sortorder = "DESC";
79}
80
81// Security check
82if (!$user->hasRight('opensurvey', 'read')) {
84}
85
86// Definition of fields for list
87$arrayfields = array();
88foreach ($arrayfields as $key => $val) {
89 // If $val['visible']==0, then we never show the field
90 if (!empty($val['visible'])) {
91 $arrayfields['t.'.$key] = array('label'=>$val['label'], 'checked'=>(($val['visible'] < 0) ? 0 : 1), 'enabled'=>$val['enabled'], 'position'=>$val['position']);
92 }
93}
94// Extra fields
95if (isset($extrafields->attributes[$object->table_element]['label']) && is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0) {
96 foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) {
97 if (!empty($extrafields->attributes[$object->table_element]['list'][$key])) {
98 $arrayfields["ef.".$key] = array(
99 'label'=>$extrafields->attributes[$object->table_element]['label'][$key],
100 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1),
101 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key],
102 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key])
103 );
104 }
105 }
106}
107$object->fields = dol_sort_array($object->fields, 'position');
108$arrayfields = dol_sort_array($arrayfields, 'position');
109
110$permissiontoread = $user->rights->opensurvey->read;
111$permissiontoadd = $user->rights->opensurvey->write;
112// permission delete doesn't exists
113$permissiontodelete = $user->rights->opensurvey->write;
114
115
116/*
117 * Actions
118 */
119
120if (GETPOST('cancel', 'alpha')) {
121 $action = 'list';
122 $massaction = '';
123}
124if (!GETPOST('confirmmassaction', 'alpha') && $massaction != 'presend' && $massaction != 'confirm_presend') {
125 $massaction = '';
126}
127
128$parameters = array();
129$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
130if ($reshook < 0) {
131 setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
132}
133
134if (empty($reshook)) {
135 // Selection of new fields
136 include DOL_DOCUMENT_ROOT.'/core/actions_changeselectedfields.inc.php';
137
138 // Purge search criteria
139 if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) { // All tests are required to be compatible with all browsers
140 $search_status = '';
141 $search_title = '';
142 $search_ref = '';
143 $toselect = array();
144 $search_array_options = array();
145 }
146 if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')
147 || GETPOST('button_search_x', 'alpha') || GETPOST('button_search.x', 'alpha') || GETPOST('button_search', 'alpha')) {
148 $massaction = ''; // Protection to avoid mass action if we force a new search during a mass action confirmation
149 }
150
151 // Mass actions
152 $objectclass = 'Opensurveysondage';
153 $objectlabel = 'Opensurveysondage';
154 $uploaddir = $conf->opensurvey->dir_output;
155 include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php';
156}
157
158
159/*
160 * View
161 */
162
163$form = new Form($db);
164
165$now = dol_now();
166
167//$help_url="EN:Module_MyObject|FR:Module_MyObject_FR|ES:Módulo_MyObject";
168$help_url = '';
169$title = $langs->trans('OpenSurveyArea');
170
171
172$sql = "SELECT p.id_sondage as rowid, p.fk_user_creat, p.format, p.date_fin, p.status, p.titre as title, p.nom_admin, p.tms,";
173$sql .= " u.login, u.firstname, u.lastname";
174$sql .= " FROM ".MAIN_DB_PREFIX."opensurvey_sondage as p";
175$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."user u ON u.rowid = p.fk_user_creat";
176$sql .= " WHERE p.entity IN (".getEntity('survey').")";
177if ($search_status != '-1' && $search_status != '') {
178 $sql .= natural_search("p.status", $search_status, 2);
179}
180if (!empty($search_expired) && $search_expired == 'expired') {
181 $sql .= " AND p.date_fin < '".$db->idate($now)."'";
182}
183if (!empty($search_expired) && $search_expired == 'opened') {
184 $sql .= " AND p.date_fin >= '".$db->idate($now)."'";
185}
186if (!empty($search_ref)) {
187 $sql .= natural_search("p.id_sondage", $search_ref);
188}
189if (!empty($search_title)) {
190 $sql .= natural_search("p.titre", $search_title);
191}
192// Add where from extra fields
193include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_sql.tpl.php';
194// Add where from hooks
195$parameters = array();
196$reshook = $hookmanager->executeHooks('printFieldListWhere', $parameters, $object); // Note that $action and $object may have been modified by hook
197$sql .= $hookmanager->resPrint;
198
199$sql .= $db->order($sortfield, $sortorder);
200
201// Count total nb of records
202$nbtotalofrecords = '';
203if (!getDolGlobalInt('MAIN_DISABLE_FULL_SCANLIST')) {
204 $resql = $db->query($sql);
205 $nbtotalofrecords = $db->num_rows($resql);
206 if (($page * $limit) > $nbtotalofrecords) { // if total of record found is smaller than page * limit, goto and load page 0
207 $page = 0;
208 $offset = 0;
209 }
210}
211// if total of record found is smaller than limit, no need to do paging and to restart another select with limits set.
212if (is_numeric($nbtotalofrecords) && $limit > $nbtotalofrecords) {
213 $num = $nbtotalofrecords;
214} else {
215 $sql .= $db->plimit($limit + 1, $offset);
216
217 $resql = $db->query($sql);
218 if (!$resql) {
219 dol_print_error($db);
220 exit;
221 }
222
223 $num = $db->num_rows($resql);
224}
225
226// Direct jump if only one record found
227if ($num == 1 && getDolGlobalString('MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE') && $search_all) {
228 $obj = $db->fetch_object($resql);
229 $id = $obj->rowid;
230 header("Location: ".dol_buildpath('/opensurvey/card.php', 1).'?id='.$id);
231 exit;
232}
233
234
235// Output page
236// --------------------------------------------------------------------
237
238llxHeader('', $title, $help_url);
239
240$arrayofselected = is_array($toselect) ? $toselect : array();
241
242$param = '';
243if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) {
244 $param .= '&contextpage='.urlencode($contextpage);
245}
246if ($limit > 0 && $limit != $conf->liste_limit) {
247 $param .= '&limit='.((int) $limit);
248}
249$fieldtosortuser = !getDolGlobalString('MAIN_FIRSTNAME_NAME_POSITION') ? 'firstname' : 'lastname';
250
251if ($optioncss != '') {
252 $param .= '&optioncss='.urlencode($optioncss);
253}
254// Add $param from extra fields
255include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php';
256
257// List of mass actions available
258$arrayofmassactions = array(
259 //'presend'=>img_picto('', 'email', 'class="pictofixedwidth"').$langs->trans("SendByMail"),
260 //'builddoc'=>img_picto('', 'pdf', 'class="pictofixedwidth"').$langs->trans("PDFMerge"),
261);
262if ($permissiontodelete) {
263 $arrayofmassactions['predelete'] = img_picto('', 'delete', 'class="pictofixedwidth"').$langs->trans("Delete");
264}
265if (GETPOST('nomassaction', 'int') || in_array($massaction, array('presend', 'predelete'))) {
266 $arrayofmassactions = array();
267}
268$massactionbutton = $form->selectMassAction('', $arrayofmassactions);
269
270
271// List of surveys into database
272
273print '<form method="POST" id="searchFormList" action="'.$_SERVER["PHP_SELF"].'">';
274if ($optioncss != '') {
275 print '<input type="hidden" name="optioncss" value="'.$optioncss.'">';
276}
277print '<input type="hidden" name="token" value="'.newToken().'">';
278print '<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
279print '<input type="hidden" name="action" value="list">';
280print '<input type="hidden" name="sortfield" value="'.$sortfield.'">';
281print '<input type="hidden" name="sortorder" value="'.$sortorder.'">';
282print '<input type="hidden" name="contextpage" value="'.$contextpage.'">';
283
284$newcardbutton = '';
285$newcardbutton .= dolGetButtonTitle($langs->trans('NewSurvey'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/opensurvey/wizard/index.php', '', $user->hasRight('opensurvey', 'write'));
286
287print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'poll', 0, $newcardbutton, '', $limit, 0, 0, 1);
288
289// Add code for pre mass action (confirmation or email presend form)
290$topicmail = "SendOpenSurveyRef";
291$modelmail = "opensurvey";
292$objecttmp = new Opensurveysondage($db);
293$trackid = 'surv'.$object->id;
294include DOL_DOCUMENT_ROOT.'/core/tpl/massactions_pre.tpl.php';
295
296if ($sall) {
297 foreach ($fieldstosearchall as $key => $val) {
298 $fieldstosearchall[$key] = $langs->trans($val);
299 }
300 print '<div class="divsearchfieldfilter">'.$langs->trans("FilterOnInto", $sall).join(', ', $fieldstosearchall).'</div>';
301}
302
303$moreforfilter = '';
304/*$moreforfilter.='<div class="divsearchfield">';
305$moreforfilter.= $langs->trans('MyFilter') . ': <input type="text" name="search_myfield" value="'.dol_escape_htmltag($search_myfield).'">';
306$moreforfilter.= '</div>';*/
307
308$parameters = array();
309$reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object); // Note that $action and $object may have been modified by hook
310if (empty($reshook)) {
311 $moreforfilter .= $hookmanager->resPrint;
312} else {
313 $moreforfilter = $hookmanager->resPrint;
314}
315
316if (!empty($moreforfilter)) {
317 print '<div class="liste_titre liste_titre_bydiv centpercent">';
318 print $moreforfilter;
319 print '</div>';
320}
321
322$varpage = empty($contextpage) ? $_SERVER["PHP_SELF"] : $contextpage;
323//$selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields
324$selectedfields = '';
325$selectedfields .= (count($arrayofmassactions) ? $form->showCheckAddButtons('checkforselect', 1) : '');
326
327print '<div class="div-table-responsive">';
328print '<table class="tagtable liste'.($moreforfilter ? " listwithfilterbefore" : "").'">'."\n";
329
330// Fields title search
331// --------------------------------------------------------------------
332print '<tr class="liste_titre_filter">';
333// Action column
334if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
335 print '<td class="liste_titre maxwidthsearch">';
336 $searchpicto = $form->showFilterButtons('left');
337 print $searchpicto;
338 print '</td>';
339}
340print '<td class="liste_titre"><input type="text" class="maxwidth100" name="search_ref" value="'.dol_escape_htmltag($search_ref).'"></td>';
341print '<td class="liste_titre"><input type="text" class="maxwidth100onsmartphone" name="search_title" value="'.dol_escape_htmltag($search_title).'"></td>';
342print '<td class="liste_titre"></td>';
343print '<td class="liste_titre"></td>';
344print '<td class="liste_titre"></td>';
345print '<td class="liste_titre"></td>';
346print '<td class="liste_titre"></td>';
347$arraystatus = array('-1'=>'&nbsp;', '0'=>$langs->trans("Draft"), '1'=>$langs->trans("Opened"), '2'=>$langs->trans("Closed"));
348print '<td class="liste_titre" align="center">'.$form->selectarray('search_status', $arraystatus, $search_status, 0, 0, 0, '', 0, 0, 0, '', 'onroghtofpage').'</td>';
349// Extra fields
350include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_input.tpl.php';
351
352// Fields from hook
353$parameters = array('arrayfields'=>$arrayfields);
354$reshook = $hookmanager->executeHooks('printFieldListOption', $parameters, $object); // Note that $action and $object may have been modified by hook
355print $hookmanager->resPrint;
356// Action column
357if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
358 print '<td class="liste_titre maxwidthsearch">';
359 $searchpicto = $form->showFilterButtons();
360 print $searchpicto;
361 print '</td>';
362}
363print '</tr>'."\n";
364
365
366// Fields title label
367// --------------------------------------------------------------------
368print '<tr class="liste_titre">';
369// Action column
370if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
371 print getTitleFieldOfList($selectedfields, 0, $_SERVER["PHP_SELF"], '', '', '', 'align="center"', $sortfield, $sortorder, 'maxwidthsearch ')."\n";
372}
373print_liste_field_titre("Ref", $_SERVER["PHP_SELF"], "p.id_sondage", $param, "", "", $sortfield, $sortorder);
374print_liste_field_titre("Title", $_SERVER["PHP_SELF"], "p.titre", $param, "", "", $sortfield, $sortorder);
375print_liste_field_titre("Type", $_SERVER["PHP_SELF"], "p.format", $param, "", "", $sortfield, $sortorder);
376print_liste_field_titre("Author", $_SERVER["PHP_SELF"], "u.".$fieldtosortuser, $param, "", "", $sortfield, $sortorder);
377print_liste_field_titre("NbOfVoters", $_SERVER["PHP_SELF"], "", $param, "", 'align="right"', $sortfield, $sortorder);
378print_liste_field_titre("ExpireDate", $_SERVER["PHP_SELF"], "p.date_fin", $param, "", 'align="center"', $sortfield, $sortorder);
379print_liste_field_titre("DateLastModification", $_SERVER["PHP_SELF"], "p.tms", $param, "", 'align="center"', $sortfield, $sortorder);
380print_liste_field_titre("Status", $_SERVER["PHP_SELF"], "p.status", $param, "", 'align="center"', $sortfield, $sortorder);
381// Extra fields
382include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_title.tpl.php';
383// Hook fields
384$parameters = array('arrayfields'=>$arrayfields, 'param'=>$param, 'sortfield'=>$sortfield, 'sortorder'=>$sortorder);
385$reshook = $hookmanager->executeHooks('printFieldListTitle', $parameters, $object); // Note that $action and $object may have been modified by hook
386print $hookmanager->resPrint;
387// Action column
388if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
389 print getTitleFieldOfList($selectedfields, 0, $_SERVER["PHP_SELF"], '', '', '', 'align="center"', $sortfield, $sortorder, 'maxwidthsearch ')."\n";
390}
391print '</tr>'."\n";
392
393
394
395// Loop on record
396// --------------------------------------------------------------------
397$i = 0;
398$totalarray = array();
399$totalarray['nbfield'] = 0;
400while ($i < min($num, $limit)) {
401 $obj = $db->fetch_object($resql);
402 if (empty($obj)) {
403 break; // Should not happen
404 }
405
406 $sql2 = 'select COUNT(*) as nb from '.MAIN_DB_PREFIX."opensurvey_user_studs where id_sondage='".$db->escape($obj->rowid)."'";
407 $resql2 = $db->query($sql2);
408 if ($resql2) {
409 $obj2 = $db->fetch_object($resql2);
410 $nbuser = $obj2->nb;
411 } else {
412 dol_print_error($db);
413 }
414
415 $opensurvey_static->id = $obj->rowid;
416 $opensurvey_static->ref = $obj->rowid;
417 $opensurvey_static->title = $obj->title;
418 $opensurvey_static->status = $obj->status;
419 $opensurvey_static->date_fin = $db->jdate($obj->date_fin);
420
421 // Show here line of result
422 print '<tr class="oddeven">';
423 // Action column
424 if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
425 print '<td class="nowrap center">';
426 if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined
427 $selected = 0;
428 if (in_array($obj->rowid, $arrayofselected)) {
429 $selected = 1;
430 }
431 print '<input id="cb'.$obj->rowid.'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$obj->rowid.'"'.($selected ? ' checked="checked"' : '').'>';
432 }
433 print '</td>';
434 }
435 // Ref
436 print '<td>';
437 print $opensurvey_static->getNomUrl(1);
438 print '</td>';
439 if (!$i) {
440 $totalarray['nbfield']++;
441 }
442
443 // Title
444 print '<td>'.dol_htmlentities($obj->title).'</td>';
445 if (!$i) {
446 $totalarray['nbfield']++;
447 }
448
449 // Type
450 print '<td>';
451 $type = ($obj->format == 'A') ? 'classic' : 'date';
452 print img_picto('', dol_buildpath('/opensurvey/img/'.($type == 'classic' ? 'chart-32.png' : 'calendar-32.png'), 1), 'width="16"', 1);
453 print ' '.$langs->trans($type == 'classic' ? "TypeClassic" : "TypeDate");
454 print '</td>';
455 if (!$i) {
456 $totalarray['nbfield']++;
457 }
458
459 print '<td>';
460 // Author
461 if ($obj->fk_user_creat) {
462 $userstatic = new User($db);
463 $userstatic->id = $obj->fk_user_creat;
464 $userstatic->firstname = $obj->firstname;
465 $userstatic->lastname = $obj->lastname;
466 $userstatic->login = $userstatic->getFullName($langs, 0, -1, 48);
467
468 print $userstatic->getLoginUrl(1);
469 } else {
470 print dol_htmlentities($obj->nom_admin);
471 }
472 print '</td>';
473 if (!$i) {
474 $totalarray['nbfield']++;
475 }
476
477 // Nb of voters
478 print'<td class="right">'.$nbuser.'</td>'."\n";
479 if (!$i) {
480 $totalarray['nbfield']++;
481 }
482
483 print '<td class="center">'.dol_print_date($db->jdate($obj->date_fin), 'day');
484 if ($db->jdate($obj->date_fin) < $now && $obj->status == Opensurveysondage::STATUS_VALIDATED) {
485 print img_warning($langs->trans("Expired"));
486 }
487 print '</td>';
488 if (!$i) {
489 $totalarray['nbfield']++;
490 }
491
492 print '<td class="center">'.dol_print_date($db->jdate($obj->tms), 'dayhour');
493 print '</td>';
494 if (!$i) {
495 $totalarray['nbfield']++;
496 }
497
498 print '<td class="center">'.$opensurvey_static->getLibStatut(5).'</td>'."\n";
499 if (!$i) {
500 $totalarray['nbfield']++;
501 }
502
503 // Extra fields
504 include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php';
505 // Fields from hook
506 $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray);
507 $reshook = $hookmanager->executeHooks('printFieldListValue', $parameters, $object); // Note that $action and $object may have been modified by hook
508 print $hookmanager->resPrint;
509 // Action column
510 if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
511 print '<td class="nowrap center">';
512 if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined
513 $selected = 0;
514 if (in_array($obj->rowid, $arrayofselected)) {
515 $selected = 1;
516 }
517 print '<input id="cb'.$obj->rowid.'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$obj->rowid.'"'.($selected ? ' checked="checked"' : '').'>';
518 }
519 print '</td>';
520 }
521 if (!$i) {
522 $totalarray['nbfield']++;
523 }
524
525 print '</tr>'."\n";
526 $i++;
527}
528
529// Show total line
530include DOL_DOCUMENT_ROOT.'/core/tpl/list_print_total.tpl.php';
531
532
533// If no record found
534if ($num == 0) {
535 $colspan = 8;
536 foreach ($arrayfields as $key => $val) {
537 if (!empty($val['checked'])) {
538 $colspan++;
539 }
540 }
541 print '<tr><td colspan="'.$colspan.'"><span class="opacitymedium">'.$langs->trans("NoRecordFound").'</span></td></tr>';
542}
543
544
545$db->free($resql);
546
547$parameters = array('arrayfields'=>$arrayfields, 'sql'=>$sql);
548$reshook = $hookmanager->executeHooks('printFieldListFooter', $parameters, $object); // Note that $action and $object may have been modified by hook
549print $hookmanager->resPrint;
550
551print '</table>'."\n";
552print '</div>'."\n";
553
554print '</form>'."\n";
555
556if (in_array('builddoc', array_keys($arrayofmassactions)) && ($nbtotalofrecords === '' || $nbtotalofrecords)) {
557 $hidegeneratedfilelistifempty = 1;
558 if ($massaction == 'builddoc' || $action == 'remove_file' || $show_files) {
559 $hidegeneratedfilelistifempty = 0;
560 }
561
562 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
563 $formfile = new FormFile($db);
564
565 // Show list of available documents
566 $urlsource = $_SERVER['PHP_SELF'].'?sortfield='.$sortfield.'&sortorder='.$sortorder;
567 $urlsource .= str_replace('&amp;', '&', $param);
568
569 $filedir = $diroutputmassaction;
570 $genallowed = $permissiontoread;
571 $delallowed = $permissiontoadd;
572
573 print $formfile->showdocuments('massfilesarea_mymodule', '', $filedir, $urlsource, 0, $delallowed, '', 1, 1, 0, 48, 1, $param, $title, '', '', '', null, $hidegeneratedfilelistifempty);
574}
575
576// End of page
577llxFooter();
578$db->close();
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader()
Empty header.
Definition wrapper.php:55
llxFooter()
Empty footer.
Definition wrapper.php:69
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.
Put here description of your class.
const STATUS_VALIDATED
Validated/Opened status.
Class to manage Dolibarr users.
img_warning($titlealt='default', $moreatt='', $morecss='pictowarning')
Show warning logo.
dol_print_error($db='', $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
dolGetButtonTitle($label, $helpText='', $iconClass='fa fa-file', $url='', $id='', $status=1, $params=array())
Function dolGetButtonTitle : this kind of buttons are used in title in list.
natural_search($fields, $value, $mode=0, $nofirstand=0)
Generate natural SQL search string for a criteria (this criteria can be tested on one or several fiel...
dol_now($mode='auto')
Return date for now.
getDolGlobalInt($key, $default=0)
Return a 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)
dol_sort_array(&$array, $index, $order='asc', $natsort=0, $case_sensitive=0, $keepindex=0)
Advanced sort array by second index function, which produces ascending (default) or descending output...
print_liste_field_titre($name, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $tooltip="", $forcenowrapcolumntitle=0)
Show title line of an array.
dol_htmlentities($string, $flags=ENT_QUOTES|ENT_SUBSTITUTE, $encoding='UTF-8', $double_encode=false)
Replace htmlentities functions.
getTitleFieldOfList($name, $thead=0, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $disablesortlink=0, $tooltip='', $forcenowrapcolumntitle=0)
Get title line of an array.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0)
Set event messages in dol_events session object.
print_barre_liste($titre, $page, $file, $options='', $sortfield='', $sortorder='', $morehtmlcenter='', $num=-1, $totalnboflines='', $picto='generic', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limit=-1, $hideselectlimit=0, $hidenavigation=0, $pagenavastextinput=0, $morehtmlrightbeforearrow='')
Print a title with navigation controls for pagination.
dol_buildpath($path, $type=0, $returnemptyifnotfound=0)
Return path of url or filesystem.
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.