diff --git a/htdocs/accountancy/customer/list.php b/htdocs/accountancy/customer/list.php index 2969f2ff0a1..ae076a414cb 100644 --- a/htdocs/accountancy/customer/list.php +++ b/htdocs/accountancy/customer/list.php @@ -129,8 +129,8 @@ if (empty($reshook)) // Mass actions $objectclass='AccountingAccount'; - $permtoread = $user->rights->accounting->read; - $permtodelete = $user->rights->accounting->delete; + $permissiontoread = $user->rights->accounting->read; + $permissiontodelete = $user->rights->accounting->delete; $uploaddir = $conf->accounting->dir_output; include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php'; } diff --git a/htdocs/accountancy/expensereport/list.php b/htdocs/accountancy/expensereport/list.php index f0e545f7853..a1c354f010b 100644 --- a/htdocs/accountancy/expensereport/list.php +++ b/htdocs/accountancy/expensereport/list.php @@ -112,8 +112,8 @@ if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x' // Mass actions $objectclass='ExpenseReport'; $objectlabel='ExpenseReport'; -$permtoread = $user->rights->expensereport->read; -$permtodelete = $user->rights->expensereport->delete; +$permissiontoread = $user->rights->expensereport->read; +$permissiontodelete = $user->rights->expensereport->delete; $uploaddir = $conf->expensereport->dir_output; include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php'; diff --git a/htdocs/accountancy/supplier/list.php b/htdocs/accountancy/supplier/list.php index 27cd97dfea3..249cb920c47 100644 --- a/htdocs/accountancy/supplier/list.php +++ b/htdocs/accountancy/supplier/list.php @@ -133,8 +133,8 @@ if (empty($reshook)) // Mass actions $objectclass='AccountingAccount'; - $permtoread = $user->rights->accounting->read; - $permtodelete = $user->rights->accounting->delete; + $permissiontoread = $user->rights->accounting->read; + $permissiontodelete = $user->rights->accounting->delete; $uploaddir = $conf->accounting->dir_output; include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php'; } diff --git a/htdocs/adherents/list.php b/htdocs/adherents/list.php index 0bcc11bf351..a66323654d8 100644 --- a/htdocs/adherents/list.php +++ b/htdocs/adherents/list.php @@ -232,8 +232,8 @@ if (empty($reshook)) // Mass actions $objectclass='Adherent'; $objectlabel='Members'; - $permtoread = $user->rights->adherent->lire; - $permtodelete = $user->rights->adherent->supprimer; + $permissiontoread = $user->rights->adherent->lire; + $permissiontodelete = $user->rights->adherent->supprimer; $uploaddir = $conf->adherent->dir_output; include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php'; } diff --git a/htdocs/admin/emailcollector_list.php b/htdocs/admin/emailcollector_list.php index e8b2e280a7f..5145f5dd083 100644 --- a/htdocs/admin/emailcollector_list.php +++ b/htdocs/admin/emailcollector_list.php @@ -156,8 +156,8 @@ if (empty($reshook)) // Mass actions $objectclass='EmailCollector'; $objectlabel='EmailCollector'; - $permtoread = $user->rights->emailcollector->read; - $permtodelete = $user->rights->emailcollector->delete; + $permissiontoread = $user->rights->emailcollector->read; + $permissiontodelete = $user->rights->emailcollector->delete; $uploaddir = $conf->emailcollector->dir_output; include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php'; } diff --git a/htdocs/admin/mails_senderprofile_list.php b/htdocs/admin/mails_senderprofile_list.php index eb432b0dc72..139c6815072 100644 --- a/htdocs/admin/mails_senderprofile_list.php +++ b/htdocs/admin/mails_senderprofile_list.php @@ -148,8 +148,8 @@ if (empty($reshook)) // Mass actions $objectclass='EmailSenderProfile'; $objectlabel='EmailSenderProfile'; - $permtoread = $user->admin; - $permtodelete = $user->admin; + $permissiontoread = $user->admin; + $permissiontodelete = $user->admin; $uploaddir = $conf->admin->dir_output.'/senderprofiles'; include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php'; } diff --git a/htdocs/asset/list.php b/htdocs/asset/list.php index 8ea4f46c89d..9c9b8d12bff 100644 --- a/htdocs/asset/list.php +++ b/htdocs/asset/list.php @@ -152,8 +152,8 @@ if (empty($reshook)) // Mass actions $objectclass='Asset'; $objectlabel='Asset'; - $permtoread = $user->rights->asset->read; - $permtodelete = $user->rights->asset->delete; + $permissiontoread = $user->rights->asset->read; + $permissiontodelete = $user->rights->asset->delete; $uploaddir = $conf->asset->dir_output; include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php'; } diff --git a/htdocs/bom/bom_list.php b/htdocs/bom/bom_list.php index 0775c2cc370..1f6fa300129 100644 --- a/htdocs/bom/bom_list.php +++ b/htdocs/bom/bom_list.php @@ -1,6 +1,5 @@ - * Copyright (C) ---Put here your own copyright and developer email--- * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -151,8 +150,8 @@ if (empty($reshook)) // Mass actions $objectclass='BOM'; $objectlabel='BillOfMaterials'; - $permtoread = $user->rights->bom->read; - $permtodelete = $user->rights->bom->delete; + $permissiontoread = $user->rights->bom->read; + $permissiontodelete = $user->rights->bom->delete; $uploaddir = $conf->bom->dir_output; include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php'; } @@ -303,7 +302,7 @@ include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php'; // List of mass actions available $arrayofmassactions = array( //'presend'=>$langs->trans("SendByMail"), - //'builddoc'=>$langs->trans("PDFMerge"), + 'disable'=>$langs->trans("Disable"), ); if ($user->rights->bom->delete) $arrayofmassactions['predelete']=''.$langs->trans("Delete"); if (GETPOST('nomassaction', 'int') || in_array($massaction, array('presend', 'predelete'))) $arrayofmassactions=array(); @@ -539,6 +538,7 @@ print ''."\n"; print ''."\n"; + if (in_array('builddoc', $arrayofmassactions) && ($nbtotalofrecords === '' || $nbtotalofrecords)) { $hidegeneratedfilelistifempty=1; diff --git a/htdocs/comm/mailing/list.php b/htdocs/comm/mailing/list.php index ff69bd00c0c..0e3d7a7725e 100644 --- a/htdocs/comm/mailing/list.php +++ b/htdocs/comm/mailing/list.php @@ -102,8 +102,8 @@ if (empty($reshook)) // Mass actions /*$objectclass='MyObject'; $objectlabel='MyObject'; - $permtoread = $user->rights->mymodule->read; - $permtodelete = $user->rights->mymodule->delete; + $permissiontoread = $user->rights->mymodule->read; + $permissiontodelete = $user->rights->mymodule->delete; $uploaddir = $conf->mymodule->dir_output; include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php'; */ diff --git a/htdocs/comm/propal/list.php b/htdocs/comm/propal/list.php index a83d7ee5161..0eb3b947391 100644 --- a/htdocs/comm/propal/list.php +++ b/htdocs/comm/propal/list.php @@ -241,8 +241,8 @@ if (empty($reshook)) { $objectclass='Propal'; $objectlabel='Proposals'; - $permtoread = $user->rights->propal->lire; - $permtodelete = $user->rights->propal->supprimer; + $permissiontoread = $user->rights->propal->lire; + $permissiontodelete = $user->rights->propal->supprimer; $permtoclose = $user->rights->propal->cloturer; $uploaddir = $conf->propal->multidir_output[$conf->entity]; include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php'; diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index 5f9906b58dc..23af81ab24e 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -220,8 +220,8 @@ if (empty($reshook)) // Mass actions $objectclass='Commande'; $objectlabel='Orders'; - $permtoread = $user->rights->commande->lire; - $permtodelete = $user->rights->commande->supprimer; + $permissiontoread = $user->rights->commande->lire; + $permissiontodelete = $user->rights->commande->supprimer; $uploaddir = $conf->commande->multidir_output[$conf->entity]; $trigger_name='ORDER_SENTBYMAIL'; include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php'; diff --git a/htdocs/compta/bank/bankentries_list.php b/htdocs/compta/bank/bankentries_list.php index 773ee1e9255..4a9d0947b1e 100644 --- a/htdocs/compta/bank/bankentries_list.php +++ b/htdocs/compta/bank/bankentries_list.php @@ -209,8 +209,8 @@ if (empty($reshook)) { $objectclass='Account'; $objectlabel='BankTransaction'; - $permtoread = $user->rights->banque->lire; - $permtodelete = $user->rights->banque->supprimer; + $permissiontoread = $user->rights->banque->lire; + $permissiontodelete = $user->rights->banque->supprimer; $uploaddir = $conf->bank->dir_output; include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php'; } diff --git a/htdocs/compta/cashcontrol/cashcontrol_list.php b/htdocs/compta/cashcontrol/cashcontrol_list.php index e0461d35368..45129b6ee19 100644 --- a/htdocs/compta/cashcontrol/cashcontrol_list.php +++ b/htdocs/compta/cashcontrol/cashcontrol_list.php @@ -168,8 +168,8 @@ if (empty($reshook)) // Mass actions $objectclass='CashControl'; $objectlabel='CashControl'; - $permtoread = ($user->rights->cashdesk->use || $user->rights->takepos->use); - $permtodelete = ($user->rights->cashdesk->use || $user->rights->takepos->use); + $permissiontoread = ($user->rights->cashdesk->use || $user->rights->takepos->use); + $permissiontodelete = ($user->rights->cashdesk->use || $user->rights->takepos->use); //$uploaddir = ''; //include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php'; diff --git a/htdocs/compta/facture/card-rec.php b/htdocs/compta/facture/card-rec.php index 10eb2ac03c8..49cb9529c71 100644 --- a/htdocs/compta/facture/card-rec.php +++ b/htdocs/compta/facture/card-rec.php @@ -146,8 +146,8 @@ if (empty($reshook)) // Mass actions /*$objectclass='MyObject'; $objectlabel='MyObject'; - $permtoread = $user->rights->mymodule->read; - $permtodelete = $user->rights->mymodule->delete; + $permissiontoread = $user->rights->mymodule->read; + $permissiontodelete = $user->rights->mymodule->delete; $uploaddir = $conf->mymodule->dir_output; include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php';*/ diff --git a/htdocs/compta/facture/invoicetemplate_list.php b/htdocs/compta/facture/invoicetemplate_list.php index 09873f5ee61..941aa0723ef 100644 --- a/htdocs/compta/facture/invoicetemplate_list.php +++ b/htdocs/compta/facture/invoicetemplate_list.php @@ -191,8 +191,8 @@ if (empty($reshook)) // Mass actions /*$objectclass='MyObject'; $objectlabel='MyObject'; - $permtoread = $user->rights->mymodule->read; - $permtodelete = $user->rights->mymodule->delete; + $permissiontoread = $user->rights->mymodule->read; + $permissiontodelete = $user->rights->mymodule->delete; $uploaddir = $conf->mymodule->dir_output; include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php';*/ } diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index 74c27c1e467..43f8d41db10 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -265,9 +265,9 @@ if (empty($reshook)) { $objectclass='Facture'; $objectlabel='Invoices'; - $permtoread = $user->rights->facture->lire; - $permtocreate = $user->rights->facture->creer; - $permtodelete = $user->rights->facture->supprimer; + $permissiontoread = $user->rights->facture->lire; + $permissiontoadd = $user->rights->facture->creer; + $permissiontodelete = $user->rights->facture->supprimer; $uploaddir = $conf->facture->dir_output; include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php'; } diff --git a/htdocs/contact/list.php b/htdocs/contact/list.php index f8d92d19b34..d23963fde0a 100644 --- a/htdocs/contact/list.php +++ b/htdocs/contact/list.php @@ -254,8 +254,8 @@ if (empty($reshook)) // Mass actions $objectclass='Contact'; $objectlabel='Contact'; - $permtoread = $user->rights->societe->lire; - $permtodelete = $user->rights->societe->supprimer; + $permissiontoread = $user->rights->societe->lire; + $permissiontodelete = $user->rights->societe->supprimer; $uploaddir = $conf->societe->dir_output; include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php'; } diff --git a/htdocs/contrat/list.php b/htdocs/contrat/list.php index 3df193d53d2..983f37caa7f 100644 --- a/htdocs/contrat/list.php +++ b/htdocs/contrat/list.php @@ -188,8 +188,8 @@ if (empty($reshook)) { $objectclass='Contrat'; $objectlabel='Contracts'; - $permtoread = $user->rights->contrat->lire; - $permtodelete = $user->rights->contrat->supprimer; + $permissiontoread = $user->rights->contrat->lire; + $permissiontodelete = $user->rights->contrat->supprimer; $uploaddir = $conf->contrat->dir_output; include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php'; } diff --git a/htdocs/core/actions_massactions.inc.php b/htdocs/core/actions_massactions.inc.php index febcba244c0..752e8dcc352 100644 --- a/htdocs/core/actions_massactions.inc.php +++ b/htdocs/core/actions_massactions.inc.php @@ -30,7 +30,7 @@ // $objectclass and $objectlabel must be defined // $parameters, $object, $action must be defined for the hook. -// $permtoread, $permtocreate and $permtodelete may be defined +// $permissiontoread, $permissiontoadd and $permissiontodelete may be defined // $uploaddir may be defined (example to $conf->projet->dir_output."/";) // $toselect may be defined // $diroutputmassaction may be defined @@ -43,6 +43,11 @@ if (empty($objectclass) || empty($uploaddir)) exit; } +// For backward compatibility +if (! empty($permtoread) && empty($permissiontoread)) $permissiontoread = $permtoread; +if (! empty($permtocreate) && empty($permissiontoadd)) $permissiontoadd = $permtocreate; +if (! empty($permtodelete) && empty($permissiontodelete)) $permissiontoread = $permtodelete; + // Mass actions. Controls on number of lines checked. $maxformassaction=(empty($conf->global->MAIN_LIMIT_FOR_MASS_ACTIONS)?1000:$conf->global->MAIN_LIMIT_FOR_MASS_ACTIONS); @@ -924,7 +929,7 @@ if (!$error && $massaction == 'cancelorders') } -if (! $error && $massaction == "builddoc" && $permtoread && ! GETPOST('button_search')) +if (! $error && $massaction == "builddoc" && $permissiontoread && ! GETPOST('button_search')) { if (empty($diroutputmassaction)) { @@ -1105,7 +1110,7 @@ if ($action == 'remove_file') } // Validate records -if (! $error && $massaction == 'validate' && $permtocreate) +if (! $error && $massaction == 'validate' && $permissiontoadd) { $objecttmp=new $objectclass($db); @@ -1170,6 +1175,62 @@ if (! $error && $massaction == 'validate' && $permtocreate) //var_dump($listofobjectthirdparties);exit; } } +var_dump($permissiontoadd); +// Validate records +if (! $error && $massaction == 'disable' && $permissiontocreate) +{ + $objecttmp=new $objectclass($db); + + if (! $error) + { + $db->begin(); + + $nbok = 0; + foreach($toselect as $toselectid) + { + $result=$objecttmp->fetch($toselectid); + if ($result > 0) + { + //if (in_array($objecttmp->element, array('societe','member'))) $result = $objecttmp->delete($objecttmp->id, $user, 1); + //else + $result = $objecttmp->close($user); + if ($result == $objecttmp::STATUS_VALIDATED) + { + $langs->load("errors"); + setEventMessages($langs->trans("ErrorObjectMustHaveStatusValidatedToBeDisabled", $objecttmp->ref), null, 'errors'); + $error++; + break; + } + elseif ($result < 0) + { + setEventMessages($objecttmp->error, $objecttmp->errors, 'errors'); + $error++; + break; + } + else $nbok++; + } + else + { + setEventMessages($objecttmp->error, $objecttmp->errors, 'errors'); + $error++; + break; + } + } + + if (! $error) + { + if ($nbok > 1) setEventMessages($langs->trans("RecordsModified", $nbok), null, 'mesgs'); + else setEventMessages($langs->trans("RecordsModified", $nbok), null, 'mesgs'); + $db->commit(); + } + else + { + $db->rollback(); + } + //var_dump($listofobjectthirdparties);exit; + } +} + // Closed records if (!$error && $massaction == 'closed' && $objectclass == "Propal" && $permtoclose) { $db->begin(); @@ -1206,7 +1267,7 @@ if (!$error && $massaction == 'closed' && $objectclass == "Propal" && $permtoclo } } // Delete record from mass action (massaction = 'delete' for direct delete, action/confirm='delete'/'yes' with a confirmation step before) -if (! $error && ($massaction == 'delete' || ($action == 'delete' && $confirm == 'yes')) && $permtodelete) +if (! $error && ($massaction == 'delete' || ($action == 'delete' && $confirm == 'yes')) && $permissiontodelete) { $db->begin(); @@ -1272,7 +1333,7 @@ if (! $error && ($massaction == 'delete' || ($action == 'delete' && $confirm == // Generate document foreach object according to model linked to object // @TODO : propose model selection -if (! $error && $massaction == 'generate_doc' && $permtoread) +if (! $error && $massaction == 'generate_doc' && $permissiontoread) { $db->begin(); diff --git a/htdocs/core/class/html.formfile.class.php b/htdocs/core/class/html.formfile.class.php index 5f8a9cb51e3..4a55fa24bb3 100644 --- a/htdocs/core/class/html.formfile.class.php +++ b/htdocs/core/class/html.formfile.class.php @@ -1471,7 +1471,7 @@ class FormFile * @param string $param Parameters on sort links * @param int $forcedownload Force to open dialog box "Save As" when clicking on file * @param string $relativepath Relative path of docs (autodefined if not provided) - * @param int $permtodelete Permission to delete + * @param int $permissiontodelete Permission to delete * @param int $useinecm Change output for use in ecm module * @param int $textifempty Text to show if filearray is empty * @param int $maxlength Maximum length of file name shown @@ -1480,7 +1480,7 @@ class FormFile * @return int <0 if KO, nb of files shown if OK * @see list_of_documents() */ - public function list_of_autoecmfiles($upload_dir, $filearray, $modulepart, $param, $forcedownload = 0, $relativepath = '', $permtodelete = 1, $useinecm = 0, $textifempty = '', $maxlength = 0, $url = '', $addfilterfields = 0) + public function list_of_autoecmfiles($upload_dir, $filearray, $modulepart, $param, $forcedownload = 0, $relativepath = '', $permissiontodelete = 1, $useinecm = 0, $textifempty = '', $maxlength = 0, $url = '', $addfilterfields = 0) { // phpcs:enable global $user, $conf, $langs, $form; @@ -1703,7 +1703,7 @@ class FormFile //if ($forcedownload) print '&attachment=1'; //print '&file='.urlencode($relativefile).'">'; //print img_view().' '; - //if ($permtodelete) print ''.img_delete().''; + //if ($permissiontodelete) print ''.img_delete().''; //else print ' '; print "\n"; } @@ -1758,13 +1758,13 @@ class FormFile * Show array with linked files * * @param Object $object Object - * @param int $permtodelete Deletion is allowed + * @param int $permissiontodelete Deletion is allowed * @param string $action Action * @param string $selected ??? * @param string $param More param to add into URL * @return int Number of links */ - public function listOfLinks($object, $permtodelete = 1, $action = null, $selected = null, $param = '') + public function listOfLinks($object, $permissiontodelete = 1, $action = null, $selected = null, $param = '') { global $user, $conf, $langs, $user; global $sortfield, $sortorder; @@ -1878,7 +1878,7 @@ class FormFile print '