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 |
?> |