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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2456 - (show annotations)
Tue Nov 12 17:57:50 2013 UTC (11 years, 2 months ago) by vpihour
File size: 34282 byte(s)
Lors du paramétrage d'un événement principal (événement avec événement suivant tacite ou retour AR paramétré) le délai, la décision tacite, l'avis, la restriction et le délai de notification sont maintenant récupérés par les événements liés (événement suivant tacite ou retour AR).

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 // Mode modifier
45 if ($maj == 1) {
46 // Champ non modifiable pour éviter un déréglement du paramètrage
47 // des événements
48 $form->setType('retour', 'checkboxhiddenstatic');
49 }
50
51 // Cache les champs en fonction de la valeur de 'retour'
52 if ($this->getVal("retour") == 't') {
53
54 // Cache le fieldset "Événements liés"
55 $form->setType('evenement_suivant_tacite', 'hidden');
56 $form->setType('evenement_retour_ar', 'hidden');
57 $form->setType('evenement_retour_signature', 'hidden');
58
59 // En mode Ajouter et Modifier
60 if ($maj < 2) {
61 $form->setType('restriction', 'hiddenstatic');
62 $form->setType('delai', 'hiddenstatic');
63 $form->setType('accord_tacite', 'hiddenstatic');
64 $form->setType('delai_notification', 'hiddenstatic');
65 $form->setType('avis_decision', 'hiddenstatic');
66 }
67 }
68 }
69
70 function setSelect(&$form, $maj, $db, $debug) {
71 //
72 parent::setSelect($form, $maj, $db, $debug);
73 //
74 if(file_exists ("../sql/".$db->phptype."/".$this->table.".form.inc.php")) {
75 include ("../sql/".$db->phptype."/".$this->table.".form.inc.php");
76 }
77 //
78 if($maj<2){
79 // lettretype
80
81 $contenu=array();
82 $res = $db->query($sql_om_lettretype);
83 if (database::isError($res))
84 die($res->getMessage().$sql_om_lettretype);
85 else{
86 if ($debug == 1)
87 echo " la requete ".$sql_om_lettretype." est executee<br>";
88 $contenu[0][0]='';
89 $contenu[1][0]=_('choisir')."&nbsp;"._('lettretype');
90 $k=1;
91 while ($row=& $res->fetchRow()){
92 $contenu[0][$k]=$row[0];
93 $contenu[1][$k]=$row[1];
94 $k++;
95 }
96 $form->setSelect('lettretype',$contenu);
97 }// fin error db
98 }
99 // accord_tacite
100 $contenu=array();
101 $contenu[0]=array('Non','Oui');
102 $contenu[1]=array($this->lang('Non'),$this->lang('Oui'));
103 $form->setSelect("accord_tacite",$contenu);
104 // delai_notification
105 $contenu=array();
106 $contenu[0]=array('0','1');
107 $contenu[1]=array('sans','1 '.$this->lang("mois"));
108 $form->setSelect("delai_notification",$contenu);
109 // delai
110 $contenu=array();
111 $contenu[0]=array('0','1','2','3','4','5','6','7','8','9','10','11','12','18','24');
112 $contenu[1]=array('sans',
113 '1 '._("mois"),
114 '2 '._("mois"),
115 '3 '._("mois"),
116 '4 '._("mois"),
117 '5 '._("mois"),
118 '6 '._("mois"),
119 '7 '._("mois"),
120 '8 '._("mois"),
121 '9 '._("mois"),
122 '10 '._("mois"),
123 '11 '._("mois"),
124 '12 '._("mois"),
125 '18 '._("mois"),
126 '24 '._("mois")
127 );
128 $form->setSelect("delai",$contenu);
129
130 // type de l'événement
131 $contenu=array();
132 $contenu[0]=array(
133 '',
134 'arrete',
135 'incompletude',
136 'majoration_delai',
137 'retour');
138 $contenu[1]=array(
139 _('choisir type'),
140 _('arrete'),
141 _('incompletude'),
142 _('majoration_delai'),
143 _('retour de pieces')
144 );
145 $form->setSelect("type",$contenu);
146
147 // dossier_instruction_type
148 $this->init_select($form, $db, $maj, $debug, "dossier_instruction_type",
149 $sql_dossier_instruction_type, $sql_dossier_instruction_type_by_id, false, true);
150 // dossier_instruction_type
151 $this->init_select($form, $db, $maj, $debug, "etats_depuis_lequel_l_evenement_est_disponible",
152 $sql_etats_depuis_lequel_l_evenement_est_disponible, $sql_etats_depuis_lequel_l_evenement_est_disponible_by_id, false, true);
153
154 // evenement_retour_ar filtre seulement les evenements dont le booléen
155 // retour est à true
156 $this->init_select($form, $db, $maj, $debug, "evenement_retour_ar",
157 $sql_evenement_retour_ar, $sql_evenement_retour_ar_by_id, false);
158
159 // evenement_retour_signature filtre seulement les evenements dont le
160 // booléen retour est à true
161 $this->init_select($form, $db, $maj, $debug, "evenement_retour_signature",
162 $sql_evenement_retour_signature, $sql_evenement_retour_signature_by_id, false);
163
164 // evenement_suivant_tacite filtre seulement les evenements dont le
165 // booléen retour est à false
166 $this->init_select($form, $db, $maj, $debug, "evenement_suivant_tacite",
167 $sql_evenement_suivant_tacite, $sql_evenement_suivant_tacite_by_id, false);
168
169 }
170
171 function setTaille(&$form, $maj) {
172 //
173 parent::setTaille($form, $maj);
174 //
175 $form->setTaille("dossier_instruction_type", 10);
176 $form->setTaille("etats_depuis_lequel_l_evenement_est_disponible", 10);
177 }
178
179 function setMax(&$form, $maj) {
180 //
181 parent::setMax($form, $maj);
182 //
183 $form->setMax("dossier_instruction_type", 5);
184 $form->setMax("etats_depuis_lequel_l_evenement_est_disponible", 5);
185 }
186
187 function setLib(&$form, $maj) {
188 //
189 parent::setLib($form, $maj);
190 //
191 $form->setLib("dossier_instruction_type", _("type(s) de DI concerne(s)"));
192 $form->setLib("etats_depuis_lequel_l_evenement_est_disponible", _("etat(s) source(s)"));
193 // Change le libellé de retour pour pas qu'il soit confondus avec le
194 // bouton
195 $form->setLib("retour", _("retour_evenement"));
196 // En ajout et en modification
197 if ($maj < 2) {
198 $form->setLib("retour", _("retour_evenement (parametrage non modifiable)"));
199 }
200
201 // Message d'aide à l'utilisateur concernant les événements liés
202 $message_help = _("Les champs suivants seront copies vers l'evenement choisi :");
203 $champs_copy = _('delai') . ", " . _('accord_tacite') . ", " . _('delai_notification') . ", " . _('avis_decision') . ", " . _('restriction');
204 $form->setLib("evenement_retour_ar", _('evenement_retour_ar') . "<br> (" . $message_help . " " . $champs_copy . ")");
205 $form->setLib("evenement_retour_signature", _('evenement_retour_signature') . "<br> (" . $message_help . " " . $champs_copy . ")");
206 }
207
208 function setLayout(&$form, $maj) {
209 //
210 parent::setLayout($form, $maj);
211 //
212 $form->setFieldset("evenement", "D", _("Evenement"));
213 $form->setFieldset("retour", "F");
214 //
215 $form->setFieldset("etats_depuis_lequel_l_evenement_est_disponible", "D", _("Filtre de selection"));
216 $form->setBloc("etats_depuis_lequel_l_evenement_est_disponible", "D", _("Filtres pour la possibilite de selection a l'ajout d'un evenement d'instruction"));
217 $form->setBloc("dossier_instruction_type", "F");
218 $form->setBloc("restriction", "DF", _("Filtre supplementaire a l'enregistrement de l'evenement d'instruction"));
219 $form->setFieldset("restriction", "F");
220 //
221 $form->setFieldset("action", "D", _("Action"));
222 $form->setBloc("action", "DF");
223 $form->setBloc("etat", "D", _("Parametres de l'action"));
224 $form->setBloc("autorite_competente", "F");
225 $form->setFieldset("autorite_competente", "F");
226 //
227 $form->setFieldset("lettretype", "D", _("Edition"));
228 $form->setFieldset("consultation", "F");
229 //
230 $form->setFieldset("evenement_suivant_tacite", "D", _("Evenements lies"), "evenements_lies");
231 $form->setFieldset("evenement_retour_signature", "F");
232 }
233
234 //Ajoute autant de lien_dossier_instruction_type_evenement que de dossier_instruction_type
235 function triggerajouterapres($id,&$db,$val,$DEBUG) {
236 //
237 parent::triggerajouterapres($id,$db,$val,$DEBUG);
238
239 /**
240 * LIEN ETAT
241 */
242 // Récupération des données du select multiple
243 $etats_depuis_lequel_l_evenement_est_disponible = $this->getEvenementLinks('etats_depuis_lequel_l_evenement_est_disponible',
244 'transition', 'etat');
245 // Ne traite les données que s'il y en a et qu'elles sont correctes
246 if (is_array($etats_depuis_lequel_l_evenement_est_disponible)
247 && count($etats_depuis_lequel_l_evenement_est_disponible) > 0 ){
248 // Initialisation
249 $nb_liens_etat = 0;
250 // Boucle sur la liste des états sélectionnés
251 foreach ($etats_depuis_lequel_l_evenement_est_disponible as $value) {
252 // Test si la valeur par défaut est sélectionnée
253 if ($value != "") {
254 //
255 $data = array(
256 'evenement' => $this->valF['evenement'],
257 'etat' => $value
258 );
259 // On ajoute l'enregistrement
260 $this->addEvenementLinks($data, 'transition');
261 // On compte le nombre d'éléments ajoutés
262 $nb_liens_etat++;
263 }
264 }
265 // Message de confirmation
266 if ($nb_liens_etat > 0) {
267 if ($nb_liens_etat == 1 ){
268 $this->addToMessage(_("Creation de ").$nb_liens_etat._(" nouvelle liaison realisee avec succes."));
269 } else{
270 $this->addToMessage(_("Creation de ").$nb_liens_etat._(" nouvelles liaisons realisees avec succes."));
271 }
272 }
273 }
274
275 /**
276 * LIEN DI TYPE
277 */
278 //Récupère les données du select multiple
279 $dossier_instruction_type = $this->getEvenementLinks('dossier_instruction_type',
280 'lien_dossier_instruction_type_evenement', 'dossier_instruction_type');
281 //Ne traite les données que s'il y en a et qu'elles sont correctes
282 if ( is_array($dossier_instruction_type) && count($dossier_instruction_type) > 0 ){
283
284 $nb_tr = 0;
285 /* Va créer autant de lien_dossier_instruction_type_evenement
286 * que de dossier_instruction_type choisis */
287 foreach( $dossier_instruction_type as $value ){
288
289 //Test si la valeur par défaut est sélectionnée
290 if ( $value != "" ) {
291
292 //Données
293 $data = array(
294 'evenement' => $this->valF['evenement'],
295 'dossier_instruction_type' => $value
296 );
297
298 //Ajoute un nouveau lien_dossier_instruction_type_evenement
299 $this->addEvenementLinks($data, 'lien_dossier_instruction_type_evenement');
300
301 $nb_tr++;
302 }
303 }
304
305 //Message de confirmation de création de(s) lien_dossier_instruction_type_evenement(s).
306 if ( $nb_tr > 0 ){
307
308 if ( $nb_tr == 1 ){
309
310 $this->addToMessage(_("Creation de ").$nb_tr._(" nouvelle liaison
311 realisee avec succes."));
312 }
313 else{
314
315 $this->addToMessage(_("Creation de ").$nb_tr._(" nouvelles liaisions
316 realisee avec succes."));
317 }
318 }
319 }
320
321 // Copie les paramètres vers l'événement lié
322 $this->copyParametersToEvenementLink($db, $DEBUG);
323
324 }
325
326 /**
327 * Récupère les liens de la variable POST ou de la base de données selon le
328 * contexte
329 *
330 * @param $champ Le champ POST à récupérer
331 * @return mixed Les liens
332 */
333 function getEvenementLinks($champ, $table, $champLie){
334
335 $liens = array();
336
337 // Si on est dans le contexte d'un formulaire
338 if ( isset($this->form) && !is_null($this)){
339 // On récupère les données post
340 if (isset($_POST[$champ]) ) {
341
342 return $_POST[$champ];
343 }
344 }
345 //Si on n'est pas dans le contexte d'un formulaire
346 else {
347
348 //Requête
349 $sql = "SELECT ".$champLie."
350 FROM ".DB_PREFIXE.$table."
351 WHERE evenement = ".$this->valF['evenement'];
352 $res = $this->db->query($sql);
353 $this->addToLog("getLiensEvenement(): db->query(\"".$sql."\");", VERBOSE_MODE);
354 if (database::isError($res, true)) {
355 // Appel de la methode de recuperation des erreurs
356 $this->erreur_db($res->getDebugInfo(), $res->getMessage(), 'evenement');
357 }
358
359 while ($row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
360
361 $liens[] = $row[$champLie];
362 }
363 }
364
365 return $liens;
366 }
367
368 //Modification des liens
369 function triggerModifierApres($id, &$db, $val, $DEBUG){
370 //
371 parent::triggerModifierApres($id, $db, $val, $DEBUG);
372
373 /**
374 * LIEN ETAT
375 */
376 // On récupère les liens selon le contexte : POST ou base de données
377 $etats_depuis_lequel_l_evenement_est_disponible = $this->getEvenementLinks('etats_depuis_lequel_l_evenement_est_disponible',
378 'transition', 'etat');
379
380 // Suppression de tous les liens de la table transition (table lien
381 // entre etat et evenement)
382 $this->deleteEvenementLinks($this->valF['evenement'], 'transition');
383 // Ne traite les données que s'il y en a et qu'elles sont correctes
384 if (is_array($etats_depuis_lequel_l_evenement_est_disponible)
385 && count($etats_depuis_lequel_l_evenement_est_disponible) > 0 ){
386 // Initialisation
387 $nb_liens_etat = 0;
388 // Boucle sur la liste des états sélectionnés
389 foreach ($etats_depuis_lequel_l_evenement_est_disponible as $value) {
390 // Test si la valeur par défaut est sélectionnée
391 if ($value != "") {
392 //
393 $data = array(
394 'evenement' => $this->valF['evenement'],
395 'etat' => $value
396 );
397 // On ajoute l'enregistrement
398 $this->addEvenementLinks($data, 'transition');
399 // On compte le nombre d'éléments ajoutés
400 $nb_liens_etat++;
401 }
402 }
403 // Message de confirmation
404 if ($nb_liens_etat > 0) {
405 $this->addToMessage(_("Mise a jour des liaisons realisee avec succes."));
406 }
407 }
408
409 /**
410 * LIEN DI TYPE
411 */
412 // On récupère les liens selon le contexte : POST ou base de données
413 $dossier_instruction_type = $this->getEvenementLinks('dossier_instruction_type',
414 'lien_dossier_instruction_type_evenement', 'dossier_instruction_type');
415 //Supprime toutes les liaisions liées à l'événement
416 $this->deleteEvenementLinks($this->valF['evenement'], 'lien_dossier_instruction_type_evenement');
417
418 //Ne traite les données que s'il y en a et qu'elles sont correctes
419 if ( is_array($dossier_instruction_type) && count($dossier_instruction_type) > 0 ){
420
421 $nb_tr = 0;
422 //Va créer autant de lien_dossier_instruction_type_evenement que de dossier_instruction_type choisis
423 foreach( $dossier_instruction_type as $value ){
424
425 //Test si la valeur par défaut est sélectionnée
426 if ( $value != "" ) {
427
428 //Données
429 $data = array(
430 'evenement' => $this->valF['evenement'],
431 'dossier_instruction_type' => $value
432 );
433
434 //Ajoute un nouveau lien_dossier_instruction_type_evenement
435 $this->addEvenementLinks($data, 'lien_dossier_instruction_type_evenement');
436
437 $nb_tr++;
438 }
439 }
440
441 //Message de confirmation de création de(s) lien_dossier_instruction_type_evenement.
442 if ( $nb_tr > 0 ){
443
444 $this->addToMessage(_("Mise a jour des liaisons realisee avec succes."));
445 }
446 }
447
448 // Copie les paramètres vers l'événement lié
449 $this->copyParametersToEvenementLink($db, $DEBUG);
450 }
451
452 /**
453 * Ajout d'un lien dans la table passée en paramètre
454 * @param $data Les données à ajouter
455 * @param $table La table à populer
456 */
457 function addEvenementLinks($data, $table){
458
459 //Fichier requis
460 require_once '../obj/'.$table.'.class.php';
461
462 $linksEvenement = new $table("]", $this->db, false);
463
464 $linksEvenement->valF = "";
465 $val[$table] = NULL;
466 //
467 if (is_array($data)) {
468 foreach ($data as $key => $value) {
469 $val[$key]=$value;
470 }
471 }
472 //
473 $linksEvenement->ajouter($val, $this->db, false);
474 }
475
476 /**
477 * Suppression des liens de la table passé en paramètre
478 * @param $id L'identifiant de l'événement
479 * @param $table La table à vider
480 */
481 function deleteEvenementLinks($id, $table){
482
483 // Suppression de tous les enregistrements correspondants à l'id de
484 // l'événement
485 $sql = "DELETE
486 FROM ".DB_PREFIXE.$table."
487 WHERE evenement = ".$id;
488 $res = $this->db->query($sql);
489 $this->addToLog("deleteLiensEvenement(): db->query(\"".$sql."\");", VERBOSE_MODE);
490 if (database::isError($res, true)) {
491 // Appel de la methode de recuperation des erreurs
492 $this->erreur_db($res->getDebugInfo(), $res->getMessage(), 'evenement');
493 }
494 }
495
496 function triggersupprimer($id, &$db, $val, $DEBUG){
497 // Suppression de tous les liens de la table transition (table lien
498 // entre etat et evenement)
499 $this->deleteEvenementLinks($this->getVal('evenement'), 'transition');
500 //Supprime toutes les lien_dossier_instruction_type_evenement liées à l'evenement
501 $this->deleteEvenementLinks($this->getVal('evenement'), 'lien_dossier_instruction_type_evenement');
502 }
503
504 /* Surcharge de la fonction cleSecondaire pour qu'elle ne vérifie pas le lien avec
505 * lien_dossier_instruction_type_evenement qui sera supprimé juste après ni avec la table transition*/
506 function cleSecondaire($id, &$db = NULL, $val = array(), $DEBUG = false) {
507
508 // Verification de la cle secondaire : bible
509 $this->rechercheTable($db, "bible", "evenement", $id);
510 // Verification de la cle secondaire : demande_type
511 $this->rechercheTable($db, "demande_type", "evenement", $id);
512 // Verification de la cle secondaire : evenement
513 $this->rechercheTable($db, "evenement", "evenement_retour_ar", $id);
514 // Verification de la cle secondaire : evenement
515 $this->rechercheTable($db, "evenement", "evenement_suivant_tacite", $id);
516 // Verification de la cle secondaire : instruction
517 $this->rechercheTable($db, "instruction", "evenement", $id);
518 //// Verification de la cle secondaire : transition
519 //$this->rechercheTable($db, "transition", "evenement", $id);
520 }
521
522 //Affichage des dossier_instruction_type anciennement liés
523 function setVal(&$form, $maj, $validation, &$db) {
524
525 parent::setVal($form, $maj, $validation, $db);
526
527 if($maj == 2 && $validation == 1 ) {
528 $form->setVal("dossier_instruction_type",$this->val[count($this->val)-1]);
529 }
530 }
531
532 function verifier($val = array(), &$db, $DEBUG){
533 parent::verifier($val, $db, $DEBUG);
534
535 //Test qu'une restriction est présente
536 if (isset($this->valF['restriction']) && $this->valF['restriction'] != ""){
537
538 $restriction = $this->valF['restriction'];
539
540 // Liste des opérateurs possible
541 $operateurs = array(">=", "<=", "+", "-");
542
543 // Supprime tous les espaces de la chaîne de caractère
544 $restriction = str_replace(' ', '', $restriction);
545
546 // Met des espace avant et après les opérateurs puis transforme la
547 // chaine en un tableau
548 $tabRestriction = str_replace($operateurs, " ", $restriction);
549 // Tableau des champ
550 $tabRestriction = explode(" ", $tabRestriction);
551 // Supprime les numériques du tableau
552 foreach ($tabRestriction as $key => $value) {
553 if (is_numeric($value)) {
554 unset($tabRestriction[$key]);
555 }
556 }
557
558 // Vérifie les champs utilisés pour la restriction
559 $check_field_exist = $this->f->check_field_exist($tabRestriction,
560 'instruction');
561 if ($check_field_exist !== true) {
562
563 // Liste des champs en erreur
564 $string_error_fields = implode(", ", $check_field_exist);
565
566 // Message d'erreur
567 $error_message = _("Le champ %s n'est pas utilisable pour le champ %s");
568 if (count($check_field_exist) > 1) {
569 $error_message = _("Les champs %s ne sont pas utilisable pour le champ %s");
570 }
571
572 // Affiche l'erreur
573 $this->correct=false;
574 $this->addToMessage(sprintf($error_message, $string_error_fields, _("restriction")));
575 }
576 }
577
578 // Identifiant de l'évenement en cours
579 $evenement_main = "";
580 // Si pas en mode "Ajouter"
581 if ($this->getParameter("maj") != 0) {
582 $evenement_main = $this->valF['evenement'];
583 }
584
585 //
586 $error_retour = false;
587
588 // Si le même événement retour est sélectionné pour le retour ar et le
589 // retour signature
590 if (isset($this->valF['evenement_retour_ar'])
591 && $this->valF['evenement_retour_ar'] != ""
592 && isset($this->valF['evenement_retour_signature'])
593 && $this->valF['evenement_retour_signature'] != "") {
594
595 //
596 if ($this->valF['evenement_retour_ar'] == $this->valF['evenement_retour_signature']) {
597
598 // Récupère l'événement
599 $evenement_retour = $this->valF['evenement_retour_ar'];
600
601 // Récupère le libelle de l'événement
602 $evenement_retour_libelle = $this->getEvenementLibelle($evenement_retour);
603
604 // Message d'erreur
605 $error_message = _("L'evenement \"%s\" ne peut pas etre utilise en tant qu'evenement d'accuse de reception et evenement de retour de signature.");
606
607 // Le formulaire n'est pas validé
608 $this->correct=false;
609 $this->addToMessage(sprintf($error_message, $evenement_retour_libelle));
610 $error_retour = true;
611 }
612 }
613
614 // Si l'erreur concernant la double utilisation d'une événement retour
615 // sur le même formulaire n'est pas activé
616 if ($error_retour === false) {
617
618 // Vérifie que l'événement "evenement_retour_signature" n'est pas
619 // utilisé en evenement retour
620 $this->checkEvenementRetour('evenement_retour_signature', $evenement_main);
621 // Vérifie que l'événement n'est pas déjà utilisé en tant que
622 // "evenement_retour_ar"
623 $this->checkEvenementRetour('evenement_retour_ar', $evenement_main);
624 }
625
626 // Si c'est un événement retour
627 if (isset($this->valF['retour'])
628 && $this->valF['retour'] === true) {
629
630 // Supprime les valeurs des champs
631 unset($this->valF['evenement_suivant_tacite']);
632 unset($this->valF['evenement_retour_ar']);
633 unset($this->valF['evenement_retour_signature']);
634 }
635 }
636
637 /**
638 * Vérifie que l'événement $champ n'est pas déjà utilisé en événement
639 * 'evenement_retour_ar' et 'evenement_retour_signature'
640 * @param string $champ Champ à tester
641 * @param integer $evenement_main Identifiant de l'événement en cours
642 */
643 function checkEvenementRetour($champ, $evenement_main) {
644
645 // Si un l'évenement est renseigné
646 if (isset($this->valF[$champ])
647 && $this->valF[$champ] != "") {
648
649 // Récupère l'événement
650 $evenement_retour = $this->valF[$champ];
651
652 // Récupère le libelle de l'événement
653 $evenement_libelle = $this->getEvenementLibelle($evenement_retour);
654
655 // Si l'événement est utilisé en tant que "evenement_retour_ar"
656 if ($this->checkEvenementIsUse($evenement_retour, 'evenement_retour_ar', $evenement_main)) {
657
658 // Message d'erreur
659 $error_message = _("L'evenement \"%s\" est deja utilise en tant qu'evenement d'accuse de reception.");
660
661 // Le formulaire n'est pas validé
662 $this->correct=false;
663 $this->addToMessage(sprintf($error_message, $evenement_libelle));
664 }
665
666 // Si l'événement est utilisé en tant que
667 // "evenement_retour_signature"
668 if ($this->checkEvenementIsUse($evenement_retour, 'evenement_retour_signature', $evenement_main)) {
669
670 // Message d'erreur
671 $error_message = _("L'evenement \"%s\" est deja utilise en tant qu'evenement de retour de signature.");
672
673 // Le formulaire n'est pas validé
674 $this->correct=false;
675 $this->addToMessage(sprintf($error_message, $evenement_libelle));
676 }
677 }
678
679 }
680
681 /**
682 * Vérifie si l'événement est déjà utilisé dans un autre champ
683 * @param integer $evenement Identifiant de l'événement
684 * @return boolean
685 */
686 function checkEvenementIsUse($evenement_link, $champ, $evenement_main) {
687
688 // Initialisation du retour de la fonction
689 $return = false;
690
691 // Si les paramètres ne sont pas vide
692 if ($evenement_link != "" && $champ != "") {
693
694 // Requête SQL
695 $sql = "SELECT evenement
696 FROM ".DB_PREFIXE."evenement
697 WHERE $champ = $evenement_link";
698
699 // Si l'événement principal est déjà crée
700 if ($evenement_main != "") {
701 // Il ne faut pas que l'événement principal soit pris en compte
702 $sql .= " AND evenement != $evenement_main";
703 }
704
705 $this->f->addToLog("checkEvenementIsUse() : db->query(\"".$sql."\")", VERBOSE_MODE);
706 $res = $this->db->query($sql);
707 $this->f->isDatabaseError($res);
708
709 // Si il y a un résultat à la requête
710 if ($res->numrows() > 0) {
711
712 // Change la valeur de retour
713 $return = true;
714 }
715 }
716
717 // Retourne le résultat de la fonction
718 return $return;
719
720 }
721
722 /**
723 * Récupère le libellé de l'evénement passé en paramètre
724 * @param integer $evenement Identifiant de l'événement
725 * @return string Libellé de l'événement
726 */
727 function getEvenementLibelle($evenement) {
728
729 // Initialisation du résultat
730 $libelle = '';
731
732 // Si la condition n'est pas vide
733 if ($evenement != "") {
734
735 // Requête SQL
736 $sql = "SELECT libelle
737 FROM ".DB_PREFIXE."evenement
738 WHERE evenement = $evenement";
739 $this->f->addToLog("getEvenementLibelle() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
740 $libelle = $this->db->getOne($sql);
741 $this->f->isDatabaseError($libelle);
742 }
743
744 // Retourne résultat
745 return $libelle;
746 }
747
748 /**
749 * Copie les paramétres de l'événement principal vers l'évévenement lié
750 * @param object $db [description]
751 * @param mixed $DEBUG [description]
752 */
753 function copyParametersToEvenementLink($db, $DEBUG) {
754
755 // Si un évenement retour de signature est renseigné
756 if (isset($this->valF['evenement_retour_signature'])
757 && $this->valF['evenement_retour_signature'] != "") {
758
759 // Instanciation de la classe evenement
760 $evenement_retour_signature = new evenement($this->valF['evenement_retour_signature'], $db, $DEBUG);
761 $evenement_retour_signature->setParameter("maj",1);
762
763 // Valeurs de l'enregistrement
764 $value_evenement_retour_signature = array();
765 foreach($evenement_retour_signature->champs as $key => $champ) {
766 //
767 $value_evenement_retour_signature[$champ] = $evenement_retour_signature->val[$key];
768 }
769
770 // Valeurs à modifier
771 $value_evenement_retour_signature['delai'] = $this->valF['delai'];
772 $value_evenement_retour_signature['accord_tacite'] = $this->valF['accord_tacite'];
773 $value_evenement_retour_signature['delai_notification'] = $this->valF['delai_notification'];
774 $value_evenement_retour_signature['avis_decision'] = $this->valF['avis_decision'];
775 $value_evenement_retour_signature['restriction'] = $this->valF['restriction'];
776
777 // Récupère le libelle de l'événement
778 $evenement_retour_signature_libelle = $this->getEvenementLibelle($value_evenement_retour_signature['evenement']);
779
780 // Message de validation
781 $valid_message = _("Mise a jour de l'evenement lie \"%s\" realisee avec succes.");
782
783 // Modifie l'événement lié pour qu'il ait les mêmes paramètres
784 // que l'événement principal
785 if ($evenement_retour_signature->modifier($value_evenement_retour_signature, $db, $DEBUG)) {
786
787 //
788 $this->addToMessage(sprintf($valid_message, $evenement_retour_signature_libelle));
789 }
790
791 }
792
793 // Si un évenement retour d'accusé de réception est renseigné
794 if (isset($this->valF['evenement_retour_ar'])
795 && $this->valF['evenement_retour_ar'] != "") {
796
797 // Instanciation de la classe evenement
798 $evenement_retour_ar = new evenement($this->valF['evenement_retour_ar'], $db, $DEBUG);
799 $evenement_retour_ar->setParameter("maj",1);
800
801 // Valeurs de l'enregistrment
802 $value_evenement_retour_ar = array();
803 foreach($evenement_retour_ar->champs as $key => $champ) {
804 //
805 $value_evenement_retour_ar[$champ] = $evenement_retour_ar->val[$key];
806 }
807
808 // Valeurs à modifier
809 $value_evenement_retour_ar['delai'] = $this->valF['delai'];
810 $value_evenement_retour_ar['accord_tacite'] = $this->valF['accord_tacite'];
811 $value_evenement_retour_ar['delai_notification'] = $this->valF['delai_notification'];
812 $value_evenement_retour_ar['avis_decision'] = $this->valF['avis_decision'];
813 $value_evenement_retour_ar['restriction'] = $this->valF['restriction'];
814
815 // Récupère le libelle de l'événement
816 $evenement_retour_ar_libelle = $this->getEvenementLibelle($value_evenement_retour_ar['evenement']);
817
818 // Message de validation
819 $valid_message = _("Mise a jour de l'evenement lie \"%s\" realisee avec succes.");
820 // Modifie l'événement lié pour qu'il ait les mêmes paramètres
821 // que l'événement principal
822 if ($evenement_retour_ar->modifier($value_evenement_retour_ar, $db, $DEBUG)) {
823
824 //
825 $this->addToMessage(sprintf($valid_message, $evenement_retour_ar_libelle));
826 }
827
828 }
829 }
830
831 function setOnchange(&$form, $maj) {
832 parent::setOnchange($form, $maj);
833
834 //
835 $form->setOnchange('retour','retourOnchangeEvenement(this)');
836 }
837
838 }
839
840 ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26