dolibarr 18.0.6
card.php
Go to the documentation of this file.
1<?php
2/* Copyright (C) 2017 Laurent Destailleur <eldy@users.sourceforge.net>
3 * Copyright (C) 2018 Alexandre Spangaro <aspangaro@open-dsi.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// Load Dolibarr environment
26require '../main.inc.php';
27require_once DOL_DOCUMENT_ROOT.'/core/lib/asset.lib.php';
28require_once DOL_DOCUMENT_ROOT.'/asset/class/asset.class.php';
29require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
30require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
31
32// Load translation files required by the page
33$langs->loadLangs(array("assets", "other"));
34
35// Get parameters
36$id = GETPOST('id', 'int');
37$ref = GETPOST('ref', 'alpha');
38$action = GETPOST('action', 'aZ09');
39$confirm = GETPOST('confirm', 'alpha');
40$cancel = GETPOST('cancel', 'aZ09');
41$contextpage = GETPOST('contextpage', 'aZ') ?GETPOST('contextpage', 'aZ') : 'assetcard'; // To manage different context of search
42$backtopage = GETPOST('backtopage', 'alpha');
43$backtopageforcancel = GETPOST('backtopageforcancel', 'alpha');
44
45// Initialize technical objects
46$object = new Asset($db);
47$extrafields = new ExtraFields($db);
48$diroutputmassaction = $conf->asset->dir_output.'/temp/massgeneration/'.$user->id;
49$hookmanager->initHooks(array('assetcard', 'globalcard')); // Note that conf->hooks_modules contains array
50
51// Fetch optionals attributes and labels
52$extrafields->fetch_name_optionals_label($object->table_element);
53
54$search_array_options = $extrafields->getOptionalsFromPost($object->table_element, '', 'search_');
55
56// Initialize array of search criterias
57$search_all = GETPOST("search_all", 'alpha');
58$search = array();
59foreach ($object->fields as $key => $val) {
60 if (GETPOST('search_'.$key, 'alpha')) {
61 $search[$key] = GETPOST('search_'.$key, 'alpha');
62 }
63}
64
65if (empty($action) && empty($id) && empty($ref)) {
66 $action = 'view';
67}
68
69// Load object
70include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not include_once.
71
72$permissiontoread = $user->hasRight('asset', 'read');
73$permissiontoadd = $user->hasRight('asset', 'write'); // Used by the include of actions_addupdatedelete.inc.php and actions_lineupdown.inc.php
74$permissiontodelete = $user->hasRight('asset', 'delete') || ($permissiontoadd && isset($object->status) && $object->status == $object::STATUS_DRAFT);
75$permissionnote = $user->hasRight('asset', 'write'); // Used by the include of actions_setnotes.inc.php
76$permissiondellink = $user->hasRight('asset', 'write'); // Used by the include of actions_dellink.inc.php
77$upload_dir = $conf->asset->multidir_output[isset($object->entity) ? $object->entity : 1];
78
79// Security check (enable the most restrictive one)
80if ($user->socid > 0) accessforbidden();
81if ($user->socid > 0) $socid = $user->socid;
82$isdraft = (($object->status == $object::STATUS_DRAFT) ? 1 : 0);
83restrictedArea($user, $object->element, $object->id, $object->table_element, '', 'fk_soc', 'rowid', $isdraft);
84if (!isModEnabled('asset')) accessforbidden();
85if (!$permissiontoread) accessforbidden();
86
87
88/*
89 * Actions
90 */
91
92$parameters = array();
93$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
94if ($reshook < 0) {
95 setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
96}
97
98if (empty($reshook)) {
99 $error = 0;
100
101 $backurlforlist = DOL_URL_ROOT.'/asset/list.php';
102
103 if (empty($backtopage) || ($cancel && empty($id))) {
104 if (empty($backtopage) || ($cancel && strpos($backtopage, '__ID__'))) {
105 if (empty($id) && (($action != 'add' && $action != 'create') || $cancel)) {
106 $backtopage = $backurlforlist;
107 } else {
108 $backtopage = DOL_URL_ROOT.'/asset/card.php?id='.((!empty($id) && $id > 0) ? $id : '__ID__');
109 }
110 }
111 }
112
113 $object->oldcopy = dol_clone($object);
114 $triggermodname = 'ASSET_MODIFY'; // Name of trigger action code to execute when we modify record
115
116 // Action dispose object
117 if ($action == 'confirm_disposal' && $confirm == 'yes' && $permissiontoadd) {
118 $object->disposal_date = dol_mktime(12, 0, 0, GETPOST('disposal_datemonth', 'int'), GETPOST('disposal_dateday', 'int'), GETPOST('disposal_dateyear', 'int')); // for date without hour, we use gmt
119 $object->disposal_amount_ht = GETPOST('disposal_amount', 'int');
120 $object->fk_disposal_type = GETPOST('fk_disposal_type', 'int');
121 $disposal_invoice_id = GETPOST('disposal_invoice_id', 'int');
122 $object->disposal_depreciated = ((GETPOST('disposal_depreciated') == '1' || GETPOST('disposal_depreciated') == 'on') ? 1 : 0);
123 $object->disposal_subject_to_vat = ((GETPOST('disposal_subject_to_vat') == '1' || GETPOST('disposal_subject_to_vat') == 'on') ? 1 : 0);
124
125 $result = $object->dispose($user, $disposal_invoice_id);
126 if ($result < 0) {
127 setEventMessages($object->error, $object->errors, 'errors');
128 }
129 $action = '';
130 } elseif ($action == "add") {
131 $object->supplier_invoice_id = GETPOST('supplier_invoice_id', 'int');
132 }
133
134 // Actions cancel, add, update, update_extras, confirm_validate, confirm_delete, confirm_deleteline, confirm_clone, confirm_close, confirm_setdraft, confirm_reopen
135 include DOL_DOCUMENT_ROOT.'/core/actions_addupdatedelete.inc.php';
136
137 // Actions when linking object each other
138 include DOL_DOCUMENT_ROOT.'/core/actions_dellink.inc.php';
139
140 // Actions when printing a doc from card
141 include DOL_DOCUMENT_ROOT.'/core/actions_printing.inc.php';
142
143 // Action to move up and down lines of object
144 //include DOL_DOCUMENT_ROOT.'/core/actions_lineupdown.inc.php';
145
146 // Action to build doc
147 include DOL_DOCUMENT_ROOT.'/core/actions_builddoc.inc.php';
148
149 // Actions to send emails
150 $triggersendname = 'ASSET_SENTBYMAIL';
151 $autocopy = 'MAIN_MAIL_AUTOCOPY_ASSET_TO';
152 $trackid = 'asset'.$object->id;
153 include DOL_DOCUMENT_ROOT.'/core/actions_sendmails.inc.php';
154}
155
156
157/*
158 * View
159 *
160 */
161
162$form = new Form($db);
163$formfile = new FormFile($db);
164
165$title = $langs->trans("Asset").' - '.$langs->trans("Card");
166$help_url = '';
167llxHeader('', $title, $help_url);
168
169// Part to create
170if ($action == 'create') {
171 print load_fiche_titre($langs->trans("NewObject", $langs->transnoentitiesnoconv("Asset")), '', 'object_'.$object->picto);
172
173 print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
174 print '<input type="hidden" name="token" value="'.newToken().'">';
175 print '<input type="hidden" name="action" value="add">';
176 if ($backtopage) {
177 print '<input type="hidden" name="backtopage" value="'.$backtopage.'">';
178 }
179 if ($backtopageforcancel) {
180 print '<input type="hidden" name="backtopageforcancel" value="'.$backtopageforcancel.'">';
181 }
182 if (GETPOSTISSET('supplier_invoice_id')) {
183 $object->fields['supplier_invoice_id'] = array('type' => 'integer:FactureFournisseur:fourn/class/fournisseur.facture.class.php:1:entity IN (__SHARED_ENTITIES__)', 'label' => 'SupplierInvoice', 'enabled' => '1', 'noteditable' => '1', 'position' => 280, 'notnull' => 0, 'visible' => 1, 'index' => 1, 'validate' => '1',);
184 print '<input type="hidden" name="supplier_invoice_id" value="' . GETPOST('supplier_invoice_id', 'int') . '">';
185 }
186
187 print dol_get_fiche_head(array(), '');
188
189 // Set some default values
190 //if (! GETPOSTISSET('fieldname')) $_POST['fieldname'] = 'myvalue';
191
192 print '<table class="border centpercent tableforfieldcreate">'."\n";
193
194 // Common attributes
195 include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_add.tpl.php';
196
197 // Other attributes
198 include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_add.tpl.php';
199
200 print '</table>'."\n";
201
202 print dol_get_fiche_end();
203
204 print $form->buttonsSaveCancel("Create");
205
206 print '</form>';
207
208 //dol_set_focus('input[name="ref"]');
209}
210
211// Part to edit record
212if (($id || $ref) && $action == 'edit') {
213 print load_fiche_titre($langs->trans("Asset"), '', 'object_'.$object->picto);
214
215 print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
216 print '<input type="hidden" name="token" value="'.newToken().'">';
217 print '<input type="hidden" name="action" value="update">';
218 print '<input type="hidden" name="id" value="'.$object->id.'">';
219 if ($backtopage) {
220 print '<input type="hidden" name="backtopage" value="'.$backtopage.'">';
221 }
222 if ($backtopageforcancel) {
223 print '<input type="hidden" name="backtopageforcancel" value="'.$backtopageforcancel.'">';
224 }
225
226 print dol_get_fiche_head();
227
228 print '<table class="border centpercent tableforfieldedit">'."\n";
229
230 // Common attributes
231 include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_edit.tpl.php';
232
233 // Other attributes
234 include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_edit.tpl.php';
235
236 print '</table>';
237
238 print dol_get_fiche_end();
239
240 print $form->buttonsSaveCancel();
241
242 print '</form>';
243}
244
245// Part to show record
246if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'create'))) {
247 $res = $object->fetch_optionals();
248
249 $head = assetPrepareHead($object);
250 print dol_get_fiche_head($head, 'card', $langs->trans("Asset"), -1, $object->picto);
251
252 $formconfirm = '';
253
254 // Confirmation to delete
255 if ($action == 'delete') {
256 $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('DeleteAsset'), $langs->trans('ConfirmDeleteObject'), 'confirm_delete', '', 0, 1);
257 } elseif ($action == 'disposal') {
258 // Disposal
259 $langs->load('bills');
260
261 $disposal_date = dol_mktime(12, 0, 0, GETPOST('disposal_datemonth', 'int'), GETPOST('disposal_dateday', 'int'), GETPOST('disposal_dateyear', 'int')); // for date without hour, we use gmt
262 $disposal_amount = GETPOST('disposal_amount', 'int');
263 $fk_disposal_type = GETPOST('fk_disposal_type', 'int');
264 $disposal_invoice_id = GETPOST('disposal_invoice_id', 'int');
265 $disposal_depreciated = GETPOSTISSET('disposal_depreciated') ? GETPOST('disposal_depreciated') : 1;
266 $disposal_depreciated = !empty($disposal_depreciated) ? 1 : 0;
267 $disposal_subject_to_vat = GETPOSTISSET('disposal_subject_to_vat') ? GETPOST('disposal_subject_to_vat') : 1;
268 $disposal_subject_to_vat = !empty($disposal_subject_to_vat) ? 1 : 0;
269
270 $object->fields['fk_disposal_type']['visible'] = 1;
271 $disposal_type_form = $object->showInputField(null, 'fk_disposal_type', $fk_disposal_type, '', '', '', 0);
272 $object->fields['fk_disposal_type']['visible'] = -2;
273
274 $object->fields['disposal_invoice_id'] = array('type' => 'integer:Facture:compta/facture/class/facture.class.php::entity IN (__SHARED_ENTITIES__)', 'enabled' => '1', 'notnull' => 1, 'visible' => 1, 'index' => 1, 'validate' => '1',);
275 $disposal_invoice_form = $object->showInputField(null, 'disposal_invoice_id', $disposal_invoice_id, '', '', '', 0);
276 unset($object->fields['disposal_invoice_id']);
277
278 // Create an array for form
279 $formquestion = array(
280 array('type' => 'date', 'name' => 'disposal_date', 'tdclass' => 'fieldrequired', 'label' => $langs->trans("AssetDisposalDate"), 'value' => $disposal_date),
281 array('type' => 'text', 'name' => 'disposal_amount', 'tdclass' => 'fieldrequired', 'label' => $langs->trans("AssetDisposalAmount"), 'value' => $disposal_amount),
282 array('type' => 'other', 'name' => 'fk_disposal_type', 'tdclass' => 'fieldrequired', 'label' => $langs->trans("AssetDisposalType"), 'value' => $disposal_type_form),
283 array('type' => 'other', 'name' => 'disposal_invoice_id', 'label' => $langs->trans("InvoiceCustomer"), 'value' => $disposal_invoice_form),
284 array('type' => 'checkbox', 'name' => 'disposal_depreciated', 'label' => $langs->trans("AssetDisposalDepreciated"), 'value' => $disposal_depreciated),
285 array('type' => 'checkbox', 'name' => 'disposal_subject_to_vat', 'label' => $langs->trans("AssetDisposalSubjectToVat"), 'value' => $disposal_subject_to_vat),
286 );
287 $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?id=' . $object->id, $langs->trans('AssetDisposal'), $langs->trans('AssetConfirmDisposalAsk', $object->ref . ' - ' . $object->label), 'confirm_disposal', $formquestion, 'yes', 1);
288 } elseif ($action == 'reopen') {
289 // Re-open
290 // Create an array for form
291 $formquestion = array();
292 $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('ReOpen'), $langs->trans('AssetConfirmReOpenAsk', $object->ref), 'confirm_reopen', $formquestion, 'yes', 1);
293 }
294 // Clone confirmation
295 /* elseif ($action == 'clone') {
296 // Create an array for form
297 $formquestion = array();
298 $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('ToClone'), $langs->trans('ConfirmCloneAsk', $object->ref), 'confirm_clone', $formquestion, 'yes', 1);
299 }*/
300
301 // Call Hook formConfirm
302 $parameters = array('formConfirm' => $formconfirm);
303 $reshook = $hookmanager->executeHooks('formConfirm', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
304 if (empty($reshook)) {
305 $formconfirm .= $hookmanager->resPrint;
306 } elseif ($reshook > 0) {
307 $formconfirm = $hookmanager->resPrint;
308 }
309
310 // Print form confirm
311 print $formconfirm;
312
313
314 // Object card
315 // ------------------------------------------------------------
316 $linkback = '<a href="'.DOL_URL_ROOT.'/asset/list.php?restore_lastsearch_values=1'.(!empty($socid) ? '&socid='.$socid : '').'">'.$langs->trans("BackToList").'</a>';
317
318 $morehtmlref = '<div class="refidno">';
319 $morehtmlref .= '</div>';
320
321
322 dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref);
323
324
325 print '<div class="fichecenter">';
326 print '<div class="fichehalfleft">';
327 print '<div class="underbanner clearboth"></div>';
328 print '<table class="border centpercent tableforfield">'."\n";
329
330 // Common attributes
331 $keyforbreak='date_acquisition'; // We change column just before this field
332 //unset($object->fields['fk_project']); // Hide field already shown in banner
333 //unset($object->fields['fk_soc']); // Hide field already shown in banner
334 include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_view.tpl.php';
335
336 // Other attributes. Fields from hook formObjectOptions and Extrafields.
337 include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_view.tpl.php';
338
339 print '</table>';
340 print '</div>';
341 print '</div>';
342
343 print '<div class="clearboth"></div>';
344
345 print dol_get_fiche_end();
346
347 // Buttons for actions
348 if ($action != 'presend' && $action != 'editline') {
349 print '<div class="tabsAction">' . "\n";
350 $parameters = array();
351 $reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
352 if ($reshook < 0) {
353 setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
354 }
355
356 if (empty($reshook)) {
357 // Send
358 if (empty($user->socid)) {
359 print dolGetButtonAction('', $langs->trans('SendMail'), 'default', $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&action=presend&mode=init&token=' . newToken() . '#formmailbeforetitle');
360 }
361
362 if ($object->status == $object::STATUS_DRAFT) {
363 print dolGetButtonAction($langs->trans('Modify'), '', 'default', $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&action=edit&token=' . newToken(), '', $permissiontoadd);
364 }
365
366 // Clone
367 //print dolGetButtonAction($langs->trans('ToClone'), '', 'default', $_SERVER['PHP_SELF'] . '?id=' . $object->id . '&action=clone&token=' . newToken(), '', false && $permissiontoadd);
368
369 if ($object->status == $object::STATUS_DRAFT) {
370 print dolGetButtonAction($langs->trans('AssetDisposal'), '', 'default', $_SERVER['PHP_SELF'] . '?id=' . $object->id . '&action=disposal&token=' . newToken(), '', $permissiontoadd);
371 } else {
372 print dolGetButtonAction($langs->trans('ReOpen'), '', 'default', $_SERVER['PHP_SELF'] . '?id=' . $object->id . '&action=reopen&token=' . newToken(), '', $permissiontoadd);
373 }
374
375 // Delete (need delete permission, or if draft, just need create/modify permission)
376 print dolGetButtonAction($langs->trans('Delete'), '', 'delete', $_SERVER['PHP_SELF'] . '?id=' . $object->id . '&action=delete&token=' . newToken(), '', $permissiontodelete || ($object->status == $object::STATUS_DRAFT && $permissiontoadd));
377 }
378 print '</div>' . "\n";
379 }
380
381 // Select mail models is same action as presend
382 if (GETPOST('modelselected')) {
383 $action = 'presend';
384 }
385
386 if ($action != 'presend') {
387 print '<div class="fichecenter"><div class="fichehalfleft">';
388 print '<a name="builddoc"></a>'; // ancre
389
390 $includedocgeneration = 0;
391
392 // Documents
393 if ($includedocgeneration) {
394 $objref = dol_sanitizeFileName($object->ref);
395 $relativepath = $objref.'/'.$objref.'.pdf';
396 $filedir = $conf->asset->dir_output.'/'.$objref;
397 $urlsource = $_SERVER["PHP_SELF"]."?id=".$object->id;
398 $genallowed = $user->hasRight('asset', 'read'); // If you can read, you can build the PDF to read content
399 $delallowed = $user->hasRight('asset', 'write'); // If you can create/edit, you can remove a file on card
400 print $formfile->showdocuments('asset:Asset', $objref, $filedir, $urlsource, $genallowed, $delallowed, $object->model_pdf, 1, 0, 0, 28, 0, '', '', '', $langs->defaultlang);
401 }
402
403 // Show links to link elements
404 $linktoelem = $form->showLinkToObjectBlock($object, null, array('asset'));
405 $somethingshown = $form->showLinkedObjectBlock($object, $linktoelem);
406
407
408 print '</div><div class="fichehalfright">';
409
410 $morehtmlcenter = '';
411 $MAXEVENT = 10;
412
413 $morehtmlcenter = dolGetButtonTitle($langs->trans('SeeAll'), '', 'fa fa-bars imgforviewmode', DOL_URL_ROOT.'/asset/agenda.php?id='.$object->id);
414
415 // List of actions on element
416 include_once DOL_DOCUMENT_ROOT.'/core/class/html.formactions.class.php';
417 $formactions = new FormActions($db);
418 $somethingshown = $formactions->showactions($object, $object->element, 0, 1, '', $MAXEVENT, '', $morehtmlcenter);
419
420 print '</div></div>';
421 }
422
423 //Select mail models is same action as presend
424 if (GETPOST('modelselected')) {
425 $action = 'presend';
426 }
427
428 // Presend form
429 $modelmail = 'asset';
430 $defaulttopic = 'InformationMessage';
431 $diroutput = $conf->asset->dir_output;
432 $trackid = 'asset'.$object->id;
433
434 include DOL_DOCUMENT_ROOT.'/core/tpl/card_presend.tpl.php';
435}
436
437// End of page
438llxFooter();
439$db->close();
if(preg_match('/set_([a-z0-9_\-]+)/i', $action, $reg)) if(preg_match('/del_([a-z0-9_\-]+)/i', $action, $reg)) if($action=='set') elseif( $action=='specimen') elseif($action=='setmodel') elseif( $action=='del') elseif($action=='setdoc') $formactions
View.
assetPrepareHead(Asset $object)
Prepare array of tabs for Asset.
Definition asset.lib.php:87
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader()
Empty header.
Definition wrapper.php:56
llxFooter()
Empty footer.
Definition wrapper.php:70
Class for Asset.
Class to manage standard extra fields.
Class to manage building of HTML components.
Class to offer components to list and upload files.
Class to manage generation of HTML components Only common components must be here.
dol_banner_tab($object, $paramid, $morehtml='', $shownav=1, $fieldid='rowid', $fieldref='ref', $morehtmlref='', $moreparam='', $nodbprefix=0, $morehtmlleft='', $morehtmlstatus='', $onlybanner=0, $morehtmlright='')
Show tab footer of a card.
dol_mktime($hour, $minute, $second, $month, $day, $year, $gm='auto', $check=1)
Return a timestamp date built from detailed informations (by default a local PHP server timestamp) Re...
load_fiche_titre($titre, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limittoshow=0, $moretabssuffix='', $dragdropfile=0)
Show tabs of a record.
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.
dol_get_fiche_end($notab=0)
Return tab footer of a card.
dol_clone($object, $native=0)
Create a clone of instance of object (new instance with same value for each properties) With native =...
dolGetButtonAction($label, $text='', $actionType='default', $url='', $id='', $userRight=1, $params=array())
Function dolGetButtonAction.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0)
Set event messages in dol_events session object.
dol_sanitizeFileName($str, $newstr='_', $unaccent=1)
Clean a string to use it as a file name.
restrictedArea(User $user, $features, $object=0, $tableandshare='', $feature2='', $dbt_keyfield='fk_soc', $dbt_select='rowid', $isdraft=0, $mode=0)
Check permissions of a user to show a page and an object.
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.