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

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26