From a541f625734ae5e9be82e62f8cd9e3279b6db4cf Mon Sep 17 00:00:00 2001 From: Etienne Pallier Date: Sat, 23 Oct 2021 00:13:34 +0200 Subject: [PATCH] - (i) changé mot-clé "except" par "sauf" dans fichier config champs readonly (et adapté traitement) --- CHANGELOG | 5 +++++ README.md | 4 ++-- config/app_labinvent_mandatory_fields.default.yml | 30 +++++++++++++++--------------- src/Model/Table/MaterielsTable.php | 15 ++++++++++----- 4 files changed, 32 insertions(+), 22 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 0b0f5d0..9b9a19f 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -461,6 +461,11 @@ Commencer à implémenter le nouveau workflow v5 : ======= CHANGES ======= ------- +23/10/2021 v5.2.18-3.7.9 + - (i) changé mot-clé "except" par "sauf" dans fichier config champs readonly (et adapté traitement) + - nouvelle exception si mot-clé "sauf" mal utilisé + +------- 22/10/2021 v5.2.17-3.7.9 - (i) Amélioration importante de la config des champs non modifiables : ajout optionnel d'une exception pour un (ou plusieurs) role(s) => Exemple pour interdire la modif du fournisseur (sauf pour le role Administration) : diff --git a/README.md b/README.md index ae154a2..343de9b 100644 --- a/README.md +++ b/README.md @@ -52,8 +52,8 @@ Logiciel testé et validé sur les configurations suivantes : -------------------------------------------------------------------------------------------- -Date: 22/10/2021 -Version: v5.2.17-3.7.9 +Date: 23/10/2021 +Version: v5.2.18-3.7.9 diff --git a/config/app_labinvent_mandatory_fields.default.yml b/config/app_labinvent_mandatory_fields.default.yml index 495c0ce..449ae98 100644 --- a/config/app_labinvent_mandatory_fields.default.yml +++ b/config/app_labinvent_mandatory_fields.default.yml @@ -101,7 +101,7 @@ UNEDITABLE_FIELDS_LOT0: #- nom_user # - Acheteur (le Créateur de la fiche) - Un role "Utilisateur" ne peut pas changer ça, c'est par défaut lui-même - - nom_responsable (except Responsable, Administration) + - nom_responsable (sauf Responsable, Administration) #- nom_ancien_responsable @@ -118,11 +118,11 @@ UNEDITABLE_FIELDS_LOT0: #- budgets # #### CHAMPS ADMINISTRATIFS : #### - - eotp (except Administration) - - numero_commande (except Administration) + - eotp (sauf Administration) + - numero_commande (sauf Administration) - numero_laboratoire # READONLY toujours car généré automatiquement - - numero_inventaire_organisme (except Administration) - - numero_inventaire_old (except Administration) + - numero_inventaire_organisme (sauf Administration) + - numero_inventaire_old (sauf Administration) @@ -217,8 +217,8 @@ UNEDITABLE_FIELDS_LOT1: # On ne devrait pas pouvoir changer la NATURE du bien # Domaine & Catégorie - - sur_categorie_id (except Administration) # Domaine - - categorie_id (except Administration) # Catégorie + - sur_categorie_id (sauf Administration) # Domaine + - categorie_id (sauf Administration) # Catégorie #- sous_categorie_id #- groupes_thematique_id @@ -256,7 +256,7 @@ UNEDITABLE_FIELDS_LOT1: #- nom_user # - Acheteur (le Créateur de la fiche) - Un role "Utilisateur" ne peut pas changer ça, c'est par défaut lui-même - #- nom_responsable (except Responsable, Administration) + #- nom_responsable (sauf Responsable, Administration) #- nom_ancien_responsable @@ -266,11 +266,11 @@ UNEDITABLE_FIELDS_LOT1: #- gestionnaire_id # Fournisseur - - fournisseur_id (except Administration) + - fournisseur_id (sauf Administration) #- organisme_id - - prix_ht (except Administration) + - prix_ht (sauf Administration) # Utilisé par la Gestion pour remplir le champ eotp #- budgets @@ -280,11 +280,11 @@ UNEDITABLE_FIELDS_LOT1: # Le devis attaché au matériel commandé n'est ni modifiable ni supprimable # #### CHAMPS ADMINISTRATIFS : #### - - eotp (except Administration) - - numero_commande (except Administration) + - eotp (sauf Administration) + - numero_commande (sauf Administration) - numero_laboratoire # READONLY toujours car généré automatiquement - - numero_inventaire_organisme (except Administration) - - numero_inventaire_old (except Administration) + - numero_inventaire_organisme (sauf Administration) + - numero_inventaire_old (sauf Administration) @@ -397,7 +397,7 @@ UNEDITABLE_FIELDS_LOT2: #- nom_user # - Acheteur (le Créateur de la fiche) - Un role "Utilisateur" ne peut pas changer ça, c'est par défaut lui-même - #- nom_responsable (except Responsable, Administration) + #- nom_responsable (sauf Responsable, Administration) #- nom_ancien_responsable diff --git a/src/Model/Table/MaterielsTable.php b/src/Model/Table/MaterielsTable.php index f949ddd..a5eaa1f 100755 --- a/src/Model/Table/MaterielsTable.php +++ b/src/Model/Table/MaterielsTable.php @@ -271,18 +271,23 @@ class MaterielsTable extends AppTable $dict = []; foreach ($uneditable_fields as $f) { $except_roles = []; - $except_str = '(except'; + $except_str = '(sauf'; + $pos0 = strpos($f, '('); $pos = strpos($f, $except_str); - // Si le nom du champ $f fini par "(except ...)", on récupère cette chaine except (sans le mot except ni la parenthèse finale) dans $except - if ($pos !== false) { + // Si le nom du champ $f fini par "(sauf ...)", on récupère cette chaine except (sans le mot 'sauf' ni la parenthèse finale) dans $except + if ($pos0 !== false) { + $error_msg = "Erreur dans le fichier de configuration des champs non modifiables"; + // EXCEPTION si parenthèse début mais pas suivie du mot-clé 'sauf' + if ($pos === false) + throw new \Exception("$error_msg : une parenthèse doit toujours être suivie du mot-clé 'sauf', ce qui n'est pas le cas de la ligne '$f'"); // EXCEPTION si pas de parenthèse finale, ou role mal orthographié //$except_list = trim( substr($f, $pos + strlen($except_str), -1) ); if ( substr($f, -1) != ')' ) - throw new \Exception("Erreur dans le fichier de configuration des champs non modifiables : il manque une parenthèse à la fin de la ligne '$f'"); + throw new \Exception("$error_msg : il manque une parenthèse à la fin de la ligne '$f'"); $except_roles = str_replace(" ", "", substr($f, $pos + strlen($except_str), -1) ); $except_roles = explode(',', $except_roles); foreach ($except_roles as $role) if (! self::isValidRole($role)) - throw new \Exception("Erreur dans le fichier de configuration des champs non modifiables : le role '$role' est mal orthographié dans la ligne '$f'"); + throw new \Exception("$error_msg : le role '$role' est mal orthographié dans la ligne '$f'"); $f = trim( substr($f,0,$pos) ); } $dict[$f] = $except_roles; -- libgit2 0.21.2