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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 6565 - (hide annotations)
Fri Apr 21 16:14:15 2017 UTC (7 years, 9 months ago) by softime
File size: 37804 byte(s)
Merge de la version 4.0.0

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26