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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1930 - (hide annotations)
Tue May 28 12:24:39 2013 UTC (11 years, 8 months ago) by vpihour
File size: 27813 byte(s)
Finalisation des documents lors de l'ajout de nouvelles consultations

1 fraynaud 3 <?php
2     //$Id$
3     //gen openMairie le 10/02/2011 20:32
4     require_once ("../gen/obj/consultation.class.php");
5 mlimic 843 require_once("../services/outgoing/messageenqueuer.php");
6 fraynaud 3
7     class consultation extends consultation_gen {
8 nhaye 601
9 nhaye 1917 var $abstract_type = array(
10     "fichier" => "file",
11     );
12    
13 fraynaud 20 function consultation($id,&$db,$debug) {
14     $this->constructeur($id,$db,$debug);
15     }// fin constructeur
16 fmichon 943
17     // {{{ Gestion de la confidentialité des données spécifiques
18    
19     /**
20     * Surcharge pour gérer les actions disponibles dans le portlet
21     */
22     function checkAccessibility() {
23     //
24     parent::checkAccessibility();
25     // Si l'utilisateur est un intructeur qui en correspond pas à la
26     // division du dossier
27     if ($this->f->isUserInstructeur()
28     && isset($this->f->om_utilisateur["division"])
29     && $this->f->om_utilisateur["division"] != $this->getDivisionFromDossier()) {
30     //
31     $this->actions_sup = array();
32     $this->setParameter("actions", array());
33     }
34     // Si une action 'lu' est présente et que le champ lu est à true
35     // on supprime l'action
36     if (isset($this->actions_sup["lu"])
37     && isset($this->val[array_search("lu", $this->champs)])
38     && $this->val[array_search("lu", $this->champs)]== "t") {
39     unset($this->actions_sup["lu"]);
40     }
41     }
42    
43     /**
44     * Cette methode est à surcharger elle permet de tester dans chaque classe
45     * des droits des droits spécifiques en fonction des données
46     */
47     function canAccess() {
48     // Si l'utilisateur est un utilisateur de service externe
49     // on vérifie qu'il peut accéder à la consultation
50     if ($this->f->isUserServiceExt()) {
51     // On compare l'id du service de la consultation
52     // aux id des services de utilisateur connecté
53     foreach($this->f->om_utilisateur['service'] as $service) {
54     if($this->val[array_search("service",$this->champs)]===$service['service']) {
55     return true;
56     }
57     }
58 fmichon 1088 //
59     $this->f->addToLog("canAccess(): utilisateur de service sur une consultation d'un autre service", EXTRA_VERBOSE_MODE);
60 fmichon 943 return false;
61     }
62     // Si l'utilisateur est un intructeur qui ne correspond pas à la
63     // division du dossier
64     if ($this->f->isUserInstructeur()
65     && $this->f->om_utilisateur["division"] != $this->getDivisionFromDossier()
66     && $this->getParameter("maj") != 3) {
67     //
68 fmichon 1088 $this->f->addToLog("canAccess(): utilisateur instructeur sur un dossier d'une autre division", EXTRA_VERBOSE_MODE);
69 fmichon 943 return false;
70     }
71     //
72     return true;
73     }
74    
75     /**
76 fmichon 1908 * Cette variable permet de stocker le résultat de la méthode
77     * getDivisionFromDossier() afin de ne pas effectuer le recalcul à chacun de
78     * ces appels.
79     * @var string Code de la division du dossier en cours
80 fmichon 943 */
81 fmichon 1908 var $_division_from_dossier = NULL;
82    
83     /**
84     * Cette méthode permet de récupérer le code de division correspondant
85     * au dossier sur lequel on se trouve.
86     *
87     * @return string Code de la division du dossier en cours
88     */
89 fmichon 943 function getDivisionFromDossier() {
90 fmichon 1908
91     // Cette méthode peut être appelée plusieurs fois lors d'une requête.
92     // Pour éviter de refaire le traitement de recherche de la division
93     // alors on vérifie si nous ne l'avons pas déjà calculé.
94     if ($this->_division_from_dossier != NULL) {
95     // Logger
96     $this->addToLog("getDivisionFromDossier(): retour de la valeur déjà calculée - '".$this->_division_from_dossier."'", EXTRA_VERBOSE_MODE);
97     // On retourne la valeur déjà calculée
98     return $this->_division_from_dossier;
99     }
100    
101     // Par défaut, on définit la valeur du dossier à NULL
102     $dossier = NULL;
103     // Test sur le mode et le contexte du formulaire
104     if ($this->getParameter("maj") == 0
105     && ($this->getParameter("retourformulaire") == "dossier"
106     || $this->getParameter("retourformulaire") == "dossier_instruction"
107     || $this->getParameter("retourformulaire") == "dossier_instruction_mes_encours"
108     || $this->getParameter("retourformulaire") == "dossier_instruction_tous_encours"
109     || $this->getParameter("retourformulaire") == "dossier_instruction_mes_clotures"
110     || $this->getParameter("retourformulaire") == "dossier_instruction_tous_clotures")) {
111     // Si on se trouve en mode AJOUT (seul mode où l'enregistrement
112     // n'existe pas en base de données) ET que nous nous trouvons
113     // dans le contexte d'un dossier d'instruction alors on récupère
114     // le numéro de dossier depuis le paramètre 'idxformulaire'
115     $dossier = $this->getParameter("idxformulaire");
116 fmichon 1088 } else {
117 fmichon 1908 // Sinon on récupère le numéro de dossier dans le champs dossier de
118     // l'enregistrement (en base de données)
119     $dossier = $this->getVal("dossier");
120 fmichon 943 }
121 fmichon 1088
122 fmichon 1908 // On appelle la méthode de la classe utils qui renvoi le code de la
123     // division d'un dossier, on la stocke pour ne pas refaire le calcul au
124     // prochain appel de cette méthode
125     $this->_division_from_dossier = $this->f->getDivisionFromDossier($dossier);
126     // Logger
127     $this->addToLog("getDivisionFromDossier(): retour de la valeur nouvellement calculée - '".$this->_division_from_dossier."'", EXTRA_VERBOSE_MODE);
128     // On retourne la valeur retournée
129     return $this->_division_from_dossier;
130    
131 fmichon 943 }
132    
133     // }}}
134    
135 fraynaud 20 function setValsousformulaire(&$form,$maj,$validation,$idxformulaire,$retourformulaire,$typeformulaire){
136 nhaye 1683 // ajout du retourformulaire aux attributs de l'objet
137     $this->retourformulaire = $retourformulaire;
138 fraynaud 20 if ($validation==0) {
139     if ($maj == 0){
140 nhaye 569 $form->setVal("dossier", $idxformulaire);
141     $form->setVal("date_envoi",date('d/m/Y'));
142 fraynaud 20 }
143 nhaye 587 if($maj == 1) {
144 nhaye 594 if($this->f->isAccredited('consultation_retour_avis_suivi') OR
145     $this->f->isAccredited('consultation_retour_avis_service')) {
146     $form->setVal("date_retour",date('d/m/Y'));
147     }
148 nhaye 587 }
149 fraynaud 20 }
150     }
151 nhaye 587
152     function setVal(&$form, $maj, $validation, &$db) {
153     if($maj == 1) {
154     $form->setVal("date_retour",date('d/m/Y'));
155     }
156     }
157 fraynaud 20
158 nhaye 561 function setvalF($val) {
159 fmichon 1730 //
160 nhaye 561 parent::setValF($val);
161 fmichon 1730 //
162     if ($this->getParameter('maj') == 0) {
163     //
164     if (isset($this->valF["date_envoi"])) {
165     $this->valF["date_reception"] = $this->valF["date_envoi"];
166     }
167     //
168 fmichon 1172 $this->valF["lu"] = true;
169 nhaye 587 }
170 nhaye 598
171 nhaye 561 // Si un retour d'avis est modifie on passe "lu" a false
172 nhaye 598 if($this->getParameter('maj')==1 AND (
173     $this->val[array_search("avis_consultation",$this->champs)] != $val["avis_consultation"] OR
174     $this->val[array_search("date_retour",$this->champs)] != $val["date_retour"] OR
175     $this->val[array_search("motivation",$this->champs)] != $val["motivation"] OR
176 nhaye 674 $this->val[array_search("fichier",$this->champs)] != $val["fichier"])
177 nhaye 598 ) {
178     $this->valF["lu"]=false;
179 nhaye 561 }
180 nhaye 675 }
181 fmichon 1730
182     function setLib(&$form, $maj) {
183     //
184     parent::setLib($form, $maj);
185     //
186     $form->setLib($this->clePrimaire, _("id"));
187     }
188    
189 fraynaud 20 function setType(&$form,$maj) {
190 fmichon 671 // Appel du parent
191 nhaye 459 parent::setType($form,$maj);
192 fmichon 671 // MODE - AJOUTER
193     if ($maj == 0) {
194     // On cache alors tous les champs que nous ne voulons pas voir
195     // apparaître dans le formulaire d'ajout (principalement les
196     // informations sur le retour d'avis)
197     $form->setType('date_retour', 'hidden');
198     $form->setType('date_reception', 'hidden');
199     $form->setType('date_limite', 'hidden');
200     $form->setType('avis_consultation', 'hidden');
201     $form->setType('motivation', 'hidden');
202     $form->setType('fichier', 'hidden');
203     $form->setType('lu', 'hidden');
204     // On permet la modification de certains champs
205     $form->setType('dossier', 'hiddenstatic');
206     $form->setType('service', 'select');
207     $form->setType('date_envoi', 'date2');
208     }
209     // MODE - MODIFIER
210     if ($maj == 1) {
211    
212     // On affiche en statique les informations qui ne sont plus
213     // modifiables
214     $form->setType('dossier', 'hiddenstatic');
215     $form->setType('date_envoi', 'hiddenstaticdate');
216     $form->setType('date_limite', 'hiddenstaticdate');
217     $form->setType('service', 'selecthiddenstatic');
218    
219     // La date de réception ne peut être modifiée que par un
220     // utilisateur en ayant spécifiquement la permission
221     if($this->f->isAccredited('consultation_modifier_date_reception')) {
222     $form->setType('date_reception', 'date2');
223     } else {
224     $form->setType('date_reception', 'hiddenstaticdate');
225     }
226    
227     // Le marqueur lu/non lu ne peut être modifié que par un
228     // utilisateur en ayant spécifiquement la permission
229     if ($this->f->isAccredited('consultation_modifier_lu')) {
230     $form->setType('lu', 'checkbox');
231     } else {
232     $form->setType('lu', 'hidden');
233     }
234    
235     // Gestion du type du widget sur le champ fichier
236 nhaye 1683 if($this->getVal("fichier") == "" OR
237 fmichon 671 $this->f->isAccredited('consultation_modifier_fichier')) {
238     // Si il n'y a jamais eu de fichier enregistré ou que
239     // l'utilisateur a spécifiquement les droits pour modifier
240     // un fichier déjà enregistré alors on positionne un type
241     // de widget modifiable
242 nhaye 1683 if($this->retourformulaire == "demande_avis_encours") {
243     $form->setType('fichier', 'upload2');
244     } else {
245     $form->setType('fichier', 'upload');
246     }
247 fmichon 671 } else {
248     // Si non on affiche uniquement le nom du fichier
249 nhaye 1683 $form->setType('fichier', 'file');
250 fmichon 671 }
251    
252     // Modification layout : écran de retour d'avis permettant
253     // uniquement la saisie des trois champs : avis, motivation et fichier
254     if (!$this->f->isAccredited('consultation_consulter_autre_que_retour_avis')) {
255    
256     // On cache alors tous les champs que nous ne voulons pas voir
257     $form->setType('dossier', 'hidden');
258     $form->setType('service', 'hidden');
259     $form->setType('date_envoi', 'hidden');
260     $form->setType('date_retour', 'hidden');
261     $form->setType('date_reception', 'hidden');
262 fraynaud 20 $form->setType('date_limite', 'hidden');
263 nhaye 561 $form->setType('lu', 'hidden');
264 fmichon 671
265 fraynaud 20 }
266 vpihour 1784
267 fraynaud 20 }
268 nhaye 1895 // Mode supprimer
269     if ($maj == 2) {
270     $form->setType('fichier', 'filestatic');
271     }
272 nhaye 674 // MODE - CONSULTER
273     if ( $maj == 3 ) {
274 nhaye 1683 $form->setType('fichier', 'file');
275 nhaye 674 }
276 fmichon 671 //// On cache la clé primaire
277     //$form->setType('consultation', 'hidden');
278 fmichon 1730 //
279     if ($this->getParameter("retourformulaire") == "dossier"
280     || $this->getParameter("retourformulaire") == "dossier_instruction"
281     || $this->getParameter("retourformulaire") == "dossier_instruction_mes_encours"
282     || $this->getParameter("retourformulaire") == "dossier_instruction_tous_encours"
283     || $this->getParameter("retourformulaire") == "dossier_instruction_mes_clotures"
284     || $this->getParameter("retourformulaire") == "dossier_instruction_tous_clotures") {
285     //
286     $form->setType('dossier', 'hidden');
287     }
288 vpihour 1784
289     $form->setType('code_barres', 'hidden');
290 vpihour 1899
291     //Cache les champs pour la finalisation
292     $form->setType('om_fichier_consultation', 'hidden');
293     $form->setType('om_final_consultation', 'hidden');
294 fraynaud 20 }
295    
296 fmichon 1170 // Cette méthode permet de calculer la date limite en fonction de la date
297     // de réception et du délai de consultation du service consulté
298     function calculDateLimite() {
299 fraynaud 20 // mise a jour instruction avec evenement [return delay]
300 fmichon 1170 if ($this->valF["date_reception"] != "") {
301     //
302     $sql = " select delai from ".DB_PREFIXE."service ";
303     $sql .= " where service='".$this->valF["service"]."' ";
304     //
305     $delai = $this->db->getOne($sql);
306     $this->addToLog("triggerajouter(): db->getone(\"".$sql."\")", VERBOSE_MODE);
307     //
308     $this->valF["date_limite"] = $this->moisdate($this->valF["date_reception"], $delai);
309     //
310 nhaye 532 $this->addToMessage(_("delai")." ".
311 fraynaud 41 _("retour")." ".$delai." "._("mois")." -> ".
312 fmichon 1170 _("retour")." ".date("d/m/Y", strtotime($this->valF["date_limite"])));
313 fraynaud 41 }
314 fraynaud 20 }
315 fmichon 1170
316     // TRIGGER AVANT MODIFICATION DE DONNEES
317     // trigger before modification data
318     function triggerajouter($id,&$db,$val,$DEBUG) {
319     //
320     $this->calculDateLimite();
321 vpihour 1784
322     // Identifiant du type de courrier
323     $idTypeCourrier = '12';
324     $idCourrier = str_pad($this->valF["consultation"], 10, "0", STR_PAD_LEFT);
325     // Code barres
326     $this->valF["code_barres"] = $idTypeCourrier . $idCourrier;
327 fmichon 1170 }
328    
329     //
330     function triggermodifier($id,&$db,$val,$DEBUG) {
331     //
332     $this->calculDateLimite();
333     }
334    
335     //
336 nhaye 532 function triggerajouterapres($id,&$db,$val,$DEBUG) {
337    
338     // Verification de la demande de notif par mail
339 fmichon 1168 $sql= "SELECT abrege, libelle, notification_email, email FROM ".DB_PREFIXE.
340 nhaye 532 "service WHERE service ='".$this->valF['service']."'";
341     $res=$db->query($sql);
342     $notif = $res->fetchrow(DB_FETCHMODE_ASSOC);
343     if (database :: isError($sql))die($res->getMessage()."erreur ".$sql);
344     if ($notif['notification_email']=='t') {
345    
346     // Recuperation des infos du dossier
347     $sql= "SELECT dossier, terrain_adresse, terrain_adresse_complement, terrain_cp, terrain_ville
348     FROM ".DB_PREFIXE."dossier WHERE dossier ='".$this->valF['dossier']."'";
349     $res=$db->query($sql);
350     $dossier = $res->fetchrow(DB_FETCHMODE_ASSOC);
351    
352     // Definition des parametres d'envoi du mail
353     $title=_("Consultation de services : dossier no")." ".$dossier['dossier'];
354     $corps=_("Votre service est consulte concernant le dossier no")." ".$dossier['dossier']."<br/>".
355     _("Il concerne le terrain situe a l'adresse :")." ".utf8_decode($dossier['terrain_adresse']).
356     " ".utf8_decode($dossier['terrain_adresse_complement'])." ".utf8_decode($dossier['terrain_cp'])." ".$dossier['terrain_ville']."<br/>".
357 fmichon 668 _("Vous pouvez y acceder et rendre votre avis a l'adresse")." <a href='".$this->f->getParameter('services_consultes_lien_interne').
358 nhaye 532 "scr/form.php?obj=consultation&action=3&idx=".$this->valF['consultation']."' >".
359 fmichon 668 _("Lien interne (services VDM)")."</a> "._("ou")." <a href='".$this->f->getParameter('services_consultes_lien_externe').
360 nhaye 532 "scr/form.php?obj=consultation&action=3&idx=".$this->valF['consultation']."' >".
361     _("Lien externe (hors VDM)")."</a>";
362     // Envoi du mail avec message de retour
363     if($this->f->sendMail($title, $corps, $notif['email'])) {
364 fmichon 1168 $this->addToMessage(_("Envoi d'un mail de notification au service")." \"(".$notif['abrege'].") ".$notif["libelle"]."\"");
365 nhaye 532 } else {
366     $this->addToMessage(_("L'envoi du mail de notification a echoue"));
367     }
368     }
369    
370 fmichon 1005
371     // verification si envoi vers ERP est active
372     if ($this->f->getParameter('option_erp') != "") {
373     // s'il s'agit de la consultation ERP Secu, ERP Accessibilite, ou
374     // deenvoie un
375     // message a ERP
376     $dossier_erp = $this->getFromDB("SELECT erp FROM ".DB_PREFIXE.
377     "dossier WHERE dossier = '" .$this->valF['dossier'] . "'");
378 nhaye 1140 $dossier_nature = $this->getFromDB("SELECT dossier_autorisation_type_detaille.code FROM ".DB_PREFIXE.
379     "dossier
380     INNER JOIN ".DB_PREFIXE."dossier_autorisation
381     ON dossier.dossier_autorisation=dossier_autorisation.dossier_autorisation
382     INNER JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille
383     ON dossier_autorisation.dossier_autorisation_type_detaille
384     = dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
385     WHERE dossier = '" . $this->valF['dossier'] . "'");
386 fmichon 1005 if ($dossier_erp == 't'
387     && substr($dossier_nature, 0, 2) == $this->f->getParameter('erp_dossier_nature_pc')) {
388     // envoi du message "Demande d'instruction d'un dossier PC pour un ERP"
389     if (($this->valF['service'] == $this->f->getParameter('erp_service_accessibilite')
390     || $this->valF['service'] == $this->f->getParameter('erp_service_securite'))) {
391     $msgenque = new MessageEnqueuer();
392     $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
393     $msgenque->setConsultationIdentifier($this->valF['consultation']);
394     $msgenque->enqueueMessage($msgenque::$ERP_DEMANDE_INSTRUCTION_PC);
395     }
396    
397     // envoi du message "Consultation ERP pour conformite" en cas de creation de la
398     // consultation du service ERP Conformite
399     if ($this->valF['service'] == $this->f->getParameter('erp_service_conformite')) {
400     $msgenque = new MessageEnqueuer();
401     $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
402     $msgenque->setConsultationIdentifier($this->valF['consultation']);
403     $msgenque->enqueueMessage($msgenque::$ERP_CONSULTATION_CONFORMITE);
404     }
405 mlimic 936 }
406 fmichon 1005 } // fin de if($this->f->getParameter('option_erp'))
407 vpihour 1930
408     // Finalisation du document
409     $this->finaliserAjouter();
410 nhaye 532 }
411 mlimic 843
412 mlimic 936 /**
413     * Fait une requette sql pour extraire la valeur d'un champ, et retourne
414     * cette valeur
415     * @param string $sql La requete sql a executer
416     * @return La valeur du champs cherche, sinon NULL. En cas d'erreur de la BD
417     * l'execution s'arrete.
418     */
419     function getFromDB($sql) {
420     //$sql = "SELECT libelle FROM ".DB_PREFIXE."dossier WHERE dossier = '" . $dossier . "'";
421     $res = $this->db->limitquery($sql, 0, 1);
422 vpihour 1777 $this->f->addToLog("getDossierERPSpecification(): db->limitquery(\"".
423 mlimic 936 str_replace(",",", ",$sql)."\", 0, 1);", VERBOSE_MODE);
424     // Si une erreur survient on die
425     if (database::isError($res, true)) {
426     // Appel de la methode de recuperation des erreurs
427     $this->erreur_db($res->getDebugInfo(), $res->getMessage(), 'instruction');
428     }
429     // retourne la nature du dossier
430     while ($row =& $res->fetchRow()) {
431     return $row[0];
432     }
433     // la nature n'etait pas trouve, ce qui ne devrait pas se passer
434     return NULL;
435    
436     }
437    
438 fraynaud 20 // =============================================
439     // calcul de date avec ajout de mois (delais)
440     // [add months (delay) and calculation final date]
441     // limite ? => voir fonction instruction
442     // =============================================
443     function moisdate($date,$delaimois) {
444     // rajout de mois à une date (moins de 12)
445     $temp = explode("-" , $date);
446     $jour = (int) $temp[2];
447     $mois = (int) $temp[1];
448     $annee = (int) $temp[0];
449     $mois=$mois+$delaimois;
450     // calcul mois annee
451     if($mois>12){
452     $mois=$mois-12;
453     $annee=$annee+1;
454     }
455     // Calcul du nombre de jours dans le mois sélectionné
456     switch($mois) {
457     case "2":
458     if ($annee % 4 == 0 && $annee % 100 != 0 || $annee % 400 == 0)
459     $jourmax = 29;
460     else
461     $jourmax = 28;
462     break;
463     case "4":
464     case "6":
465     case "9":
466     case "11":
467     $jourmax = 30;
468     break;
469     default:
470     $jourmax = 31;
471     }
472     if ($jour > $jourmax)
473     $jour = $jourmax;
474     return $annee."-".$mois."-".$jour ;
475     }
476 vpihour 497
477 nhaye 569 // =============================================
478 vpihour 497 // Ajout du fielset
479     // Add fieldset
480     // =============================================
481 nhaye 569 function setLayout(&$form, $maj){
482 fmichon 671
483     // Modification layout : écran de retour d'avis permettant
484     // uniquement la saisie des trois champs : avis, motivation et fichier
485     if ($this->f->isAccredited('consultation_consulter_autre_que_retour_avis')) {
486    
487 nhaye 569 //Champs sur lequel s'ouvre le fieldset
488     $form->setBloc('dossier','D',"");
489     $form->setFieldset('dossier','D',_('Consultation'));
490    
491     //Champs sur lequel se ferme le fieldset
492     $form->setFieldset('date_envoi','F','');
493     $form->setBloc('date_envoi','F');
494 fmichon 671
495 nhaye 569 }
496 fmichon 671
497     // MODE - autre que AJOUTER alors on affiche un fieldset retour
498     // d'avis
499     if ($maj != 0) {
500    
501 nhaye 569 //Champs sur lequel s'ouvre le fieldset
502     $form->setBloc('date_reception','D',"");
503     $form->setFieldset('date_reception','D',_('Retour d\'avis'));
504 fmichon 671
505 nhaye 569 //Champs sur lequel se ferme le fieldset
506     $form->setFieldset('lu','F','');
507     $form->setBloc('lu','F');
508 fmichon 671
509 nhaye 569 }
510     }
511 nhaye 595
512     /** Surcharge de la methode retour afin de retourner sur la page de saisie de
513     * code barre si besoin
514     **/
515     function retour($premier = 0, $recherche = "", $tricol = "") {
516     $params ="obj=".get_class($this);
517     if($this->getParameter("retour")=="form") {
518     $params .= "&amp;idx=".$this->getParameter("idx");
519     $params .= "&amp;action=3";
520     }
521     $params .= "&amp;premier=".$this->getParameter("premier");
522     $params .= "&amp;tricol=".$this->getParameter("tricol");
523     $params .= "&amp;recherche=".$this->getParameter("recherche");
524     $params .= "&amp;selectioncol=".$this->getParameter("selectioncol");
525     $params .= "&amp;advs_id=".$this->getParameter("advs_id");
526     $params .= "&amp;valide=".$this->getParameter("valide");
527     echo "\n<a class=\"retour\" ";
528     echo "href=\"";
529     //
530    
531     if($this->getParameter("retour")=="form" AND !($this->getParameter("validation")>0 AND $this->getParameter("maj")==2 AND $this->correct)) {
532     echo "form.php?".$params;
533 fmichon 1666 } elseif($this->getParameter("retour")=="suivi_retours_de_consultation") {
534     echo "../app/suivi_retours_de_consultation.php";
535 nhaye 595 } else {
536     echo "tab.php?".$params;
537     }
538     //
539     echo "\"";
540     echo ">";
541     //
542     echo _("Retour");
543     //
544     echo "</a>\n";
545     }
546 fmichon 938
547     /**
548 nhaye 802 * Surcharge du bouton retour pour popup
549     */
550     function retoursousformulaire($idxformulaire, $retourformulaire, $val,
551     $objsf, $premiersf, $tricolsf, $validation,
552     $idx, $maj, $retour) {
553     if($retourformulaire === "demande_avis_encours") {
554     echo "\n<a class=\"retour\" ";
555     echo "href=\"";
556     echo "#";
557     echo "\" ";
558     echo ">";
559     //
560     echo _("Retour");
561     //
562     echo "</a>\n";
563     } else {
564     parent::retoursousformulaire($idxformulaire, $retourformulaire, $val,
565     $objsf, $premiersf, $tricolsf, $validation,
566     $idx, $maj, $retour);
567     }
568     }
569 vpihour 1784
570 vpihour 1881 /**
571     * Ajout des contraintes spécifiques pour l'ajout d'un fichier en retour de
572     * consultation
573     */
574     function setSelect(&$form, $maj,&$db,$debug) {
575     parent::setSelect($form, $maj,$db,$debug);
576    
577     //Seulement dans le cas d'un retour d'avis
578     if($this->retourformulaire == "demande_avis_encours") {
579    
580     //Tableau des contraintes spécifiques
581     $params = array(
582     "constraint" => array(
583     "size_max" => 2,
584     "extension" => ".pdf"
585     ),
586     "metadata" => array()
587     );
588    
589     $form->setSelect("fichier", $params);
590     }
591     }
592 vpihour 1930
593     /**
594     * Finalisation du document lors de l'ajout d'une consultation
595     *
596     */
597     function finaliserAjouter(){
598    
599     //Génération du PDF
600     $_GET['output'] = "string";
601     $_GET['obj'] = "consultation";
602     $_GET['idx'] = $this->valF[$this->clePrimaire];
603     $f = $this->f;
604     include '../app/pdf_consultation.php';
605    
606     //Métadonnées du document
607     $metadata = array(
608     'filename' => 'consultation_'.$idx.'.pdf',
609     'mimetype' => 'application/pdf',
610     'size' => strlen($pdf_output)
611     );
612    
613     //On ajoute le document et on récupère son uid
614     $uid = $this->f->storage->create($pdf_output, $metadata);
615    
616     //Mise à jour des données
617     if ( $uid != '' ){
618     // Logger
619     $this->addToLog("finaliserAjouter() - begin", EXTRA_VERBOSE_MODE);
620    
621     $valF = array(
622     "om_final_consultation"=> TRUE,
623     "om_fichier_consultation"=>$uid);
624    
625     // Execution de la requête de modification des donnees de l'attribut
626     // valF de l'objet dans l'attribut table de l'objet
627     $res = $this->db->autoExecute(DB_PREFIXE.$this->table, $valF,
628     DB_AUTOQUERY_UPDATE, $this->getCle($idx));
629     $this->addToLog("finaliserAjouter() : db->autoExecute(\"".DB_PREFIXE.$this->table."\", ".print_r($valF, true).", DB_AUTOQUERY_UPDATE, \"".$this->getCle($idx)."\")", VERBOSE_MODE);
630     // Si une erreur survient
631     if (database::isError($res)) {
632     // Appel de la methode de recuperation des erreurs
633     $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
634     } else {
635     // Log
636     $this->addToLog(_("Requete executee"), VERBOSE_MODE);
637     // Log
638     $message = _("Enregistrement")."&nbsp;".$idx."&nbsp;";
639     $message .= _("de la table")."&nbsp;\"".$this->table."\"&nbsp;";
640     $message .= "[&nbsp;".$this->db->affectedRows()."&nbsp;";
641     $message .= _("enregistrement(s) mis a jour")."&nbsp;]";
642     $this->addToLog($message, VERBOSE_MODE);
643     }
644     }
645     }
646 fraynaud 3 }// fin classe
647 nhaye 509 ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26