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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 8989 - (hide annotations)
Thu Oct 31 15:09:51 2019 UTC (5 years, 3 months ago) by softime
File size: 13527 byte(s)
* Merge de la branche d'intégration 4.12.0-develop vers le trunk

1 mbroquet 3730 <?php
2     /**
3 nhaye 5254 * DBFORM - 'action' - Surcharge gen.
4 mbroquet 3730 *
5 nhaye 5254 * Ce script permet de définir la classe 'action'.
6     *
7     * @package openads
8     * @version SVN : $Id$
9 mbroquet 3730 */
10    
11     require_once "../gen/obj/action.class.php";
12    
13     class action extends action_gen {
14    
15     // Handler d'un objet de classe dossier
16     var $dossier;
17    
18 softime 6565 function setType(&$form, $maj) {
19     parent::setType($form, $maj);
20    
21     if ($maj == 0 or $maj == 1) {
22     $form->setType("regle_donnees_techniques1", "regle_donnees_techniques");
23     $form->setType("regle_donnees_techniques2", "regle_donnees_techniques");
24     $form->setType("regle_donnees_techniques3", "regle_donnees_techniques");
25     $form->setType("regle_donnees_techniques4", "regle_donnees_techniques");
26     $form->setType("regle_donnees_techniques5", "regle_donnees_techniques");
27     $form->setType("cible_regle_donnees_techniques1", "nodisplay");
28     $form->setType("cible_regle_donnees_techniques2", "nodisplay");
29     $form->setType("cible_regle_donnees_techniques3", "nodisplay");
30     $form->setType("cible_regle_donnees_techniques4", "nodisplay");
31     $form->setType("cible_regle_donnees_techniques5", "nodisplay");
32     }
33     if ($maj == 2 or $maj == 3) {
34     $form->setType("regle_donnees_techniques1", "regle_donnees_techniques_static");
35     $form->setType("regle_donnees_techniques2", "regle_donnees_techniques_static");
36     $form->setType("regle_donnees_techniques3", "regle_donnees_techniques_static");
37     $form->setType("regle_donnees_techniques4", "regle_donnees_techniques_static");
38     $form->setType("regle_donnees_techniques5", "regle_donnees_techniques_static");
39     $form->setType("cible_regle_donnees_techniques1", "nodisplay");
40     $form->setType("cible_regle_donnees_techniques2", "nodisplay");
41     $form->setType("cible_regle_donnees_techniques3", "nodisplay");
42     $form->setType("cible_regle_donnees_techniques4", "nodisplay");
43     $form->setType("cible_regle_donnees_techniques5", "nodisplay");
44     }
45     }
46    
47     function setLib(&$form, $maj) {
48     parent::setLib($form, $maj);
49 softime 8989 $form->setLib('regle_donnees_techniques1',_('regle_donnees_technique_cerfa1'));
50     $form->setLib('regle_donnees_techniques2',_('regle_donnees_technique_cerfa2'));
51     $form->setLib('regle_donnees_techniques3',_('regle_donnees_technique_cerfa3'));
52     $form->setLib('regle_donnees_techniques4',_('regle_donnees_technique_cerfa4'));
53     $form->setLib('regle_donnees_techniques5',_('regle_donnees_technique_cerfa5'));
54 softime 6565 }
55    
56 softime 8989 /**
57     * @return void
58     */
59     function verifier($val = array(), &$dnu1 = null, $dnu2 = null) {
60     parent::verifier($val);
61     //
62 mbroquet 3730 $list_column = array();
63     // Mot-clés à rechercher
64     $search_field = "regle_";
65     // Pour chaque champs du formulaire
66     foreach ($this->champs as $champ) {
67     // Si le mot-clés est présent dans l'identifiant du champ
68     if (strpos($champ, $search_field) !== false) {
69     // Ajoute le champ à la liste
70     $list_column[] = $champ;
71     }
72     }
73    
74     //
75     $list_fields = array();
76     // Pour chaque colonne
77     foreach ($list_column as $value) {
78    
79     // Vérifie que le champs existe dans le formulaire et qu'il n'est
80     // pas vide
81     if (isset($this->valF[$value])
82     && $this->valF[$value] != ''
83     && $this->valF[$value] != NULL) {
84     //
85     $list_fields[$value] = $this->valF[$value];
86     }
87     }
88    
89     // Si le tableau contenant les champs à tester n'est pas vide
90     if (count($list_fields) > 0) {
91    
92     //
93     foreach ($list_fields as $key => $value) {
94    
95     // Vérification de la possibilité des champs de la table dossier
96     // correspondants aux règles d'être mis à null
97     if($this->valF[$key] == "NULL" OR $this->valF[$key] == "null") {
98     //
99     if($this->fieldCanBeNull(substr($key, 6)) === false) {
100     // Affiche l'erreur
101     $this->correct=false;
102     $error_message = _("Le champ %s des dossiers ne peut etre mis a NULL.");
103     $this->addToMessage(sprintf($error_message, "<b>"._(substr($key, 6))."</b>"));
104    
105     }
106     }
107    
108     // Vérifie que la règle est valide
109     $this->rule_is_valid($value, $key);
110     }
111     }
112    
113 softime 6565 // Vérification de la présence du couple cible règle pour les DT
114     for ($i = 1; $i < 6; $i++) {
115     if ($this->valF["regle_donnees_techniques".$i] === null XOR
116     $this->valF["cible_regle_donnees_techniques".$i] === null) {
117    
118     $this->correct=false;
119     $this->addToMessage(
120     sprintf(
121 softime 8989 _("Le champ <b>Règle données techniques / CERFA</b> %s ne peut comporter un champ rempli et un champ vide"),
122 softime 6565 $i
123     )
124     );
125     }
126     }
127    
128    
129 mbroquet 3730 }
130    
131     /**
132     * Vérification que les champs ciblés par les règles contenant NULL peuvent
133     * l'être.
134     * @param string $field champ impacté par la règle
135     * @return boolean peut être null = true else false
136     */
137     function fieldCanBeNull($field) {
138     // Instantiation de la classe dossier si pas déjà fait
139     if(!isset($this->dossier) OR empty($this->dossier)) {
140 softime 7996 $this->dossier = $this->f->get_inst__om_dbform(array(
141     "obj" => "dossier",
142     "idx" => "]",
143     ));
144 mbroquet 3730 }
145     // Si le champ passé en param est dans la liste des champs obligatoires
146     // de la table dossier return false
147     if(array_search($field, $this->dossier->required_field) !== false) {
148     return false;
149     }
150     return true;
151     }
152    
153     /**
154     * Vérifie la validité d'une règle d'action.
155 softime 6565 *
156     * @param string $rule Règle d'action.
157     * @param string $rule_name Nom de la règle.
158 mbroquet 3730 */
159     function rule_is_valid($rule, $rule_name) {
160    
161     // Supprime tous les espaces de la chaîne de caractère
162     $rule = str_replace(' ', '', $rule);
163     // Coupe la chaîne au niveau de l'opérateur
164 softime 6565 $operands = explode("+", $rule);
165 mbroquet 3730 // Nombre d'opérande
166     $nb_operands = count($operands);
167    
168 softime 6565 // Si la règle à vérifier concerne les données techniques, il faut
169     // récupérer le type du champ des données techniques sélectionné.
170     if ($rule_name === 'cible_regle_donnees_techniques1'
171     || $rule_name === 'cible_regle_donnees_techniques2'
172     || $rule_name === 'cible_regle_donnees_techniques3'
173     || $rule_name === 'cible_regle_donnees_techniques4'
174     || $rule_name === 'cible_regle_donnees_techniques5') {
175    
176    
177     // Récupération du type de champ de la cible de la règle
178     $type = $this->f->get_type_from_db(
179     'donnees_techniques',
180     $this->valF[$rule_name]
181     );
182     if (isset($type[$this->valF[$rule_name]]) === false
183     || $type[$this->valF[$rule_name]] !== 'text') {
184     $this->correct=false;
185     $this->addToMessage(
186     sprintf(
187     _("Le champ %s ne peut être que de type texte."),
188     '<b>'._($rule_name).'</b>'
189     )
190     );
191     }
192    
193     }
194    
195 mbroquet 3730 // Si c'est une règle spécifique
196     if ($rule_name == "regle_autorite_competente"
197     || $rule_name == "regle_etat"
198     || $rule_name == "regle_accord_tacite") {
199     // S'il y a plus d'une opérande
200     if ($nb_operands > 1) {
201     // Message d'erreur
202     $this->correct=false;
203     $this->addToMessage(
204 softime 6565 sprintf(_("Le champ %s ne peut pas avoir plus d'un opérande."),
205 mbroquet 3730 '<b>'._($rule_name).'</b>')
206     );
207     }
208     }
209    
210     // Pour chaque opérande
211     foreach ($operands as $key => $operand) {
212    
213     // Supprime les numériques et null du tableau
214     if (is_numeric($operand)) {
215     // Supprime l'opérande
216     unset($operands[$key]);
217     }
218     if ($operand == "NULL" || $operand == "null") {
219     // Supprime l'opérande
220     unset($operands[$key]);
221     }
222     }
223 softime 6565
224     $rules = array(
225     'regle_donnees_techniques1',
226     'regle_donnees_techniques2',
227     'regle_donnees_techniques3',
228     'regle_donnees_techniques4',
229     'regle_donnees_techniques5',
230     'cible_regle_donnees_techniques1',
231     'cible_regle_donnees_techniques2',
232     'cible_regle_donnees_techniques3',
233     'cible_regle_donnees_techniques4',
234     'cible_regle_donnees_techniques5',
235     );
236 mbroquet 3730
237 softime 6565 if (in_array($rule_name, $rules, true) === true) {
238    
239     // Vérification de l'existance des champs de règle dans les données
240     // technique
241     $check_field_dt_exist = $this->f->check_field_exist(
242     $operands,
243     'donnees_techniques'
244     );
245    
246     $check_field_instr_exist = $this->f->check_field_exist(
247     $operands,
248     'instruction'
249     );
250    
251     if ($check_field_dt_exist !== true and
252     $check_field_instr_exist !== true) {
253    
254     $check_field_exist = array_intersect(
255     $check_field_dt_exist,
256     $check_field_instr_exist
257     );
258     if (count($check_field_exist) === 0) {
259     $check_field_exist = true;
260     }
261     } else {
262     $check_field_exist = true;
263     }
264    
265     } else {
266     // Vérifie les champs utilisés pour la règle
267     $check_field_exist = $this->f->check_field_exist($operands, 'instruction');
268     }
269    
270 mbroquet 3730 if ($check_field_exist !== true) {
271    
272     // Liste des champs en erreur
273     $string_error_fields = implode(", ", $check_field_exist);
274    
275     // Message d'erreur
276 softime 6565 $error_msg = _("Le champ %s n'est pas utilisable pour le champ %s.");
277 mbroquet 3730 // Si plusieurs champs sont en erreur
278     if (count($check_field_exist) > 1) {
279 softime 6565 $error_msg = _("Les champs %s ne sont pas utilisables pour le champ %s.");
280 mbroquet 3730 }
281    
282     // Affiche l'erreur
283     $this->correct=false;
284 softime 6565 $this->addToMessage(
285     sprintf(
286     $error_msg,
287     '<b>'.$string_error_fields.'</b>',
288     '<b>'._($rule_name).'</b>'
289     )
290     );
291 mbroquet 3730 }
292     }
293    
294     /**
295     *
296     */
297     function formSpecificContent($maj) {
298     /**
299     * Affichage des champs qu'il est possible d'utiliser dans les règles
300     */
301     // Archives du dossier
302     echo "<h4>"._("Valeurs du dossier avant l'evenement")."</h4>";
303     echo "[archive_etat] [archive_delai] [archive_accord_tacite]
304     [archive_avis]";
305     echo "<br/>";
306     echo "[archive_date_dernier_depot] [archive_date_complet]
307     [archive_date_rejet] [archive_date_limite]
308     [archive_date_notification_delai] [archive_date_decision]
309     [archive_date_validite] [archive_date_achevement]
310     [archive_date_conformite] [archive_date_chantier]
311     [archive_etat_pendant_incompletude] [archive_date_limite_incompletude]
312     [archive_delai_incompletude] [archive_autorite_competente]
313 softime 6565 [archive_date_cloture_instruction] [archive_date_premiere_visite]
314     [archive_date_derniere_visite] [archive_date_contradictoire]
315     [archive_date_retour_contradictoire] [archive_date_ait]
316     [archive_date_transmission_parquet]
317 nmeucci 3873 [duree_validite][date_depot]";
318 mbroquet 3730 // Champs de l'événement
319     echo "<h4>"._("Parametres de l'evenement")."</h4>";
320     echo "[etat] [delai] [accord_tacite] [avis_decision]
321 softime 6565 [delai_notification] [date_evenement] [autorite_competente]
322     [complement_om_html] [complement2_om_html] [complement3_om_html]
323     [complement4_om_html]";
324 mbroquet 3730 // Champs récupérés depuis l'événement d'instruction principal
325     echo "<h4>"._("Valeurs de l'evenement d'instruction principal")."</h4>";
326     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]";
327     // Champs du type détaillé du dossier d'autorisation
328     echo "<h4>"._("Parametres du type detaille du dossier d'autorisation")
329     ."</h4>";
330     echo "[duree_validite_parametrage]";
331 softime 6565 // Champs du type détaillé du dossier d'autorisation
332     echo "<h4>"._("Valeurs des données techniques")
333     ."</h4>";
334     echo "[ctx_nature_travaux_infra_om_html] [ctx_article_non_resp_om_html]";
335 mbroquet 3730 echo "<h4>"._("Suppression de la valeur")."</h4>";
336     echo "[null]";
337     }
338    
339     }
340    
341 softime 7996

Properties

Name Value
svn:keywords "Id"

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26