1 |
<?php |
2 |
//$Id$ |
3 |
//gen openMairie le 20/09/2023 16:22 |
4 |
|
5 |
require_once "../gen/obj/enjeux.class.php"; |
6 |
|
7 |
class enjeux extends enjeux_gen { |
8 |
|
9 |
/** |
10 |
* Liaison NaN |
11 |
* |
12 |
* Tableau contenant les objets qui représente les liaisons. |
13 |
*/ |
14 |
var $liaisons_nan = array( |
15 |
"lien_enjeux_om_collectivite" => array( |
16 |
"table_l" => "lien_enjeux_om_collectivite", |
17 |
"table_f" => "om_collectivite", |
18 |
"field" => "om_collectivite", |
19 |
), |
20 |
"lien_enjeux_dossier_instruction_type" => array( |
21 |
"table_l" => "lien_enjeux_dossier_instruction_type", |
22 |
"table_f" => "dossier_instruction_type", |
23 |
"field" => "dossier_instruction_type", |
24 |
), |
25 |
); |
26 |
|
27 |
function setType(&$form, $maj) { |
28 |
parent::setType($form, $maj); |
29 |
// Récupération du mode de l'action |
30 |
$crud = $this->get_action_crud($maj); |
31 |
|
32 |
// MODE AJOUTER / MODIFIER |
33 |
if ($maj == 0 || $maj == 1) { |
34 |
$form->setType("couleur", "color"); |
35 |
$form->setType('om_collectivite','select_multiple'); |
36 |
$form->setType('dossier_instruction_type','select_multiple'); |
37 |
} |
38 |
|
39 |
// MODE SUPPRIMER / CONSULTER |
40 |
if ($maj == 2 || $maj == 3) { |
41 |
$form->setType('om_collectivite','select_multiple_static'); |
42 |
$form->setType('dossier_instruction_type','select_multiple_static'); |
43 |
} |
44 |
} |
45 |
|
46 |
/** |
47 |
* Clause where pour la requête de sélection des données de l'enregistrement. |
48 |
* |
49 |
* @return string |
50 |
*/ |
51 |
function get_var_sql_forminc__selection() { |
52 |
return " GROUP BY enjeux.enjeux "; |
53 |
} |
54 |
|
55 |
/** |
56 |
* |
57 |
* @return array |
58 |
*/ |
59 |
function get_var_sql_forminc__champs() { |
60 |
return array( |
61 |
"enjeux.enjeux", |
62 |
"enjeux.libelle", |
63 |
"couleur", |
64 |
"array_to_string(array_agg(distinct(om_collectivite) ORDER BY om_collectivite), ';') as om_collectivite", |
65 |
"array_to_string(array_agg(distinct(dossier_instruction_type) ORDER BY dossier_instruction_type), ';') as dossier_instruction_type", |
66 |
); |
67 |
} |
68 |
|
69 |
/** |
70 |
* SETTER_FORM - setLib |
71 |
* |
72 |
* @return void |
73 |
*/ |
74 |
function setLib(&$form, $maj) { |
75 |
parent::setLib($form, $maj); |
76 |
// |
77 |
$form->setLib('om_collectivite', __('om_collectivite')); |
78 |
$form->setLib('dossier_instruction_type', __('dossier_instruction_type')); |
79 |
} |
80 |
|
81 |
/** |
82 |
* SETTER_FORM - setTaille |
83 |
* |
84 |
* @return void |
85 |
*/ |
86 |
function setTaille(&$form, $maj) { |
87 |
// |
88 |
parent::setTaille($form, $maj); |
89 |
// |
90 |
$form->setTaille("om_collectivite", 10); |
91 |
$form->setTaille("dossier_instruction_type", 11); |
92 |
} |
93 |
|
94 |
/** |
95 |
* SETTER_FORM - setMax |
96 |
* |
97 |
* @return void |
98 |
*/ |
99 |
function setMax(&$form, $maj) { |
100 |
// |
101 |
parent::setMax($form, $maj); |
102 |
// |
103 |
$form->setMax("om_collectivite", 5); |
104 |
$form->setMax("dossier_instruction_type", 11); |
105 |
} |
106 |
|
107 |
/** |
108 |
* Clause from pour la requête de sélection des données de l'enregistrement. |
109 |
* |
110 |
* @return string |
111 |
*/ |
112 |
function get_var_sql_forminc__tableSelect() { |
113 |
return sprintf( |
114 |
'%1$s%2$s |
115 |
LEFT JOIN %1$slien_enjeux_om_collectivite |
116 |
ON lien_enjeux_om_collectivite.enjeux=enjeux.enjeux |
117 |
LEFT JOIN %1$slien_enjeux_dossier_instruction_type |
118 |
ON lien_enjeux_dossier_instruction_type.enjeux=enjeux.enjeux', |
119 |
DB_PREFIXE, |
120 |
$this->table |
121 |
); |
122 |
} |
123 |
|
124 |
/** |
125 |
* |
126 |
* @return string |
127 |
*/ |
128 |
function get_var_sql_forminc__sql_om_collectivite() { |
129 |
return "SELECT |
130 |
om_collectivite.om_collectivite, |
131 |
CONCAT(om_collectivite.libelle) as lib |
132 |
FROM ".DB_PREFIXE."om_collectivite |
133 |
ORDER BY om_collectivite.libelle"; |
134 |
} |
135 |
|
136 |
/** |
137 |
* |
138 |
* @return string |
139 |
*/ |
140 |
function get_var_sql_forminc__sql_om_collectivite_by_id() { |
141 |
return "SELECT |
142 |
om_collectivite.om_collectivite, |
143 |
CONCAT(om_collectivite.libelle) as lib |
144 |
FROM ".DB_PREFIXE."om_collectivite |
145 |
WHERE om_collectivite IN (<idx>) |
146 |
ORDER BY om_collectivite.libelle"; |
147 |
} |
148 |
|
149 |
/** |
150 |
* |
151 |
* @return string |
152 |
*/ |
153 |
function get_var_sql_forminc__sql_dossier_instruction_type() { |
154 |
return "SELECT |
155 |
dossier_instruction_type.dossier_instruction_type, |
156 |
CONCAT(dossier_autorisation_type_detaille.code,' - ',dossier_instruction_type.code,' - ',dossier_instruction_type.libelle) as lib |
157 |
FROM ".DB_PREFIXE."dossier_instruction_type |
158 |
LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille |
159 |
ON dossier_instruction_type.dossier_autorisation_type_detaille=dossier_autorisation_type_detaille.dossier_autorisation_type_detaille |
160 |
ORDER BY dossier_autorisation_type_detaille.code"; |
161 |
} |
162 |
|
163 |
/** |
164 |
* |
165 |
* @return string |
166 |
*/ |
167 |
function get_var_sql_forminc__sql_dossier_instruction_type_by_id() { |
168 |
return "SELECT |
169 |
dossier_instruction_type.dossier_instruction_type, |
170 |
CONCAT(dossier_autorisation_type_detaille.code,' - ',dossier_instruction_type.code,' - ',dossier_instruction_type.libelle) as lib |
171 |
FROM ".DB_PREFIXE."dossier_instruction_type |
172 |
LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille |
173 |
ON dossier_instruction_type.dossier_autorisation_type_detaille=dossier_autorisation_type_detaille.dossier_autorisation_type_detaille |
174 |
WHERE dossier_instruction_type IN (<idx>) |
175 |
ORDER BY dossier_autorisation_type_detaille.code"; |
176 |
} |
177 |
|
178 |
/** |
179 |
* SETTER_FORM - setSelect. |
180 |
* |
181 |
* @return void |
182 |
*/ |
183 |
function setSelect(&$form, $maj, &$dnu1 = null, $dnu2 = null) { |
184 |
parent::setSelect($form, $maj); |
185 |
|
186 |
// Initialisation du selecteur multiple om_collectivite |
187 |
$this->init_select( |
188 |
$form, |
189 |
$this->f->db, |
190 |
$maj, |
191 |
null, |
192 |
"om_collectivite", |
193 |
$this->get_var_sql_forminc__sql("om_collectivite"), |
194 |
$this->get_var_sql_forminc__sql("om_collectivite_by_id"), |
195 |
false, |
196 |
true |
197 |
); |
198 |
|
199 |
// Initialisation du selecteur multiple dossier_instruction_type |
200 |
$this->init_select( |
201 |
$form, |
202 |
$this->f->db, |
203 |
$maj, |
204 |
null, |
205 |
"dossier_instruction_type", |
206 |
$this->get_var_sql_forminc__sql("dossier_instruction_type"), |
207 |
$this->get_var_sql_forminc__sql("dossier_instruction_type_by_id"), |
208 |
false, |
209 |
true |
210 |
); |
211 |
} |
212 |
|
213 |
/** |
214 |
* TRIGGER - triggerajouterapres. |
215 |
* |
216 |
* - ... |
217 |
* - Ajoute autant de lien_dossier_instruction_type_evenement que de dossier_instruction_type |
218 |
* - ... |
219 |
* |
220 |
* @return boolean |
221 |
*/ |
222 |
function triggerajouterapres($id, &$dnu1 = null, $val = array(), $dnu2 = null) { |
223 |
$this->addToLog(__METHOD__."(): start", EXTRA_VERBOSE_MODE); |
224 |
parent::triggerajouterapres($id, $dnu1, $val); |
225 |
|
226 |
// Liaison NaN |
227 |
foreach ($this->liaisons_nan as $liaison_nan) { |
228 |
// Si le champ possède une valeur |
229 |
if (isset($val[$liaison_nan["field"]]) === true) { |
230 |
// Ajout des liaisons table Nan |
231 |
$nb_liens = $this->ajouter_liaisons_table_nan( |
232 |
$liaison_nan["table_l"], |
233 |
$liaison_nan["table_f"], |
234 |
$liaison_nan["field"], |
235 |
$val[$liaison_nan["field"]] |
236 |
); |
237 |
// Message de confirmation |
238 |
if ($nb_liens > 0) { |
239 |
if ($nb_liens == 1) { |
240 |
$this->addToMessage(sprintf(__("Création d'une nouvelle liaison réalisee avec succès."))); |
241 |
} else { |
242 |
$this->addToMessage(sprintf(__("Création de %s nouvelles liaisons réalisée avec succès."), $nb_liens)); |
243 |
} |
244 |
} |
245 |
} |
246 |
} |
247 |
|
248 |
return true; |
249 |
} |
250 |
|
251 |
/** |
252 |
* TRIGGER - triggermodifierapres. |
253 |
* |
254 |
* @return boolean |
255 |
*/ |
256 |
function triggermodifierapres($id, &$dnu1 = null, $val = array(), $dnu2 = null) { |
257 |
$this->addToLog(__METHOD__."(): start", EXTRA_VERBOSE_MODE); |
258 |
|
259 |
// Liaisons NaN |
260 |
foreach ($this->liaisons_nan as $liaison_nan) { |
261 |
// Suppression des liaisons table NaN |
262 |
$this->supprimer_liaisons_table_nan($liaison_nan["table_l"]); |
263 |
// Ajout des liaisons table Nan |
264 |
$nb_liens = $this->ajouter_liaisons_table_nan( |
265 |
$liaison_nan["table_l"], |
266 |
$liaison_nan["table_f"], |
267 |
$liaison_nan["field"], |
268 |
$val[$liaison_nan["field"]] |
269 |
); |
270 |
// Message de confirmation |
271 |
if ($nb_liens > 0) { |
272 |
$this->addToMessage(__("Mise à jour des liaisons realisée avec succès.")); |
273 |
} |
274 |
} |
275 |
} |
276 |
|
277 |
|
278 |
/** |
279 |
* Surcharge de la méthode rechercheTable pour éviter de court-circuiter le |
280 |
* générateur en devant surcharger la méthode cleSecondaire afin de supprimer |
281 |
* les éléments liés dans les tables NaN. |
282 |
* |
283 |
* @param [type] $dnu1 Instance BDD - À ne pas utiliser |
284 |
* @param [type] $table Table |
285 |
* @param [type] $field Champ |
286 |
* @param [type] $id Identifiant |
287 |
* @param [type] $dnu2 Marqueur de débogage - À ne pas utiliser |
288 |
* @param string $selection Condition de la requête |
289 |
* |
290 |
* @return [type] [description] |
291 |
*/ |
292 |
function rechercheTable(&$dnu1 = null, $table = "", $field = "", $id = null, $dnu2 = null, $selection = "") { |
293 |
// |
294 |
if (in_array($table, array_keys($this->liaisons_nan))) { |
295 |
// |
296 |
$this->addToLog(__METHOD__."(): On ne vérifie pas la table ".$table." car liaison nan.", EXTRA_VERBOSE_MODE); |
297 |
return; |
298 |
} |
299 |
// |
300 |
parent::rechercheTable($this->f->db, $table, $field, $id, null, $selection); |
301 |
} |
302 |
|
303 |
/** |
304 |
* TRIGGER - triggersupprimer. |
305 |
* |
306 |
* @return boolean |
307 |
*/ |
308 |
function triggersupprimer($id, &$dnu1 = null, $val = array(), $dnu2 = null) { |
309 |
$this->addToLog(__METHOD__."(): start", EXTRA_VERBOSE_MODE); |
310 |
parent::triggersupprimer($id, $dnu1, $val); |
311 |
// Liaisons NaN |
312 |
foreach ($this->liaisons_nan as $liaison_nan) { |
313 |
// Suppression des liaisons table NaN |
314 |
$this->supprimer_liaisons_table_nan($liaison_nan["table_l"]); |
315 |
} |
316 |
|
317 |
return true; |
318 |
} |
319 |
|
320 |
} |