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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2787 - (show annotations)
Thu Mar 6 13:47:18 2014 UTC (10 years, 11 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 <?php
2 /**
3 * Ce fichier contient la déclaration de la classe "action".
4 *
5 * @package openfoncier
6 * @version SVN : $Id$
7 */
8
9 //
10 require_once "../gen/obj/action.class.php";
11
12 /**
13 *
14 *
15 */
16 class action extends action_gen {
17
18 // Handler d'un objet de classe dossier
19 var $dossier;
20
21 function action($id, &$db, $debug) {
22 $this->constructeur($id, $db, $debug);
23 }
24
25 function verifier($val = array(), &$db, $DEBUG){
26 parent::verifier($val, $db, $DEBUG);
27
28 //
29 $list_column = array();
30 // 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 }
40
41 //
42 $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 //
52 $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 // Vérification de la possibilité des champs de la table dossier
63 // correspondants aux règles d'être mis à null
64 if($this->valF[$key] == "NULL" OR $this->valF[$key] == "null") {
65 //
66 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 // Vérifie que la règle est valide
76 $this->rule_is_valid($value, $key);
77 }
78 }
79
80 }
81
82 /**
83 * 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 * 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 *
169 */
170 function formSpecificContent($maj) {
171 /**
172 * Affichage des champs qu'il est possible d'utiliser dans les règles
173 */
174 // Archives du dossier
175 echo "<h4>"._("Valeurs du dossier avant l'evenement")."</h4>";
176 echo "[archive_etat] [archive_delai] [archive_accord_tacite]
177 [archive_avis]";
178 echo "<br/>";
179 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 [duree_validite]";
187 // Champs de l'événement
188 echo "<h4>"._("Parametres de l'evenement")."</h4>";
189 echo "[etat] [delai] [accord_tacite] [avis_decision]
190 [delai_notification] [date_evenement] [autorite_competente]";
191 // 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 // Champs du type détaillé du dossier d'autorisation
195 echo "<h4>"._("Parametres du type detaille du dossier d'autorisation")
196 ."</h4>";
197 echo "[duree_validite_parametrage]";
198 echo "<h4>"._("Suppression de la valeur")."</h4>";
199 echo "[null]";
200 }
201
202 }
203
204 ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26