1 |
mbroquet |
3730 |
<?php |
2 |
|
|
/** |
3 |
|
|
* Ce fichier contient la déclaration de la classe "action". |
4 |
|
|
* |
5 |
|
|
* @package openfoncier |
6 |
|
|
* @version SVN : $Id: action.class.php 4418 2015-02-24 17:30:28Z tbenita $ |
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 |
nmeucci |
3873 |
[duree_validite][date_depot]"; |
187 |
mbroquet |
3730 |
// 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 |
|
|
?> |