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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 15853 - (show annotations)
Wed Oct 11 12:21:47 2023 UTC (15 months, 3 weeks ago) by cgarcin
Original Path: branches/10265/obj/enjeux.class.php
File size: 10555 byte(s)
fix : le type de champs rvb provoque des erreurs à la validation du formulaire

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 }

Properties

Name Value
svn:executable *

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26