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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 403 by nhaye, Thu Sep 20 15:25:57 2012 UTC revision 2690 by softime, Wed Jan 22 16:04:33 2014 UTC
# Line 1  Line 1 
1  <?php  <?php
2  //$Id$  /**
3  //gen openMairie le 10/02/2011 20:33   * Ce fichier contient la déclaration de la classe "evenement".
4  require_once ("../gen/obj/evenement.class.php");   *
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 {  class evenement extends evenement_gen {
17    
18      function evenement($id,&$db,$debug) {      function evenement($id, &$db, $debug) {
19          $this->constructeur($id,$db,$debug);          $this->constructeur($id, $db, $debug);
20      }// fin constructeur      }
21    
22      function setType(&$form,$maj) {      function setType(&$form, $maj) {
23          parent::setType($form,$maj);          //
24          if ($maj < 2) {          parent::setType($form, $maj);
25              //$form->setType('fin_instruction', 'select');          // MODE AJOUTER et MODE MODIFIER
26            if ($maj == 0 || $maj == 1) {
27                //
28              $form->setType('accord_tacite', 'select');              $form->setType('accord_tacite', 'select');
29              $form->setType('delai_notification', 'select');              $form->setType('delai_notification', 'select');
30              $form->setType('delai', 'select');              $form->setType('delai', 'select');
31              $form->setType('lettretype', 'select');              $form->setType('lettretype', 'select');
32              $form->setType('pour_consultation', 'checkbox');              $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      function setSelect(&$form, $maj,$db,$debug) {          // Mode modifier
45          parent::setSelect($form, $maj,$db,$debug);          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/".$db->phptype."/".$this->table.".form.inc.php")) {
75                include ("../sql/".$db->phptype."/".$this->table.".form.inc.php");
76            }
77            //
78          if($maj<2){          if($maj<2){
79              // lettretype              // lettretype
80              if(file_exists ("../sql/".$db->phptype."/".$this->table.".form.inc.php"))              
                 include ("../sql/".$db->phptype."/".$this->table.".form.inc.php");  
81              $contenu=array();              $contenu=array();
82              $res = $db->query($sql_om_lettretype);              $res = $db->query($sql_om_lettretype);
83              if (database::isError($res))              if (database::isError($res))
# Line 76  class evenement extends evenement_gen { Line 126  class evenement extends evenement_gen {
126                            '24 '._("mois")                            '24 '._("mois")
127                            );                            );
128          $form->setSelect("delai",$contenu);          $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_retour_ar']);
632                unset($this->valF['evenement_retour_signature']);
633            }
634        }
635    
636        /**
637         * Vérifie que l'événement $champ n'est pas déjà utilisé en événement
638         * 'evenement_retour_ar' et 'evenement_retour_signature'
639         * @param  string   $champ          Champ à tester
640         * @param  integer  $evenement_main Identifiant de l'événement en cours
641         */
642        function checkEvenementRetour($champ, $evenement_main) {
643    
644            // Si un l'évenement est renseigné
645            if (isset($this->valF[$champ])
646                && $this->valF[$champ] != "") {
647    
648                // Récupère l'événement
649                $evenement_retour = $this->valF[$champ];
650    
651                // Récupère le libelle de l'événement
652                $evenement_libelle = $this->getEvenementLibelle($evenement_retour);
653    
654                // Si l'événement est utilisé en tant que "evenement_retour_ar"
655                if ($this->checkEvenementIsUse($evenement_retour, 'evenement_retour_ar', $evenement_main)) {
656    
657                    // Message d'erreur
658                    $error_message = _("L'evenement \"%s\" est deja utilise en tant qu'evenement d'accuse de reception.");
659    
660                    // Le formulaire n'est pas validé
661                    $this->correct=false;
662                    $this->addToMessage(sprintf($error_message, $evenement_libelle));
663                }
664    
665                // Si l'événement est utilisé en tant que
666                // "evenement_retour_signature"
667                if ($this->checkEvenementIsUse($evenement_retour, 'evenement_retour_signature', $evenement_main)) {
668    
669                    // Message d'erreur
670                    $error_message = _("L'evenement \"%s\" est deja utilise en tant qu'evenement de retour de signature.");
671    
672                    // Le formulaire n'est pas validé
673                    $this->correct=false;
674                    $this->addToMessage(sprintf($error_message, $evenement_libelle));
675                }
676            }
677    
678        }
679    
680        /**
681         * Vérifie si l'événement est déjà utilisé dans un autre champ
682         * @param  integer $evenement Identifiant de l'événement
683         * @return boolean            
684         */
685        function checkEvenementIsUse($evenement_link, $champ, $evenement_main) {
686    
687            // Initialisation du retour de la fonction
688            $return = false;
689    
690            // Si les paramètres ne sont pas vide
691            if ($evenement_link != "" && $champ != "") {
692    
693                // Requête SQL
694                $sql = "SELECT evenement
695                        FROM ".DB_PREFIXE."evenement
696                        WHERE $champ = $evenement_link";
697    
698                // Si l'événement principal est déjà crée
699                if ($evenement_main != "") {
700                    // Il ne faut pas que l'événement principal soit pris en compte
701                    $sql .= " AND evenement != $evenement_main";
702                }
703    
704                $this->f->addToLog("checkEvenementIsUse() : db->query(\"".$sql."\")", VERBOSE_MODE);
705                $res = $this->db->query($sql);
706                $this->f->isDatabaseError($res);
707                
708                // Si il y a un résultat à la requête
709                if ($res->numrows() > 0) {
710    
711                    // Change la valeur de retour
712                    $return = true;
713                }
714            }
715    
716            // Retourne le résultat de la fonction
717            return $return;
718    
719        }
720    
721        /**
722         * Récupère le libellé de l'evénement passé en paramètre
723         * @param  integer $evenement Identifiant de l'événement
724         * @return string             Libellé de l'événement
725         */
726        function getEvenementLibelle($evenement) {
727    
728            // Initialisation du résultat
729            $libelle = '';
730    
731            // Si la condition n'est pas vide
732            if ($evenement != "") {
733    
734                // Requête SQL
735                $sql = "SELECT libelle
736                        FROM ".DB_PREFIXE."evenement
737                        WHERE evenement = $evenement";
738                $this->f->addToLog("getEvenementLibelle() : db->getOne(\"".$sql."\")", VERBOSE_MODE);
739                $libelle = $this->db->getOne($sql);
740                $this->f->isDatabaseError($libelle);
741            }
742    
743            // Retourne résultat
744            return $libelle;
745        }
746    
747        /**
748         * Copie les paramétres de l'événement principal vers l'évévenement lié
749         * @param  object   $db     [description]
750         * @param  mixed    $DEBUG  [description]
751         */
752        function copyParametersToEvenementLink($db, $DEBUG) {
753    
754            // Si un évenement retour de signature est renseigné
755            if (isset($this->valF['evenement_retour_signature'])
756                && $this->valF['evenement_retour_signature'] != "") {
757    
758                // Instanciation de la classe evenement
759                $evenement_retour_signature = new evenement($this->valF['evenement_retour_signature'], $db, $DEBUG);
760                $evenement_retour_signature->setParameter("maj",1);
761    
762                // Valeurs de l'enregistrement
763                $value_evenement_retour_signature = array();
764                foreach($evenement_retour_signature->champs as $key => $champ) {
765                    //
766                    $value_evenement_retour_signature[$champ] = $evenement_retour_signature->val[$key];
767                }
768    
769                // Valeurs à modifier
770                $value_evenement_retour_signature['delai'] = $this->valF['delai'];
771                $value_evenement_retour_signature['accord_tacite'] = $this->valF['accord_tacite'];
772                $value_evenement_retour_signature['delai_notification'] = $this->valF['delai_notification'];
773                $value_evenement_retour_signature['avis_decision'] = $this->valF['avis_decision'];
774                $value_evenement_retour_signature['restriction'] = $this->valF['restriction'];
775    
776                // Récupère le libelle de l'événement
777                $evenement_retour_signature_libelle = $this->getEvenementLibelle($value_evenement_retour_signature['evenement']);
778    
779                // Message de validation
780                $valid_message = _("Mise a jour de l'evenement lie \"%s\" realisee avec succes.");
781    
782                // Modifie l'événement lié pour qu'il ait les mêmes paramètres
783                // que l'événement principal
784                if ($evenement_retour_signature->modifier($value_evenement_retour_signature, $db, $DEBUG)) {
785                    
786                    //
787                    $this->addToMessage(sprintf($valid_message, $evenement_retour_signature_libelle));
788                }
789    
790            }
791    
792            // Si un évenement retour d'accusé de réception est renseigné
793            if (isset($this->valF['evenement_retour_ar'])
794                && $this->valF['evenement_retour_ar'] != "") {
795    
796                // Instanciation de la classe evenement
797                $evenement_retour_ar = new evenement($this->valF['evenement_retour_ar'], $db, $DEBUG);
798                $evenement_retour_ar->setParameter("maj",1);
799    
800                // Valeurs de l'enregistrment
801                $value_evenement_retour_ar = array();
802                foreach($evenement_retour_ar->champs as $key => $champ) {
803                    //
804                    $value_evenement_retour_ar[$champ] = $evenement_retour_ar->val[$key];
805                }
806    
807                // Valeurs à modifier
808                $value_evenement_retour_ar['delai'] = $this->valF['delai'];
809                $value_evenement_retour_ar['accord_tacite'] = $this->valF['accord_tacite'];
810                $value_evenement_retour_ar['delai_notification'] = $this->valF['delai_notification'];
811                $value_evenement_retour_ar['avis_decision'] = $this->valF['avis_decision'];
812                $value_evenement_retour_ar['restriction'] = $this->valF['restriction'];
813    
814                // Récupère le libelle de l'événement
815                $evenement_retour_ar_libelle = $this->getEvenementLibelle($value_evenement_retour_ar['evenement']);
816    
817                // Message de validation
818                $valid_message = _("Mise a jour de l'evenement lie \"%s\" realisee avec succes.");
819                // Modifie l'événement lié pour qu'il ait les mêmes paramètres
820                // que l'événement principal
821                if ($evenement_retour_ar->modifier($value_evenement_retour_ar, $db, $DEBUG)) {
822    
823                    //
824                    $this->addToMessage(sprintf($valid_message, $evenement_retour_ar_libelle));
825                }
826    
827            }
828        }
829    
830        function setOnchange(&$form, $maj) {
831            parent::setOnchange($form, $maj);
832    
833            //
834            $form->setOnchange('retour','retourOnchangeEvenement(this)');
835        }
836    
837        /**
838         * Fonction appelée lors de la copie d'un enregistrement
839         * @param  array    $valCopy        Liste des valeurs de l'enregistrement
840         * @param  string   $objsf          Liste des objets associés
841         * @param  mixed    $DEBUG          Type du DEBUG
842         * @return array                    Liste des valeurs après traitement
843         */
844        function copier($valCopy, $objsf, $DEBUG) {
845    
846            // Libellé du duplicata
847            $libelle = _("Copie de %s du %s");
848            $valCopy['libelle'] = sprintf($libelle, $valCopy['libelle'], date('d/m/Y H:i:s'));
849            // Tronque le libellé si celui est trop long
850            $valCopy['libelle'] = mb_substr($valCopy['libelle'], 0, 70, "UTF8");
851    
852            // Message à retourner
853            $valCopy['message'] = "";
854    
855            // S'il y a un événement retour_ar sur l'événement copié
856            if ($valCopy['evenement_retour_ar'] != '') {
857                // Copie l'événement retour_ar
858                $copie = $this->f->copier($valCopy['evenement_retour_ar'], 'evenement', $objsf);
859                $evenement_retour_ar = $copie['evenement_'.$valCopy['evenement_retour_ar']];
860                $valCopy['message'] .= $copie['message'];
861                $valCopy['message_type'] = $copie['message_type'];
862                $valCopy['evenement_retour_ar'] = $evenement_retour_ar;
863            }
864    
865            // S'il y a un événement evenement_retour_signature sur l'événement copié
866            if ($valCopy['evenement_retour_signature'] != '') {
867                // Copie l'événement retour_signature
868                $copie = $this->f->copier($valCopy['evenement_retour_signature'], 'evenement', $objsf);
869                $evenement_retour_signature = $copie['evenement_'.$valCopy['evenement_retour_signature']];
870                $valCopy['message'] .= $copie['message'];
871                $valCopy['message_type'] = $copie['message_type'];
872                $valCopy['evenement_retour_signature'] = $evenement_retour_signature;
873            }
874    
875            // Retourne les valeurs
876            return $valCopy;
877        }
878    
879    }
880    
 }// fin classe  
 ?>  
881    ?>

Legend:
Removed from v.403  
changed lines
  Added in v.2690

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26