dolibarr 21.0.0-beta
card.php
Go to the documentation of this file.
1<?php
2/* Copyright (C) 2001-2002 Rodolphe Quiedeville <rodolphe@quiedeville.org>
3 * Copyright (C) 2004-2017 Laurent Destailleur <eldy@users.sourceforge.net>
4 * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@inodbox.com>
5 * Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
6 * Copyright (C) 2015-2016 Alexandre Spangaro <aspangaro@open-dsi.fr>
7 * Copyright (C) 2018-2019 Thibault FOUCART <support@ptibogxiv.net>
8 * Copyright (C) 2018-2024 Frédéric France <frederic.france@free.fr>
9 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 3 of the License, or
13 * (at your option) any later version.
14 *
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
19 *
20 * You should have received a copy of the GNU General Public License
21 * along with this program. If not, see <https://www.gnu.org/licenses/>.
22 */
23
30// Load Dolibarr environment
31require '../main.inc.php';
32require_once DOL_DOCUMENT_ROOT.'/core/modules/dons/modules_don.php';
33require_once DOL_DOCUMENT_ROOT.'/core/lib/donation.lib.php';
34require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
35require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
36require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
37require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php';
38require_once DOL_DOCUMENT_ROOT.'/don/class/don.class.php';
39require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
40require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
41require_once DOL_DOCUMENT_ROOT.'/core/class/html.formmargin.class.php';
42require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
43if (isModEnabled('project')) {
44 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php';
45 require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
46}
47require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
48
58$langs->loadLangs(array('bills', 'companies', 'donations', 'users'));
59
60$id = GETPOST('rowid') ? GETPOSTINT('rowid') : GETPOSTINT('id');
61$ref = GETPOST('ref', 'alpha');
62$action = GETPOST('action', 'aZ09');
63$cancel = GETPOST('cancel', 'alpha');
64$confirm = GETPOST('confirm', 'alpha');
65$backtopage = GETPOST('backtopage', 'alpha');
66$socid = GETPOSTINT('socid');
67$amount = price2num(GETPOST('amount', 'alphanohtml'), 'MT');
68$donation_date = dol_mktime(12, 0, 0, GETPOSTINT('remonth'), GETPOSTINT('reday'), GETPOSTINT('reyear'));
69$projectid = (GETPOST('projectid') ? GETPOSTINT('projectid') : 0);
70$public_donation = GETPOSTINT("public");
71
72$object = new Don($db);
73if ($id > 0 || $ref) {
74 $object->fetch($id, $ref);
75}
76
77if (!empty($socid) && $socid > 0) {
78 $soc = new Societe($db);
79 if ($socid > 0) {
80 $soc->fetch($socid);
81 }
82}
83
84$extrafields = new ExtraFields($db);
85
86// fetch optionals attributes and labels
87$extrafields->fetch_name_optionals_label($object->table_element);
88$search_array_options = $extrafields->getOptionalsFromPost($object->table_element, '', 'search_');
89
90// Initialize a technical object to manage hooks of page. Note that conf->hooks_modules contains an array of hook context
91$hookmanager->initHooks(array($object->element.'card', 'globalcard'));
92
93$upload_dir = $conf->don->dir_output;
94
95
96// Security check
97$result = restrictedArea($user, 'don', $object->id);
98
99$permissiontoread = $user->hasRight('don', 'lire');
100$permissiontoadd = $user->hasRight('don', 'creer');
101$permissiontodelete = $user->hasRight('don', 'supprimer');
102
103
104/*
105 * Actions
106 */
107
108$error = 0;
109
110$parameters = array();
111
112$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some
113if ($reshook < 0) {
114 setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
115}
116
117if (empty($reshook)) {
118 $backurlforlist = DOL_URL_ROOT.'/don/list.php';
119
120 if (empty($backtopage) || ($cancel && empty($id))) {
121 if (empty($backtopage) || ($cancel && strpos($backtopage, '__ID__'))) {
122 if (empty($id) && (($action != 'add' && $action != 'create') || $cancel)) {
123 $backtopage = $backurlforlist;
124 } else {
125 $backtopage = DOL_URL_ROOT.'/don/card.php?id='.((!empty($id) && $id > 0) ? $id : '__ID__');
126 }
127 }
128 }
129
130 if ($cancel) {
131 if (!empty($backtopageforcancel)) {
132 header("Location: ".$backtopageforcancel);
133 exit;
134 } elseif (!empty($backtopage)) {
135 header("Location: ".$backtopage);
136 exit;
137 }
138 $action = '';
139 }
140
141 // Action reopen object
142 if ($action == 'confirm_reopen' && $confirm == 'yes' && $permissiontoadd) {
143 $result = $object->reopen($user);
144 if ($result >= 0) {
145 // Define output language
146 if (!getDolGlobalString('MAIN_DISABLE_PDF_AUTOUPDATE')) {
147 if (method_exists($object, 'generateDocument')) {
148 $outputlangs = $langs;
149 $newlang = '';
150 if (getDolGlobalInt('MAIN_MULTILANGS') && GETPOST('lang_id', 'aZ09')) {
151 $newlang = GETPOST('lang_id', 'aZ09');
152 }
153 if (getDolGlobalInt('MAIN_MULTILANGS') && empty($newlang)) {
154 $newlang = $object->thirdparty->default_lang;
155 }
156 if (!empty($newlang)) {
157 $outputlangs = new Translate("", $conf);
158 $outputlangs->setDefaultLang($newlang);
159 }
160 $model = $object->model_pdf;
161 $ret = $object->fetch($id); // Reload to get new records
162 $hidedetails = 0;
163 $hidedesc = 0;
164 $hideref = 0;
165 $object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
166 }
167 }
168
169 header("Location: ".$_SERVER["PHP_SELF"].'?id='.$object->id);
170 exit;
171 } else {
172 setEventMessages($object->error, $object->errors, 'errors');
173 $action = 'create';
174 }
175 }
176
177
178 // Action update object
179 if ($action == 'update' && $permissiontoadd) {
180 if (!empty($cancel)) {
181 header("Location: ".$_SERVER['PHP_SELF']."?id=".urlencode((string) ($id)));
182 exit;
183 }
184
185 if (empty($donation_date)) {
186 setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Date")), null, 'errors');
187 $action = "create";
188 $error++;
189 }
190
191 if (empty($amount)) {
192 setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Amount")), null, 'errors');
193 $action = "create";
194 $error++;
195 }
196
197 if (!$error) {
198 $object->fetch($id);
199
200 $object->firstname = GETPOST("firstname", 'alpha');
201 $object->lastname = GETPOST("lastname", 'alpha');
202 $object->societe = GETPOST("societe", 'alpha');
203 $object->address = GETPOST("address", 'alpha');
204 $object->amount = GETPOSTFLOAT("amount");
205 $object->town = GETPOST("town", 'alpha');
206 $object->zip = GETPOST("zipcode", 'alpha');
207 $object->country_id = GETPOSTINT('country_id');
208 $object->email = GETPOST("email", 'alpha');
209 $object->date = $donation_date;
210 $object->public = $public_donation;
211 $object->fk_project = GETPOSTINT("fk_project");
212 $object->modepaymentid = GETPOSTINT('modepayment');
213
214 // Fill array 'array_options' with data from add form
215 $ret = $extrafields->setOptionalsFromPost(null, $object, '@GETPOSTISSET');
216 if ($ret < 0) {
217 $error++;
218 }
219
220 if ($object->update($user) > 0) {
221 header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id);
222 exit;
223 } else {
224 setEventMessages($object->error, $object->errors, 'errors');
225 $action = "create";
226 }
227 }
228 }
229
230
231 // Action add/create object
232 if ($action == 'add' && $permissiontoadd) {
233 if (!empty($cancel)) {
234 header("Location: index.php");
235 exit;
236 }
237
238 if (isModEnabled("societe") && getDolGlobalString('DONATION_USE_THIRDPARTIES') && !(GETPOSTINT("socid") > 0)) {
239 setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("ThirdParty")), null, 'errors');
240 $action = "create";
241 $error++;
242 }
243 if (empty($donation_date)) {
244 setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Date")), null, 'errors');
245 $action = "create";
246 $error++;
247 }
248
249 if (empty($amount)) {
250 setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Amount")), null, 'errors');
251 $action = "create";
252 $error++;
253 }
254
255 if (!$error) {
256 $object->socid = GETPOSTINT("socid");
257 $object->firstname = (string) GETPOST("firstname", 'alpha');
258 $object->lastname = (string) GETPOST("lastname", 'alpha');
259 $object->societe = (string) GETPOST("societe", 'alpha');
260 $object->address = (string) GETPOST("address", 'alpha');
261 $object->amount = price2num(GETPOST("amount", 'alpha'), '', 2);
262 $object->zip = (string) GETPOST("zipcode", 'alpha');
263 $object->town = (string) GETPOST("town", 'alpha');
264 $object->country_id = GETPOSTINT('country_id');
265 $object->email = (string) GETPOST('email', 'alpha');
266 $object->date = $donation_date;
267 $object->note_private = (string) GETPOST("note_private", 'restricthtml');
268 $object->note_public = (string) GETPOST("note_public", 'restricthtml');
269 $object->public = $public_donation;
270 $object->fk_project = GETPOSTINT("fk_project");
271 $object->modepaymentid = GETPOSTINT('modepayment');
272
273 // Fill array 'array_options' with data from add form
274 $ret = $extrafields->setOptionalsFromPost(null, $object);
275 if ($ret < 0) {
276 $error++;
277 }
278
279 $res = $object->create($user);
280 if ($res > 0) {
281 header("Location: ".$_SERVER['PHP_SELF'].'?id='.$res);
282 exit;
283 } else {
284 setEventMessages($object->error, $object->errors, 'errors');
285 $action = "create";
286 }
287 }
288 }
289
290 // Action delete object
291 if ($action == 'confirm_delete' && GETPOST("confirm") == "yes" && $permissiontodelete) {
292 $result = $object->delete($user);
293 if ($result > 0) {
294 header("Location: index.php");
295 exit;
296 } else {
297 dol_syslog($object->error, LOG_DEBUG);
298 setEventMessages($object->error, $object->errors, 'errors');
299 }
300 }
301
302 // Action validation
303 if ($action == 'valid_promesse' && $permissiontoadd) {
304 // @phan-suppress-next-line PhanPluginSuspiciousParamPosition
305 if ($object->valid_promesse($id, $user->id) >= 0) {
306 setEventMessages($langs->trans("DonationValidated", $object->ref), null);
307 $action = '';
308 } else {
309 setEventMessages($object->error, $object->errors, 'errors');
310 }
311 }
312
313 // Action cancel
314 if ($action == 'set_cancel' && $permissiontoadd) {
315 if ($object->set_cancel($id) >= 0) {
316 $action = '';
317 } else {
318 setEventMessages($object->error, $object->errors, 'errors');
319 }
320 }
321
322 // Action set paid
323 if ($action == 'set_paid' && $permissiontoadd) {
324 $modepayment = GETPOSTINT('modepayment');
325 if ($object->setPaid($id, $modepayment) >= 0) {
326 $action = '';
327 } else {
328 setEventMessages($object->error, $object->errors, 'errors');
329 }
330 } elseif ($action == 'classin' && $user->hasRight('don', 'creer')) {
331 $object->setProject($projectid);
332 }
333
334 if ($action == 'update_extras' && $permissiontoadd) {
335 $object->oldcopy = dol_clone($object, 2);
336
337 // Fill array 'array_options' with data from update form
338 $ret = $extrafields->setOptionalsFromPost(null, $object, GETPOST('attribute', 'restricthtml'));
339
340 if ($ret < 0) {
341 $error++;
342 }
343
344 if (!$error) {
345 $result = $object->insertExtraFields('DON_MODIFY');
346 if ($result < 0) {
347 setEventMessages($object->error, $object->errors, 'errors');
348 $error++;
349 }
350 }
351
352 if ($error) {
353 $action = 'edit_extras';
354 }
355 }
356
357 // Actions to build doc
358 include DOL_DOCUMENT_ROOT.'/core/actions_builddoc.inc.php';
359}
360
361
362/*
363 * View
364 */
365
366$bankaccountstatic = new Account($db);
367
368$title = $langs->trans("Donation");
369
370$help_url = 'EN:Module_Donations|FR:Module_Dons|ES:M&oacute;dulo_Donaciones|DE:Modul_Spenden';
371
372llxHeader('', $title, $help_url, '', 0, 0, '', '', '', 'mod-donation page-card');
373
374$form = new Form($db);
375$formfile = new FormFile($db);
376$formcompany = new FormCompany($db);
377if (isModEnabled('project')) {
378 $formproject = new FormProjets($db);
379}
380
381if ($action == 'create') {
382 print load_fiche_titre($langs->trans("AddDonation"), '', 'object_donation');
383
384 print '<form name="add" action="'.$_SERVER["PHP_SELF"].'" method="POST">';
385 print '<input type="hidden" name="token" value="'.newToken().'">';
386 print '<input type="hidden" name="action" value="add">';
387 print '<input type="hidden" name="backtopage" value="'.$backtopage.'">';
388
389 print dol_get_fiche_head([]);
390
391 print '<table class="border centpercent">';
392 print '<tbody>';
393
394 // Ref
395 print '<tr><td class="titlefieldcreate fieldrequired">'.$langs->trans('Ref').'</td><td>'.$langs->trans('Draft').'</td></tr>';
396
397 // Company
398 if (isModEnabled("societe") && getDolGlobalString('DONATION_USE_THIRDPARTIES')) {
399 // Thirdparty
400 if (!empty($soc) && $soc->id > 0) {
401 print '<td class="fieldrequired">'.$langs->trans('ThirdParty').'</td>';
402 print '<td>';
403 print $soc->getNomUrl(1);
404 print '<input type="hidden" name="socid" value="'.$soc->id.'">';
405 // Outstanding Bill
406 $arrayoutstandingbills = $soc->getOutstandingBills();
407 $outstandingBills = $arrayoutstandingbills['opened'];
408 print ' ('.$langs->trans('CurrentOutstandingBill').': ';
409 print price($outstandingBills, 0, $langs, 0, 0, -1, $conf->currency);
410 if ($soc->outstanding_limit != '') {
411 if ($outstandingBills > $soc->outstanding_limit) {
412 print img_warning($langs->trans("OutstandingBillReached"));
413 }
414 print ' / '.price($soc->outstanding_limit, 0, $langs, 0, 0, -1, $conf->currency);
415 }
416 print ')';
417 print '</td>';
418 } else {
419 print '<td class="fieldrequired">'.$langs->trans('ThirdParty').'</td>';
420 print '<td>';
421 $filter = '((s.client:IN:1,2,3) AND (status:=:1))';
422 print $form->select_company('', 'socid', $filter, 'SelectThirdParty', 0, 0, null, 0, 'minwidth300');
423 // Option to reload page to retrieve customer information. Note, this clear other input
424 if (getDolGlobalString('RELOAD_PAGE_ON_CUSTOMER_CHANGE_DISABLED')) {
425 print '<script type="text/javascript">
426 $(document).ready(function() {
427 $("#socid").change(function() {
428 console.log("We have changed the company - Reload page");
429 var socid = $(this).val();
430 var fac_rec = $(\'#fac_rec\').val();
431 // reload page
432 $("input[name=action]").val("create");
433 $("form[name=add]").submit();
434 });
435 });
436 </script>';
437 }
438 print ' <a href="'.DOL_URL_ROOT.'/societe/card.php?action=create&client=3&fournisseur=0&backtopage='.urlencode($_SERVER["PHP_SELF"].'?action=create').'"><span class="fa fa-plus-circle valignmiddle paddingleft" title="'.$langs->trans("AddThirdParty").'"></span></a>';
439 print '</td>';
440 }
441 print '</tr>'."\n";
442 }
443
444 // Date
445 print '<tr><td class="fieldrequired titlefieldcreate">'.$langs->trans("Date").'</td><td>';
446 print $form->selectDate($donation_date ? $donation_date : -1, '', 0, 0, 0, "add", 1, 1);
447 print '</td>';
448
449 // Amount
450 print "<tr>".'<td class="fieldrequired">'.$langs->trans("Amount").'</td><td><input type="text" name="amount" value="'.dol_escape_htmltag(GETPOST("amount")).'" size="10"> '.$langs->trans("Currency".$conf->currency).'</td></tr>';
451
452 // Public donation
453 print '<tr><td class="fieldrequired">'.$langs->trans("PublicDonation")."</td><td>";
454 print $form->selectyesno("public", $public_donation, 1);
455 print "</td></tr>\n";
456
457 if (!isModEnabled('societe') || !getDolGlobalString('DONATION_USE_THIRDPARTIES')) {
458 print "<tr>".'<td>'.$langs->trans("Company").'</td><td><input type="text" name="societe" value="'.dol_escape_htmltag(GETPOST("societe")).'" class="maxwidth200"></td></tr>';
459 print "<tr>".'<td>'.$langs->trans("Lastname").'</td><td><input type="text" name="lastname" value="'.dol_escape_htmltag(GETPOST("lastname")).'" class="maxwidth200"></td></tr>';
460 print "<tr>".'<td>'.$langs->trans("Firstname").'</td><td><input type="text" name="firstname" value="'.dol_escape_htmltag(GETPOST("firstname")).'" class="maxwidth200"></td></tr>';
461 print "<tr>".'<td>'.$langs->trans("Address").'</td><td>';
462 print '<textarea name="address" wrap="soft" class="quatrevingtpercent" rows="3">'.dol_escape_htmltag(GETPOST("address", "alphanohtml"), 0, 1).'</textarea></td></tr>';
463
464 // Zip / Town
465 print '<tr><td>'.$langs->trans("Zip").' / '.$langs->trans("Town").'</td><td>';
466 print $formcompany->select_ziptown((GETPOSTISSET("zipcode") ? GETPOST("zipcode") : $object->zip), 'zipcode', array('town', 'selectcountry_id', 'state_id'), 6);
467 print ' ';
468 print $formcompany->select_ziptown((GETPOSTISSET("town") ? GETPOST("town") : $object->town), 'town', array('zipcode', 'selectcountry_id', 'state_id'));
469 print '</tr>';
470
471 // Country
472 print '<tr><td><label for="selectcountry_id">'.$langs->trans('Country').'</label></td><td class="maxwidthonsmartphone">';
473 print img_picto('', 'globe-americas', 'class="paddingrightonly"').$form->select_country(GETPOST('country_id') != '' ? GETPOST('country_id') : $object->country_id);
474 if ($user->admin) {
475 print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1);
476 }
477 print '</td></tr>';
478
479 print "<tr>".'<td>'.$langs->trans("EMail").'</td><td>'.img_picto('', 'object_email', 'class="paddingrightonly"').'<input type="text" name="email" value="'.dol_escape_htmltag(GETPOST("email")).'" class="maxwidth200"></td></tr>';
480 }
481
482 // Payment mode
483 print "<tr><td>".$langs->trans("PaymentMode")."</td><td>\n";
484 $selected = GETPOSTINT('modepayment');
485 print img_picto('', 'payment', 'class="pictofixedwidth"');
486 print $form->select_types_paiements($selected, 'modepayment', 'CRDT', 0, 1, 0, 0, 1, 'maxwidth200 widthcentpercentminusx', 1);
487 print "</td></tr>\n";
488
489 // Public note
490 print '<tr>';
491 print '<td class="tdtop">'.$langs->trans('NotePublic').'</td>';
492 print '<td>';
493 if (!isset($note_public)) {
494 $note_public = $object->getDefaultCreateValueFor('note_public');
495 }
496 $doleditor = new DolEditor('note_public', $note_public, '', 80, 'dolibarr_notes', 'In', false, false, !getDolGlobalString('FCKEDITOR_ENABLE_NOTE_PUBLIC') ? 0 : 1, ROWS_3, '90%');
497 print $doleditor->Create(1);
498 print '</td></tr>';
499
500 // Private note
501 if (empty($user->socid)) {
502 print '<tr>';
503 print '<td class="tdtop">'.$langs->trans('NotePrivate').'</td>';
504 print '<td>';
505 if (!isset($note_private)) {
506 $note_private = $object->getDefaultCreateValueFor('note_private');
507 }
508 $doleditor = new DolEditor('note_private', $note_private, '', 80, 'dolibarr_notes', 'In', false, false, !getDolGlobalString('FCKEDITOR_ENABLE_NOTE_PRIVATE') ? 0 : 1, ROWS_3, '90%');
509 print $doleditor->Create(1);
510 print '</td></tr>';
511 }
512
513 if (isModEnabled('project')) {
514 print "<tr><td>".$langs->trans("Project")."</td><td>";
515 print img_picto('', 'project', 'class="pictofixedwidth"');
516 print $formproject->select_projects(-1, $projectid, 'fk_project', 0, 0, 1, 1, 0, 0, 0, '', 1, 0, 'maxwidth500');
517 print "</td></tr>\n";
518 }
519
520 // Other attributes
521 $parameters = array();
522 $reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
523 print $hookmanager->resPrint;
524 if (empty($reshook)) {
525 print $object->showOptionals($extrafields, 'create', $parameters);
526 }
527
528 print '</tbody>';
529 print "</table>\n";
530
531 print dol_get_fiche_end();
532
533 print $form->buttonsSaveCancel();
534
535 print "</form>\n";
536}
537
538
539/* ************************************************************ */
540/* */
541/* Donation card in edit mode */
542/* */
543/* ************************************************************ */
544
545if (!empty($id) && $action == 'edit') {
546 $hselected = 'card';
548
549 print '<form name="update" action="'.$_SERVER["PHP_SELF"].'" method="POST">';
550 print '<input type="hidden" name="token" value="'.newToken().'">';
551 print '<input type="hidden" name="action" value="update">';
552 print '<input type="hidden" name="rowid" value="'.$object->id.'">';
553 print '<input type="hidden" name="amount" value="'.$object->amount.'">';
554 print '<input type="hidden" name="backtopage" value="'.$backtopage.'">';
555
556 print dol_get_fiche_head($head, $hselected, $langs->trans("Donation"), 0, 'donation');
557
558 print '<table class="border centpercent">';
559
560 // Ref
561 print '<tr><td>'.$langs->trans("Ref").'</td><td colspan="2">';
562 print $object->getNomUrl();
563 print '</td>';
564 print '</tr>';
565
566 // Date
567 print '<tr><td class="titlefieldcreate fieldrequired">'.$langs->trans("Date").'</td><td>';
568 print $form->selectDate($object->date, '', 0, 0, 0, "update");
569 print '</td>';
570
571 // Amount
572 if ($object->status == 0) {
573 print "<tr>".'<td class="fieldrequired">'.$langs->trans("Amount").'</td><td><input type="text" name="amount" size="10" value="'.price($object->amount).'"> '.$langs->trans("Currency".$conf->currency).'</td></tr>';
574 } else {
575 print '<tr><td>'.$langs->trans("Amount").'</td><td>';
576 print price($object->amount, 0, $langs, 0, 0, -1, $conf->currency);
577 print '</td></tr>';
578 }
579
580 print '<tr><td class="fieldrequired">'.$langs->trans("PublicDonation")."</td><td>";
581 print $form->selectyesno("public", $object->public, 1);
582 print "</td>";
583 print "</tr>\n";
584
585 if (isModEnabled("societe") && getDolGlobalString('DONATION_USE_THIRDPARTIES')) {
586 $company = new Societe($db);
587
588 print '<tr><td>'.$langs->trans("ThirdParty").'</td><td colspan="2">';
589 if ($object->socid > 0) {
590 $result = $company->fetch($object->socid);
591 print $company->getNomUrl(1);
592 }
593 print '</td></tr>';
594 } else {
595 $langs->load("companies");
596 print '<tr><td>'.$langs->trans("Company").'</td><td><input type="text" name="societe" class="maxwidth200" value="'.dol_escape_htmltag($object->societe).'"></td></tr>';
597 print '<tr><td>'.$langs->trans("Lastname").'</td><td><input type="text" name="lastname" class="maxwidth200" value="'.dol_escape_htmltag($object->lastname).'"></td></tr>';
598 print '<tr><td>'.$langs->trans("Firstname").'</td><td><input type="text" name="firstname" class="maxwidth200" value="'.dol_escape_htmltag($object->firstname).'"></td></tr>';
599 print '<tr><td>'.$langs->trans("Address").'</td><td>';
600 print '<textarea name="address" wrap="soft" class="quatrevingtpercent" rows="'.ROWS_3.'">'.dol_escape_htmltag($object->address, 0, 1).'</textarea></td></tr>';
601
602 // Zip / Town
603 print '<tr><td>'.$langs->trans("Zip").' / '.$langs->trans("Town").'</td><td>';
604 print $formcompany->select_ziptown((GETPOSTISSET("zipcode") ? GETPOSTISSET("zipcode") : $object->zip), 'zipcode', array('town', 'selectcountry_id', 'state_id'), 6);
605 print ' ';
606 print $formcompany->select_ziptown((GETPOSTISSET("town") ? GETPOST("town") : $object->town), 'town', array('zipcode', 'selectcountry_id', 'state_id'));
607 print '</tr>';
608
609 // Country
610 print '<tr><td class="titlefieldcreate">'.$langs->trans('Country').'</td><td>';
611 print $form->select_country((!empty($object->country_id) ? $object->country_id : $mysoc->country_code), 'country_id');
612 if ($user->admin) {
613 print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1);
614 }
615 print '</td></tr>';
616
617 print "<tr>".'<td>'.$langs->trans("EMail").'</td><td><input type="text" name="email" class="maxwidth200" value="'.dol_escape_htmltag($object->email).'"></td></tr>';
618 }
619 // Payment mode
620 print "<tr><td>".$langs->trans("PaymentMode")."</td><td>\n";
621 if ($object->mode_reglement_id) {
622 $selected = $object->mode_reglement_id;
623 } else {
624 $selected = '';
625 }
626 $form->select_types_paiements($selected, 'modepayment', 'CRDT', 0, 1);
627 print "</td></tr>\n";
628
629 // Status
630 print "<tr>".'<td>'.$langs->trans("Status").'</td><td>'.$object->getLibStatut(4).'</td></tr>';
631
632 // Project
633 if (isModEnabled('project')) {
634 $formproject = new FormProjets($db);
635
636 $langs->load('projects');
637 print '<tr><td>'.$langs->trans('Project').'</td><td>';
638 $formproject->select_projects(-1, $object->fk_project, 'fk_project', 0, 0, 1, 1, 0, 0, 0, '', 0, 0, 'maxwidth500');
639 print '</td></tr>';
640 }
641
642 // Other attributes
643 $parameters = array();
644 $reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
645 print $hookmanager->resPrint;
646 if (empty($reshook)) {
647 print $object->showOptionals($extrafields, 'edit', $parameters);
648 }
649
650 print "</table>\n";
651
652 print dol_get_fiche_end();
653
654 print $form->buttonsSaveCancel();
655
656 print "</form>\n";
657}
658
659
660
661/* ************************************************************ */
662/* */
663/* Donation card in view mode */
664/* */
665/* ************************************************************ */
666if (!empty($id) && $action != 'edit') {
667 $totalpaid = 0;
668 $formconfirm = "";
669 // Confirmation delete
670 if ($action == 'delete') {
671 $text = $langs->trans("ConfirmDeleteADonation");
672 print $form->formconfirm($_SERVER["PHP_SELF"]."?id=".$object->id, $langs->trans("DeleteADonation"), $text, "confirm_delete", '', '', 1);
673 }
674
675 $result = $object->fetch($id);
676 if ($result < 0) {
677 dol_print_error($db, $object->error);
678 exit;
679 }
680 $result = $object->fetch_optionals();
681 if ($result < 0) {
682 dol_print_error($db);
683 exit;
684 }
685
686 $hselected = 'card';
687
689 print dol_get_fiche_head($head, $hselected, $langs->trans("Donation"), -1, 'donation');
690
691 // Print form confirm
692 print $formconfirm;
693
694 $linkback = '<a href="'.DOL_URL_ROOT.'/don/list.php'.(!empty($socid) ? '?socid='.$socid : '').'">'.$langs->trans("BackToList").'</a>';
695
696 $morehtmlref = '<div class="refidno">';
697 // Project
698 if (isModEnabled('project')) {
699 $langs->load("projects");
700 $morehtmlref .= $langs->trans('Project').' ';
701 if ($user->hasRight('don', 'creer')) {
702 if ($action != 'classify') {
703 $morehtmlref .= '<a class="editfielda" href="'.$_SERVER['PHP_SELF'].'?action=classify&token='.newToken().'&id='.$object->id.'">'.img_edit($langs->transnoentitiesnoconv('SetProject')).'</a> : ';
704 }
705 if ($action == 'classify') {
706 //$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1);
707 $morehtmlref .= '<form method="post" action="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'">';
708 $morehtmlref .= '<input type="hidden" name="action" value="classin">';
709 $morehtmlref .= '<input type="hidden" name="token" value="'.newToken().'">';
710 $morehtmlref .= '<input type="hidden" name="backtopage" value="'.$backtopage.'">';
711 $morehtmlref .= $formproject->select_projects($object->socid, $object->fk_project, 'projectid', 0, 0, 1, 0, 1, 0, 0, '', 1, 0, 'maxwidth500');
712 $morehtmlref .= '<input type="submit" class="button valignmiddle" value="'.$langs->trans("Modify").'">';
713 $morehtmlref .= '</form>';
714 } else {
715 $morehtmlref .= $form->form_project($_SERVER['PHP_SELF'].'?id='.$object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1, '', 'maxwidth300');
716 }
717 } else {
718 if (!empty($object->fk_project)) {
719 $proj = new Project($db);
720 $proj->fetch($object->fk_project);
721 $morehtmlref .= ' : '.$proj->getNomUrl(1);
722 if ($proj->title) {
723 $morehtmlref .= ' - '.$proj->title;
724 }
725 } else {
726 $morehtmlref .= '';
727 }
728 }
729 }
730 $morehtmlref .= '</div>';
731
732
733 dol_banner_tab($object, 'rowid', $linkback, 1, 'rowid', 'ref', $morehtmlref);
734
735
736 print '<div class="fichecenter">';
737 print '<div class="fichehalfleft">';
738 print '<div class="underbanner clearboth"></div>';
739
740 print '<table class="border tableforfield" width="100%">';
741
742 // Date
743 print '<tr><td class="titlefield">'.$langs->trans("Date").'</td><td colspan="2">';
744 print dol_print_date($object->date, "day");
745 print "</td>";
746
747 print '<tr><td>'.$langs->trans("Amount").'</td><td colspan="2">';
748 print price($object->amount, 0, $langs, 0, 0, -1, $conf->currency);
749 print '</td></tr>';
750
751 print '<tr><td>'.$langs->trans("PublicDonation").'</td><td colspan="2">';
752 print yn($object->public);
753 print '</td></tr>';
754
755 if (isModEnabled("societe") && getDolGlobalString('DONATION_USE_THIRDPARTIES')) {
756 $company = new Societe($db);
757
758 print '<tr><td>'.$langs->trans("ThirdParty").'</td><td colspan="2">';
759 if ($object->socid > 0) {
760 $result = $company->fetch($object->socid);
761 print $company->getNomUrl(1);
762 }
763 print '</td></tr>';
764 } else {
765 print '<tr><td>'.$langs->trans("Company").'</td><td colspan="2">'.$object->societe.'</td></tr>';
766 print '<tr><td>'.$langs->trans("Lastname").'</td><td colspan="2">'.$object->lastname.'</td></tr>';
767 print '<tr><td>'.$langs->trans("Firstname").'</td><td colspan="2">'.$object->firstname.'</td></tr>';
768 }
769
770 // Payment mode
771 print "<tr><td>".$langs->trans("PaymentMode")."</td><td>";
772 $form->form_modes_reglement(null, $object->mode_reglement_id, 'none');
773 print "</td></tr>\n";
774
775 // Other attributes
776 $cols = 2;
777 include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_view.tpl.php';
778
779 print '</table>';
780
781 print '</div>';
782 print '<div class="fichehalfright">';
783
784 /*
785 * Payments
786 */
787 $sql = "SELECT p.rowid, p.num_payment, p.datep as dp, p.amount,";
788 $sql .= " c.code as type_code, c.libelle as paiement_type,";
789 $sql .= " b.fk_account";
790 $sql .= " FROM ".MAIN_DB_PREFIX."payment_donation as p";
791 $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."bank as b ON p.fk_bank = b.rowid";
792 $sql .= ", ".MAIN_DB_PREFIX."c_paiement as c ";
793 $sql .= ", ".MAIN_DB_PREFIX."don as d";
794 $sql .= " WHERE d.rowid = ".((int) $id);
795 $sql .= " AND p.fk_donation = d.rowid";
796 $sql .= " AND d.entity IN (".getEntity('donation').")";
797 $sql .= " AND p.fk_typepayment = c.id";
798 $sql .= " ORDER BY dp";
799
800 //print $sql;
801 $resql = $db->query($sql);
802 if ($resql) {
803 $num = $db->num_rows($resql);
804 $i = 0;
805
806 print '<table class="noborder paymenttable centpercent">';
807 print '<tr class="liste_titre">';
808 print '<td>'.$langs->trans("RefPayment").'</td>';
809 print '<td>'.$langs->trans("Date").'</td>';
810 print '<td>'.$langs->trans("Type").'</td>';
811 if (isModEnabled("bank")) {
812 print '<td>'.$langs->trans("BankAccount").'</td>';
813 }
814 print '<td class="right">'.$langs->trans("Amount").'</td>';
815 print '</tr>';
816
817 while ($i < $num) {
818 $objp = $db->fetch_object($resql);
819
820 print '<tr class="oddeven"><td>';
821 print '<a href="'.DOL_URL_ROOT.'/don/payment/card.php?id='.$objp->rowid.'">'.img_object($langs->trans("Payment"), "payment").' '.$objp->rowid.'</a></td>';
822 print '<td>'.dol_print_date($db->jdate($objp->dp), 'day')."</td>\n";
823 $labeltype = ($langs->trans("PaymentType".$objp->type_code) != "PaymentType".$objp->type_code) ? $langs->trans("PaymentType".$objp->type_code) : $objp->paiement_type;
824 print "<td>".$labeltype.' '.$objp->num_payment."</td>\n";
825 if (isModEnabled("bank")) {
826 $bankaccountstatic->fetch($objp->fk_account);
827 /*$bankaccountstatic->id = $objp->fk_bank;
828 $bankaccountstatic->ref = $objp->baref;
829 $bankaccountstatic->label = $objp->baref;
830 $bankaccountstatic->number = $objp->banumber;
831 $bankaccountstatic->currency_code = $objp->bacurrency_code;
832
833 if (isModEnabled('accounting')) {
834 $bankaccountstatic->account_number = $objp->account_number;
835
836 $accountingjournal = new AccountingJournal($db);
837 $accountingjournal->fetch($objp->fk_accountancy_journal);
838 $bankaccountstatic->accountancy_journal = $accountingjournal->getNomUrl(0, 1, 1, '', 1);
839 }
840 */
841 print '<td class="nowraponall">';
842 if ($bankaccountstatic->id) {
843 print $bankaccountstatic->getNomUrl(1, 'transactions');
844 }
845 print '</td>';
846 }
847 print '<td class="right">'.price($objp->amount)."</td>\n";
848 print "</tr>";
849 $totalpaid += $objp->amount;
850 $i++;
851 }
852
853 if ($object->paid == 0) {
854 $colspan = 3;
855 if (isModEnabled("bank")) {
856 $colspan++;
857 }
858 print '<tr><td colspan="'.$colspan.'" class="right">'.$langs->trans("AlreadyPaid").' :</td><td class="right">'.price($totalpaid)."</td></tr>\n";
859 print '<tr><td colspan="'.$colspan.'" class="right">'.$langs->trans("AmountExpected").' :</td><td class="right">'.price($object->amount)."</td></tr>\n";
860
861 $remaintopay = $object->amount - $totalpaid;
862 $resteapayeraffiche = $remaintopay;
863
864 print '<tr><td colspan="'.$colspan.'" class="right">'.$langs->trans("RemainderToPay")." :</td>";
865 print '<td class="right'.(!empty($resteapayeraffiche) ? ' amountremaintopay' : '').'">'.price($remaintopay)."</td></tr>\n";
866 }
867 print "</table>";
868 $db->free($resql);
869 } else {
870 dol_print_error($db);
871 }
872
873 print '</div>';
874 print '</div>';
875
876 print '<div class="clearboth"></div>';
877
878 print dol_get_fiche_end();
879
880 $remaintopay = $object->amount - $totalpaid;
881
882 // Actions buttons
883
884 print '<div class="tabsAction">';
885 $parameters = array();
886 $reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action);
887 if (empty($reshook)) {
888 // Re-open
889 if ($permissiontoadd && $object->status == $object::STATUS_CANCELED) {
890 print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=confirm_reopen&confirm=yes&token='.newToken().'">'.$langs->trans("ReOpen").'</a>';
891 }
892
893 print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=edit&token='.newToken().'&rowid='.$object->id.'">'.$langs->trans('Modify').'</a></div>';
894
895 if ($object->status == $object::STATUS_DRAFT) {
896 print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER["PHP_SELF"].'?rowid='.$object->id.'&action=valid_promesse&token='.newToken().'">'.$langs->trans("ValidPromess").'</a></div>';
897 }
898
899 if (($object->status == $object::STATUS_DRAFT || $object->status == $object::STATUS_VALIDATED) && $totalpaid == 0 && $object->paid == 0) {
900 print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER["PHP_SELF"].'?rowid='.$object->id.'&action=set_cancel&token='.newToken().'">'.$langs->trans("ClassifyCanceled")."</a></div>";
901 }
902
903 // Create payment
904 if ($object->status == $object::STATUS_VALIDATED && $object->paid == 0 && $user->hasRight('don', 'creer')) {
905 if ($remaintopay == 0) {
906 print '<div class="inline-block divButAction"><span class="butActionRefused classfortooltip" title="'.$langs->trans("DisabledBecauseRemainderToPayIsZero").'">'.$langs->trans('DoPayment').'</span></div>';
907 } else {
908 print '<div class="inline-block divButAction"><a class="butAction" href="'.DOL_URL_ROOT.'/don/payment/payment.php?rowid='.$object->id.'&action=create&token='.newToken().'">'.$langs->trans('DoPayment').'</a></div>';
909 }
910 }
911
912 // Classify 'paid'
913 if ($object->status == $object::STATUS_VALIDATED && round($remaintopay) == 0 && $object->paid == 0 && $user->hasRight('don', 'creer')) {
914 print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER["PHP_SELF"].'?rowid='.$object->id.'&action=set_paid&token='.newToken().'">'.$langs->trans("ClassifyPaid")."</a></div>";
915 }
916
917 // Delete
918 if ($user->hasRight('don', 'supprimer')) {
919 if ($object->status == $object::STATUS_CANCELED || $object->status == $object::STATUS_DRAFT) {
920 print '<div class="inline-block divButAction"><a class="butActionDelete" href="card.php?rowid='.$object->id.'&action=delete&token='.newToken().'">'.$langs->trans("Delete")."</a></div>";
921 } else {
922 print '<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" href="#" title="'.$langs->trans("CantRemovePaymentWithOneInvoicePaid").'">'.$langs->trans("Delete")."</a></div>";
923 }
924 } else {
925 print '<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" href="#">'.$langs->trans("Delete")."</a></div>";
926 }
927 }
928
929 print "</div>";
930
931
932 print '<div class="fichecenter"><div class="fichehalfleft">';
933
934 /*
935 * Generated documents
936 */
937 $filename = dol_sanitizeFileName((string) $object->id);
938 $filedir = $conf->don->dir_output."/".dol_sanitizeFileName((string) $object->id);
939 $urlsource = $_SERVER['PHP_SELF'].'?rowid='.$object->id;
940 $genallowed = (($object->paid == 0 || $user->admin) && $user->hasRight('don', 'lire'));
941 $delallowed = $user->hasRight('don', 'creer');
942
943 print $formfile->showdocuments('donation', $filename, $filedir, $urlsource, $genallowed, $delallowed, $object->model_pdf);
944
945 // Show links to link elements
946 $tmparray = $form->showLinkToObjectBlock($object, array(), array('don'), 1);
947 $linktoelem = $tmparray['linktoelem'];
948 $htmltoenteralink = $tmparray['htmltoenteralink'];
949 print $htmltoenteralink;
950
951 $somethingshown = $form->showLinkedObjectBlock($object, $linktoelem);
952
953 // Show online payment link
954 // The list can be complete by the hook 'doValidatePayment' executed inside getValidOnlinePaymentMethods()
955 include_once DOL_DOCUMENT_ROOT.'/core/lib/payments.lib.php';
956 $validpaymentmethod = getValidOnlinePaymentMethods('');
957 $useonlinepayment = count($validpaymentmethod);
958
959 if ($useonlinepayment) { //$object->statut != Facture::STATUS_DRAFT &&
960 print '<br><!-- Link to pay -->'."\n";
961 require_once DOL_DOCUMENT_ROOT.'/core/lib/payments.lib.php';
962 print showOnlinePaymentUrl('donation', $object->ref).'<br>';
963 }
964
965 print '</div><div class="fichehalfright">';
966
967 print '</div></div>';
968}
969
970llxFooter();
971$db->close();
$id
Definition account.php:48
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
Definition card.php:66
llxFooter($comment='', $zone='private', $disabledoutputofmessages=0)
Empty footer.
Definition wrapper.php:87
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 bank accounts.
Class to manage a WYSIWYG editor.
Class to manage donations.
Definition don.class.php:41
Class to manage standard extra fields.
Class to build HTML component for third parties management Only common components are here.
Class to offer components to list and upload files.
Class to manage generation of HTML components Only common components must be here.
Class to manage building of HTML components.
Class to manage projects.
Class to manage third parties objects (customers, suppliers, prospects...)
Class to manage translations.
donation_prepare_head($object)
Prepare array with list of tabs.
dol_mktime($hour, $minute, $second, $month, $day, $year, $gm='auto', $check=1)
Return a timestamp date built from detailed information (by default a local PHP server timestamp) Rep...
load_fiche_titre($title, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
img_object($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0)
Show a picto called object_picto (generic function)
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0, $attop=0)
Set event messages in dol_events session object.
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.
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.
price2num($amount, $rounding='', $option=0)
Function that return a number with universal decimal format (decimal separator is '.
dol_get_fiche_end($notab=0)
Return tab footer of a card.
price($amount, $form=0, $outlangs='', $trunc=1, $rounding=-1, $forcerounding=-1, $currency_code='')
Function to format a value into an amount for visual output Function used into PDF and HTML pages.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
dol_print_date($time, $format='', $tzoutput='auto', $outputlangs=null, $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
newToken()
Return the value of token currently saved into session with name 'newtoken'.
yn($yesno, $format=1, $color=0)
Return yes or no in current language.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
GETPOSTFLOAT($paramname, $rounding='')
Return the value of a $_GET or $_POST supervariable, converted into float.
dol_clone($object, $native=2)
Create a clone of instance of object (new instance with same value for each properties) With native =...
dol_sanitizeFileName($str, $newstr='_', $unaccent=1)
Clean a string to use it as a file name.
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.
info_admin($text, $infoonimgalt=0, $nodiv=0, $admin='1', $morecss='hideonsmartphone', $textfordropdown='', $picto='')
Show information in HTML for admin users or standard users.
img_edit($titlealt='default', $float=0, $other='')
Show logo edit/modify fiche.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $noescapetags='', $escapeonlyhtmltags=0, $cleanalsojavascript=0)
Returns text escaped for inclusion in HTML alt or title or value tags, or into values of HTML input f...
global $conf
The following vars must be defined: $type2label $form $conf, $lang, The following vars may also be de...
Definition member.php:79
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.