/[openfoncier]/trunk/obj/action.class.php
ViewVC logotype

Annotation of /trunk/obj/action.class.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2787 - (hide annotations)
Thu Mar 6 13:47:18 2014 UTC (10 years, 10 months ago) by softime
File size: 7279 byte(s)
→ Amélioration de la fonction vérifier() de la classe action concernant la composition des règles.
→ Amélioration de la fonction regle() de la classe instruction, la fonction prend désormais plus de 3 opérandes pour certaines règles et ne prends plus en compte certains champs qui n'existe plus dans OpenADS.
→ Amélioration de la fonction check_field_exist() de la classe utils.
→ Remplacement dans data/pgsql/init_parametrage_workflow.sql dans l'action 'initialisation' de l'utilisation du champ archive_date_depot par le champ archive_date_dernier_depot. 

1 fraynaud 3 <?php
2 fmichon 1546 /**
3     * Ce fichier contient la déclaration de la classe "action".
4     *
5     * @package openfoncier
6     * @version SVN : $Id$
7     */
8 fraynaud 3
9 fmichon 1549 //
10 fmichon 1546 require_once "../gen/obj/action.class.php";
11    
12     /**
13     *
14     *
15     */
16 fraynaud 3 class action extends action_gen {
17    
18 nhaye 2440 // Handler d'un objet de classe dossier
19     var $dossier;
20    
21 fmichon 1546 function action($id, &$db, $debug) {
22     $this->constructeur($id, $db, $debug);
23     }
24 fraynaud 3
25 softime 2308 function verifier($val = array(), &$db, $DEBUG){
26     parent::verifier($val, $db, $DEBUG);
27    
28 softime 2787 //
29 softime 2308 $list_column = array();
30 softime 2787 // Mot-clés à rechercher
31     $search_field = "regle_";
32     // Pour chaque champs du formulaire
33     foreach ($this->champs as $champ) {
34     // Si le mot-clés est présent dans l'identifiant du champ
35     if (strpos($champ, $search_field) !== false) {
36     // Ajoute le champ à la liste
37     $list_column[] = $champ;
38     }
39 softime 2308 }
40    
41 softime 2787 //
42 softime 2308 $list_fields = array();
43     // Pour chaque colonne
44     foreach ($list_column as $value) {
45    
46     // Vérifie que le champs existe dans le formulaire et qu'il n'est
47     // pas vide
48     if (isset($this->valF[$value])
49     && $this->valF[$value] != ''
50     && $this->valF[$value] != NULL) {
51 softime 2787 //
52 softime 2308 $list_fields[$value] = $this->valF[$value];
53     }
54     }
55    
56     // Si le tableau contenant les champs à tester n'est pas vide
57     if (count($list_fields) > 0) {
58    
59     //
60     foreach ($list_fields as $key => $value) {
61    
62 softime 2787 // Vérification de la possibilité des champs de la table dossier
63     // correspondants aux règles d'être mis à null
64 nhaye 2440 if($this->valF[$key] == "NULL" OR $this->valF[$key] == "null") {
65 softime 2787 //
66 nhaye 2440 if($this->fieldCanBeNull(substr($key, 6)) === false) {
67     // Affiche l'erreur
68     $this->correct=false;
69     $error_message = _("Le champ %s des dossiers ne peut etre mis a NULL.");
70     $this->addToMessage(sprintf($error_message, "<b>"._(substr($key, 6))."</b>"));
71    
72     }
73     }
74    
75 softime 2787 // Vérifie que la règle est valide
76     $this->rule_is_valid($value, $key);
77 softime 2308 }
78     }
79    
80     }
81    
82 fmichon 1546 /**
83 nhaye 2440 * Vérification que les champs ciblés par les règles contenant NULL peuvent
84     * l'être.
85     * @param string $field champ impacté par la règle
86     * @return boolean peut être null = true else false
87     */
88     function fieldCanBeNull($field) {
89     // Instantiation de la classe dossier si pas déjà fait
90     if(!isset($this->dossier) OR empty($this->dossier)) {
91     require_once '../obj/dossier.class.php';
92     $this->dossier = new dossier(']', $this->db, DEBUG);
93     }
94     // Si le champ passé en param est dans la liste des champs obligatoires
95     // de la table dossier return false
96     if(array_search($field, $this->dossier->required_field) !== false) {
97     return false;
98     }
99     return true;
100     }
101    
102     /**
103 softime 2787 * Vérifie la validité d'une règle d'action.
104     * @param string $rule Règle d'action
105     * @param string $rule_name Nom de la règle
106     */
107     function rule_is_valid($rule, $rule_name) {
108    
109     // Supprime tous les espaces de la chaîne de caractère
110     $rule = str_replace(' ', '', $rule);
111     // Coupe la chaîne au niveau de l'opérateur
112     $operands = explode ("+", $rule);
113     // Nombre d'opérande
114     $nb_operands = count($operands);
115    
116     // Si c'est une règle spécifique
117     if ($rule_name == "regle_autorite_competente"
118     || $rule_name == "regle_etat"
119     || $rule_name == "regle_accord_tacite") {
120     // S'il y a plus d'une opérande
121     if ($nb_operands > 1) {
122     // Message d'erreur
123     $this->correct=false;
124     $this->addToMessage(
125     sprintf(_("Le champ %s ne peut pas avoir plus d'un operande"),
126     '<b>'._($rule_name).'</b>')
127     );
128     }
129     }
130    
131     // Pour chaque opérande
132     foreach ($operands as $key => $operand) {
133    
134     // Supprime les numériques et null du tableau
135     if (is_numeric($operand)) {
136     // Supprime l'opérande
137     unset($operands[$key]);
138     }
139     if ($operand == "NULL" || $operand == "null") {
140     // Supprime l'opérande
141     unset($operands[$key]);
142     }
143     }
144    
145     // Vérifie les champs utilisés pour la règle
146     $check_field_exist = $this->f->check_field_exist($operands, 'instruction');
147     if ($check_field_exist !== true) {
148    
149     // Liste des champs en erreur
150     $string_error_fields = implode(", ", $check_field_exist);
151    
152     // Message d'erreur
153     $error_msg = _("Le champ %s n'est pas utilisable pour le champ %s");
154     // Si plusieurs champs sont en erreur
155     if (count($check_field_exist) > 1) {
156     $error_msg = _("Les champs %s ne sont pas utilisable pour le champ %s");
157     }
158    
159     // Affiche l'erreur
160     $this->correct=false;
161     $this->addToMessage(sprintf($error_msg,
162     '<b>'.$string_error_fields.'</b>',
163     '<b>'._($rule_name).'</b>'));
164     }
165     }
166    
167     /**
168 fmichon 1546 *
169     */
170 fmichon 1541 function formSpecificContent($maj) {
171 fmichon 1546 /**
172     * Affichage des champs qu'il est possible d'utiliser dans les règles
173     */
174     // Archives du dossier
175 fmichon 1541 echo "<h4>"._("Valeurs du dossier avant l'evenement")."</h4>";
176 softime 2376 echo "[archive_etat] [archive_delai] [archive_accord_tacite]
177     [archive_avis]";
178 fmichon 1541 echo "<br/>";
179 softime 2376 echo "[archive_date_dernier_depot] [archive_date_complet]
180     [archive_date_rejet] [archive_date_limite]
181     [archive_date_notification_delai] [archive_date_decision]
182     [archive_date_validite] [archive_date_achevement]
183     [archive_date_conformite] [archive_date_chantier]
184     [archive_etat_pendant_incompletude] [archive_date_limite_incompletude]
185     [archive_delai_incompletude] [archive_autorite_competente]
186 softime 2142 [duree_validite]";
187 fmichon 1546 // Champs de l'événement
188 fmichon 1541 echo "<h4>"._("Parametres de l'evenement")."</h4>";
189 softime 2376 echo "[etat] [delai] [accord_tacite] [avis_decision]
190     [delai_notification] [date_evenement] [autorite_competente]";
191 softime 2562 // Champs récupérés depuis l'événement d'instruction principal
192     echo "<h4>"._("Valeurs de l'evenement d'instruction principal")."</h4>";
193     echo "[date_envoi_signature] [date_retour_signature] [date_envoi_rar] [date_retour_rar] [date_envoi_rar] [date_retour_rar] [date_envoi_controle_legalite] [date_retour_controle_legalite]";
194 softime 2142 // Champs du type détaillé du dossier d'autorisation
195 softime 2376 echo "<h4>"._("Parametres du type detaille du dossier d'autorisation")
196     ."</h4>";
197 softime 2142 echo "[duree_validite_parametrage]";
198 nhaye 2371 echo "<h4>"._("Suppression de la valeur")."</h4>";
199     echo "[null]";
200 fmichon 1541 }
201    
202 fmichon 1546 }
203    
204     ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26