dolibarr 23.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 * Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
5 * Copyright (C) 2025 MDW <mdeweerd@users.noreply.github.com>
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <https://www.gnu.org/licenses/>.
19 */
20
27// Load Dolibarr environment
28require '../main.inc.php';
29require_once DOL_DOCUMENT_ROOT."/core/lib/admin.lib.php";
30require_once DOL_DOCUMENT_ROOT."/core/lib/files.lib.php";
31require_once DOL_DOCUMENT_ROOT."/opensurvey/class/opensurveysondage.class.php";
32
41// Load translation files required by the page
42$langs->load("opensurvey");
43
44$action = GETPOST('action', 'aZ09') ? GETPOST('action', 'aZ09') : 'view'; // The action 'add', 'create', 'edit', 'update', 'view', ...
45$massaction = GETPOST('massaction', 'alpha'); // The bulk action (combo box choice into lists)
46$show_files = GETPOSTINT('show_files'); // Show files area generated by bulk actions ?
47$confirm = GETPOST('confirm', 'alpha'); // Result of a confirmation
48$cancel = GETPOST('cancel', 'alpha'); // We click on a Cancel button
49$toselect = GETPOST('toselect', 'array:int'); // Array of ids of elements selected into a list
50$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'opensurveylist'; // To manage different context of search
51$backtopage = GETPOST('backtopage', 'alpha'); // Go back to a dedicated page
52$optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print')
53$mode = GETPOST('mode', 'aZ');
54
55$search_all = trim(GETPOST('search_all', 'alphanohtml'));
56
57$id = GETPOST('id', 'alpha');
58$search_ref = GETPOST('search_ref', 'alpha');
59$search_title = GETPOST('search_title', 'alpha');
60$search_status = GETPOST('search_status', 'alpha');
61
62// Load variable for pagination
63$limit = GETPOSTINT('limit') ? GETPOSTINT('limit') : $conf->liste_limit;
64$sortfield = GETPOST('sortfield', 'aZ09comma');
65$sortorder = GETPOST('sortorder', 'aZ09comma');
66$page = GETPOSTISSET('pageplusone') ? (GETPOSTINT('pageplusone') - 1) : GETPOSTINT("page");
67if (empty($page) || $page == -1 || GETPOST('button_search', 'alpha') || GETPOST('button_removefilter', 'alpha') || (empty($toselect) && $massaction === '0')) {
68 $page = 0;
69} // If $page is not defined, or '' or -1 or if we click on clear filters or if we select empty mass action
70$offset = $limit * $page;
71$pageprev = $page - 1;
72$pagenext = $page + 1;
73
74// Initialize a technical objects
75$object = new Opensurveysondage($db);
76$opensurvey_static = new Opensurveysondage($db);
77
78$extrafields = new ExtraFields($db);
79$diroutputmassaction = $conf->opensurvey->dir_output.'/temp/massgeneration/'.$user->id;
80$hookmanager->initHooks(array('surveylist')); // Note that conf->hooks_modules contains array
81// Fetch optionals attributes and labels
82$extrafields->fetch_name_optionals_label($object->table_element);
83$search_array_options = $extrafields->getOptionalsFromPost($object->table_element, '', 'search_');
84
85// Default sort order (if not yet defined by previous GETPOST)
86if (!$sortfield) {
87 $sortfield = "p.date_fin";
88}
89if (!$sortorder) {
90 $sortorder = "DESC";
91}
92
93// Security check
94if (!$user->hasRight('opensurvey', 'read')) {
96}
97
98$fieldstosearchall = array();
99
100// Definition of fields for list
101$arrayfields = array();
102// Extra fields
103include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php';
104
105
106$object->fields = dol_sort_array($object->fields, 'position');
107$arrayfields = dol_sort_array($arrayfields, 'position');
108
109$permissiontoread = $user->hasRight('opensurvey', 'read');
110$permissiontoadd = $user->hasRight('opensurvey', 'write');
111// permission delete doesn't exists
112$permissiontodelete = $user->hasRight('opensurvey', 'write');
113
114
115/*
116 * Actions
117 */
118
119if (GETPOST('cancel', 'alpha')) {
120 $action = 'list';
121 $massaction = '';
122}
123if (!GETPOST('confirmmassaction', 'alpha') && $massaction != 'presend' && $massaction != 'confirm_presend') {
124 $massaction = '';
125}
126
127$parameters = array('arrayfields' => &$arrayfields);
128$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
129if ($reshook < 0) {
130 setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
131}
132
133if (empty($reshook)) {
134 // Selection of new fields
135 include DOL_DOCUMENT_ROOT.'/core/actions_changeselectedfields.inc.php';
136
137 // Purge search criteria
138 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
139 $search_status = '';
140 $search_title = '';
141 $search_ref = '';
142 $toselect = array();
143 $search_array_options = array();
144 }
145 if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')
146 || GETPOST('button_search_x', 'alpha') || GETPOST('button_search.x', 'alpha') || GETPOST('button_search', 'alpha')) {
147 $massaction = ''; // Protection to avoid mass action if we force a new search during a mass action confirmation
148 }
149
150 // Mass actions
151 $objectclass = 'Opensurveysondage';
152 $objectlabel = 'Opensurveysondage';
153 $uploaddir = $conf->opensurvey->dir_output;
154 include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php';
155}
156
157
158/*
159 * View
160 */
161
162$form = new Form($db);
163
164$now = dol_now();
165
166//$help_url="EN:Module_MyObject|FR:Module_MyObject_FR|ES:Módulo_MyObject";
167$help_url = '';
168$title = $langs->trans('OpenSurveyArea');
169
170// Build and execute select
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) > (int) $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 && getDolGlobalInt('MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE') && $search_all && !$page) {
228 $obj = $db->fetch_object($resql);
229 $id = $obj->rowid;
230 header("Location: ".dol_buildpath('/opensurvey/card.php', 1).'?id='.((int) $id));
231 exit;
232}
233
234
235// Output page
236// --------------------------------------------------------------------
237
238llxHeader('', $title, $help_url, '', 0, 0, '', '', '', 'bodyforlist');
239
240$arrayofselected = is_array($toselect) ? $toselect : array();
241
242$param = '';
243if (/* !empty($contextpage) && */ $contextpage != $_SERVER["PHP_SELF"]) { // $contextpage can't be empty
244 $param .= '&contextpage='.urlencode($contextpage);
245}
246if ($limit > 0 && $limit != $conf->liste_limit) {
247 $param .= '&limit='.((int) $limit);
248}
249if ($optioncss != '') {
250 $param .= '&optioncss='.urlencode($optioncss);
251}
252$fieldtosortuser = getDolGlobalString('MAIN_FIRSTNAME_NAME_POSITION') ? 'lastname' : 'firstname';
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 (!empty($permissiontodelete)) {
263 $arrayofmassactions['predelete'] = img_picto('', 'delete', 'class="pictofixedwidth"').$langs->trans("Delete");
264}
265if (GETPOSTINT('nomassaction') || in_array($massaction, array('presend', 'predelete'))) {
266 $arrayofmassactions = array();
267}
268$massactionbutton = $form->selectMassAction('', $arrayofmassactions);
269
270print '<form method="POST" id="searchFormList" action="'.$_SERVER["PHP_SELF"].'">'."\n";
271if ($optioncss != '') {
272 print '<input type="hidden" name="optioncss" value="'.$optioncss.'">';
273}
274print '<input type="hidden" name="token" value="'.newToken().'">';
275print '<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
276print '<input type="hidden" name="action" value="list">';
277print '<input type="hidden" name="sortfield" value="'.$sortfield.'">';
278print '<input type="hidden" name="sortorder" value="'.$sortorder.'">';
279print '<input type="hidden" name="page" value="'.$page.'">';
280print '<input type="hidden" name="contextpage" value="'.$contextpage.'">';
281print '<input type="hidden" name="page_y" value="">';
282print '<input type="hidden" name="mode" value="'.$mode.'">';
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
296
297if ($search_all) {
298 $setupstring = '';
299 // @phan-suppress-next-line PhanEmptyForeach
300 foreach ($fieldstosearchall as $key => $val) { // @phpstan-ignore-line
301 $fieldstosearchall[$key] = $langs->trans($val);
302 $setupstring .= $key."=".$val.";";
303 }
304 print '<!-- Search done like if OPENSURVEY_QUICKSEARCH_ON_FIELDS = '.$setupstring.' -->'."\n";
305 print '<div class="divsearchfieldfilter">'.$langs->trans("FilterOnInto", $search_all).implode(', ', $fieldstosearchall).'</div>';
306}
307
308$moreforfilter = '';
309/*$moreforfilter.='<div class="divsearchfield">';
310$moreforfilter.= $langs->trans('MyFilter') . ': <input type="text" name="search_myfield" value="'.dol_escape_htmltag($search_myfield).'">';
311$moreforfilter.= '</div>';*/
312
313$parameters = array();
314$reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
315if (empty($reshook)) {
316 $moreforfilter .= $hookmanager->resPrint;
317} else {
318 $moreforfilter = $hookmanager->resPrint;
319}
320$parameters = array(
321 'arrayfields' => &$arrayfields,
322);
323
324if (!empty($moreforfilter)) {
325 print '<div class="liste_titre liste_titre_bydiv centpercent">';
326 print $moreforfilter;
327 print '</div>';
328}
329
330$varpage = empty($contextpage) ? $_SERVER["PHP_SELF"] : $contextpage;
331$htmlofselectarray = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage, $conf->main_checkbox_left_column); // This also change content of $arrayfields with user setup
332$selectedfields = ($mode != 'kanban' ? $htmlofselectarray : '');
333$selectedfields .= (count($arrayofmassactions) ? $form->showCheckAddButtons('checkforselect', 1) : '');
334
335print '<div class="div-table-responsive">';
336print '<table class="tagtable nobottomiftotal liste'.($moreforfilter ? " listwithfilterbefore" : "").'">'."\n";
337
338// Fields title search
339// --------------------------------------------------------------------
340print '<tr class="liste_titre_filter">';
341// Action column
342if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
343 print '<td class="liste_titre center maxwidthsearch">';
344 $searchpicto = $form->showFilterButtons('left');
345 print $searchpicto;
346 print '</td>';
347}
348print '<td class="liste_titre"><input type="text" class="maxwidth100" name="search_ref" value="'.dol_escape_htmltag($search_ref).'"></td>';
349print '<td class="liste_titre"><input type="text" class="maxwidth100" name="search_title" value="'.dol_escape_htmltag($search_title).'"></td>';
350print '<td class="liste_titre"></td>';
351print '<td class="liste_titre"></td>';
352print '<td class="liste_titre"></td>';
353print '<td class="liste_titre"></td>';
354print '<td class="liste_titre"></td>';
355$arraystatus = array('-1' => '&nbsp;', '0' => $langs->trans("Draft"), '1' => $langs->trans("Opened"), '2' => $langs->trans("Closed"));
356print '<td class="liste_titre center parentonrightofpage">'.$form->selectarray('search_status', $arraystatus, $search_status, 0, 0, 0, '', 0, 0, 0, '', 'maxwidth100 onrightofpage').'</td>';
357// Extra fields
358include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_input.tpl.php';
359
360// Fields from hook
361$parameters = array('arrayfields' => $arrayfields);
362$reshook = $hookmanager->executeHooks('printFieldListOption', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
363print $hookmanager->resPrint;
364// Action column
365if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
366 print '<td class="liste_titre center maxwidthsearch">';
367 $searchpicto = $form->showFilterButtons();
368 print $searchpicto;
369 print '</td>';
370}
371print '</tr>'."\n";
372
373$totalarray = array();
374$totalarray['nbfield'] = 0;
375
376// Fields title label
377// --------------------------------------------------------------------
378print '<tr class="liste_titre">';
379// Action column
380if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
381 print getTitleFieldOfList($selectedfields, 0, $_SERVER["PHP_SELF"], '', '', '', '', $sortfield, $sortorder, 'center maxwidthsearch ')."\n";
382 $totalarray['nbfield']++;
383}
384print_liste_field_titre("Ref", $_SERVER["PHP_SELF"], "p.id_sondage", "", $param, "", $sortfield, $sortorder);
385$totalarray['nbfield']++;
386print_liste_field_titre("Title", $_SERVER["PHP_SELF"], "p.titre", "", $param, "", $sortfield, $sortorder);
387$totalarray['nbfield']++;
388print_liste_field_titre("Type", $_SERVER["PHP_SELF"], "p.format", "", $param, "", $sortfield, $sortorder);
389$totalarray['nbfield']++;
390print_liste_field_titre("Author", $_SERVER["PHP_SELF"], "u.".$fieldtosortuser, "", $param, "", $sortfield, $sortorder);
391$totalarray['nbfield']++;
392print_liste_field_titre("NbOfVoters", $_SERVER["PHP_SELF"], "", "", $param, 'align="right"', $sortfield, $sortorder);
393$totalarray['nbfield']++;
394print_liste_field_titre("ExpireDate", $_SERVER["PHP_SELF"], "p.date_fin", "", $param, 'align="center"', $sortfield, $sortorder);
395$totalarray['nbfield']++;
396print_liste_field_titre("DateLastModification", $_SERVER["PHP_SELF"], "p.tms", "", $param, 'align="center"', $sortfield, $sortorder);
397$totalarray['nbfield']++;
398print_liste_field_titre("Status", $_SERVER["PHP_SELF"], "p.status", "", $param, 'align="center"', $sortfield, $sortorder);
399$totalarray['nbfield']++;
400// Extra fields
401include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_title.tpl.php';
402// Hook fields
403$parameters = array('arrayfields' => $arrayfields, 'param' => $param, 'sortfield' => $sortfield, 'sortorder' => $sortorder);
404$reshook = $hookmanager->executeHooks('printFieldListTitle', $parameters, $object); // Note that $action and $object may have been modified by hook
405print $hookmanager->resPrint;
406// Action column
407if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
408 print getTitleFieldOfList($selectedfields, 0, $_SERVER["PHP_SELF"], '', '', '', 'align="center"', $sortfield, $sortorder, 'maxwidthsearch ')."\n";
409 $totalarray['nbfield']++;
410}
411print '</tr>'."\n";
412
413$savnbfield = $totalarray['nbfield'];
414
415
416// Loop on record
417// --------------------------------------------------------------------
418$i = 0;
419$totalarray = array();
420$totalarray['nbfield'] = 0;
421$imaxinloop = ($limit ? min($num, $limit) : $num);
422while ($i < $imaxinloop) {
423 $obj = $db->fetch_object($resql);
424 if (empty($obj)) {
425 break; // Should not happen
426 }
427
428 $nbuser = 0;
429 $sql2 = 'select COUNT(*) as nb from '.MAIN_DB_PREFIX."opensurvey_user_studs where id_sondage='".$db->escape($obj->rowid)."'";
430 $resql2 = $db->query($sql2);
431 if ($resql2) {
432 $obj2 = $db->fetch_object($resql2);
433 $nbuser = $obj2->nb;
434 } else {
435 dol_print_error($db);
436 }
437
438 $opensurvey_static->id = $obj->rowid;
439 $opensurvey_static->ref = $obj->rowid;
440 $opensurvey_static->title = $obj->title;
441 $opensurvey_static->status = $obj->status;
442 $opensurvey_static->date_fin = $db->jdate($obj->date_fin);
443
444 // Show here line of result
445 print '<tr data-rowid="'.$opensurvey_static->id.'" class="oddeven">';
446 // Action column
447 if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
448 print '<td class="nowrap center">';
449 if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined
450 $selected = 0;
451 if (in_array($obj->rowid, $arrayofselected)) {
452 $selected = 1;
453 }
454 print '<input id="cb'.$obj->rowid.'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$obj->rowid.'"'.($selected ? ' checked="checked"' : '').'>';
455 }
456 print '</td>';
457 if (!$i) {
458 $totalarray['nbfield']++;
459 }
460 }
461
462 // Ref
463 print '<td class="tdoverflowmax150">';
464 print $opensurvey_static->getNomUrl(1);
465 print '</td>';
466 if (!$i) {
467 $totalarray['nbfield']++;
468 }
469
470 // Title
471 print '<td class="tdoverflowmax200">'.dol_htmlentities($obj->title).'</td>';
472 if (!$i) {
473 $totalarray['nbfield']++;
474 }
475
476 // Type
477 print '<td class="tdoverflowmax125">';
478 $type = ($obj->format == 'A') ? 'classic' : 'date';
479 print img_picto('', dol_buildpath('/opensurvey/img/'.($type == 'classic' ? 'chart-32.png' : 'calendar-32.png'), 1), 'width="16"', 1);
480 print ' '.$langs->trans($type == 'classic' ? "TypeClassic" : "TypeDate");
481 print '</td>';
482 if (!$i) {
483 $totalarray['nbfield']++;
484 }
485
486 print '<td class="tdoverflowmax125">';
487 // Author
488 if ($obj->fk_user_creat) {
489 $userstatic = new User($db);
490 $userstatic->id = $obj->fk_user_creat;
491 $userstatic->firstname = $obj->firstname;
492 $userstatic->lastname = $obj->lastname;
493 $userstatic->login = $userstatic->getFullName($langs, 0, -1, 48);
494
495 print $userstatic->getLoginUrl(1);
496 } else {
497 print dol_htmlentities($obj->nom_admin);
498 }
499 print '</td>';
500 if (!$i) {
501 $totalarray['nbfield']++;
502 }
503
504 // Nb of voters
505 print'<td class="right">'.$nbuser.'</td>'."\n";
506 if (!$i) {
507 $totalarray['nbfield']++;
508 }
509
510 print '<td class="center nowraponall">'.dol_print_date($db->jdate($obj->date_fin), 'day');
511 if ($db->jdate($obj->date_fin) < $now && $obj->status == Opensurveysondage::STATUS_VALIDATED) {
512 print img_warning($langs->trans("Expired"));
513 }
514 print '</td>';
515 if (!$i) {
516 $totalarray['nbfield']++;
517 }
518
519 print '<td class="center nowraponall">'.dol_print_date($db->jdate($obj->tms), 'dayhour');
520 print '</td>';
521 if (!$i) {
522 $totalarray['nbfield']++;
523 }
524
525 print '<td class="center">'.$opensurvey_static->getLibStatut(5).'</td>'."\n";
526 if (!$i) {
527 $totalarray['nbfield']++;
528 }
529
530 // Extra fields
531 include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php';
532 // Fields from hook
533 $parameters = array('arrayfields' => $arrayfields, 'obj' => $obj, 'i' => $i, 'totalarray' => &$totalarray);
534 $reshook = $hookmanager->executeHooks('printFieldListValue', $parameters, $object); // Note that $action and $object may have been modified by hook
535 print $hookmanager->resPrint;
536 // Action column
537 if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
538 print '<td class="nowrap center">';
539 if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined
540 $selected = 0;
541 if (in_array($obj->rowid, $arrayofselected)) {
542 $selected = 1;
543 }
544 print '<input id="cb'.$obj->rowid.'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$obj->rowid.'"'.($selected ? ' checked="checked"' : '').'>';
545 }
546 print '</td>';
547 if (!$i) {
548 $totalarray['nbfield']++;
549 }
550 }
551
552 print '</tr>'."\n";
553 $i++;
554}
555
556// Show total line
557include DOL_DOCUMENT_ROOT.'/core/tpl/list_print_total.tpl.php';
558
559
560// If no record found
561if ($num == 0) {
562 $colspan = $savnbfield;
563 print '<tr><td colspan="'.$colspan.'"><span class="opacitymedium">'.$langs->trans("NoRecordFound").'</span></td></tr>';
564}
565
566
567$db->free($resql);
568
569$parameters = array('arrayfields' => $arrayfields, 'sql' => $sql);
570$reshook = $hookmanager->executeHooks('printFieldListFooter', $parameters, $object); // Note that $action and $object may have been modified by hook
571print $hookmanager->resPrint;
572
573print '</table>'."\n";
574print '</div>'."\n";
575
576print '</form>'."\n";
577
578if (in_array('builddoc', array_keys($arrayofmassactions)) && ($nbtotalofrecords === '' || $nbtotalofrecords)) {
579 $hidegeneratedfilelistifempty = 1;
580 if ($massaction == 'builddoc' || $action == 'remove_file' || $show_files) {
581 $hidegeneratedfilelistifempty = 0;
582 }
583
584 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
585 $formfile = new FormFile($db);
586
587 // Show list of available documents
588 $urlsource = $_SERVER['PHP_SELF'].'?sortfield='.$sortfield.'&sortorder='.$sortorder;
589 $urlsource .= str_replace('&amp;', '&', $param);
590
591 $filedir = $diroutputmassaction;
592 $genallowed = $permissiontoread;
593 $delallowed = $permissiontoadd;
594
595 print $formfile->showdocuments('massfilesarea_mymodule', '', $filedir, $urlsource, 0, $delallowed, '', 1, 1, 0, 48, 1, $param, $title, '', '', '', null, $hidegeneratedfilelistifempty);
596}
597
598// End of page
599llxFooter();
600$db->close();
$id
Support class for third parties, contacts, members, users or resources.
Definition account.php:47
if(! $sortfield) if(! $sortorder) $object
Definition account.php:100
$totalarray
Definition export.php:1216
llxFooter($comment='', $zone='private', $disabledoutputofmessages=0)
Empty footer.
Definition wrapper.php:91
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:73
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.
dol_now($mode='gmt')
Return date for now.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0, $attop=0)
Set event messages in dol_events session object.
print_liste_field_titre($name, $file="", $field="", $begin="", $param="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $tooltip="", $forcenowrapcolumntitle=0)
Show title line of an array.
print_barre_liste($title, $page, $file, $options='', $sortfield='', $sortorder='', $morehtmlcenter='', $num=-1, $totalnboflines='', $picto='generic', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limit=-1, $selectlimitsuffix=0, $hidenavigation=0, $pagenavastextinput=0, $morehtmlrightbeforearrow='')
Print a title with navigation controls for pagination.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2, $allowothertags=array())
Show picto whatever it's its name (generic function)
img_warning($titlealt='default', $moreatt='', $morecss='pictowarning')
Show warning logo.
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
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, $sqltoadd='')
Generate natural SQL search string for a criteria (this criteria can be tested on one or several fiel...
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
dol_sort_array(&$array, $index, $order='asc', $natsort=0, $case_sensitive=0, $keepindex=0)
Advanced sort array by the value of a given key, which produces ascending (default) or descending out...
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.
dol_buildpath($path, $type=0, $returnemptyifnotfound=0)
Return path of url or filesystem.
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
getDolGlobalString($key, $default='')
Return a 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.