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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2316 - (show annotations)
Thu Sep 19 12:26:53 2013 UTC (11 years, 4 months ago) by nhaye
File size: 20596 byte(s)
Modification de l'ordre de tri des listes déroulantes dans l'application

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26