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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3395 - (show annotations)
Wed Apr 8 10:30:59 2015 UTC (9 years, 10 months ago) by nhaye
File size: 90861 byte(s)
Passage de la classe consultation avec les nouvelles actions

1 <?php
2 //$Id$
3 //gen openMairie le 10/02/2011 20:32
4 require_once ("../gen/obj/consultation.class.php");
5 require_once("../services/outgoing/messageenqueuer.php");
6
7 class consultation extends consultation_gen {
8
9 var $abstract_type = array(
10 "fichier" => "file",
11 );
12
13 var $metadata = array(
14 "om_fichier_consultation" => array(
15 "dossier" => "getDossier",
16 "dossier_version" => "getDossierVersion",
17 "numDemandeAutor" => "getNumDemandeAutor",
18 "anneemoisDemandeAutor" => "getAnneemoisDemandeAutor",
19 "typeInstruction" => "getTypeInstruction",
20 "statutAutorisation" => "getStatutAutorisation",
21 "typeAutorisation" => "getTypeAutorisation",
22 "dateEvenementDocument" => "getDateEvenementDocument",
23 "groupeInstruction" => 'getGroupeInstruction',
24 "title" => 'getTitle',
25 ),
26 "fichier" => array(
27 "filename" => "getFichierFilename",
28 "dossier" => "getDossier",
29 "dossier_version" => "getDossierVersion",
30 "numDemandeAutor" => "getNumDemandeAutor",
31 "anneemoisDemandeAutor" => "getAnneemoisDemandeAutor",
32 "typeInstruction" => "getTypeInstruction",
33 "statutAutorisation" => "getStatutAutorisation",
34 "typeAutorisation" => "getTypeAutorisation",
35 "dateEvenementDocument" => "getDateEvenementDocument",
36 "groupeInstruction" => 'getGroupeInstruction',
37 "title" => 'getTitle',
38 ),
39 );
40
41 /**
42 * Les nouvelles actions sont activées sur cet objet.
43 *
44 * @var boolean
45 */
46 var $activate_class_action;
47
48 /**
49 * Cette variable permet de stocker le résultat de la méthode
50 * getDivisionFromDossier() afin de ne pas effectuer le recalcul à chacun de
51 * ces appels.
52 * @var string Code de la division du dossier en cours
53 */
54 var $_division_from_dossier = NULL;
55
56 /**
57 * Constructeur.
58 *
59 * @param integer $id identifiant de l'enregistrement
60 * @param database $db handler de la base de données
61 * @param boolean $debug debug
62 */
63 function consultation($id, &$db, $debug) {
64 //On active les nouvelles actions
65 $this->activate_class_action = true;
66 $this->constructeur($id, $db, $debug);
67 }// fin constructeur
68
69 /**
70 * Définition des actions disponibles sur la classe.
71 *
72 * @return void
73 */
74 function init_class_actions() {
75
76 parent::init_class_actions();
77
78 // ACTION - 001 - modifier
79 //
80 $this->class_actions[1]["condition"] = array("show_consultation_finaliser_portlet_action",
81 "is_dossier_instruction_not_closed");
82
83 // ACTION - 002 - supprimer
84 //
85 $this->class_actions[2]["condition"] = array("show_consultation_finaliser_portlet_action",
86 "is_dossier_instruction_not_closed");
87 $this->class_actions[2]["permission_suffix"] = "supprimer";
88
89 // ACTION - 040 - valider
90 // Pour qu'un cadre valide l'analyse
91 $this->class_actions[40] = array(
92 "identifier" => "ajout_multiple",
93 "view" => "view_ajout_multiple",
94 "method" => "ajouter_multiple",
95 "button" => "valider",
96 "permission_suffix" => "ajouter",
97 "condition" => array("is_instructeur_from_division"),
98 );
99 // ACTION - 050 - marquer_comme_lu
100 // Pour qu'un cadre valide l'analyse
101 $this->class_actions[50] = array(
102 "identifier" => "marquer_comme_lu",
103 "portlet" => array(
104 "type" => "action-direct",
105 "libelle" => _("Marquer comme lu"),
106 "order" => 50,
107 "class" => "lu-16",
108 ),
109 "view" => "formulaire",
110 "method" => "marquer_comme_lu",
111 "permission_suffix" => "modifier_lu",
112 "condition" => array("is_instructeur_from_division",
113 "show_marquer_comme_lu_portlet_action"),
114 );
115 // ACTION - 060 - finaliser
116 // Pour qu'un cadre valide l'analyse
117 $this->class_actions[60] = array(
118 "identifier" => "finalise",
119 "portlet" => array(
120 "type" => "action-direct",
121 "libelle" => _("Finaliser le document"),
122 "order" => 60,
123 "class" => "finalise",
124 ),
125 "view" => "formulaire",
126 "method" => "finalize",
127 "permission_suffix" => "finaliser",
128 "condition" => array("is_instructeur_from_division",
129 "show_consultation_finaliser_portlet_action",
130 "is_dossier_instruction_not_closed"),
131 );
132
133 // ACTION - 070 - unfinaliser
134 // Pour qu'un cadre valide l'analyse
135 $this->class_actions[70] = array(
136 "identifier" => "unfinalise",
137 "portlet" => array(
138 "type" => "action-direct",
139 "libelle" => _("Reprendre la redaction du document"),
140 "order" => 70,
141 "class" => "definalise",
142 ),
143 "view" => "formulaire",
144 "method" => "unfinalize",
145 "permission_suffix" => "definaliser",
146 "condition" => array("is_instructeur_from_division",
147 "show_unfinalize_portlet_action",
148 "is_dossier_instruction_not_closed"),
149 );
150
151 // ACTION - 080 - consulter_pdf
152 // Pour qu'un cadre valide l'analyse
153 $this->class_actions[80] = array(
154 "identifier" => "consulter_pdf",
155 "portlet" => array(
156 "type" => "action-blank",
157 "libelle" => _("Editer la consultation PDF"),
158 "order" => 45,
159 "class" => "pdf-16",
160 ),
161 "view" => "view_consulter_pdf",
162 "condition" => array("is_instructeur_from_division"),
163 "permission_suffix" => "consulter",
164 );
165
166 // ACTION - 090 - rendre_avis
167 // Pour qu'un service rende l'avis
168 $this->class_actions[90] = array(
169 "identifier" => "rendre_avis",
170 "view" => "formulaire",
171 "method" => "modifier",
172 "permission_suffix" => "modifier",
173 "condition" => array("is_consultation_retour_avis_service"),
174 "button" => _("Modifier"),
175 );
176
177 // ACTION - 100 - retour_consultation
178 // Lors de la saisie de retour d'avis par le profil suivi des dates
179 $this->class_actions[100] = array(
180 "identifier" => "retour_consultation",
181 "view" => "formulaire",
182 "method" => "modifier",
183 "button" => _("Modifier"),
184 "permission_suffix" => "modifier",
185 "condition" => array("is_suivi_retours_de_consultation"),
186
187 );
188
189 }
190
191 /**
192 * Défini si l'utilisateur est un intructeur qui en correspond à la division
193 * du dossier.
194 *
195 * @return boolean true si correspond false sinon
196 */
197 function is_instructeur_from_division() {
198
199 if ($this->f->isUserInstructeur()
200 && isset($this->f->om_utilisateur["division"])
201 && $this->f->om_utilisateur["division"] != $this->getDivisionFromDossier()) {
202 //
203 return false;
204 }
205 return true;
206 }
207
208 /**
209 * Défini si l'utilisateur est de la cellule suivi.
210 *
211 * @return boolean true si correspond false sinon
212 */
213 function is_suivi_retours_de_consultation() {
214
215 return $this->f->isAccredited("suivi_retours_de_consultation");
216 }
217
218 /**
219 * Défini si l'utilisateur est de service interne.
220 *
221 * @return boolean true si correspond false sinon
222 */
223 function is_consultation_retour_avis_service() {
224
225 return $this->f->isAccredited("consultation_retour_avis_service");
226 }
227
228 /**
229 * Si le champ lu est à true l'action "Marquer comme lu" n'est pas affichée
230 *
231 * @return boolean true sinon lu false sinon
232 */
233 function show_marquer_comme_lu_portlet_action() {
234 if (isset($this->val[array_search("lu", $this->champs)])
235 && $this->val[array_search("lu", $this->champs)]== "t") {
236 return false;
237 }
238 return true;
239 }
240
241 /**
242 * Si le document est finalisé l'action "finaliser" n'est pas affichée
243 *
244 * @return boolean true sinon lu false sinon
245 */
246 function show_consultation_finaliser_portlet_action() {
247 if ($this->is_document_finalized("om_final_consultation")) {
248 return false;
249 }
250 return true;
251 }
252
253 /**
254 * Retourne is_document_finalized("om_final_consultation")
255 *
256 * @return boolean true si finalisé false sinon
257 */
258 function show_unfinalize_portlet_action() {
259 return $this->is_document_finalized("om_final_consultation");
260 }
261
262 /**
263 * Permet de savoir si le document passé en paramètre est finalisé
264 *
265 * @param string $field flag finalisé
266 *
267 * @return boolean true si finalisé false sinon
268 */
269 function is_document_finalized($field) {
270 if($this->getVal($field) == 't') {
271 return true;
272 }
273 return false;
274 }
275
276 /**
277 * Si le dossier d'instruction auquel est rattachée la consultation est
278 * cloturé, on affiche pas les liens du portlet.
279 *
280 * @return boolean true si non cloturé false sinon
281 */
282 function is_dossier_instruction_not_closed() {
283 $idxformulaire = $this->getParameter("idxformulaire");
284 $retourformulaire = $this->getParameter("retourformulaire");
285 //Si le dossier d'instruction auquel est rattachée la consultation est
286 //cloturé, on affiche pas les liens du portlet
287 if ( $idxformulaire != '' &&
288 (
289 $retourformulaire == 'dossier' ||
290 $retourformulaire == 'dossier_instruction' ||
291 $retourformulaire == 'dossier_instruction_mes_encours' ||
292 $retourformulaire == 'dossier_instruction_tous_encours' ||
293 $retourformulaire == 'dossier_instruction_mes_clotures' ||
294 $retourformulaire == 'dossier_instruction_tous_clotures'
295 )){
296
297 //On récuppère le statut du dossier d'instruction
298 $statut = $this->f->getStatutDossier($idxformulaire);
299 if ( $this->f->isUserInstructeur() && $statut == "cloture" ){
300
301 return false;
302 }
303 }
304 return true;
305 }
306
307 // {{{ Gestion de la confidentialité des données spécifiques
308
309
310 /**
311 * Cette methode est à surcharger elle permet de tester dans chaque classe
312 * des droits des droits spécifiques en fonction des données
313 */
314 function canAccess() {
315
316 // Si l'utilisateur est un utilisateur de service externe
317 // on vérifie qu'il peut accéder à la consultation
318 if ($this->f->isUserService()) {
319 // On compare l'id du service de la consultation
320 // aux id des services de utilisateur connecté
321 foreach($this->f->om_utilisateur['service'] as $service) {
322
323 if($this->val[array_search("service",$this->champs)]===$service['service']) {
324
325 return true;
326 }
327 }
328 //
329 $this->f->addToLog("canAccess(): utilisateur de service sur une consultation d'un autre service", EXTRA_VERBOSE_MODE);
330 return false;
331 }
332 // Si l'utilisateur est un intructeur qui ne correspond pas à la
333 // division du dossier
334 if ($this->f->isUserInstructeur()
335 && $this->f->om_utilisateur["division"] != $this->getDivisionFromDossier()
336 && $this->getParameter("maj") != 3) {
337 //
338 $this->f->addToLog("canAccess(): utilisateur instructeur sur un dossier d'une autre division", EXTRA_VERBOSE_MODE);
339 return false;
340 }
341
342 $retourformulaire = $this->getParameter("retourformulaire");
343 // Si l'utilisateur est un instructeur et que le dossier est cloturé
344 if ( $this->f->isUserInstructeur() &&
345 $this->f->getStatutDossier($this->getParameter("idxformulaire")) == "cloture" &&
346 (
347 $retourformulaire == 'dossier' ||
348 $retourformulaire == 'dossier_instruction' ||
349 $retourformulaire == 'dossier_instruction_mes_encours' ||
350 $retourformulaire == 'dossier_instruction_tous_encours' ||
351 $retourformulaire == 'dossier_instruction_mes_clotures' ||
352 $retourformulaire == 'dossier_instruction_tous_clotures'
353 ) &&
354 $this->getParameter("maj") != 3) {
355
356 return false;
357 }
358 //
359 return true;
360 }
361
362 /**
363 * Cette méthode permet de récupérer le code de division correspondant
364 * au dossier sur lequel on se trouve.
365 *
366 * @return string Code de la division du dossier en cours
367 */
368 function getDivisionFromDossier() {
369
370 // Cette méthode peut être appelée plusieurs fois lors d'une requête.
371 // Pour éviter de refaire le traitement de recherche de la division
372 // alors on vérifie si nous ne l'avons pas déjà calculé.
373 if ($this->_division_from_dossier != NULL) {
374 // Logger
375 $this->addToLog("getDivisionFromDossier(): retour de la valeur déjà calculée - '".$this->_division_from_dossier."'", EXTRA_VERBOSE_MODE);
376 // On retourne la valeur déjà calculée
377 return $this->_division_from_dossier;
378 }
379
380 // Par défaut, on définit la valeur du dossier à NULL
381 $dossier = NULL;
382 // Test sur le mode et le contexte du formulaire
383 if (($this->getParameter("maj") == 0 or $this->getParameter("maj") == 40)
384 && ($this->getParameter("retourformulaire") == "dossier"
385 || $this->getParameter("retourformulaire") == "dossier_instruction"
386 || $this->getParameter("retourformulaire") == "dossier_instruction_mes_encours"
387 || $this->getParameter("retourformulaire") == "dossier_instruction_tous_encours"
388 || $this->getParameter("retourformulaire") == "dossier_instruction_mes_clotures"
389 || $this->getParameter("retourformulaire") == "dossier_instruction_tous_clotures")) {
390 // Si on se trouve en mode AJOUT (seul mode où l'enregistrement
391 // n'existe pas en base de données) ET que nous nous trouvons
392 // dans le contexte d'un dossier d'instruction alors on récupère
393 // le numéro de dossier depuis le paramètre 'idxformulaire'
394 $dossier = $this->getParameter("idxformulaire");
395 } else {
396 // Sinon on récupère le numéro de dossier dans le champs dossier de
397 // l'enregistrement (en base de données)
398 $dossier = $this->getVal("dossier");
399 }
400
401 // On appelle la méthode de la classe utils qui renvoi le code de la
402 // division d'un dossier, on la stocke pour ne pas refaire le calcul au
403 // prochain appel de cette méthode
404 $this->_division_from_dossier = $this->f->getDivisionFromDossier($dossier);
405 // Logger
406 $this->addToLog("getDivisionFromDossier(): retour de la valeur nouvellement calculée - '".$this->_division_from_dossier."'", EXTRA_VERBOSE_MODE);
407 // On retourne la valeur retournée
408 return $this->_division_from_dossier;
409
410 }
411
412 /**
413 * TREATMENT - marquer_comme_lu.
414 *
415 * Cette methode permet de passer la consultation en "lu"
416 *
417 * @return boolean true si maj effectué false sinon
418 */
419 function marquer_comme_lu() {
420 if($this->getVal("lu") == 'f') {
421 $this->correct = true;
422 $this->valF["lu"] = true;
423
424 $res = $this->f->db->autoExecute(
425 DB_PREFIXE.$this->table,
426 $this->valF,
427 DB_AUTOQUERY_UPDATE,
428 $this->clePrimaire."=".$this->getVal($this->clePrimaire)
429 );
430 if ($this->f->isDatabaseError($res, true)) {
431 // Appel de la methode de recuperation des erreurs
432 $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
433 $this->correct = false;
434 return false;
435 } else {
436 $this->addToMessage(_("Mise a jour effectue avec succes"));
437 return $res;
438 }
439
440 } else {
441 $this->addToMessage(_("Element deja marque comme lu"));
442 }
443 return false;
444 }
445
446 // }}}
447
448 /**
449 * TREATMENT - ajouter_multiple.
450 *
451 * Cette methode permet d'ajouter plusieurs consultations.
452 *
453 * @return boolean true si ajouts effectués false sinon
454 */
455 function ajouter_multiple() {
456 // Identifiant de l'objet metier a copier
457 ($this->f->get_submitted_get_value('idxformulaire') !== null ? $idx = $this->f->get_submitted_get_value('idxformulaire') : $idx = "");
458 // Nom de l'objet metier
459 ($this->f->get_submitted_get_value('obj') !== null ? $obj = $this->f->get_submitted_get_value('obj') : $obj = "");
460 //formulaire retour
461 ($this->f->get_submitted_get_value('ret') !== null ? $retourformulaire = $this->f->get_submitted_get_value('ret') : $retourformulaire = "");
462 ($this->f->get_submitted_get_value('date_envoi') !== null ? $date_envoi = $this->f->get_submitted_get_value('date_envoi') : $date_envoi = "");
463 /*Récupération des données et formatage.*/
464 $donnees_temp = explode(';', $this->f->get_submitted_get_value('data'));
465 for ( $i = 1 ; $i < count($donnees_temp) ; $i++ )
466 $donnees[] = explode('_', $donnees_temp[$i]);
467 /* Nombre de consultations papier à générer */
468 $nbConsPap = 0;
469
470 /* Ajout des données en base de données
471 * 0 : l'ID du service
472 * 1 : consultation papier {0,1}
473 * */
474 if ( isset($donnees) && count($donnees) > 0 ) {
475
476 foreach ($donnees as $value) {
477
478 $sql = "SELECT delai, id
479 FROM ".DB_PREFIXE."service
480 LEFT JOIN ".DB_PREFIXE."om_etat
481 ON service.edition = om_etat.om_etat
482 WHERE service = $value[0]";
483 $res = $this->f->db->query($sql);
484 // Si la récupération de la description de l'avis échoue
485 if ($this->f->isDatabaseError($res, true)) {
486 // Appel de la methode de recuperation des erreurs
487 $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
488 $this->correct = false;
489 return false;
490 }
491 $row=& $res->fetchRow();
492 $delai = $row[0];
493 $type_edition = $row[1];
494
495 /*Calcul du delai de retour*/
496 $date_envoi_temp = $this->datePHP($date_envoi);
497 $delai = $this->dateDB($this->f->mois_date($date_envoi_temp, $delai));
498
499 /*Les données à ajouter*/
500 $arrayVal = array(
501 'consultation' => "]",
502 'dossier' => $idx,
503 'date_envoi' => $date_envoi,
504 'date_retour' => NULL,
505 'date_limite' => $delai,
506 'service' => $value[0],
507 'avis_consultation' => NULL,
508 'date_reception' => NULL,
509 'motivation' => "",
510 'fichier' => NULL,
511 'lu' => TRUE,
512 'code_barres' => NULL,
513 'om_final_consultation' => FALSE,
514 'om_fichier_consultation' => "",
515
516 );
517
518 $res_ajout = $this->ajouter($arrayVal, $this->f->db, DEBUG);
519 if($res_ajout != true) {
520 return false;
521 }
522
523 /*Comptage du nombre de consultations papier demandées et récupération des ids des PDFs à éditer*/
524 if ($value[1]==1){
525 $idxConsultations[] = $this->valF['consultation'];
526 $objConsultations[] = $type_edition;
527 $nbConsPap++;
528 }
529 }
530
531 /*Génération du PDF*/
532 if ( isset($idxConsultations) && count($idxConsultations) > 0 ){
533
534 $textIdsConsultations = "idx=";
535 foreach ($idxConsultations as $value) {
536 $textIdsConsultations .= $value.";";
537 }
538 $textObjConsultations = "obj=";
539 foreach ($objConsultations as $value) {
540 $textObjConsultations .= $value.";";
541 }
542 echo "
543 <script language='javascript' type='text/javascript'>
544 window.open('../pdf/pdfetat.php?output=inline&".$textObjConsultations."&".$textIdsConsultations."','_blank')
545 </script>
546 ";
547 }
548 $return_url = "../scr/soustab.php?";
549 $return_url .= "obj=consultation";
550 $return_url .= "&retourformulaire=".$this->getParameter("retourformulaire");
551 $return_url .= "&idxformulaire=".$this->getParameter("idxformulaire");
552 $return_url .= "&premier=".$this->getParameter("premiersf");
553 $return_url .= "&tricol=".$this->getParameter("tricolsf");
554
555 /*Affichage du message d'information*/
556 $this->f->displayMessage("valid", count($donnees)._(' service(s) selectionne(s) dont ').$nbConsPap._(' consultation(s) papier.'));
557
558
559 return true;
560 }
561 }
562
563
564 /**
565 * VIEW - view_ajout_multiple.
566 *
567 * Formulaire specifique
568 *
569 * @return void
570 */
571 function view_ajout_multiple() {
572
573 if (count($this->f->get_submitted_get_value()) > 0
574 && $this->f->get_submitted_get_value('data') !== null
575 && $this->f->get_submitted_get_value('data') != "" ) {
576 $this->f->disableLog();
577 $this->ajouter_multiple();
578
579 } else {
580
581 // Vérification de l'accessibilité sur l'élément
582 $this->checkAccessibility();
583 //
584 $datasubmit = $this->getDataSubmitSousForm();
585 $return_url = "../scr/soustab.php?";
586 $return_url .= "obj=consultation";
587 $return_url .= "&retourformulaire=".$this->getParameter("retourformulaire");
588 $return_url .= "&idxformulaire=".$this->getParameter("idxformulaire");
589 $return_url .= "&premier=".$this->getParameter("premiersf");
590 $return_url .= "&tricol=".$this->getParameter("tricolsf");
591 // Légende du fieldset
592 $title = _("Objet");
593 /*Requête qui récupère les services qui sont dans des thématiques*/
594 $sql =
595 "SELECT
596 ser_cat.service_categorie, ser_cat.libelle AS them_lib,
597 ser.service, ser.libelle AS ser_lib, ser.consultation_papier
598 FROM
599 ".DB_PREFIXE."lien_service_service_categorie lie,
600 ".DB_PREFIXE."service_categorie ser_cat,
601 ".DB_PREFIXE."service ser
602 WHERE
603 ser_cat.service_categorie = lie.service_categorie AND
604 ser.service = lie.service AND
605 (
606 (ser.om_validite_debut IS NULL
607 AND (ser.om_validite_fin IS NULL
608 OR ser.om_validite_fin > CURRENT_DATE))
609 OR
610 (ser.om_validite_debut <= CURRENT_DATE
611 AND (ser.om_validite_fin IS NULL
612 OR ser.om_validite_fin > CURRENT_DATE))
613 )
614 ORDER BY them_lib, ser_lib
615 ";
616
617 $res = $this->f->db->query($sql);
618 $this->f->addToLog(
619 "app/consultation_multiple.php: db->query(\"".$sql."\")", VERBOSE_MODE
620 );
621 $this->f->isDatabaseError($res);
622
623 $temp_ser_cat = 0;
624 $liste_gauche = "";
625
626 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
627 $name = $row['service_categorie'].'_'.
628 $row['service'].'_'.
629 (($row['consultation_papier'] == '' || $row['consultation_papier'] == 'f' ) ? '0' : '1' ).'_';
630 // On change de thématique, donc rajoute le nom de la thématique
631 if ( $temp_ser_cat != $row['service_categorie'] ){
632
633 $temp_ser_cat = $row['service_categorie'];
634 $liste_gauche .= '
635 <div id="them_'.$row['service_categorie'].'" class="liste_gauche_them" >'.
636 $row['them_lib'].
637 '</div>
638 <div
639 class="liste_gauche_service t'.$name.'"
640 id="t'.$name.'" >
641 '.$row['ser_lib'].'
642 <input class="t'.$name.'" type="checkbox" '.(($row['consultation_papier'] == '' || $row['consultation_papier'] == 'f' ) ? '' : 'checked="checked"' ).'/>
643 </div>
644 ';
645 }
646
647 /*On est dans la même thématique*/
648 else {
649
650 $liste_gauche .= '
651 <div
652 class="liste_gauche_service t'.$name.'"
653 id="t'.$name.'" >
654 '.$row['ser_lib'].'
655 <input class="t'.$name.'" type="checkbox" '.(($row['consultation_papier'] == '' || $row['consultation_papier'] == 'f' ) ? '' : 'checked="checked"' ).'/>
656 </div>
657 ';
658 }
659
660 }
661
662 /*Requête qui récupère les services qui ne sont pas dans une thématique*/
663 $sql =
664 "SELECT service, libelle, consultation_papier
665 FROM ".DB_PREFIXE."service
666 WHERE service NOT IN
667 (
668 SELECT service
669 FROM ".DB_PREFIXE."lien_service_service_categorie
670 )
671 AND
672 (
673 om_validite_fin <= CURRENT_DATE OR
674 om_validite_fin IS NULL
675 )
676 ";
677
678 $res = $this->f->db->query($sql);
679 $this->f->isDatabaseError($res);
680
681 if ($res->numrows() > 0) {
682 $liste_gauche .= '
683 <div id="them_0" class="liste_gauche_them">Autres</div>';
684 }
685
686 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
687
688 /*Ajout de tous les services qui n'ont pas de thématique*/
689 $name = '0_'.
690 $row['service'].'_'.
691 (($row['consultation_papier'] == '' || $row['consultation_papier'] == 'f' ) ? '0' : '1' ).'_';
692 $liste_gauche .= '
693 <div
694 class="liste_gauche_service t'.$name.'"
695 id="t'.$name.'" >
696 '.$row['libelle'].'&nbsp;
697 <input class="t'.$name.'" type="checkbox" '.(($row['consultation_papier'] == '' || $row['consultation_papier'] == 'f' ) ? '' : 'checked="checked"' ).'/>
698 </div>
699 ';
700 }
701
702 /*Affichage du formulaire*/
703 echo "\n<!-- ########## START DBFORM ########## -->\n";
704 echo "<form";
705 echo " method=\"post\"";
706 echo " name=\"f2\"";
707 echo " action=\"\"";
708 echo " id=\"form_val\"";
709 //echo " onsubmit=\"ajaxIt('consultation', '');return false;\"";
710
711 //echo " onsubmit=\"affichersform('".$this->getParameter("objsf")."', '".$datasubmit."', this);\"";
712 echo ">\n";
713 echo '<div class="formEntete ui-corner-all">';
714 echo "<div>";
715 echo '<div class="bloc">';
716 echo "<fieldset class='cadre ui-corner-all ui-widget-content'>\n";
717 echo "\t<legend class='ui-corner-all ui-widget-content ui-state-active'>".
718 _("Consultation par thematique ")."</legend>";
719 echo "<div class='fieldsetContent' style='width:100%'>";
720 echo '<div class="field-ser-them field-type-hiddenstatic">';
721 echo '<div class="form-libelle">';
722 echo '<label class="libelle-dossier" for="dossier">';
723 echo _('dossier');
724 echo '<span class="not-null-tag">*</span>';
725 echo '</label>';
726 echo '</div>';
727 echo '<div class="form-content">';
728 echo '<input class="champFormulaire" type="hidden" value="'.$this->getParameter("idxformulaire").'" name="dossier"/>';
729 echo $this->getParameter("idxformulaire");
730 echo '</div>';
731 echo '</div>';
732 /*Code du nouveau champ*/
733 echo '<div class="field-ser-them ser-them">';
734 echo '<div class="list-ser-them">';
735 echo $liste_gauche;
736 echo '</div>';
737 echo '<div class="button-ser-them">';
738 echo '<ul>';
739 echo '<li>';
740 echo '<input type="button" value="'._("Ajouter").' >>" id="add-ser-them"/>';
741 echo '</li>';
742 echo '<li>';
743 echo '<input type="button" value="<< '._("Supprimer").'" id="del-ser-them"/>';
744 echo '</li>';
745 echo '</ul>';
746 echo '</div>';
747 echo '<div class="list-sel-ser-them">';
748 echo '<div class=\'row row_title\'>';
749 echo '<div class=\'cell1 liste_droite_title list-sel-ser-them-title\'>'._('Service a consulter').'</div>';
750 echo '<div class=\'cell2 liste_droite_title list-sel-ser-them-title\'>'._('Version papier').'</div>';
751 echo '</div>';
752 echo '</div>';
753 echo '</div>';
754 /* -- FIN --*/
755 echo '<div class="field-ser-them field-type-date2">';
756 echo '<div class="form-libelle">';
757 echo '<label class="libelle-date_envoi" for="date_envoi">';
758 echo _('date_envoi');
759 echo '<span class="not-null-tag">*</span>';
760 echo '</label>';
761 echo '</div>';
762 echo '<div class="form-content">';
763 echo '<input id="date_envoi" class="champFormulaire datepicker"
764 type="text" onkeyup="" onchange="fdate(this)"
765 maxlength="10" size="12" value="'.date("d/m/Y").'"
766 name="date_envoi">';
767 echo '</div>';
768 echo '</div>';
769 echo "</div>";
770 echo "</fieldset>";
771 echo '</div>';
772 echo '</div>';
773 echo '</div>';
774 echo '<div class="formControls">';
775
776 echo '<div class="formControls">';
777 echo "<input class=\"om-button ui-button ui-widget ui-state-default ui-corner-all\"
778 type=\"button\"
779
780 value=\"Ajouter le(s) enregistrement(s) de la table : 'Consultation'\"
781 id=\"button_val\">";
782 $this->retoursousformulaire(
783 $this->getParameter("idxformulaire"),
784 $this->getParameter("retourformulaire"),
785 null,
786 $this->getParameter("objsf"),
787 $this->getParameter("premiersf"),
788 $this->getParameter("tricolsf"),
789 $this->getParameter("validation"),
790 $this->getParameter("idx"),
791 $this->getParameter("maj"),
792 $this->getParameter("retour")
793 );
794 echo '</div>';
795 echo '</div>';
796 echo '</form>';
797
798 echo "
799 <script language='javascript' type='text/javascript'>
800 $(function(){
801 changeActionVal('');
802 /*
803 Sélectionne tous les services d'un thème au clique sur celui ci.
804 */
805 $('.liste_gauche_them').click(
806 function(){
807
808 var id = $(this).attr('id').split('_')[1];
809 var numSer = 0;
810 var numSerWithClass = 0;
811
812 $('.list-ser-them div').each(
813 function() {
814
815 if ( $(this).attr('id').indexOf('them') == -1 &&
816 $(this).attr('id').indexOf(id) == 1 &&
817 $(this).hasClass('liste_gauche_service_selected') )
818
819 numSerWithClass++;
820
821 if ( $(this).attr('id').indexOf('them') == -1 &&
822 $(this).attr('id').indexOf(id) == 1 )
823
824 numSer++;
825 }
826 );
827
828 if ( numSerWithClass < numSer && numSerWithClass >= 0 ){
829
830 $('.list-ser-them div').each(
831 function() {
832
833 if ( $(this).attr('id').indexOf('them') == -1 &&
834 $(this).attr('id').indexOf(id) == 1 &&
835 !$(this).hasClass('liste_gauche_service_selected') )
836
837 $(this).addClass('liste_gauche_service_selected');
838 }
839 );
840 }
841
842 else {
843
844 $('.list-ser-them div').each(
845 function() {
846
847 if ( $(this).attr('id').indexOf('them') == -1 &&
848 $(this).attr('id').indexOf(id) == 1 &&
849 $(this).hasClass('liste_gauche_service_selected') )
850
851 $(this).removeClass('liste_gauche_service_selected');
852 }
853 );
854 }
855 }
856 );
857
858 /*
859 Change la class CSS d'un service sur lequel on clique dans la liste de gauche.
860 */
861 $('.liste_gauche_service').click(
862 function(){
863 $(this).toggleClass('liste_gauche_service_selected');
864 }
865 );
866
867 /*
868 Change la class CSS d'un service sur lequel on clique dans la liste de droite.
869 */
870 $('.field-ser-them').on(
871 'click',
872 '.cell1',
873 function(){
874 if ( !$(this).hasClass('liste_droite_title') )
875 $(this).parent().toggleClass('liste_droite_service_selected');
876 }
877 );
878
879 $('.liste_droite_service input[type=checkbox]').live(
880 'click',
881 'input[type=checkbox]',
882 function(){
883
884 old_id = $(this).attr('class');
885
886 tab_don = old_id.split('_');
887
888 new_id = tab_don[0] + '_' + tab_don[1] + '_' + ((tab_don[2] == 0 ) ? 1 : 0 ) + '_';
889
890 changeOneData( ';' + tab_don[1] + '_' + tab_don[2], ';' + tab_don[1] + '_' + ((tab_don[2] == 0) ? 1 : 0) );
891 $('div[class=\"' + old_id + '\"]').attr('class', new_id);
892 $(this).attr('class', new_id);
893
894 }
895 );
896
897 $('#date_envoi').change(
898 function (){
899
900 var listServ = new Array();
901 var data = '';
902
903 $('.liste_gauche_service_selected').each(
904 function(i) {
905
906 var name = $(this).attr('name');
907
908 if ( listServ.length > 0 && listServ.indexOf(name.split('_')[1]) != -1 )
909 return;
910 listServ[i] = name.split('_')[1];
911 data += ';' + name.split('_')[1] + '_' + name.split('_')[2] ;
912
913 }
914 );
915
916 changeActionVal(data);
917 }
918 );
919
920 /*
921 Passe les services sélectionnés dans la liste de gauche dans celle de droite.
922 */
923 $('#add-ser-them').click(
924 function() {
925
926 changeDataLeftColumn();
927 }
928 );
929
930 /*
931 Passe les services sélectionnés dans la liste de droite dans celle de gauche.
932 */
933 $('#del-ser-them').click(
934 function() {
935
936 var data = '';
937
938 //Supprime les éléments de la liste de droite
939 $('.liste_droite_service_selected').each(
940 function() {
941
942 var name = $('#'+ $(this).attr('id') + ' .cell1 div').attr('name');
943
944 manageListServ('.list-ser-them div', name, 1);
945
946 $(this).remove();
947 }
948 );
949
950 //Change les valeurs qui vont être renvoyées à la validation du formulaire
951 $('.liste_droite_service').each(
952 function(){
953
954 var name = $('#'+ $(this).attr('id') + ' .cell1 div').attr('name');
955 data += ';' + name.split('_')[1] + '_' + name.split('_')[2] ;
956 }
957 );
958
959 changeActionVal(data);
960 }
961 );
962 });
963
964 /*
965 Vérifie que l'objet n'est pas une thématique et que son identifiant correspond.
966 */
967 function isNotthemIsOneServ( objet, id ){
968 return ( $(objet).attr('id').indexOf('them') == -1 &&
969 $(objet).attr('id').indexOf('_' + id.split('_')[1] + '_') != -1 );
970 }
971
972 /*
973 Affiche ou cache un élément qui n'est pas une thématique et dont son identifiant correspond.
974 */
975 function manageListServ( objet , name, type){
976
977 $(objet).each(
978 function() {
979
980 if ( isNotthemIsOneServ(this, name) ){
981 if ( type == 0 )
982
983 $(this).hide() ;
984
985 else {
986
987 if ( $(this).hasClass('liste_gauche_service_selected') )
988
989 $(this).toggleClass('liste_gauche_service_selected');
990
991 $(this).show() ;
992
993 }
994 }
995 }
996 );
997 }
998
999 /*
1000 Change les actions qui sont réalisées lors de la soumission du formulaire
1001 */
1002 function changeActionVal(data){
1003 date = $('#date_envoi').val();
1004
1005
1006
1007 $('#button_val').attr(
1008 'onclick',
1009 'if ( $(\'.liste_gauche_service_selected\').length > 0 && $(\'#date_envoi\').val() != \'\' ) { messageIt(\'consultation\', \'".html_entity_decode($datasubmit)."&data='+data+'&date_envoi='+date+'\',true);' +
1010 'messageIt(\'consultation\', \'".html_entity_decode($return_url)."\',false);} else alert(\'Veuillez choisir au moins un service et une date d envoi\');'
1011
1012 );
1013
1014 }
1015
1016 /*
1017 Change les actions qui sont réalisées lors de la soumission du formulaire
1018 */
1019 function changeOneData( oldData, newData) {
1020
1021 date = $('#date_envoi').val();
1022
1023 $('#button_val').attr(
1024 'onclick',
1025 $('#button_val').attr('onclick').replace(oldData,newData)
1026 );
1027
1028 }
1029
1030 function changeDataLeftColumn(){
1031
1032 $('.list-sel-ser-them').empty();
1033 $('.list-sel-ser-them').html(
1034 '<div class=\"row row_title\">' +
1035 '<div class=\"cell1 liste_droite_title list-sel-ser-them-title\">"._("Service a consulter")."</div>' +
1036 '<div class=\"cell2 liste_droite_title list-sel-ser-them-title\">"._("Version papier")."</div>' +
1037 '</div>'
1038 );
1039
1040 var listServ = new Array();
1041 var data = '';
1042
1043 $('.liste_gauche_service_selected').each(
1044 function(i) {
1045
1046 var id = $(this).attr('id');
1047
1048 if ( $.inArray(id.split('_')[1], listServ) != -1 )
1049 return;
1050
1051 data += ';' + id.split('_')[1] + '_' + id.split('_')[2] ;
1052 listServ[i] = id.split('_')[1];
1053
1054 $('.list-sel-ser-them').append(
1055 '<div id=\'s' + i + '\' class=\'row liste_droite_service\'>'+
1056 '<div class=\'cell1\'>'+
1057 '<div class=\'' + $(this).attr('id') + '\' name=\'' + $(this).attr('id') + '\'>'+
1058 $(this).html().split('<')[0]+
1059 '</div>'+
1060 '</div>' +
1061 '<div class=\'cell2\'>'+
1062 '<div>'+
1063 '<input class=\'' + $(this).attr('id') + '\''+$(this).html().split('<input')[1]+
1064 '</div>'+
1065 '</div>'+
1066 '</div>'
1067 );
1068
1069 $(this).hide();
1070
1071 manageListServ('.list-ser-them div', id, 0);
1072
1073 }
1074 );
1075 changeActionVal(data);
1076 }
1077 </script>";
1078 }
1079
1080 }
1081
1082 function setValsousformulaire(&$form,$maj,$validation,$idxformulaire,$retourformulaire,$typeformulaire){
1083 // ajout du retourformulaire aux attributs de l'objet
1084 $this->retourformulaire = $retourformulaire;
1085 if ($validation==0) {
1086 if ($maj == 0 or $maj == 40){
1087 $form->setVal("dossier", $idxformulaire);
1088 $form->setVal("date_envoi",date('d/m/Y'));
1089 }
1090 if($maj == 1 or $maj == 90 or $maj == 100) {
1091 if($this->f->isAccredited('consultation_retour_avis_suivi') OR
1092 $this->f->isAccredited('consultation_retour_avis_service')) {
1093 $form->setVal("date_retour",date('d/m/Y'));
1094 }
1095 }
1096 }
1097 }
1098
1099 function setVal(&$form, $maj, $validation, &$db) {
1100 if($maj == 1 or $maj == 90 or $maj == 100) {
1101 $form->setVal("date_retour",date('d/m/Y'));
1102 }
1103 }
1104
1105 function setvalF($val) {
1106 //
1107 parent::setValF($val);
1108 //
1109 if ($this->getParameter('maj') == 0 or $this->getParameter('maj') == 40) {
1110 //
1111 if (isset($this->valF["date_envoi"])) {
1112 $this->valF["date_reception"] = $this->valF["date_envoi"];
1113 }
1114 //
1115 $this->valF["lu"] = true;
1116 }
1117
1118 // Si un retour d'avis est modifie on passe "lu" a false
1119 if(($this->getParameter('maj')==90 or $this->getParameter('maj')==100 ) and (
1120 $this->val[array_search("avis_consultation",$this->champs)] != $val["avis_consultation"] OR
1121 $this->val[array_search("date_retour",$this->champs)] != $val["date_retour"] OR
1122 $this->val[array_search("motivation",$this->champs)] != $val["motivation"] OR
1123 $this->val[array_search("fichier",$this->champs)] != $val["fichier"])
1124 ) {
1125 $this->valF["lu"]=false;
1126 }
1127 }
1128
1129 function setLib(&$form, $maj) {
1130 //
1131 parent::setLib($form, $maj);
1132 //
1133 $form->setLib($this->clePrimaire, _("id"));
1134 }
1135
1136 function setType(&$form,$maj) {
1137 // Appel du parent
1138 parent::setType($form,$maj);
1139 $form->setType('dossier', 'hidden');
1140 // MODE - AJOUTER
1141 if ($maj == 0) {
1142 // On cache alors tous les champs que nous ne voulons pas voir
1143 // apparaître dans le formulaire d'ajout (principalement les
1144 // informations sur le retour d'avis)
1145 $form->setType('date_retour', 'hiddendate');
1146 $form->setType('date_reception', 'hiddendate');
1147 $form->setType('date_limite', 'hiddendate');
1148 $form->setType('avis_consultation', 'hidden');
1149 $form->setType('motivation', 'hidden');
1150 $form->setType('fichier', 'hidden');
1151 $form->setType('lu', 'hidden');
1152 // On permet la modification de certains champs
1153 $form->setType('dossier_libelle', 'hiddenstatic');
1154 $form->setType('service', 'select');
1155 $form->setType('date_envoi', 'date2');
1156 }
1157 // MODE - MODIFIER
1158 if ($maj == 1) {
1159
1160 // On affiche en statique les informations qui ne sont plus
1161 // modifiables
1162 $form->setType('dossier_libelle', 'hiddenstatic');
1163 $form->setType('date_envoi', 'hiddenstaticdate');
1164 $form->setType('date_limite', 'hiddenstaticdate');
1165 $form->setType('service', 'selecthiddenstatic');
1166
1167 // La date de réception ne peut être modifiée que par un
1168 // utilisateur en ayant spécifiquement la permission
1169 if($this->f->isAccredited('consultation_modifier_date_reception')) {
1170 $form->setType('date_reception', 'date2');
1171 } else {
1172 $form->setType('date_reception', 'hiddenstaticdate');
1173 }
1174
1175 // Le marqueur lu/non lu ne peut être modifié que par un
1176 // utilisateur en ayant spécifiquement la permission
1177 if ($this->f->isAccredited('consultation_modifier_lu')) {
1178 $form->setType('lu', 'checkbox');
1179 } else {
1180 $form->setType('lu', 'hidden');
1181 }
1182
1183 // Gestion du type du widget sur le champ fichier
1184 if($this->getVal("fichier") == "" OR
1185 $this->f->isAccredited('consultation_modifier_fichier')) {
1186 // Si il n'y a jamais eu de fichier enregistré ou que
1187 // l'utilisateur a spécifiquement les droits pour modifier
1188 // un fichier déjà enregistré alors on positionne un type
1189 // de widget modifiable
1190 if ($this->retourformulaire == "demande_avis_encours"
1191 || $this->retourformulaire == "dossier_qualifier"
1192 || $this->retourformulaire == "dossier"
1193 || $this->retourformulaire == "dossier_instruction"
1194 || $this->retourformulaire == "dossier_instruction_mes_encours"
1195 || $this->retourformulaire == "dossier_instruction_tous_encours"
1196 || $this->retourformulaire == "dossier_instruction_mes_clotures"
1197 || $this->retourformulaire == "dossier_instruction_tous_clotures") {
1198 $form->setType('fichier', 'upload2');
1199 } else {
1200 $form->setType('fichier', 'upload');
1201 }
1202 } else {
1203 // Si non on affiche uniquement le nom du fichier
1204 $form->setType('fichier', 'file');
1205 }
1206
1207 }
1208 // Mode supprimer
1209 if ($maj == 2) {
1210 $form->setType('fichier', 'filestatic');
1211 }
1212 // MODE - CONSULTER
1213 if ( $maj == 3 ) {
1214 $form->setType('fichier', 'file');
1215 }
1216 // Mode - retour d'avis
1217 // Modification layout : écran de retour d'avis permettant
1218 // uniquement la saisie des trois champs : avis, motivation et fichier
1219 if ( $maj == 90 ) {
1220
1221 $form->setType("consultation", "hiddenstatic");
1222 if ($this->is_in_context_of_foreign_key("avis_consultation", $this->retourformulaire)) {
1223 $form->setType("avis_consultation", "selecthiddenstatic");
1224 } else {
1225 $form->setType("avis_consultation", "select");
1226 }
1227 $form->setType("motivation", "textarea");
1228 $form->setType('fichier', 'upload2');
1229
1230 // On cache alors tous les champs que nous ne voulons pas voir
1231 $form->setType('dossier_libelle', 'hidden');
1232 $form->setType('service', 'hidden');
1233 $form->setType('date_envoi', 'hiddendate');
1234 $form->setType('date_retour', 'hiddendate');
1235 $form->setType('date_reception', 'hiddendate');
1236 $form->setType('date_limite', 'hiddendate');
1237 $form->setType('lu', 'hidden');
1238
1239 }
1240
1241 // MODE - retour de consultation par suivi des date
1242 if ($maj == 100) {
1243 $form->setType("consultation", "hiddenstatic");
1244 $form->setType('dossier_libelle', 'hiddenstatic');
1245 $form->setType('date_envoi', 'hiddenstaticdate');
1246 $form->setType('date_limite', 'hiddenstaticdate');
1247 $form->setType('date_reception', 'hiddenstaticdate');
1248 $form->setType('service', 'selecthiddenstatic');
1249 $form->setType('date_retour', 'date');
1250 $form->setType('lu', 'hidden');
1251 $form->setType("avis_consultation", "select");
1252 $form->setType("motivation", "textarea");
1253 $form->setType('fichier', 'upload');
1254
1255 }
1256 //// On cache la clé primaire
1257 //$form->setType('consultation', 'hidden');
1258 //
1259 if ($this->getParameter("retourformulaire") == "dossier"
1260 || $this->getParameter("retourformulaire") == "dossier_instruction"
1261 || $this->getParameter("retourformulaire") == "dossier_instruction_mes_encours"
1262 || $this->getParameter("retourformulaire") == "dossier_instruction_tous_encours"
1263 || $this->getParameter("retourformulaire") == "dossier_instruction_mes_clotures"
1264 || $this->getParameter("retourformulaire") == "dossier_instruction_tous_clotures") {
1265 //
1266 $form->setType('dossier_libelle', 'hidden');
1267 }
1268
1269 $form->setType('code_barres', 'hidden');
1270
1271 //Cache les champs pour la finalisation
1272 $form->setType('om_fichier_consultation', 'hidden');
1273 $form->setType('om_final_consultation', 'hidden');
1274
1275 if($maj == 50 or $maj == 60 or $maj == 70) {
1276 foreach ($this->champs as $value) {
1277 $form->setType($value, 'hidden');
1278 }
1279 }
1280 }
1281
1282 // Cette méthode permet de calculer la date limite en fonction de la date
1283 // de réception et du délai de consultation du service consulté
1284 function calculDateLimite() {
1285 // mise a jour instruction avec evenement [return delay]
1286 if ($this->valF["date_reception"] != "") {
1287 //
1288 $sql = " select delai from ".DB_PREFIXE."service ";
1289 $sql .= " where service='".$this->valF["service"]."' ";
1290 //
1291 $delai = $this->db->getOne($sql);
1292 $this->addToLog("triggerajouter(): db->getone(\"".$sql."\")", VERBOSE_MODE);
1293 //
1294 $this->valF["date_limite"] = $this->f->mois_date($this->valF["date_reception"], $delai);
1295 //
1296 $this->addToMessage(_("delai")." ".
1297 _("retour")." ".$delai." "._("mois")." -> ".
1298 _("retour")." ".date("d/m/Y", strtotime($this->valF["date_limite"])));
1299 }
1300 }
1301
1302 // TRIGGER AVANT MODIFICATION DE DONNEES
1303 // trigger before modification data
1304 function triggerajouter($id,&$db,$val,$DEBUG) {
1305 //
1306 $this->calculDateLimite();
1307
1308 // Identifiant du type de courrier
1309 $idTypeCourrier = '12';
1310 $idCourrier = str_pad($this->valF["consultation"], 10, "0", STR_PAD_LEFT);
1311 // Code barres
1312 $this->valF["code_barres"] = $idTypeCourrier . $idCourrier;
1313 }
1314
1315 //
1316 function triggermodifier($id,&$db,$val,$DEBUG) {
1317 //
1318 $this->calculDateLimite();
1319 }
1320
1321 //
1322 function triggerajouterapres($id,&$db,$val,$DEBUG) {
1323
1324 // Verification de la demande de notif par mail
1325 $sql= "SELECT abrege, libelle, notification_email, email FROM ".DB_PREFIXE.
1326 "service WHERE service ='".$this->valF['service']."'";
1327 $res=$db->query($sql);
1328 $notif = $res->fetchrow(DB_FETCHMODE_ASSOC);
1329 if (database :: isError($sql))die($res->getMessage()."erreur ".$sql);
1330 if ($notif['notification_email']=='t') {
1331
1332 // Recuperation des infos du dossier
1333 $sql= "SELECT dossier, terrain_adresse_voie_numero, terrain_adresse_voie, terrain_adresse_code_postal, terrain_adresse_localite
1334 FROM ".DB_PREFIXE."dossier WHERE dossier ='".$this->valF['dossier']."'";
1335 $res=$db->query($sql);
1336 $dossier = $res->fetchrow(DB_FETCHMODE_ASSOC);
1337
1338 // Definition des parametres d'envoi du mail
1339 $title=_("Consultation de services : dossier no")." ".$dossier['dossier'];
1340 $corps=_("Votre service est consulte concernant le dossier no")." ".$dossier['dossier']."<br/>".
1341 _("Il concerne le terrain situe a l'adresse :")." ".$dossier['terrain_adresse_voie_numero'].
1342 " ".$dossier['terrain_adresse_voie']." ".$dossier['terrain_adresse_code_postal']." ".$dossier['terrain_adresse_localite']."<br/>".
1343 _("Vous pouvez y acceder et rendre votre avis a l'adresse")." <a href='".$this->f->getParameter('services_consultes_lien_interne').
1344 // On ajoute l'idx, s'il y a besoin
1345 ((substr($this->f->getParameter('services_consultes_lien_interne'), -5)=="&idx=")?$this->valF['consultation']:"")."'>".
1346 _("Lien interne (services VDM)")."</a> "._("ou")." <a href='".$this->f->getParameter('services_consultes_lien_externe').
1347 // On ajoute l'idx, s'il y a besoin
1348 ((substr($this->f->getParameter('services_consultes_lien_externe'), -5)=="&idx=")?$this->valF['consultation']:"")."'>".
1349 _("Lien externe (hors VDM)")."</a>";
1350 // Envoi du mail avec message de retour
1351 if($this->f->sendMail(iconv("UTF-8", "CP1252", $title), iconv("UTF-8", "CP1252", $corps), iconv("UTF-8", "CP1252", $notif['email']))) {
1352 $this->addToMessage(_("Envoi d'un mail de notification au service")." \"(".$notif['abrege'].") ".$notif["libelle"]."\"");
1353 } else {
1354 $this->addToMessage(_("L'envoi du mail de notification a echoue"));
1355 }
1356 }
1357
1358
1359 // verification si envoi vers ERP est active
1360 if ($this->f->getParameter('option_erp') === 'true') {
1361 // s'il s'agit de la consultation ERP Secu, ERP Accessibilite, ou
1362 // deenvoie un
1363 // message a ERP
1364 $dossier_erp = $this->getFromDB("SELECT erp FROM ".DB_PREFIXE.
1365 "dossier WHERE dossier = '" .$this->valF['dossier'] . "'");
1366 $dossier_nature = $this->getFromDB("SELECT dossier_autorisation_type_detaille.code FROM ".DB_PREFIXE.
1367 "dossier
1368 INNER JOIN ".DB_PREFIXE."dossier_autorisation
1369 ON dossier.dossier_autorisation=dossier_autorisation.dossier_autorisation
1370 INNER JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille
1371 ON dossier_autorisation.dossier_autorisation_type_detaille
1372 = dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
1373 WHERE dossier = '" . $this->valF['dossier'] . "'");
1374 if ($dossier_erp == 't'
1375 && substr($dossier_nature, 0, 2) == $this->f->getParameter('erp_dossier_nature_pc')) {
1376 // envoi du message "Demande d'instruction d'un dossier PC pour un ERP"
1377 if (($this->valF['service'] == $this->f->getParameter('erp_service_accessibilite')
1378 || $this->valF['service'] == $this->f->getParameter('erp_service_securite'))) {
1379 $msgenque = new MessageEnqueuer();
1380 $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
1381 $msgenque->setConsultationIdentifier($this->valF['consultation']);
1382 $return = $msgenque->enqueueMessage($msgenque::$ERP_DEMANDE_INSTRUCTION_PC);
1383 //Si une erreur s'est produite on arrête le traitement et on
1384 //retourne une erreur
1385 if ($return !== 0){
1386
1387 $this->addToMessage(_("Une erreur s'est produite lors de ".
1388 "l'envoi du message au referentiel ERP. Merci de ".
1389 "contacter votre administrateur"));
1390 //On ne valide pas le formulaire
1391 $this->addToMessage("<br/>"._("SAISIE NON ENREGISTREE")."<br/>");
1392 $this->correct = false;
1393 return false;
1394 }
1395 else {
1396 $this->addToMessage(_("Le message a ete transmis au ".
1397 "referentiel ERP."));
1398 }
1399 }
1400
1401 // envoi du message "Consultation ERP pour conformite" en cas de creation de la
1402 // consultation du service ERP Conformite
1403 if ($this->valF['service'] == $this->f->getParameter('erp_service_conformite')) {
1404 $msgenque = new MessageEnqueuer();
1405 $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
1406 $msgenque->setConsultationIdentifier($this->valF['consultation']);
1407 $return = $msgenque->enqueueMessage($msgenque::$ERP_CONSULTATION_CONFORMITE);
1408 //Si une erreur s'est produite on arrête le traitement et on
1409 //retourne une erreur
1410 if ($return !== 0){
1411
1412 $this->addToMessage(_("Une erreur s'est produite lors de ".
1413 "l'envoi du message au referentiel ERP. Merci de ".
1414 "contacter votre administrateur"));
1415 //On ne valide pas le formulaire
1416 $this->addToMessage("<br/>"._("SAISIE NON ENREGISTREE")."<br/>");
1417 $this->correct = false;
1418 return false;
1419 }
1420 else {
1421 $this->addToMessage(_("Le message a ete transmis au ".
1422 "referentiel ERP."));
1423 }
1424 }
1425 }
1426 } // fin de if($this->f->getParameter('option_erp') === 'true')
1427
1428 // Finalisation du document
1429 $this->finaliserAjouter($id);
1430 }
1431
1432 /**
1433 * Fait une requette sql pour extraire la valeur d'un champ, et retourne
1434 * cette valeur
1435 * @param string $sql La requete sql a executer
1436 * @return La valeur du champs cherche, sinon NULL. En cas d'erreur de la BD
1437 * l'execution s'arrete.
1438 */
1439 function getFromDB($sql) {
1440 //$sql = "SELECT libelle FROM ".DB_PREFIXE."dossier WHERE dossier = '" . $dossier . "'";
1441 $res = $this->db->limitquery($sql, 0, 1);
1442 $this->f->addToLog("getDossierERPSpecification(): db->limitquery(\"".
1443 str_replace(",",", ",$sql)."\", 0, 1);", VERBOSE_MODE);
1444 // Si une erreur survient on die
1445 if (database::isError($res, true)) {
1446 // Appel de la methode de recuperation des erreurs
1447 $this->erreur_db($res->getDebugInfo(), $res->getMessage(), 'instruction');
1448 }
1449 // retourne la nature du dossier
1450 while ($row =& $res->fetchRow()) {
1451 return $row[0];
1452 }
1453 // la nature n'etait pas trouve, ce qui ne devrait pas se passer
1454 return NULL;
1455
1456 }
1457
1458 // =============================================
1459 // Ajout du fielset
1460 // Add fieldset
1461 // =============================================
1462 function setLayout(&$form, $maj){
1463
1464 // Modification layout : écran de retour d'avis permettant
1465 // uniquement la saisie des trois champs : avis, motivation et fichier
1466 if ($this->f->isAccredited('consultation_consulter_autre_que_retour_avis')) {
1467
1468 //Champs sur lequel s'ouvre le fieldset
1469 $form->setBloc('dossier','D',"");
1470 $form->setFieldset('dossier','D',_('Consultation'));
1471
1472 //Champs sur lequel se ferme le fieldset
1473 $form->setFieldset('date_envoi','F','');
1474 $form->setBloc('date_envoi','F');
1475
1476 }
1477
1478 // MODE - autre que AJOUTER alors on affiche un fieldset retour
1479 // d'avis
1480 if ($maj != 0) {
1481
1482 //Champs sur lequel s'ouvre le fieldset
1483 $form->setBloc('date_reception','D',"");
1484 $form->setFieldset('date_reception','D',_('Retour d\'avis'));
1485
1486 //Champs sur lequel se ferme le fieldset
1487 $form->setFieldset('lu','F','');
1488 $form->setBloc('lu','F');
1489
1490 }
1491 }
1492
1493 /** Surcharge de la methode retour afin de retourner sur la page de saisie de
1494 * code barre si besoin
1495 **/
1496 function retour($premier = 0, $recherche = "", $tricol = "") {
1497 $params ="obj=".get_class($this);
1498 if($this->getParameter("retour")=="form") {
1499 $params .= "&amp;idx=".$this->getParameter("idx");
1500 $params .= "&amp;action=3";
1501 }
1502 $params .= "&amp;premier=".$this->getParameter("premier");
1503 $params .= "&amp;tricol=".$this->getParameter("tricol");
1504 $params .= "&amp;recherche=".$this->getParameter("recherche");
1505 $params .= "&amp;selectioncol=".$this->getParameter("selectioncol");
1506 $params .= "&amp;advs_id=".$this->getParameter("advs_id");
1507 $params .= "&amp;valide=".$this->getParameter("valide");
1508 echo "\n<a class=\"retour\" ";
1509 echo "href=\"";
1510 //
1511
1512 if($this->getParameter("retour")=="form" AND !($this->getParameter("validation")>0 AND $this->getParameter("maj")==2 AND $this->correct)) {
1513 echo "form.php?".$params;
1514 } elseif($this->getParameter("retour")=="suivi_retours_de_consultation") {
1515 echo "../app/suivi_retours_de_consultation.php";
1516 } else {
1517 echo "tab.php?".$params;
1518 }
1519 //
1520 echo "\"";
1521 echo ">";
1522 //
1523 echo _("Retour");
1524 //
1525 echo "</a>\n";
1526 }
1527
1528 /**
1529 * Surcharge du bouton retour pour popup
1530 */
1531 function retoursousformulaire($idxformulaire, $retourformulaire, $val,
1532 $objsf, $premiersf, $tricolsf, $validation,
1533 $idx, $maj, $retour) {
1534 if($retourformulaire === "demande_avis_encours") {
1535 echo "\n<a class=\"retour\" ";
1536 echo "href=\"";
1537 echo "#";
1538 echo "\" ";
1539 echo ">";
1540 //
1541 echo _("Retour");
1542 //
1543 echo "</a>\n";
1544 } else {
1545 parent::retoursousformulaire($idxformulaire, $retourformulaire, $val,
1546 $objsf, $premiersf, $tricolsf, $validation,
1547 $idx, $maj, $retour);
1548 }
1549 }
1550
1551 /**
1552 * Ajout des contraintes spécifiques pour l'ajout d'un fichier en retour de
1553 * consultation
1554 */
1555 function setSelect(&$form, $maj,&$db,$debug) {
1556 if(file_exists ("../sql/".OM_DB_PHPTYPE."/".$this->table.".form.inc.php"))
1557 include ("../sql/".OM_DB_PHPTYPE."/".$this->table.".form.inc.php");
1558 elseif(file_exists ("../sql/".OM_DB_PHPTYPE."/".$this->table.".form.inc"))
1559 include ("../sql/".OM_DB_PHPTYPE."/".$this->table.".form.inc");
1560
1561 // avis_consultation
1562 $this->init_select($form, $db, $maj, $debug, "avis_consultation",
1563 $sql_avis_consultation, $sql_avis_consultation_by_id, true);
1564
1565 // service
1566 $this->init_select($form, $db, $maj, $debug, "service",
1567 $sql_service, $sql_service_by_id, true);
1568
1569 //Seulement dans le cas d'un retour d'avis
1570 if($this->retourformulaire == "demande_avis_encours" or $this->getParameter("maj") == 100) {
1571 // avis_consultation
1572 $this->init_select($form, $db, 1, $debug, "avis_consultation",
1573 $sql_avis_consultation, $sql_avis_consultation_by_id, true);
1574
1575 //Tableau des contraintes spécifiques
1576 $params = array(
1577 "constraint" => array(
1578 "size_max" => 2,
1579 "extension" => ".pdf"
1580 ),
1581 );
1582
1583 $form->setSelect("fichier", $params);
1584 }
1585 }
1586
1587 /**
1588 * Finalisation du document lors de l'ajout d'une consultation.
1589 *
1590 * @param integer $id indentifiant de l'objet
1591 */
1592 function finaliserAjouter($id){
1593
1594 $uid = $this->file_finalizing($id);
1595
1596 //Mise à jour des données
1597 if ( $uid != '' && $uid != 'OP_FAILURE' ){
1598 // Logger
1599 $this->addToLog("finaliserAjouter() - begin", EXTRA_VERBOSE_MODE);
1600
1601 $valF = array(
1602 "om_final_consultation"=> true,
1603 "om_fichier_consultation"=>$uid
1604 );
1605
1606 // Execution de la requête de modification des donnees de l'attribut
1607 // valF de l'objet dans l'attribut table de l'objet
1608 $res = $this->db->autoExecute(DB_PREFIXE.$this->table, $valF,
1609 DB_AUTOQUERY_UPDATE, $this->getCle($id));
1610 $this->addToLog(
1611 "finaliserAjouter() : db->autoExecute(\"".DB_PREFIXE.$this->table."\", ".print_r($valF, true).", DB_AUTOQUERY_UPDATE, \"".$this->getCle($id)."\")",
1612 VERBOSE_MODE
1613 );
1614 // Si une erreur survient
1615 if (database::isError($res, true)) {
1616 $this->correct = false;
1617 // Appel de la methode de recuperation des erreurs
1618 $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
1619 return false;
1620 } else {
1621 // Log
1622 $this->addToLog(_("Requete executee"), VERBOSE_MODE);
1623 // Log
1624 $message = _("Enregistrement")."&nbsp;".$id."&nbsp;";
1625 $message .= _("de la table")."&nbsp;\"".$this->table."\"&nbsp;";
1626 $message .= "[&nbsp;".$this->db->affectedRows()."&nbsp;";
1627 $message .= _("enregistrement(s) mis a jour")."&nbsp;]";
1628 $this->addToLog($message, VERBOSE_MODE);
1629 }
1630 }
1631 }
1632
1633 /**
1634 * Finalisation du fichier.
1635 *
1636 * @param integer $id indentifiant de l'objet
1637 *
1638 * @return string uid du fichier finalisé
1639 */
1640 function file_finalizing($id){
1641 $pdf_output = $this->generate_pdf_consultation("string");
1642
1643 if(isset($this->valF["om_final_consultation"])) {
1644 $finalized = $this->valF["om_final_consultation"];
1645 } else {
1646 $finalized = $this->getVal("om_final_consultation");
1647 }
1648
1649 // Métadonnées du document
1650 $metadata = array(
1651 'filename' => 'consultation_'.$this->getVal($this->clePrimaire).'.pdf',
1652 'mimetype' => 'application/pdf',
1653 'size' => strlen($pdf_output)
1654 );
1655
1656 // Récupération des métadonnées calculées après validation
1657 $spe_metadata = $this->getMetadata("om_fichier_consultation");
1658
1659 $metadata = array_merge($metadata, $spe_metadata);
1660
1661 // Si le document a déjà été finalisé
1662 if ( $finalized != '' ){
1663
1664 // Met à jour le document mais pas son uid
1665 $uid = $this->f->storage->update(
1666 $this->getVal("om_fichier_consultation"), $pdf_output, $metadata);
1667 }
1668 // Sinon, ajoute le document et récupère son uid
1669 else {
1670
1671 // Stockage du PDF
1672 $uid = $this->f->storage->create($pdf_output, $metadata);
1673 }
1674
1675 return $uid;
1676
1677 }
1678
1679
1680 /**
1681 * TREATMENT - finalize.
1682 *
1683 * Permet de finaliser un enregistrement
1684 *
1685 * @param array $val valeurs soumises par le formulaire
1686 * @param null $dnu1 @deprecated Ancienne ressource de base de données.
1687 * @param null $dnu2 @deprecated Ancien marqueur de débogage.
1688 *
1689 * @return boolean
1690 */
1691 function finalize($val = array(), &$dnu1 = null, $dnu2 = null) {
1692
1693 //
1694 return $this->manage_finalizing("finalize", $val);
1695 }
1696
1697 /**
1698 * TREATMENT - unfinalize.
1699 *
1700 * Permet de definaliser un enregistrement
1701 *
1702 * @param array $val valeurs soumises par le formulaire
1703 * @param null $dnu1 @deprecated Ancienne ressource de base de données.
1704 * @param null $dnu2 @deprecated Ancien marqueur de débogage.
1705 *
1706 * @return boolean
1707 */
1708 function unfinalize($val = array(), &$dnu1 = null, $dnu2 = null) {
1709
1710 //
1711 return $this->manage_finalizing("unfinalize", $val);
1712 }
1713
1714
1715 /**
1716 * Finalisation des documents.
1717 *
1718 * @param string $mode finalize/unfinalize
1719 * @param array $val valeurs soumises par le formulaire
1720 */
1721 function manage_finalizing($mode = null, $val = array()) {
1722
1723 // Recuperation de la valeur de la cle primaire de l'objet
1724 $id = $this->getVal($this->clePrimaire);
1725
1726 // Si on finalise le document
1727 if ($mode == "finalize") {
1728 // Finalisation du fichier
1729 $uid = $this->file_finalizing($id);
1730 }
1731 //
1732 else {
1733
1734 //Récupération de l'uid du document finalisé
1735 $uid = $this->getVal("om_fichier_consultation");
1736
1737 //On dé-finalise avant de finaliser
1738 if ( $uid == '' || $uid == 'OP_FAILURE' ){
1739 $this->correct = false;
1740 $this->msg="";
1741 $this->addToMessage(_("Finalisation non enregistree"));
1742 $this->addToLog(
1743 _("Finalisation non enregistree")." - ".
1744 _("id consultation")." = ".$id." - ".
1745 _("uid fichier")." = ".$uid
1746 );
1747 return false;
1748 }
1749 }
1750
1751 //Mise à jour des données
1752 if ($uid != '' && $uid != 'OP_FAILURE') {
1753
1754 // Logger
1755 $this->addToLog("finaliser() - begin", EXTRA_VERBOSE_MODE);
1756
1757 foreach ($this->champs as $key => $value) {
1758 //
1759 $val[$value] = $this->val[$key];
1760 }
1761
1762 $this->setvalF($val);
1763
1764 // Verification de la validite des donnees
1765 $this->verifier($this->val, $this->db, DEBUG);
1766 // Verification du verrou
1767 $this->testverrou();
1768 // Si les verifications precedentes sont correctes, on procede a
1769 // la modification, sinon on ne fait rien et on retourne une erreur
1770 if ($this->correct) {
1771
1772 // Execution du trigger 'before' specifique au MODE 'update'
1773 $this->triggermodifier( $id, $this->db, $this->val, DEBUG);
1774
1775 //
1776 $valF = '';
1777 if($mode=="finalize") {
1778 $valF["om_final_consultation"] = true;
1779 } else {
1780 $valF["om_final_consultation"] = false;
1781 }
1782 $valF["om_fichier_consultation"] = $uid;
1783
1784 // Execution de la requête de modification des donnees de l'attribut
1785 // valF de l'objet dans l'attribut table de l'objet
1786 $res = $this->db->autoExecute(DB_PREFIXE.$this->table, $valF,
1787 DB_AUTOQUERY_UPDATE, $this->getCle($id));
1788 $this->addToLog(
1789 "finaliser() : db->autoExecute(\"".DB_PREFIXE.$this->table."\", ".print_r($valF, true).", DB_AUTOQUERY_UPDATE, \"".$this->getCle($id)."\")",
1790 VERBOSE_MODE
1791 );
1792
1793 // Si une erreur survient
1794 if (database::isError($res, true)) {
1795
1796 // Appel de la methode de recuperation des erreurs
1797 $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
1798 $this->correct = false;
1799 return false;
1800 } else {
1801
1802 // Log
1803 $this->addToLog(_("Requete executee"), VERBOSE_MODE);
1804 // Log
1805 $message = _("Enregistrement")."&nbsp;".$id."&nbsp;";
1806 $message .= _("de la table")."&nbsp;\"".$this->table."\"&nbsp;";
1807 $message .= "[&nbsp;".$this->db->affectedRows()."&nbsp;";
1808 $message .= _("enregistrement(s) mis a jour")."&nbsp;]";
1809 $this->addToLog($message, VERBOSE_MODE);
1810 // Mise en place du verrou pour ne pas finaliser plusieurs fois
1811 // le meme document
1812 $this->verrouille();
1813 // Execution du trigger 'after' specifique au MODE 'update'
1814 $this->triggermodifierapres($id, $this->db, $this->val, DEBUG);
1815
1816 if($mode == "finalize") {
1817 $etat = _('finalisation');
1818 } else {
1819 $etat = _('definalisation');
1820 }
1821 $this->msg="";
1822 $this->addToMessage(sprintf(_("La %s du document s'est effectuee avec succes."), $etat));
1823 return true;
1824 }
1825 //
1826 } else {
1827 $this->correct = false;
1828 $this->msg="";
1829 // Message d'echec (saut d'une ligne supplementaire avant le
1830 // message pour qu'il soit mis en evidence)
1831 $this->addToMessage(_("Finalisation non enregistree"));
1832 $this->addToLog(
1833 _("Finalisation non enregistree")." - ".
1834 _("id consultation")." = ".$id." - ".
1835 _("uid fichier")." = ".$uid
1836 );
1837 return false;
1838 }
1839 }
1840 // Si le document n'a pas été stocké
1841 else{
1842 $this->correct = false;
1843 $this->msg="";
1844 $this->addToMessage(_("Finalisation non enregistree"));
1845 $this->addToLog(
1846 _("Finalisation non enregistree")." - ".
1847 _("id consultation")." = ".$id." - ".
1848 _("uid fichier")." = ".$uid
1849 );
1850 return false;
1851 }
1852 }
1853
1854 /**
1855 * Permet de récupérer l'édition de la consultation.
1856 *
1857 * @param string $output type de sortie
1858 *
1859 * @return string si le type de sortie est string, le contenu du pdf est retourné.
1860 */
1861 function generate_pdf_consultation($output) {
1862 if(isset($this->valF[$this->clePrimaire])) {
1863 $id = $this->valF[$this->clePrimaire];
1864 } else {
1865 $id = $this->getVal($this->clePrimaire);
1866 }
1867
1868 // Requête qui récupère le type de consultation
1869 $sql = " SELECT id ";
1870 $sql .= " FROM ".DB_PREFIXE."service ";
1871 $sql .= " LEFT JOIN ".DB_PREFIXE."om_etat ";
1872 $sql .= " ON service.edition = om_etat.om_etat ";
1873 $sql .= " WHERE service=(";
1874 $sql .= " SELECT service ";
1875 $sql .= " FROM ".DB_PREFIXE."consultation ";
1876 $sql .= " WHERE consultation=".$id."";
1877 $sql .= ") ";
1878 $obj = $this->f->db->getone($sql);
1879 $this->f->addTolog(
1880 __FILE__." - ".__METHOD__." : db->getone(\"".$sql."\");",
1881 VERBOSE_MODE
1882 );
1883 if($this->f->isDatabaseError($obj, true)) {
1884 $this->addToMessage(_("Aucun document genere."));
1885 $this->addToMessage(_("Finalisation non enregistree"));
1886 return false;
1887 }
1888
1889 $_GET['obj'] = $obj;
1890 $_GET["output"] = $output;
1891 $f = $this->f;
1892 // Redirection vers le script d'édition pdf avec les bons paramètres
1893 include "../pdf/pdfetat.php";
1894
1895 // retour selon le paramètre
1896 if($output == "string") {
1897 return $pdf_output;
1898 }
1899 }
1900
1901 function view_consulter_pdf(){
1902 if($this->getVal("om_final_consultation") == 't') {
1903 $lien = '../spg/file.php?obj=consultation&'.
1904 'champ=om_fichier_consultation&id='.$this->getVal($this->clePrimaire);
1905 header("Location: ".$lien);
1906 } else {
1907 $this->generate_pdf_consultation("inline");
1908 }
1909 exit();
1910 }
1911 /**
1912 * Création du nom de fichier
1913 * @return string numéro de dossier d'instruction
1914 */
1915 protected function getFichierFilename() {
1916 return "consultation_avis_".$this->valF[$this->clePrimaire].".pdf";
1917 }
1918
1919 /**
1920 * Récupération du numéro de dossier d'instruction à ajouter aux métadonnées
1921 * @return string numéro de dossier d'instruction
1922 */
1923 protected function getDossier() {
1924 if(empty($this->specificMetadata)) {
1925 $this->getSpecificMetadata();
1926 }
1927 return $this->specificMetadata->dossier;
1928 }
1929 /**
1930 * Récupération la version du dossier d'instruction à ajouter aux métadonnées
1931 * @return int Version
1932 */
1933 protected function getDossierVersion() {
1934 if(empty($this->specificMetadata)) {
1935 $this->getSpecificMetadata();
1936 }
1937 return $this->specificMetadata->version;
1938 }
1939 /**
1940 * Récupération du numéro de dossier d'autorisation à ajouter aux métadonnées
1941 * @return string numéro de dossier d'autorisation
1942 */
1943 protected function getNumDemandeAutor() {
1944 if(empty($this->specificMetadata)) {
1945 $this->getSpecificMetadata();
1946 }
1947 return $this->specificMetadata->dossier_autorisation;
1948 }
1949 /**
1950 * Récupération de la date de demande initiale du dossier à ajouter aux métadonnées
1951 * @return date demande initiale
1952 */
1953 protected function getAnneemoisDemandeAutor() {
1954 if(empty($this->specificMetadata)) {
1955 $this->getSpecificMetadata();
1956 }
1957 return $this->specificMetadata->date_demande_initiale;
1958 }
1959 /**
1960 * Récupération du type de dossier d'instruction à ajouter aux métadonnées
1961 * @return string type de dossier d'instruction
1962 */
1963 protected function getTypeInstruction() {
1964 if(empty($this->specificMetadata)) {
1965 $this->getSpecificMetadata();
1966 }
1967 return $this->specificMetadata->dossier_instruction_type;
1968 }
1969 /**
1970 * Récupération du statut du dossier d'autorisation à ajouter aux métadonnées
1971 * @return string avis
1972 */
1973 protected function getStatutAutorisation() {
1974 if(empty($this->specificMetadata)) {
1975 $this->getSpecificMetadata();
1976 }
1977 return $this->specificMetadata->statut;
1978 }
1979 /**
1980 * Récupération du type de dossier d'autorisation à ajouter aux métadonnées
1981 * @return string type d'autorisation
1982 */
1983 protected function getTypeAutorisation() {
1984 if(empty($this->specificMetadata)) {
1985 $this->getSpecificMetadata();
1986 }
1987 return $this->specificMetadata->dossier_autorisation_type;
1988 }
1989 /**
1990 * Récupération de la date d'ajout de document à ajouter aux métadonnées
1991 * @return date de l'évènement
1992 */
1993 protected function getDateEvenementDocument() {
1994 return date("Y-m-d");
1995 }
1996 /**
1997 * Récupération du groupe d'instruction à ajouter aux métadonnées
1998 * @return string Groupe d'instruction
1999 */
2000 protected function getGroupeInstruction() {
2001 if(empty($this->specificMetadata)) {
2002 $this->getSpecificMetadata();
2003 }
2004 return $this->specificMetadata->groupe_instruction;
2005 }
2006 /**
2007 * Récupération du type de document à ajouter aux métadonnées
2008 * @return string Type de document
2009 */
2010 protected function getTitle() {
2011 if ($this->retourformulaire == "demande_avis_encours") {
2012 return 'Retour de consultation';
2013 } else {
2014 return 'Demande de consultation';
2015 }
2016 }
2017
2018 /**
2019 * Cette méthode permet de stocker en attribut toutes les métadonnées
2020 * nécessaire à l'ajout d'un document.
2021 */
2022 public function getSpecificMetadata() {
2023 if (isset($this->valF["dossier"]) AND $this->valF["dossier"] != "") {
2024 $dossier = $this->valF["dossier"];
2025 } else {
2026 $dossier = $this->getVal("dossier");
2027 }
2028 //Requête pour récupérer les informations essentiels sur le dossier d'instruction
2029 $sql = "SELECT dossier.dossier as dossier,
2030 dossier_autorisation.dossier_autorisation as dossier_autorisation,
2031 to_char(dossier.date_demande, 'YYYY/MM') as date_demande_initiale,
2032 dossier_instruction_type.code as dossier_instruction_type,
2033 etat_dossier_autorisation.libelle as statut,
2034 dossier_autorisation_type.code as dossier_autorisation_type,
2035 groupe.code as groupe_instruction
2036 FROM ".DB_PREFIXE."dossier
2037 LEFT JOIN ".DB_PREFIXE."dossier_instruction_type
2038 ON dossier.dossier_instruction_type = dossier_instruction_type.dossier_instruction_type
2039 LEFT JOIN ".DB_PREFIXE."dossier_autorisation
2040 ON dossier.dossier_autorisation = dossier_autorisation.dossier_autorisation
2041 LEFT JOIN ".DB_PREFIXE."etat_dossier_autorisation
2042 ON dossier_autorisation.etat_dossier_autorisation = etat_dossier_autorisation.etat_dossier_autorisation
2043 LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille
2044 ON dossier_autorisation.dossier_autorisation_type_detaille = dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
2045 LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type
2046 ON dossier_autorisation_type_detaille.dossier_autorisation_type = dossier_autorisation_type.dossier_autorisation_type
2047 LEFT JOIN ".DB_PREFIXE."groupe
2048 ON dossier_autorisation_type.groupe = groupe.groupe
2049 WHERE dossier.dossier = '".$dossier."'";
2050 $res = $this->db->query($sql);
2051 $this->f->addToLog("obj/document_numerise.class.php : db->query(".$sql.")", VERBOSE_MODE);
2052 if ( database::isError($res)){
2053 die();
2054 }
2055
2056 //Le résultat est récupéré dans un objet
2057 $row =& $res->fetchRow(DB_FETCHMODE_OBJECT);
2058
2059 //Si il y a un résultat
2060 if ($row !== null) {
2061
2062 //Génération du numéro de version
2063 $sql = "SELECT
2064 count(*)
2065 FROM
2066 ".DB_PREFIXE."dossier
2067 LEFT JOIN
2068 ".DB_PREFIXE."dossier_autorisation
2069 ON
2070 dossier_autorisation.dossier_autorisation = dossier.dossier_autorisation
2071 LEFT JOIN
2072 ".DB_PREFIXE."dossier_instruction_type
2073 ON
2074 dossier_instruction_type.dossier_instruction_type = dossier.dossier_instruction_type
2075 WHERE
2076 dossier_autorisation.dossier_autorisation = '".$row->dossier_autorisation."'
2077 AND
2078 dossier_instruction_type.code = '".$row->dossier_instruction_type."'";
2079 $row->version = $this->db->getOne($sql);
2080 $this->f->addToLog("getInfosForFoldername(): db->getOne(\"".$sql."\")", VERBOSE_MODE);
2081 if ( database::isError($row->version)){
2082 $this->f->addToError("", $row->version, $row->version);
2083 return false;
2084 }
2085
2086 //Formatage du numéro de version
2087 $row->version = str_pad($row->version, 2, "0", STR_PAD_LEFT);
2088
2089 //Alors on créé l'objet dossier_instruction
2090 $this->specificMetadata = $row;
2091
2092 }
2093 }
2094
2095 }// fin classe
2096 ?>

Properties

Name Value
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26