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