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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 19307 - (show annotations)
Wed Nov 6 10:57:56 2024 UTC (2 months, 3 weeks ago) by softime
File size: 57815 byte(s)
merge: fusion de la branche d'intégration 6.9.0-develop dans le trunk

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

Properties

Name Value
svn:keywords "Id"

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26