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

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

Parent Directory Parent Directory | Revision Log Revision Log


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

1 <?php
2 /**
3 * DBFORM - 'action' - Surcharge gen.
4 *
5 * Ce script permet de définir la classe 'action'.
6 *
7 * @package openads
8 * @version SVN : $Id$
9 */
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 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 $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 }
55
56 /**
57 * @return void
58 */
59 function verifier($val = array(), &$dnu1 = null, $dnu2 = null) {
60 parent::verifier($val);
61 //
62 $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 // 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 _("Le champ <b>Règle données techniques / CERFA</b> %s ne peut comporter un champ rempli et un champ vide"),
122 $i
123 )
124 );
125 }
126 }
127
128
129 }
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 $this->dossier = $this->f->get_inst__om_dbform(array(
141 "obj" => "dossier",
142 "idx" => "]",
143 ));
144 }
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 *
156 * @param string $rule Règle d'action.
157 * @param string $rule_name Nom de la règle.
158 */
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 $operands = explode("+", $rule);
165 // Nombre d'opérande
166 $nb_operands = count($operands);
167
168 // 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 // 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 sprintf(_("Le champ %s ne peut pas avoir plus d'un opérande."),
205 '<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
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
237 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 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 $error_msg = _("Le champ %s n'est pas utilisable pour le champ %s.");
277 // Si plusieurs champs sont en erreur
278 if (count($check_field_exist) > 1) {
279 $error_msg = _("Les champs %s ne sont pas utilisables pour le champ %s.");
280 }
281
282 // Affiche l'erreur
283 $this->correct=false;
284 $this->addToMessage(
285 sprintf(
286 $error_msg,
287 '<b>'.$string_error_fields.'</b>',
288 '<b>'._($rule_name).'</b>'
289 )
290 );
291 }
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 [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 [duree_validite][date_depot]";
318 // Champs de l'événement
319 echo "<h4>"._("Parametres de l'evenement")."</h4>";
320 echo "[etat] [delai] [accord_tacite] [avis_decision]
321 [delai_notification] [date_evenement] [autorite_competente]
322 [complement_om_html] [complement2_om_html] [complement3_om_html]
323 [complement4_om_html]";
324 // 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 // 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 echo "<h4>"._("Suppression de la valeur")."</h4>";
336 echo "[null]";
337 }
338
339 }
340
341

Properties

Name Value
svn:keywords "Id"

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26