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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 6565 - (hide annotations)
Fri Apr 21 16:14:15 2017 UTC (7 years, 9 months ago) by softime
File size: 13568 byte(s)
Merge de la version 4.0.0

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26