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

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

Parent Directory Parent Directory | Revision Log Revision Log


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

Properties

Name Value
svn:keywords "Id"

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26