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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 4669 - (hide annotations)
Thu Jun 30 08:24:22 2016 UTC (8 years, 7 months ago) by nmeucci
File size: 37683 byte(s)
Correction de la r4633 (Ticket #8378) → il manquait l'option 'affichage' dans la liste déroulante du type de l'événement.

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26