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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 15752 - (hide annotations)
Thu Sep 21 07:26:53 2023 UTC (16 months, 1 week ago) by gmalvolti
Original Path: branches/10265/obj/enjeux.class.php
File size: 10553 byte(s)
feat: ajout du menu de paramétrage et des sélect multiple pour collectivité et type de dossier d'instruction
1 gmalvolti 15752 <?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", "rvb");
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