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

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

Parent Directory Parent Directory | Revision Log Revision Log


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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26