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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 9245 - (hide annotations)
Fri Apr 3 09:21:03 2020 UTC (4 years, 10 months ago) by softime
File size: 42675 byte(s)
* Merge de la branche d'intégration 4.13.0-develop dans le trunk

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

Properties

Name Value
svn:keywords "Id"

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26