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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1544 - (hide annotations)
Thu Mar 21 07:46:23 2013 UTC (11 years, 10 months ago) by fmichon
File size: 18401 byte(s)
Amélioration de l'interface de saisie d'un événement

1 fraynaud 3 <?php
2 fmichon 1540 /**
3     *
4     *
5     * @package openfoncier
6     * @version SVN : $Id$
7     */
8 fraynaud 3
9 fmichon 1540 //
10     require_once "../gen/obj/evenement.class.php";
11    
12 fraynaud 3 class evenement extends evenement_gen {
13    
14 fmichon 1540 function evenement($id, &$db, $debug) {
15     $this->constructeur($id, $db, $debug);
16     }
17 fraynaud 3
18 fmichon 1540 function setType(&$form, $maj) {
19     //
20     parent::setType($form, $maj);
21     // MODE AJOUTER et MODE MODIFIER
22     if ($maj == 0 || $maj == 1) {
23     //
24 fraynaud 7 $form->setType('accord_tacite', 'select');
25     $form->setType('delai_notification', 'select');
26     $form->setType('delai', 'select');
27     $form->setType('lettretype', 'select');
28 nhaye 433 $form->setType('consultation', 'checkbox');
29 vpihour 1133 $form->setType('dossier_instruction_type','select_multiple');
30 fmichon 1503 $form->setType('type','select');
31 fmichon 1540 $form->setType('etats_depuis_lequel_l_evenement_est_disponible','select_multiple');
32 fraynaud 7 }
33 fmichon 1540 // MODE SUPPRIMER et MODE CONSULTER
34     if ($maj == 2 || $maj == 3) {
35     //
36 vpihour 1133 $form->setType('dossier_instruction_type','select_multiple_static');
37 fmichon 1540 $form->setType('etats_depuis_lequel_l_evenement_est_disponible','select_multiple_static');
38     }
39 fraynaud 7 }
40 atreal 312
41 fmichon 1540 function setSelect(&$form, $maj, $db, $debug) {
42     //
43     parent::setSelect($form, $maj, $db, $debug);
44     //
45     if(file_exists ("../sql/".$db->phptype."/".$this->table.".form.inc.php")) {
46     include ("../sql/".$db->phptype."/".$this->table.".form.inc.php");
47     }
48     //
49 atreal 312 if($maj<2){
50     // lettretype
51 vpihour 1133
52 atreal 312 $contenu=array();
53     $res = $db->query($sql_om_lettretype);
54     if (database::isError($res))
55     die($res->getMessage().$sql_om_lettretype);
56     else{
57     if ($debug == 1)
58     echo " la requete ".$sql_om_lettretype." est executee<br>";
59     $contenu[0][0]='';
60     $contenu[1][0]=_('choisir')."&nbsp;"._('lettretype');
61     $k=1;
62     while ($row=& $res->fetchRow()){
63     $contenu[0][$k]=$row[0];
64     $contenu[1][$k]=$row[1];
65     $k++;
66     }
67     $form->setSelect('lettretype',$contenu);
68     }// fin error db
69 fraynaud 7 }
70     // accord_tacite
71     $contenu=array();
72     $contenu[0]=array('Non','Oui');
73     $contenu[1]=array($this->lang('Non'),$this->lang('Oui'));
74     $form->setSelect("accord_tacite",$contenu);
75     // delai_notification
76     $contenu=array();
77     $contenu[0]=array('0','1');
78     $contenu[1]=array('sans','1 '.$this->lang("mois"));
79     $form->setSelect("delai_notification",$contenu);
80     // delai
81     $contenu=array();
82     $contenu[0]=array('0','1','2','3','4','5','6','7','8','9','10','11','12','18','24');
83     $contenu[1]=array('sans',
84     '1 '._("mois"),
85     '2 '._("mois"),
86     '3 '._("mois"),
87     '4 '._("mois"),
88     '5 '._("mois"),
89     '6 '._("mois"),
90     '7 '._("mois"),
91     '8 '._("mois"),
92     '9 '._("mois"),
93     '10 '._("mois"),
94     '11 '._("mois"),
95     '12 '._("mois"),
96     '18 '._("mois"),
97     '24 '._("mois")
98 atreal 312 );
99 fraynaud 7 $form->setSelect("delai",$contenu);
100 fmichon 1503
101     // type de l'événement
102     $contenu=array();
103     $contenu[0]=array('', 'arrete', 'incompletude', 'majoration_delai', );
104     $contenu[1]=array(_('choisir type'), _('arrete'), _('incompletude'), _('majoration_delai'),);
105     $form->setSelect("type",$contenu);
106    
107 vpihour 1133 // dossier_instruction_type
108     $this->init_select($form, $db, $maj, $debug, "dossier_instruction_type",
109 fmichon 1540 $sql_dossier_instruction_type, $sql_dossier_instruction_type_by_id, false, true);
110     // dossier_instruction_type
111     $this->init_select($form, $db, $maj, $debug, "etats_depuis_lequel_l_evenement_est_disponible",
112     $sql_etats_depuis_lequel_l_evenement_est_disponible, $sql_etats_depuis_lequel_l_evenement_est_disponible_by_id, false, true);
113 fraynaud 7 }
114 fmichon 1540
115 vpihour 1133 function setTaille(&$form, $maj) {
116 fmichon 1540 //
117 vpihour 1133 parent::setTaille($form, $maj);
118 fmichon 1540 //
119     $form->setTaille("dossier_instruction_type", 10);
120     $form->setTaille("etats_depuis_lequel_l_evenement_est_disponible", 10);
121 vpihour 1133 }
122 fmichon 1540
123 vpihour 1133 function setMax(&$form, $maj) {
124 fmichon 1540 //
125 vpihour 1133 parent::setMax($form, $maj);
126 fmichon 1540 //
127 vpihour 1133 $form->setMax("dossier_instruction_type", 5);
128 fmichon 1540 $form->setMax("etats_depuis_lequel_l_evenement_est_disponible", 5);
129 vpihour 1133 }
130 fraynaud 7
131 fmichon 1540 function setLib(&$form, $maj) {
132     //
133     parent::setLib($form, $maj);
134     //
135     $form->setLib("dossier_instruction_type", _("type(s) de DI concerne(s)"));
136     $form->setLib("etats_depuis_lequel_l_evenement_est_disponible", _("etat(s) source(s)"));
137     }
138    
139 fmichon 1543 function setLayout(&$form, $maj) {
140     //
141     parent::setLayout($form, $maj);
142     //
143     $form->setFieldset("evenement", "D", _("Evenement"));
144     $form->setFieldset("type", "F");
145     //
146     $form->setFieldset("etats_depuis_lequel_l_evenement_est_disponible", "D", _("Filtre de selection"));
147 fmichon 1544 $form->setBloc("etats_depuis_lequel_l_evenement_est_disponible", "D", _("Filtres pour la possibilité de sélection a l'ajout d'un evenement d'instruction"));
148     $form->setBloc("dossier_instruction_type", "F");
149     $form->setBloc("restriction", "DF", _("Filtre supplementaire à l'enregistrement de l'evenement d'instruction"));
150     $form->setFieldset("restriction", "F");
151 fmichon 1543 //
152     $form->setFieldset("action", "D", _("Action"));
153     $form->setBloc("action", "DF");
154     $form->setBloc("etat", "D", _("Parametres de l'action"));
155     $form->setBloc("avis_decision", "F");
156     $form->setFieldset("avis_decision", "F");
157     //
158     $form->setFieldset("lettretype", "D", _("Edition"));
159     $form->setFieldset("consultation", "F");
160     }
161    
162 vpihour 1133 //Ajoute autant de lien_dossier_instruction_type_evenement que de dossier_instruction_type
163     function triggerajouterapres($id,&$db,$val,$DEBUG) {
164 fmichon 1540 //
165 vpihour 1133 parent::triggerajouterapres($id,$db,$val,$DEBUG);
166 atreal 312
167 fmichon 1540 /**
168     * LIEN ETAT
169     */
170     // Récupération des données du select multiple
171     $etats_depuis_lequel_l_evenement_est_disponible = $this->getPostedValues('etats_depuis_lequel_l_evenement_est_disponible');
172     // Ne traite les données que s'il y en a et qu'elles sont correctes
173     if (is_array($etats_depuis_lequel_l_evenement_est_disponible)
174     && count($etats_depuis_lequel_l_evenement_est_disponible) > 0 ){
175     // Initialisation
176     $nb_liens_etat = 0;
177     // Boucle sur la liste des états sélectionnés
178     foreach ($etats_depuis_lequel_l_evenement_est_disponible as $value) {
179     // Test si la valeur par défaut est sélectionnée
180     if ($value != "") {
181     //
182     $donnees = array(
183     'evenement' => $this->valF['evenement'],
184     'etat' => $value
185     );
186     // On ajoute l'enregistrement
187     $this->ajouter_lien_etat_evenement($donnees);
188     // On compte le nombre d'éléments ajoutés
189     $nb_liens_etat++;
190     }
191     }
192     // Message de confirmation
193     if ($nb_liens_etat > 0) {
194     if ($nb_liens_etat == 1 ){
195     $this->addToMessage(_("Creation de ").$nb_liens_etat._(" nouvelle liaison realisee avec succes."));
196     } else{
197     $this->addToMessage(_("Creation de ").$nb_liens_etat._(" nouvelles liaisons realisees avec succes."));
198     }
199     }
200     }
201    
202     /**
203     * LIEN DI TYPE
204     */
205 vpihour 1133 //Récupère les données du select multiple
206     $dossier_instruction_type = $this->getPostedValues('dossier_instruction_type');
207     //Ne traite les données que s'il y en a et qu'elles sont correctes
208     if ( is_array($dossier_instruction_type) && count($dossier_instruction_type) > 0 ){
209    
210     $nb_tr = 0;
211 vpihour 1134 /* Va créer autant de lien_dossier_instruction_type_evenement
212     * que de dossier_instruction_type choisis */
213 vpihour 1133 foreach( $dossier_instruction_type as $value ){
214    
215     //Test si la valeur par défaut est sélectionnée
216     if ( $value != "" ) {
217    
218     //Données
219     $donnees = array(
220     'evenement' => $this->valF['evenement'],
221     'dossier_instruction_type' => $value
222     );
223    
224 vpihour 1134 //Ajoute un nouveau lien_dossier_instruction_type_evenement
225     $this->addLienDossierInstructionType($donnees, $db, $DEBUG);
226 vpihour 1133
227     $nb_tr++;
228     }
229     }
230    
231     //Message de confirmation de création de(s) lien_dossier_instruction_type_evenement(s).
232     if ( $nb_tr > 0 ){
233    
234     if ( $nb_tr == 1 ){
235    
236 vpihour 1173 $this->addToMessage(_("Creation de ").$nb_tr._(" nouvelle liaison
237 vpihour 1135 realisee avec succes."));
238 vpihour 1133 }
239     else{
240    
241 vpihour 1173 $this->addToMessage(_("Creation de ").$nb_tr._(" nouvelles liaisions
242 vpihour 1135 realisee avec succes."));
243 vpihour 1133 }
244     }
245     }
246    
247     }
248    
249     //Fonction générique permettant de récupérer les données d'un champ postées
250     function getPostedValues($champ) {
251    
252     // Récupération des demandeurs dans POST
253     if (isset($_POST[$champ]) ) {
254    
255     return $_POST[$champ];
256     }
257     }
258    
259     //Modification des liens
260     function triggerModifierApres($id, &$db, $val, $DEBUG){
261 fmichon 1540 //
262 vpihour 1133 parent::triggerModifierApres($id, $db, $val, $DEBUG);
263 fmichon 1540
264     /**
265     * LIEN ETAT
266     */
267     // Suppression de tous les liens de la table transition (table lien
268     // entre etat et evenement)
269     $this->supprimer_liens_etat_evenement($this->valF['evenement']);
270     // Récupération des données du select multiple
271     $etats_depuis_lequel_l_evenement_est_disponible = $this->getPostedValues('etats_depuis_lequel_l_evenement_est_disponible');
272     // Ne traite les données que s'il y en a et qu'elles sont correctes
273     if (is_array($etats_depuis_lequel_l_evenement_est_disponible)
274     && count($etats_depuis_lequel_l_evenement_est_disponible) > 0 ){
275     // Initialisation
276     $nb_liens_etat = 0;
277     // Boucle sur la liste des états sélectionnés
278     foreach ($etats_depuis_lequel_l_evenement_est_disponible as $value) {
279     // Test si la valeur par défaut est sélectionnée
280     if ($value != "") {
281     //
282     $donnees = array(
283     'evenement' => $this->valF['evenement'],
284     'etat' => $value
285     );
286     // On ajoute l'enregistrement
287     $this->ajouter_lien_etat_evenement($donnees);
288     // On compte le nombre d'éléments ajoutés
289     $nb_liens_etat++;
290     }
291     }
292     // Message de confirmation
293     if ($nb_liens_etat > 0) {
294     $this->addToMessage(_("Mise a jour des liaisons realisee avec succes."));
295     }
296     }
297    
298     /**
299     * LIEN DI TYPE
300     */
301 vpihour 1133 //Supprime toutes les liaisions liées à l'événement
302     $this->deleteAllLienDossierInstructionTypeEvenementEvenement($this->valF['evenement'], $db, $DEBUG);
303    
304     //Récupère les données du select multiple
305     $dossier_instruction_type = $this->getPostedValues('dossier_instruction_type');
306    
307     //Ne traite les données que s'il y en a et qu'elles sont correctes
308     if ( is_array($dossier_instruction_type) && count($dossier_instruction_type) > 0 ){
309    
310     $nb_tr = 0;
311     //Va créer autant de lien_dossier_instruction_type_evenement que de dossier_instruction_type choisis
312     foreach( $dossier_instruction_type as $value ){
313    
314     //Test si la valeur par défaut est sélectionnée
315     if ( $value != "" ) {
316    
317     //Données
318     $donnees = array(
319     'evenement' => $this->valF['evenement'],
320     'dossier_instruction_type' => $value
321     );
322    
323 vpihour 1134 //Ajoute un nouveau lien_dossier_instruction_type_evenement
324     $this->addLienDossierInstructionType($donnees, $db, $DEBUG);
325 vpihour 1133
326     $nb_tr++;
327     }
328     }
329    
330 vpihour 1134 //Message de confirmation de création de(s) lien_dossier_instruction_type_evenement.
331 vpihour 1133 if ( $nb_tr > 0 ){
332    
333 fmichon 1159 $this->addToMessage(_("Mise a jour des liaisons realisee avec succes."));
334 vpihour 1133 }
335     }
336     }
337    
338 fmichon 1540 /**
339     * Ajout d'un lien dans la table transition (table lien entre etat et
340     * evenement)
341     */
342     function ajouter_lien_etat_evenement($data) {
343     //
344     require_once '../obj/transition.class.php';
345     $lien_etat_evenement = new transition("]", $this->db, false);
346     // ???
347     $lien_etat_evenement->valF = "";
348     $val['transition'] = NULL;
349     //
350     if (is_array($data)) {
351     foreach ($data as $key => $value) {
352     $val[$key]=$value;
353     }
354     }
355     //
356     $lien_etat_evenement->ajouter($val, $this->db, false);
357     }
358    
359     /**
360     * Suppression de tous les liens de la table transition (table lien entre
361     * etat etevenement)
362     */
363     function supprimer_liens_etat_evenement($id) {
364     // Suppression de tous les enregistrements correspondants à l'id de
365     // l'événement
366     $sql = "DELETE
367     FROM ".DB_PREFIXE."transition
368     WHERE evenement=".$id;
369     $res = $this->db->query($sql);
370     $this->f->addToLog("supprimer_liens_etat_evenement(): db->query(\"".$sql."\");", VERBOSE_MODE);
371     $this->f->isDatabaseError();
372     }
373    
374 vpihour 1133 //Ajoute un nouveau lien_dossier_instruction_type_evenement
375     // $data array de données
376 vpihour 1134 function addLienDossierInstructionType($data, $db, $DEBUG){
377 vpihour 1133
378     require_once '../obj/lien_dossier_instruction_type_evenement.class.php';
379    
380     $lien_dossier_instruction_type_evenement = new lien_dossier_instruction_type_evenement("]",$db,$DEBUG);
381     $lien_dossier_instruction_type_evenement->valF = "";
382    
383     //Données
384     $vallien_dossier_instruction_type_evenement['lien_dossier_instruction_type_evenement']=NULL;
385    
386     if ( is_array($data) ){
387    
388     foreach ($data as $key => $value) {
389    
390     $vallien_dossier_instruction_type_evenement[$key]=$value;
391     }
392     }
393    
394     $lien_dossier_instruction_type_evenement->ajouter($vallien_dossier_instruction_type_evenement, $db, $DEBUG);
395     }
396    
397     //Supprime toutes les lien_dossier_instruction_type_evenement liées à un événement
398     function deleteAllLienDossierInstructionTypeEvenementEvenement($id, $db, $DEBUG){
399    
400     //Création de la requête
401     $sql = "DELETE FROM
402     ".DB_PREFIXE."lien_dossier_instruction_type_evenement
403     WHERE
404     evenement = $id";
405    
406     //Exécution de la requête
407     $res = $db->query($sql);
408    
409     //Ajout au log
410     $this->f->addToLog("deleteAllLienDossierInstructionTypeEvenementEvenement(): db->query(\"".$sql."\");", VERBOSE_MODE);
411     $this->f->isDatabaseError();
412     }
413    
414     function triggersupprimer($id, &$db, $val, $DEBUG){
415 fmichon 1540 // Suppression de tous les liens de la table transition (table lien
416     // entre etat et evenement)
417     $this->supprimer_liens_etat_evenement($id);
418 vpihour 1134 //Supprime toutes les lien_dossier_instruction_type_evenement liées à l'evenement
419 vpihour 1133 $this->deleteAllLienDossierInstructionTypeEvenementEvenement($id, $db, $DEBUG);
420     }
421    
422     /* Surcharge de la fonction cleSecondaire pour qu'elle ne vérifie pas le lien avec
423 fmichon 1540 * lien_dossier_instruction_type_evenement qui sera supprimé juste après ni avec la table transition*/
424 vpihour 1133 function cleSecondaire($id, &$db = NULL, $val = array(), $DEBUG = false) {
425    
426     // Verification de la cle secondaire : bible
427     $this->rechercheTable($db, "bible", "evenement", $id);
428     // Verification de la cle secondaire : demande_type
429     $this->rechercheTable($db, "demande_type", "evenement", $id);
430     // Verification de la cle secondaire : evenement
431     $this->rechercheTable($db, "evenement", "evenement_retour_ar", $id);
432     // Verification de la cle secondaire : evenement
433     $this->rechercheTable($db, "evenement", "evenement_suivant_tacite", $id);
434     // Verification de la cle secondaire : instruction
435     $this->rechercheTable($db, "instruction", "evenement", $id);
436     // Verification de la cle secondaire : lien_evenement_dossier_autorisation_type
437     $this->rechercheTable($db, "lien_evenement_dossier_autorisation_type", "evenement", $id);
438 fmichon 1540 //// Verification de la cle secondaire : transition
439     //$this->rechercheTable($db, "transition", "evenement", $id);
440 vpihour 1133 }
441    
442 vpihour 1134 //Affichage des dossier_instruction_type anciennement liés
443 vpihour 1133 function setVal(&$form, $maj, $validation, &$db) {
444    
445     parent::setVal($form, $maj, $validation, $db);
446    
447     if($maj == 2 && $validation == 1 ) {
448     $form->setVal("dossier_instruction_type",$this->val[count($this->val)-1]);
449     }
450     }
451    
452 fraynaud 3 }// fin classe
453     ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26