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

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

Parent Directory Parent Directory | Revision Log Revision Log


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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26