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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 15835 - (hide annotations)
Thu Oct 5 12:46:12 2023 UTC (16 months ago) by softime
File size: 55123 byte(s)
chore(branch): fusion de la branche d'intégration 6.1.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 13137 * Liaison NaN
17     *
18     * Tableau contenant les objets qui représente les liaisons.
19     */
20     var $liaisons_nan = array(
21     "evenement_type_habilitation_tiers_consulte" => array(
22     "table_l" => "evenement_type_habilitation_tiers_consulte",
23     "table_f" => "type_habilitation_tiers_consulte",
24     "field" => "type_habilitation_tiers_consulte",
25     )
26     );
27    
28     /**
29 softime 3834 * Définition des actions disponibles sur la classe.
30     *
31     * @return void
32     */
33     public function init_class_actions() {
34    
35     parent::init_class_actions();
36    
37     // ACTION - 000 - ajouter
38     // Modifie la condition d'affichage du bouton ajouter
39     $this->class_actions[0]["condition"] = "is_addable_editable_and_deletable";
40    
41     // ACTION - 001 - modifier
42     // Modifie la condition et le libellé du bouton modifier
43     $this->class_actions[1]["condition"] = "is_addable_editable_and_deletable";
44    
45     // ACTION - 002 - supprimer
46     // Modifie la condition et le libellé du bouton supprimer
47     $this->class_actions[2]["condition"] = "is_addable_editable_and_deletable";
48     }
49    
50 softime 8989 /**
51     * Clause select pour la requête de sélection des données de l'enregistrement.
52     *
53     * @return array
54     */
55     function get_var_sql_forminc__champs() {
56     return array(
57     "evenement.evenement",
58     "evenement.libelle",
59     "evenement.type",
60 softime 10573 "evenement.commentaire",
61 softime 8989 "evenement.non_verrouillable",
62 softime 10573 "evenement.non_modifiable",
63     "evenement.non_supprimable",
64 softime 11585 "evenement.signataire_obligatoire",
65 softime 10808 "evenement.notification",
66 softime 11585 "evenement.notification_service",
67     "evenement.notification_tiers",
68 softime 13137 "array_to_string(array_agg(distinct(type_habilitation_tiers_consulte) ORDER BY type_habilitation_tiers_consulte), ';') as type_habilitation_tiers_consulte",
69 softime 11418 "evenement.envoi_cl_platau",
70 softime 8989 "evenement.retour",
71     "array_to_string(array_agg(distinct(transition.etat) ORDER BY transition.etat), ';') as etats_depuis_lequel_l_evenement_est_disponible",
72     "array_to_string(array_agg(distinct(dossier_instruction_type) ORDER BY dossier_instruction_type), ';') as dossier_instruction_type",
73     "evenement.restriction",
74     "evenement.action",
75     "evenement.etat",
76     "evenement.delai",
77     "evenement.accord_tacite",
78     "evenement.delai_notification",
79     "evenement.avis_decision",
80     "evenement.autorite_competente",
81 softime 10573 "evenement.pec_metier",
82 softime 8989 "evenement.lettretype",
83     "evenement.consultation",
84     "evenement.phase",
85     "evenement.finaliser_automatiquement",
86     "evenement.evenement_suivant_tacite",
87     "evenement.evenement_retour_ar",
88     "evenement.evenement_retour_signature",
89     );
90     }
91 softime 3834
92     /**
93 softime 8989 * Clause from pour la requête de sélection des données de l'enregistrement.
94     *
95     * @return string
96     */
97     function get_var_sql_forminc__tableSelect() {
98     return sprintf(
99     '%1$s%2$s
100 softime 13137 LEFT JOIN %1$s evenement_type_habilitation_tiers_consulte
101     ON evenement.evenement = evenement_type_habilitation_tiers_consulte.evenement
102 softime 8989 LEFT JOIN %1$slien_dossier_instruction_type_evenement
103     ON lien_dossier_instruction_type_evenement.evenement=evenement.evenement
104     LEFT JOIN %1$stransition
105     ON transition.evenement=evenement.evenement',
106     DB_PREFIXE,
107     $this->table
108     );
109     }
110    
111     /**
112 softime 13137 *
113     * @return string
114     */
115     function get_var_sql_forminc__sql_type_habilitation_tiers_consulte() {
116     return sprintf(
117     'SELECT
118     type_habilitation_tiers_consulte.type_habilitation_tiers_consulte,
119     type_habilitation_tiers_consulte.libelle
120     FROM
121     %stype_habilitation_tiers_consulte
122     WHERE
123     (
124     (
125     type_habilitation_tiers_consulte.om_validite_debut IS NULL
126     AND (
127     type_habilitation_tiers_consulte.om_validite_fin IS NULL
128     OR type_habilitation_tiers_consulte.om_validite_fin > CURRENT_DATE
129     )
130     )
131     OR (
132     type_habilitation_tiers_consulte.om_validite_debut <= CURRENT_DATE
133     AND (
134     type_habilitation_tiers_consulte.om_validite_fin IS NULL
135     OR type_habilitation_tiers_consulte.om_validite_fin > CURRENT_DATE
136     )
137     )
138     )
139     ORDER BY
140     type_habilitation_tiers_consulte.libelle ASC',
141     DB_PREFIXE
142     );
143     }
144    
145     /**
146     *
147     * @return string
148     */
149     function get_var_sql_forminc__sql_type_habilitation_tiers_consulte_by_id() {
150     return sprintf(
151     'SELECT
152     type_habilitation_tiers_consulte.type_habilitation_tiers_consulte,
153     type_habilitation_tiers_consulte.libelle
154     FROM
155     %stype_habilitation_tiers_consulte
156     WHERE
157     type_habilitation_tiers_consulte IN (<idx>)',
158     DB_PREFIXE
159     );
160     }
161    
162     /**
163 softime 8989 * Clause where pour la requête de sélection des données de l'enregistrement.
164     *
165     * @return string
166     */
167     function get_var_sql_forminc__selection() {
168     return " GROUP BY evenement.evenement, evenement.libelle ";
169     }
170    
171     /**
172 softime 3834 * CONDITION - is_addable_editable_and_deletable.
173     *
174     * Condition pour l'affichage de l'action d'ajout, de modification et de
175     * suppression.
176     *
177     * @return boolean
178     */
179     public function is_addable_editable_and_deletable() {
180    
181     // Si evenement est ouvert en sous-formulaire
182     if ($this->getParameter("retourformulaire") !== null) {
183    
184     //
185     return false;
186     }
187    
188     //
189     return true;
190     }
191    
192    
193 mbroquet 3730 function setType(&$form, $maj) {
194 softime 14542 $optionNotif = $this->f->is_option_enabled('option_module_acteur');
195 softime 14064 $form->setType('type_habilitation_tiers_consulte','hidden');
196 mbroquet 3730 //
197     parent::setType($form, $maj);
198     // MODE AJOUTER et MODE MODIFIER
199     if ($maj == 0 || $maj == 1) {
200     //
201     $form->setType('accord_tacite', 'select');
202     $form->setType('delai_notification', 'select');
203     $form->setType('delai', 'select');
204     $form->setType('lettretype', 'select');
205     $form->setType('consultation', 'checkbox');
206     $form->setType('dossier_instruction_type','select_multiple');
207     $form->setType('type','select');
208     $form->setType('etats_depuis_lequel_l_evenement_est_disponible','select_multiple');
209 softime 10808 $form->setType('notification','select');
210 softime 13137 $form->setType('notification_tiers','select');
211 softime 14064 if ($optionNotif === true) {
212     $form->setType('type_habilitation_tiers_consulte','select_multiple');
213     }
214 mbroquet 3730 }
215     // MODE SUPPRIMER et MODE CONSULTER
216     if ($maj == 2 || $maj == 3) {
217     //
218     $form->setType('dossier_instruction_type','select_multiple_static');
219     $form->setType('etats_depuis_lequel_l_evenement_est_disponible','select_multiple_static');
220 softime 10808 $form->setType('notification','selecthiddenstatic');
221 softime 14064 if ($optionNotif === true) {
222     $form->setType('type_habilitation_tiers_consulte','select_multiple_static');
223     }
224 softime 13137 $form->setType('notification_tiers','selectstatic');
225 mbroquet 3730 }
226    
227     // Mode modifier
228     if ($maj == 1) {
229     // Champ non modifiable pour éviter un déréglement du paramètrage
230     // des événements
231     $form->setType('retour', 'checkboxhiddenstatic');
232     }
233    
234     // Cache les champs en fonction de la valeur de 'retour'
235     if ($this->getVal("retour") == 't') {
236    
237     // Cache les champs "evenement_retour_ar" et
238     // "evenement_retour_signature"
239     $form->setType('evenement_retour_ar', 'hidden');
240     $form->setType('evenement_retour_signature', 'hidden');
241    
242     // En mode Ajouter et Modifier
243     if ($maj < 2) {
244     $form->setType('restriction', 'hiddenstatic');
245     $form->setType('delai', 'hiddenstatic');
246     $form->setType('accord_tacite', 'hiddenstatic');
247     $form->setType('delai_notification', 'hiddenstatic');
248     $form->setType('avis_decision', 'hiddenstatic');
249     }
250     }
251     }
252    
253 softime 8989 /**
254     *
255     * @return string
256     */
257     function get_var_sql_forminc__sql_dossier_instruction_type() {
258     return "SELECT
259     dossier_instruction_type.dossier_instruction_type,
260     CONCAT(dossier_autorisation_type_detaille.code,' - ',dossier_instruction_type.code,' - ',dossier_instruction_type.libelle) as lib
261     FROM ".DB_PREFIXE."dossier_instruction_type
262     LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille
263     ON dossier_instruction_type.dossier_autorisation_type_detaille=dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
264     ORDER BY dossier_autorisation_type_detaille.code";
265     }
266    
267     /**
268     *
269     * @return string
270     */
271     function get_var_sql_forminc__sql_dossier_instruction_type_by_id() {
272     return "SELECT
273     dossier_instruction_type.dossier_instruction_type,
274     CONCAT(dossier_autorisation_type_detaille.code,' - ',dossier_instruction_type.code,' - ',dossier_instruction_type.libelle) as lib
275     FROM ".DB_PREFIXE."dossier_instruction_type
276     LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille
277     ON dossier_instruction_type.dossier_autorisation_type_detaille=dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
278     WHERE dossier_instruction_type IN (<idx>)
279     ORDER BY dossier_autorisation_type_detaille.code";
280     }
281    
282     /**
283     *
284     * @return string
285     */
286     function get_var_sql_forminc__sql_etats_depuis_lequel_l_evenement_est_disponible() {
287     return "SELECT etat.etat, etat.libelle as lib FROM ".DB_PREFIXE."etat ORDER BY lib";
288     }
289    
290     /**
291     *
292     * @return string
293     */
294     function get_var_sql_forminc__sql_etats_depuis_lequel_l_evenement_est_disponible_by_id() {
295     return "SELECT etat.etat, etat.libelle as lib FROM ".DB_PREFIXE."etat WHERE etat.etat IN (<idx>) ORDER BY lib";
296     }
297    
298     /**
299     *
300     * @return string
301     */
302     function get_var_sql_forminc__sql_evenement_retour_ar() {
303     return "SELECT evenement.evenement, evenement.libelle FROM ".DB_PREFIXE."evenement WHERE evenement.retour = 't' ORDER BY evenement.libelle ASC";
304     }
305    
306     /**
307     *
308     * @return string
309     */
310     function get_var_sql_forminc__sql_evenement_retour_signature() {
311     return "SELECT evenement.evenement, evenement.libelle FROM ".DB_PREFIXE."evenement WHERE evenement.retour = 't' ORDER BY evenement.libelle ASC";
312     }
313    
314     /**
315     *
316     * @return string
317     */
318     function get_var_sql_forminc__sql_evenement_suivant_tacite() {
319     return "SELECT evenement.evenement, evenement.libelle FROM ".DB_PREFIXE."evenement WHERE evenement.retour = 'f' ORDER BY evenement.libelle ASC";
320     }
321    
322     /**
323     *
324     * @return string
325     */
326     function get_var_sql_forminc__sql_om_lettretype() {
327 softime 15835 return sprintf(
328     'SELECT
329     id,
330     (id||\' \'||libelle) AS lib
331     FROM
332     %1$som_lettretype
333     ORDER BY
334     lib',
335     DB_PREFIXE
336     );
337 softime 8989 }
338    
339     /**
340     * SETTER_FORM - setSelect.
341     *
342     * @return void
343     */
344     function setSelect(&$form, $maj, &$dnu1 = null, $dnu2 = null) {
345     parent::setSelect($form, $maj);
346 mbroquet 3730 //
347 softime 8989 if ($maj < 2) {
348 mbroquet 3730 // lettretype
349 softime 8989 $contenu = array();
350 softime 15835 $qres = $this->f->get_all_results_from_db_query(
351     $this->get_var_sql_forminc__sql("om_lettretype"),
352     array(
353     'origin' => __METHOD__
354     )
355     );
356    
357 softime 8989 $contenu[0][0]='';
358     $contenu[1][0]=_('choisir')."&nbsp;"._('lettretype');
359     $k = 1;
360 softime 15835 foreach($qres['result'] as $row) {
361     $contenu[0][$k] = $row['id'];
362     $contenu[1][$k] = $row['lib'];
363 softime 8989 $k++;
364     }
365     $form->setSelect('lettretype', $contenu);
366 mbroquet 3730 }
367     // accord_tacite
368     $contenu=array();
369     $contenu[0]=array('Non','Oui');
370     $contenu[1]=array(_('Non'), _('Oui'));
371     $form->setSelect("accord_tacite",$contenu);
372     // delai_notification
373     $contenu=array();
374     $contenu[0]=array('0','1');
375     $contenu[1]=array('sans','1 '._("mois"));
376     $form->setSelect("delai_notification",$contenu);
377     // delai
378     $contenu=array();
379     $contenu[0]=array('0','1','2','3','4','5','6','7','8','9','10','11','12','18','24');
380     $contenu[1]=array('sans',
381     '1 '._("mois"),
382     '2 '._("mois"),
383     '3 '._("mois"),
384     '4 '._("mois"),
385     '5 '._("mois"),
386     '6 '._("mois"),
387     '7 '._("mois"),
388     '8 '._("mois"),
389     '9 '._("mois"),
390     '10 '._("mois"),
391     '11 '._("mois"),
392     '12 '._("mois"),
393     '18 '._("mois"),
394     '24 '._("mois")
395     );
396     $form->setSelect("delai",$contenu);
397    
398 softime 14064 // choix possible de notification_tiers
399     $contenu = array(
400     0 => array(
401     '',
402     'notification_manuelle'
403     ),
404     1 => array(
405     __("Aucune"),
406     __("Notification manuelle")
407     )
408 softime 13137 );
409 softime 14064 // Si l'option de notificaton automatique des tiers est active ajout d'un choix sup
410 softime 14542 if ($this->f->is_option_enabled('option_module_acteur') === true) {
411 softime 14064 $contenu[0][] = 'notification_automatique';
412     $contenu[1][] = __("Notification automatique");
413     }
414 softime 13137 $form->setSelect("notification_tiers", $contenu);
415    
416 mbroquet 3730 // type de l'événement
417     $contenu=array();
418     $contenu[0]=array(
419     '',
420     'arrete',
421     'incompletude',
422     'majoration_delai',
423     'retour',
424     'changement_decision',
425 nmeucci 4669 'affichage',
426 softime 6565 'ait',
427     'annul_contradictoire'
428 mbroquet 3730 );
429     $contenu[1]=array(
430     _('choisir type'),
431     _('arrete'),
432     _('incompletude'),
433     _('majoration_delai'),
434     _('retour de pieces'),
435     _('changement de decision'),
436 nmeucci 4669 _('affichage'),
437 softime 6565 _('arrêté interruptif des travaux'),
438     _('annulation de contradictoire'),
439 mbroquet 3730 );
440     $form->setSelect("type",$contenu);
441     // dossier_instruction_type
442 softime 8989 $this->init_select(
443     $form,
444     $this->f->db,
445     $maj,
446     null,
447     "dossier_instruction_type",
448     $this->get_var_sql_forminc__sql("dossier_instruction_type"),
449     $this->get_var_sql_forminc__sql("dossier_instruction_type_by_id"),
450     false,
451     true
452     );
453     // etats_depuis_lequel_l_evenement_est_disponible
454     $this->init_select(
455     $form,
456     $this->f->db,
457     $maj,
458     null,
459     "etats_depuis_lequel_l_evenement_est_disponible",
460     $this->get_var_sql_forminc__sql("etats_depuis_lequel_l_evenement_est_disponible"),
461     $this->get_var_sql_forminc__sql("etats_depuis_lequel_l_evenement_est_disponible_by_id"),
462     false,
463     true
464     );
465     // evenement_retour_ar
466     $this->init_select(
467     $form,
468     $this->f->db,
469     $maj,
470     null,
471     "evenement_retour_ar",
472     $this->get_var_sql_forminc__sql("evenement_retour_ar"),
473     $this->get_var_sql_forminc__sql("evenement_retour_ar_by_id"),
474     false,
475     false,
476     __("l'événement lors de la notification du pétitionnaire")
477     );
478 softime 10808
479 softime 13137
480     // Initialisation du selecteur multiple type_habilitation_tiers_consulte
481     $this->init_select(
482     $form,
483     $this->f->db,
484     $maj,
485     null,
486     "type_habilitation_tiers_consulte",
487     $this->get_var_sql_forminc__sql("type_habilitation_tiers_consulte"),
488     $this->get_var_sql_forminc__sql("type_habilitation_tiers_consulte_by_id"),
489     false,
490     true
491     );
492    
493 softime 10808 // notification
494     $contenu = array();
495     $contenu[0] = array(
496     '',
497     'notification_automatique',
498     'notification_manuelle',
499     'notification_auto_signature_requise',
500 softime 10869 'notification_manuelle_signature_requise',
501     'notification_manuelle_annexe',
502     'notification_manuelle_annexe_signature_requise'
503 softime 10808 );
504     $contenu[1] = array(
505     __('Pas de notification'),
506     __('Notification automatique'),
507     __('Notification manuelle'),
508     __('Notification automatique avec signature requise'),
509 softime 10869 __('Notification manuelle avec signature requise'),
510     __('Notification manuelle avec annexe'),
511     __('Notification manuelle avec annexe et avec signature requise')
512 softime 10808 );
513     $form->setSelect('notification', $contenu);
514 mbroquet 3730 }
515    
516     function setTaille(&$form, $maj) {
517     //
518     parent::setTaille($form, $maj);
519     //
520     $form->setTaille("dossier_instruction_type", 10);
521     $form->setTaille("etats_depuis_lequel_l_evenement_est_disponible", 10);
522     }
523    
524     function setMax(&$form, $maj) {
525     //
526     parent::setMax($form, $maj);
527     //
528     $form->setMax("dossier_instruction_type", 5);
529     $form->setMax("etats_depuis_lequel_l_evenement_est_disponible", 5);
530     }
531    
532     function setLib(&$form, $maj) {
533     //
534     parent::setLib($form, $maj);
535     //
536     $form->setLib("dossier_instruction_type", _("type(s) de DI concerne(s)"));
537     $form->setLib("etats_depuis_lequel_l_evenement_est_disponible", _("etat(s) source(s)"));
538 softime 11585 $form->setLib('notification_service', __('Notification des services'));
539     $form->setLib('notification_tiers', __('Notification des tiers'));
540 softime 13137 $form->setLib("type_habilitation_tiers_consulte", __("type(s) d'habilitation des tiers consultés à notifier"));
541 mbroquet 3730 // Change le libellé de retour pour pas qu'il soit confondus avec le
542     // bouton
543     $form->setLib("retour", _("retour_evenement"));
544     // En ajout et en modification
545     if ($maj < 2) {
546     $form->setLib("retour", _("retour_evenement (parametrage non modifiable)"));
547     }
548    
549     // Message d'aide à l'utilisateur concernant les événements liés
550     $message_help = _("Les champs suivants seront copies vers l'evenement choisi :");
551     $champs_copy = _('delai') . ", " . _('accord_tacite') . ", " . _('delai_notification') . ", " . _('avis_decision') . ", " . _('restriction');
552 softime 8989 $form->setLib("evenement_retour_ar", __('Événement lors de la notification du correspondant') . "<br> (" . $message_help . " " . $champs_copy . ")");
553 mbroquet 3730 $form->setLib("evenement_retour_signature", _('evenement_retour_signature') . "<br> (" . $message_help . " " . $champs_copy . ")");
554 softime 10573
555     $form->setLib("commentaire", __("Commentaire"));
556     $form->setLib("non_modifiable", __("Non modifiable"));
557     $form->setLib("non_supprimable", __("Non supprimable"));
558 softime 11585 $form->setLib("signataire_obligatoire", __("Signataire obligatoire"));
559 mbroquet 3730 }
560    
561     function setLayout(&$form, $maj) {
562     //
563     parent::setLayout($form, $maj);
564     //
565     $form->setFieldset("evenement", "D", _("Evenement"));
566     $form->setFieldset("retour", "F");
567     //
568     $form->setFieldset("etats_depuis_lequel_l_evenement_est_disponible", "D", _("Filtre de selection"));
569     $form->setBloc("etats_depuis_lequel_l_evenement_est_disponible", "D", _("Filtres pour la possibilite de selection a l'ajout d'un evenement d'instruction"));
570     $form->setBloc("dossier_instruction_type", "F");
571     $form->setBloc("restriction", "DF", _("Filtre supplementaire a l'enregistrement de l'evenement d'instruction"));
572     $form->setFieldset("restriction", "F");
573     //
574     $form->setFieldset("action", "D", _("Action"));
575     $form->setBloc("action", "DF");
576     $form->setBloc("etat", "D", _("Parametres de l'action"));
577 softime 10573 $form->setBloc("pec_metier", "F");
578     $form->setFieldset("pec_metier", "F");
579 mbroquet 3730 //
580     $form->setFieldset("lettretype", "D", _("Edition"));
581 softime 7996 $form->setFieldset("finaliser_automatiquement", "F");
582 mbroquet 3730 //
583     $form->setFieldset("evenement_suivant_tacite", "D", _("Evenements lies"), "evenements_lies");
584     $form->setFieldset("evenement_retour_signature", "F");
585     }
586    
587 softime 13137 function set_form_specificity(&$form, $maj) {
588     parent::set_form_specificity($form, $maj);
589 softime 15650 // Pour les notification non automatique ajoute une classe permettant de masquer le champs
590     // type_habilitation_tiers_consulte.
591     if ($this->getParameter("validation") > 0) {
592     $postvar = $this->getParameter("postvar");
593     $notification_tiers = isset($postvar['notification_tiers']) ? $postvar['notification_tiers'] : null;
594     } elseif (isset($this->val['notification_tiers'])) {
595     $notification_tiers = $this->val['notification_tiers'];
596     } else {
597     $notification_tiers = $this->getVal('notification_tiers');
598     }
599     if (empty($notification_tiers) || $notification_tiers !== 'notification_automatique') {
600     $form->classes_specifiques['type_habilitation_tiers_consulte'] = 'ui-tabs-hide';
601     }
602 softime 13137 }
603    
604 softime 8989 /**
605     * TRIGGER - triggerajouterapres.
606     *
607     * - ...
608     * - Ajoute autant de lien_dossier_instruction_type_evenement que de dossier_instruction_type
609     * - ...
610     *
611     * @return boolean
612     */
613     function triggerajouterapres($id, &$dnu1 = null, $val = array(), $dnu2 = null) {
614     $this->addToLog(__METHOD__."(): start", EXTRA_VERBOSE_MODE);
615     parent::triggerajouterapres($id, $dnu1, $val);
616 mbroquet 3730
617     /**
618     * LIEN ETAT
619     */
620     // Récupération des données du select multiple
621 softime 8989 $etats_depuis_lequel_l_evenement_est_disponible = $this->getEvenementLinks(
622     'etats_depuis_lequel_l_evenement_est_disponible',
623     'transition',
624     'etat'
625     );
626 mbroquet 3730 // Ne traite les données que s'il y en a et qu'elles sont correctes
627     if (is_array($etats_depuis_lequel_l_evenement_est_disponible)
628 softime 8989 && count($etats_depuis_lequel_l_evenement_est_disponible) > 0) {
629 mbroquet 3730 // Initialisation
630     $nb_liens_etat = 0;
631     // Boucle sur la liste des états sélectionnés
632     foreach ($etats_depuis_lequel_l_evenement_est_disponible as $value) {
633     // Test si la valeur par défaut est sélectionnée
634     if ($value != "") {
635 softime 8989 //
636 mbroquet 3730 $data = array(
637     'evenement' => $this->valF['evenement'],
638     'etat' => $value
639     );
640     // On ajoute l'enregistrement
641     $this->addEvenementLinks($data, 'transition');
642     // On compte le nombre d'éléments ajoutés
643     $nb_liens_etat++;
644     }
645     }
646     // Message de confirmation
647     if ($nb_liens_etat > 0) {
648 softime 8989 if ($nb_liens_etat == 1) {
649 mbroquet 3730 $this->addToMessage(_("Creation de ").$nb_liens_etat._(" nouvelle liaison realisee avec succes."));
650 softime 8989 } else {
651 mbroquet 3730 $this->addToMessage(_("Creation de ").$nb_liens_etat._(" nouvelles liaisons realisees avec succes."));
652     }
653     }
654     }
655    
656     /**
657     * LIEN DI TYPE
658     */
659 softime 8989 // Récupère les données du select multiple
660     $dossier_instruction_type = $this->getEvenementLinks(
661     'dossier_instruction_type',
662     'lien_dossier_instruction_type_evenement',
663     'dossier_instruction_type'
664     );
665     // Ne traite les données que s'il y en a et qu'elles sont correctes
666     if (is_array($dossier_instruction_type) && count($dossier_instruction_type) > 0) {
667     $nb_tr = 0;
668     // Va créer autant de lien_dossier_instruction_type_evenement
669     // que de dossier_instruction_type choisis
670     foreach ($dossier_instruction_type as $value) {
671     // Test si la valeur par défaut est sélectionnée
672     if ($value != "") {
673 mbroquet 3730 //Données
674     $data = array(
675     'evenement' => $this->valF['evenement'],
676     'dossier_instruction_type' => $value
677     );
678 softime 8989 // Ajoute un nouveau lien_dossier_instruction_type_evenement
679 mbroquet 3730 $this->addEvenementLinks($data, 'lien_dossier_instruction_type_evenement');
680     $nb_tr++;
681     }
682     }
683 softime 8989 // Message de confirmation de création de(s) lien_dossier_instruction_type_evenement(s).
684     if ($nb_tr > 0) {
685     if ($nb_tr == 1) {
686 mbroquet 3730 $this->addToMessage(_("Creation de ").$nb_tr._(" nouvelle liaison
687     realisee avec succes."));
688 softime 8989 } else {
689 mbroquet 3730 $this->addToMessage(_("Creation de ").$nb_tr._(" nouvelles liaisions
690     realisee avec succes."));
691     }
692     }
693     }
694 softime 13137
695     // Liaison NaN
696     foreach ($this->liaisons_nan as $liaison_nan) {
697     // Si le champ possède une valeur
698     if (isset($val[$liaison_nan["field"]]) === true) {
699     // Ajout des liaisons table Nan
700     $nb_liens = $this->ajouter_liaisons_table_nan(
701     $liaison_nan["table_l"],
702     $liaison_nan["table_f"],
703     $liaison_nan["field"],
704     $val[$liaison_nan["field"]]
705     );
706    
707     // Message de confirmation
708     if ($nb_liens > 0) {
709     if ($nb_liens == 1) {
710     $this->addToMessage(sprintf(
711     __("Création d'une nouvelle liaison réalisee avec succès."))
712     );
713     } else {
714     $this->addToMessage(sprintf(
715     __("Création de %s nouvelles liaisons réalisée avec succès."),
716     $nb_liens)
717     );
718     }
719     }
720     }
721     }
722    
723 mbroquet 3730 // Copie les paramètres vers l'événement lié
724 softime 8989 $this->copyParametersToEvenementLink();
725 mbroquet 3730 }
726    
727     /**
728     * Récupère les liens de la variable POST ou de la base de données selon le
729     * contexte
730     *
731     * @param $champ Le champ POST à récupérer
732     * @return mixed Les liens
733     */
734     function getEvenementLinks($champ, $table, $champLie){
735    
736     $liens = array();
737    
738     // Si on est dans le contexte d'un formulaire
739     if ( isset($this->form) && !is_null($this)){
740     // On récupère les données post
741     if ($this->f->get_submitted_post_value($champ) !== null) {
742    
743     return $this->f->get_submitted_post_value($champ);
744     }
745     }
746     //Si on n'est pas dans le contexte d'un formulaire
747     else {
748    
749 softime 15835 $qres = $this->f->get_all_results_from_db_query(
750     sprintf(
751     'SELECT
752     %2$s
753     FROM
754     %1$s%3$s
755     WHERE
756     evenement = %4$d',
757     DB_PREFIXE,
758     $this->f->db->escapeSimple($champLie),
759     $this->f->db->escapeSimple($table),
760     intval($this->valF['evenement'])
761     ),
762     array(
763     'origin' => __METHOD__,
764     'force_result' => true
765     )
766 softime 12847 );
767 softime 15835 if ($qres['code'] !== 'OK') {
768 mbroquet 3730 // Appel de la methode de recuperation des erreurs
769 softime 15835 $this->erreur_db($qres['message'], $qres['message'], 'evenement');
770 mbroquet 3730 }
771    
772 softime 15835 foreach($qres['result'] as $row) {
773 mbroquet 3730
774     $liens[] = $row[$champLie];
775     }
776     }
777    
778     return $liens;
779     }
780    
781 softime 8989 /**
782     * TRIGGER - triggermodifierapres.
783     *
784     * @return boolean
785     */
786     function triggermodifierapres($id, &$dnu1 = null, $val = array(), $dnu2 = null) {
787     $this->addToLog(__METHOD__."(): start", EXTRA_VERBOSE_MODE);
788     parent::triggermodifierapres($id, $dnu1, $val);
789    
790 mbroquet 3730 /**
791     * LIEN ETAT
792     */
793     // On récupère les liens selon le contexte : POST ou base de données
794 softime 8989 $etats_depuis_lequel_l_evenement_est_disponible = $this->getEvenementLinks(
795     'etats_depuis_lequel_l_evenement_est_disponible',
796     'transition',
797     'etat'
798     );
799 mbroquet 3730
800     // Suppression de tous les liens de la table transition (table lien
801     // entre etat et evenement)
802     $this->deleteEvenementLinks($this->valF['evenement'], 'transition');
803     // Ne traite les données que s'il y en a et qu'elles sont correctes
804     if (is_array($etats_depuis_lequel_l_evenement_est_disponible)
805 softime 8989 && count($etats_depuis_lequel_l_evenement_est_disponible) > 0) {
806 mbroquet 3730 // Initialisation
807     $nb_liens_etat = 0;
808     // Boucle sur la liste des états sélectionnés
809     foreach ($etats_depuis_lequel_l_evenement_est_disponible as $value) {
810     // Test si la valeur par défaut est sélectionnée
811     if ($value != "") {
812 softime 8989 //
813 mbroquet 3730 $data = array(
814     'evenement' => $this->valF['evenement'],
815     'etat' => $value
816     );
817     // On ajoute l'enregistrement
818     $this->addEvenementLinks($data, 'transition');
819     // On compte le nombre d'éléments ajoutés
820     $nb_liens_etat++;
821     }
822     }
823     // Message de confirmation
824     if ($nb_liens_etat > 0) {
825     $this->addToMessage(_("Mise a jour des liaisons realisee avec succes."));
826     }
827     }
828    
829     /**
830     * LIEN DI TYPE
831     */
832     // On récupère les liens selon le contexte : POST ou base de données
833 softime 8989 $dossier_instruction_type = $this->getEvenementLinks(
834     'dossier_instruction_type',
835     'lien_dossier_instruction_type_evenement',
836     'dossier_instruction_type'
837     );
838     // Supprime toutes les liaisions liées à l'événement
839 mbroquet 3730 $this->deleteEvenementLinks($this->valF['evenement'], 'lien_dossier_instruction_type_evenement');
840 softime 8989 // Ne traite les données que s'il y en a et qu'elles sont correctes
841     if (is_array($dossier_instruction_type) && count($dossier_instruction_type) > 0) {
842     $nb_tr = 0;
843     // Va créer autant de lien_dossier_instruction_type_evenement que de dossier_instruction_type choisis
844     foreach ($dossier_instruction_type as $value) {
845     // Test si la valeur par défaut est sélectionnée
846     if ($value != "") {
847 mbroquet 3730 //Données
848     $data = array(
849     'evenement' => $this->valF['evenement'],
850     'dossier_instruction_type' => $value
851     );
852     //Ajoute un nouveau lien_dossier_instruction_type_evenement
853     $this->addEvenementLinks($data, 'lien_dossier_instruction_type_evenement');
854     $nb_tr++;
855     }
856     }
857     //Message de confirmation de création de(s) lien_dossier_instruction_type_evenement.
858 softime 8989 if ($nb_tr > 0) {
859 mbroquet 3730 $this->addToMessage(_("Mise a jour des liaisons realisee avec succes."));
860     }
861     }
862 softime 13137
863    
864     // Liaison NaN
865     foreach ($this->liaisons_nan as $liaison_nan) {
866    
867     // Liaisons NaN
868     foreach ($this->liaisons_nan as $liaison_nan) {
869     // Suppression des liaisons table NaN
870     $this->supprimer_liaisons_table_nan($liaison_nan["table_l"]);
871     }
872    
873     // Si le champ possède une valeur
874     if (isset($val[$liaison_nan["field"]]) === true) {
875     // Ajout des liaisons table Nan
876     $nb_liens = $this->ajouter_liaisons_table_nan(
877     $liaison_nan["table_l"],
878     $liaison_nan["table_f"],
879     $liaison_nan["field"],
880     $val[$liaison_nan["field"]]
881     );
882     // Message de confirmation
883     if ($nb_liens > 0) {
884     if ($nb_liens == 1) {
885     $this->addToMessage(sprintf(
886     __("Création d'une nouvelle liaison réalisee avec succès."))
887     );
888     } else {
889     $this->addToMessage(sprintf(
890     __("Création de %s nouvelles liaisons réalisée avec succès."),
891     $nb_liens)
892     );
893     }
894     }
895     }
896     }
897 mbroquet 3730 // Copie les paramètres vers l'événement lié
898 softime 8989 $this->copyParametersToEvenementLink();
899 mbroquet 3730 }
900    
901     /**
902     * Ajout d'un lien dans la table passée en paramètre
903     * @param $data Les données à ajouter
904     * @param $table La table à populer
905     */
906     function addEvenementLinks($data, $table){
907 softime 7996 $linksEvenement = $this->f->get_inst__om_dbform(array(
908     "obj" => $table,
909     "idx" => "]",
910     ));
911 mbroquet 3730
912 softime 9245 $linksEvenement->valF = array();
913 mbroquet 3730 $val[$table] = NULL;
914     //
915     if (is_array($data)) {
916     foreach ($data as $key => $value) {
917     $val[$key]=$value;
918     }
919     }
920     //
921 softime 8989 $linksEvenement->ajouter($val);
922 mbroquet 3730 }
923    
924     /**
925     * Suppression des liens de la table passé en paramètre
926     * @param $id L'identifiant de l'événement
927     * @param $table La table à vider
928     */
929     function deleteEvenementLinks($id, $table){
930    
931     // Suppression de tous les enregistrements correspondants à l'id de
932     // l'événement
933     $sql = "DELETE
934     FROM ".DB_PREFIXE.$table."
935     WHERE evenement = ".$id;
936 softime 8989 $res = $this->f->db->query($sql);
937 softime 12847 $this->addToLog(
938     __METHOD__."(): db->query(\"".$sql."\");",
939     VERBOSE_MODE
940     );
941     if ($this->f->isDatabaseError($res, true) !== false) {
942 mbroquet 3730 // Appel de la methode de recuperation des erreurs
943     $this->erreur_db($res->getDebugInfo(), $res->getMessage(), 'evenement');
944     }
945     }
946    
947 softime 8989 /**
948     * TRIGGER - triggersupprimer.
949     *
950     * @return boolean
951     */
952     function triggersupprimer($id, &$dnu1 = null, $val = array(), $dnu2 = null) {
953     $this->addToLog(__METHOD__."(): start", EXTRA_VERBOSE_MODE);
954 mbroquet 3730 // Suppression de tous les liens de la table transition (table lien
955     // entre etat et evenement)
956     $this->deleteEvenementLinks($this->getVal('evenement'), 'transition');
957     //Supprime toutes les lien_dossier_instruction_type_evenement liées à l'evenement
958     $this->deleteEvenementLinks($this->getVal('evenement'), 'lien_dossier_instruction_type_evenement');
959 softime 13137
960     // Liaisons NaN
961     foreach ($this->liaisons_nan as $liaison_nan) {
962     // Suppression des liaisons table NaN
963     $this->supprimer_liaisons_table_nan($liaison_nan["table_l"]);
964     }
965 mbroquet 3730 }
966    
967 softime 13137 /**
968     * TRIGGER - triggersupprimerapres.
969     *
970     * @return boolean
971     */
972     function triggersupprimerapres($id, &$dnu1 = null, $val = array(), $dnu2 = null) {
973     $this->addToLog(__METHOD__."(): start", EXTRA_VERBOSE_MODE);
974     }
975    
976 mbroquet 3730 /* Surcharge de la fonction cleSecondaire pour qu'elle ne vérifie pas le lien avec
977     * lien_dossier_instruction_type_evenement qui sera supprimé juste après ni avec la table transition*/
978 softime 8989 function cleSecondaire($id, &$dnu1 = null, $val = array(), $dnu2 = null) {
979 mbroquet 3730
980     // Verification de la cle secondaire : bible
981 softime 8989 $this->rechercheTable($dnu1, "bible", "evenement", $id);
982 mbroquet 3730 // Verification de la cle secondaire : demande_type
983 softime 8989 $this->rechercheTable($dnu1, "demande_type", "evenement", $id);
984 mbroquet 3730 // Verification de la cle secondaire : evenement
985 softime 8989 $this->rechercheTable($dnu1, "evenement", "evenement_retour_ar", $id);
986 mbroquet 3730 // Verification de la cle secondaire : evenement
987 softime 8989 $this->rechercheTable($dnu1, "evenement", "evenement_suivant_tacite", $id);
988 mbroquet 3730 // Verification de la cle secondaire : instruction
989 softime 8989 $this->rechercheTable($dnu1, "instruction", "evenement", $id);
990 mbroquet 3730 //// Verification de la cle secondaire : transition
991 softime 8989 //$this->rechercheTable($dnu1, "transition", "evenement", $id);
992 mbroquet 3730 }
993 softime 8989
994     /**
995     * SETTER_FORM - setVal (setVal).
996     *
997     * @return void
998     */
999     function setVal(&$form, $maj, $validation, &$dnu1 = null, $dnu2 = null) {
1000     parent::setVal($form, $maj, $validation);
1001     //
1002     if ($maj == 2 && $validation == 1) {
1003     //Affichage des dossier_instruction_type anciennement liés
1004     $form->setVal("dossier_instruction_type", $this->val[count($this->val)-1]);
1005 mbroquet 3730 }
1006     }
1007    
1008 softime 8989 /**
1009     * @return void
1010     */
1011     function verifier($val = array(), &$dnu1 = null, $dnu2 = null) {
1012     parent::verifier($val);
1013 mbroquet 3730 //Test qu'une restriction est présente
1014     if (isset($this->valF['restriction']) && $this->valF['restriction'] != ""){
1015    
1016     $restriction = $this->valF['restriction'];
1017    
1018     // Liste des opérateurs possible
1019 nmeucci 3873 $operateurs = array(">=", "<=", "+", "-", "&&", "||", "==", "!=");
1020 mbroquet 3730
1021     // Supprime tous les espaces de la chaîne de caractère
1022     $restriction = str_replace(' ', '', $restriction);
1023    
1024     // Met des espace avant et après les opérateurs puis transforme la
1025     // chaine en un tableau
1026     $tabRestriction = str_replace($operateurs, " ", $restriction);
1027     // Tableau des champ
1028     $tabRestriction = explode(" ", $tabRestriction);
1029     // Supprime les numériques du tableau
1030     foreach ($tabRestriction as $key => $value) {
1031     if (is_numeric($value)) {
1032     unset($tabRestriction[$key]);
1033     }
1034     }
1035    
1036     // Vérifie les champs utilisés pour la restriction
1037     $check_field_exist = $this->f->check_field_exist($tabRestriction,
1038     'instruction');
1039     if ($check_field_exist !== true) {
1040    
1041     // Liste des champs en erreur
1042     $string_error_fields = implode(", ", $check_field_exist);
1043    
1044     // Message d'erreur
1045     $error_message = _("Le champ %s n'est pas utilisable pour le champ %s");
1046     if (count($check_field_exist) > 1) {
1047     $error_message = _("Les champs %s ne sont pas utilisable pour le champ %s");
1048     }
1049    
1050     // Affiche l'erreur
1051     $this->correct=false;
1052     $this->addToMessage(sprintf($error_message, $string_error_fields, _("restriction")));
1053     }
1054     }
1055    
1056     // Identifiant de l'évenement en cours
1057     $evenement_main = "";
1058     // Si pas en mode "Ajouter"
1059     if ($this->getParameter("maj") != 0) {
1060     $evenement_main = $this->valF['evenement'];
1061     }
1062    
1063     //
1064     $error_retour = false;
1065    
1066     // Si le même événement retour est sélectionné pour le retour ar et le
1067     // retour signature
1068     if (isset($this->valF['evenement_retour_ar'])
1069     && $this->valF['evenement_retour_ar'] != ""
1070     && isset($this->valF['evenement_retour_signature'])
1071     && $this->valF['evenement_retour_signature'] != "") {
1072    
1073     //
1074     if ($this->valF['evenement_retour_ar'] == $this->valF['evenement_retour_signature']) {
1075    
1076     // Récupère l'événement
1077     $evenement_retour = $this->valF['evenement_retour_ar'];
1078    
1079     // Récupère le libelle de l'événement
1080     $evenement_retour_libelle = $this->getEvenementLibelle($evenement_retour);
1081    
1082     // Message d'erreur
1083     $error_message = _("L'evenement \"%s\" ne peut pas etre utilise en tant qu'evenement d'accuse de reception et evenement de retour de signature.");
1084    
1085     // Le formulaire n'est pas validé
1086     $this->correct=false;
1087     $this->addToMessage(sprintf($error_message, $evenement_retour_libelle));
1088     $error_retour = true;
1089     }
1090     }
1091    
1092     // Si l'erreur concernant la double utilisation d'une événement retour
1093     // sur le même formulaire n'est pas activé
1094     if ($error_retour === false) {
1095    
1096     // Vérifie que l'événement "evenement_retour_signature" n'est pas
1097     // utilisé en evenement retour
1098     $this->checkEvenementRetour('evenement_retour_signature', $evenement_main);
1099     // Vérifie que l'événement n'est pas déjà utilisé en tant que
1100     // "evenement_retour_ar"
1101     $this->checkEvenementRetour('evenement_retour_ar', $evenement_main);
1102     }
1103    
1104     // Si c'est un événement retour
1105     if (isset($this->valF['retour'])
1106     && $this->valF['retour'] === true) {
1107    
1108     // Supprime les valeurs des champs
1109     unset($this->valF['evenement_retour_ar']);
1110     unset($this->valF['evenement_retour_signature']);
1111     }
1112 softime 10573
1113     if (isset($this->valF['lettretype']) &&
1114     $this->valF['lettretype'] != '' &&
1115     isset($this->valF['non_modifiable']) &&
1116     $this->valF['non_modifiable'] == 'Oui')
1117     {
1118     // Message d'erreur
1119     $error_message = __("L'evenement ne peut pas avoir une lettre type et être non modifiable");
1120    
1121     // Le formulaire n'est pas validé
1122     $this->correct=false;
1123     $this->addToMessage($error_message);
1124     }
1125 mbroquet 3730 }
1126    
1127     /**
1128     * Vérifie que l'événement $champ n'est pas déjà utilisé en événement
1129     * 'evenement_retour_ar' et 'evenement_retour_signature'
1130     * @param string $champ Champ à tester
1131     * @param integer $evenement_main Identifiant de l'événement en cours
1132     */
1133     function checkEvenementRetour($champ, $evenement_main) {
1134    
1135     // Si un l'évenement est renseigné
1136     if (isset($this->valF[$champ])
1137     && $this->valF[$champ] != "") {
1138    
1139     // Récupère l'événement
1140     $evenement_retour = $this->valF[$champ];
1141    
1142     // Récupère le libelle de l'événement
1143     $evenement_libelle = $this->getEvenementLibelle($evenement_retour);
1144    
1145     // Si l'événement est utilisé en tant que "evenement_retour_ar"
1146     if ($this->checkEvenementIsUse($evenement_retour, 'evenement_retour_ar', $evenement_main)) {
1147    
1148     // Message d'erreur
1149     $error_message = _("L'evenement \"%s\" est deja utilise en tant qu'evenement d'accuse de reception.");
1150    
1151     // Le formulaire n'est pas validé
1152     $this->correct=false;
1153     $this->addToMessage(sprintf($error_message, $evenement_libelle));
1154     }
1155    
1156     // Si l'événement est utilisé en tant que
1157     // "evenement_retour_signature"
1158     if ($this->checkEvenementIsUse($evenement_retour, 'evenement_retour_signature', $evenement_main)) {
1159    
1160     // Message d'erreur
1161     $error_message = _("L'evenement \"%s\" est deja utilise en tant qu'evenement de retour de signature.");
1162    
1163     // Le formulaire n'est pas validé
1164     $this->correct=false;
1165     $this->addToMessage(sprintf($error_message, $evenement_libelle));
1166     }
1167     }
1168    
1169     }
1170    
1171     /**
1172     * Vérifie si l'événement est déjà utilisé dans un autre champ
1173     * @param integer $evenement Identifiant de l'événement
1174     * @return boolean
1175     */
1176     function checkEvenementIsUse($evenement_link, $champ, $evenement_main) {
1177    
1178     // Initialisation du retour de la fonction
1179     $return = false;
1180    
1181     // Si les paramètres ne sont pas vide
1182     if ($evenement_link != "" && $champ != "") {
1183    
1184 softime 15835 $qres = $this->f->get_all_results_from_db_query(
1185     sprintf(
1186     'SELECT
1187     evenement
1188     FROM
1189     %1$sevenement
1190     WHERE
1191     %2$s = %3$s
1192     %4$s',
1193     DB_PREFIXE,
1194     $this->f->db->escapeSimple($champ),
1195     $this->f->db->escapeSimple($evenement_link),
1196     // Si l'événement principal est déjà créé,
1197     // il ne faut pas que l'événement principal soit pris en compte
1198     $evenement_main != "" ?
1199     sprintf(" AND evenement != %d", intval($evenement_main)) :
1200     ''
1201     ),
1202     array(
1203     'origin' => __METHOD__
1204     )
1205     );
1206 mbroquet 3730 // Si il y a un résultat à la requête
1207 softime 15835 if ($qres['row_count'] > 0) {
1208 mbroquet 3730
1209     // Change la valeur de retour
1210     $return = true;
1211     }
1212     }
1213    
1214     // Retourne le résultat de la fonction
1215     return $return;
1216    
1217     }
1218    
1219     /**
1220     * Récupère le libellé de l'evénement passé en paramètre
1221     * @param integer $evenement Identifiant de l'événement
1222     * @return string Libellé de l'événement
1223     */
1224     function getEvenementLibelle($evenement) {
1225 softime 14064 $inst_evenement = $this->f->get_inst__om_dbform(array(
1226     "obj" => "evenement",
1227     "idx" => $evenement,
1228     ));
1229     return $inst_evenement->getVal("libelle");
1230 mbroquet 3730 }
1231    
1232     /**
1233     * Copie les paramétres de l'événement principal vers l'évévenement lié
1234     */
1235 softime 8989 function copyParametersToEvenementLink() {
1236 mbroquet 3730 // Si un évenement retour de signature est renseigné
1237     if (isset($this->valF['evenement_retour_signature'])
1238     && $this->valF['evenement_retour_signature'] != "") {
1239    
1240     // Instanciation de la classe evenement
1241 softime 7996 $evenement_retour_signature = $this->f->get_inst__om_dbform(array(
1242     "obj" => "evenement",
1243     "idx" => $this->valF['evenement_retour_signature'],
1244     ));
1245 mbroquet 3730 $evenement_retour_signature->setParameter("maj",1);
1246    
1247     // Valeurs de l'enregistrement
1248     $value_evenement_retour_signature = array();
1249     foreach($evenement_retour_signature->champs as $key => $champ) {
1250     //
1251     $value_evenement_retour_signature[$champ] = $evenement_retour_signature->val[$key];
1252     }
1253    
1254     // Valeurs à modifier
1255     $value_evenement_retour_signature['delai'] = $this->valF['delai'];
1256     $value_evenement_retour_signature['accord_tacite'] = $this->valF['accord_tacite'];
1257     $value_evenement_retour_signature['delai_notification'] = $this->valF['delai_notification'];
1258     $value_evenement_retour_signature['avis_decision'] = $this->valF['avis_decision'];
1259     $value_evenement_retour_signature['restriction'] = $this->valF['restriction'];
1260    
1261     // Récupère le libelle de l'événement
1262     $evenement_retour_signature_libelle = $this->getEvenementLibelle($value_evenement_retour_signature['evenement']);
1263    
1264     // Message de validation
1265     $valid_message = _("Mise a jour de l'evenement lie \"%s\" realisee avec succes.");
1266    
1267     // Modifie l'événement lié pour qu'il ait les mêmes paramètres
1268     // que l'événement principal
1269 softime 8989 if ($evenement_retour_signature->modifier($value_evenement_retour_signature)) {
1270 mbroquet 3730
1271     //
1272     $this->addToMessage(sprintf($valid_message, $evenement_retour_signature_libelle));
1273     }
1274    
1275     }
1276    
1277     // Si un évenement retour d'accusé de réception est renseigné
1278     if (isset($this->valF['evenement_retour_ar'])
1279     && $this->valF['evenement_retour_ar'] != "") {
1280    
1281     // Instanciation de la classe evenement
1282 softime 7996 $evenement_retour_ar = $this->f->get_inst__om_dbform(array(
1283     "obj" => "evenement",
1284     "idx" => $this->valF['evenement_retour_ar'],
1285     ));
1286 mbroquet 3730 $evenement_retour_ar->setParameter("maj",1);
1287    
1288     // Valeurs de l'enregistrment
1289     $value_evenement_retour_ar = array();
1290     foreach($evenement_retour_ar->champs as $key => $champ) {
1291     //
1292     $value_evenement_retour_ar[$champ] = $evenement_retour_ar->val[$key];
1293     }
1294    
1295     // Valeurs à modifier
1296     $value_evenement_retour_ar['delai'] = $this->valF['delai'];
1297     $value_evenement_retour_ar['accord_tacite'] = $this->valF['accord_tacite'];
1298     $value_evenement_retour_ar['delai_notification'] = $this->valF['delai_notification'];
1299     $value_evenement_retour_ar['avis_decision'] = $this->valF['avis_decision'];
1300     $value_evenement_retour_ar['restriction'] = $this->valF['restriction'];
1301    
1302     // Récupère le libelle de l'événement
1303     $evenement_retour_ar_libelle = $this->getEvenementLibelle($value_evenement_retour_ar['evenement']);
1304    
1305     // Message de validation
1306     $valid_message = _("Mise a jour de l'evenement lie \"%s\" realisee avec succes.");
1307     // Modifie l'événement lié pour qu'il ait les mêmes paramètres
1308     // que l'événement principal
1309 softime 8989 if ($evenement_retour_ar->modifier($value_evenement_retour_ar)) {
1310 mbroquet 3730
1311     //
1312     $this->addToMessage(sprintf($valid_message, $evenement_retour_ar_libelle));
1313     }
1314    
1315     }
1316     }
1317    
1318     function setOnchange(&$form, $maj) {
1319     parent::setOnchange($form, $maj);
1320    
1321     //
1322     $form->setOnchange('retour','retourOnchangeEvenement(this)');
1323 softime 13137
1324     // Alterne l'affichage du champs type_habilitation_tiers_consulte selon la valeur de la notification
1325     $form->setOnchange(
1326     'notification_tiers',
1327     'alternate_display(
1328     this.value === \'notification_automatique\',
1329     [\'type_habilitation_tiers_consulte\'],
1330     [\'\']
1331     )'
1332     );
1333 mbroquet 3730 }
1334    
1335     /**
1336     * Fonction appelée lors de la copie d'un enregistrement
1337 nhaye 5254 * @param array $valCopy Liste des valeurs de l'enregistrement
1338     * @param string $objsf Liste des objets associés
1339     * @param mixed $DEBUG Type du DEBUG
1340     * @return array Liste des valeurs après traitement
1341 mbroquet 3730 */
1342     function update_for_copy($valCopy, $objsf, $DEBUG) {
1343    
1344     // Libellé du duplicata
1345     $libelle = _("Copie de %s du %s");
1346     $valCopy['libelle'] = sprintf($libelle, $valCopy['libelle'], date('d/m/Y H:i:s'));
1347     // Tronque le libellé si celui est trop long
1348     $valCopy['libelle'] = mb_substr($valCopy['libelle'], 0, 70, "UTF8");
1349    
1350     // Message à retourner
1351     $valCopy['message'] = "";
1352    
1353     // S'il y a un événement retour_ar sur l'événement copié
1354     if ($valCopy['evenement_retour_ar'] != '') {
1355     // Copie l'événement retour_ar
1356     $copie = $this->f->copier($valCopy['evenement_retour_ar'], 'evenement', $objsf);
1357     $evenement_retour_ar = $copie['evenement_'.$valCopy['evenement_retour_ar']];
1358     $valCopy['message'] .= $copie['message'];
1359     $valCopy['message_type'] = $copie['message_type'];
1360     $valCopy['evenement_retour_ar'] = $evenement_retour_ar;
1361     }
1362    
1363     // S'il y a un événement evenement_retour_signature sur l'événement copié
1364     if ($valCopy['evenement_retour_signature'] != '') {
1365     // Copie l'événement retour_signature
1366     $copie = $this->f->copier($valCopy['evenement_retour_signature'], 'evenement', $objsf);
1367     $evenement_retour_signature = $copie['evenement_'.$valCopy['evenement_retour_signature']];
1368     $valCopy['message'] .= $copie['message'];
1369     $valCopy['message_type'] = $copie['message_type'];
1370     $valCopy['evenement_retour_signature'] = $evenement_retour_signature;
1371     }
1372    
1373     // Retourne les valeurs
1374     return $valCopy;
1375     }
1376    
1377 softime 11585 /**
1378     * Méthode permettant de savoir si un signataire est obligatoire
1379     * ou pas pour l'évenement.
1380     *
1381     * @return boolean
1382     */
1383     public function is_signataire_obligatoire() {
1384     return $this->get_boolean_from_pgsql_value($this->getVal('signataire_obligatoire'));
1385     }
1386 softime 13137
1387    
1388     /**
1389     * Récupère, à l'aide d'une requête, la liste des types d'habilitation notifiable
1390     * pour l'événement.
1391     *
1392     * @return array liste des types d'habilitation notifiable
1393     */
1394     public function get_types_habilitation_notifiable() {
1395     $rst = $this->f->get_all_results_from_db_query(
1396     sprintf(
1397     'SELECT
1398     type_habilitation_tiers_consulte
1399     FROM
1400     %1$sevenement_type_habilitation_tiers_consulte
1401     WHERE
1402     evenement = %2$s',
1403     DB_PREFIXE,
1404     intval($this->getVal($this->clePrimaire))
1405     ),
1406     array(
1407     "origin" => __METHOD__
1408     )
1409     );
1410     // renvoi les valeurs de la colonne des 'type_habilitation_tiers_consulte'
1411     return array_column($rst['result'], 'type_habilitation_tiers_consulte');
1412     }
1413 mbroquet 3730 }

Properties

Name Value
svn:keywords "Id"

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26