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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 555 by vpihour, Tue Oct 30 14:05:14 2012 UTC revision 943 by fmichon, Fri Nov 30 15:25:27 2012 UTC
# Line 2  Line 2 
2  //$Id$  //$Id$
3  //gen openMairie le 10/02/2011 20:32  //gen openMairie le 10/02/2011 20:32
4  require_once ("../gen/obj/consultation.class.php");  require_once ("../gen/obj/consultation.class.php");
5    require_once("../services/outgoing/messageenqueuer.php");
6    
7  class consultation extends consultation_gen {  class consultation extends consultation_gen {
8          var $maj;  
9      function consultation($id,&$db,$debug) {      function consultation($id,&$db,$debug) {
10          $this->constructeur($id,$db,$debug);          $this->constructeur($id,$db,$debug);
11      }// fin constructeur      }// fin constructeur
12        
13        // {{{ Gestion de la confidentialité des données spécifiques
14    
15        /**
16         * Surcharge pour gérer les actions disponibles dans le portlet
17         */
18        function checkAccessibility() {
19            //
20            parent::checkAccessibility();
21            // Si l'utilisateur est un intructeur qui en correspond pas à la
22            // division du dossier
23            if ($this->f->isUserInstructeur()
24                && isset($this->f->om_utilisateur["division"])
25                && $this->f->om_utilisateur["division"] != $this->getDivisionFromDossier()) {
26                //
27                $this->actions_sup = array();
28                $this->setParameter("actions", array());
29            }
30            // Si une action 'lu' est présente et que le champ lu est à true
31            // on supprime l'action
32            if (isset($this->actions_sup["lu"])
33                && isset($this->val[array_search("lu", $this->champs)])
34                && $this->val[array_search("lu", $this->champs)]== "t") {
35                unset($this->actions_sup["lu"]);
36            }
37        }
38    
39        /**
40         * Cette methode est à surcharger elle permet de tester dans chaque classe
41         * des droits des droits spécifiques en fonction des données
42         */
43        function canAccess() {
44            // Si l'utilisateur est un utilisateur de service externe
45            // on vérifie qu'il peut accéder à la consultation
46            if ($this->f->isUserServiceExt()) {
47                // On compare l'id du service de la consultation
48                // aux id des services de utilisateur connecté
49                foreach($this->f->om_utilisateur['service'] as $service) {
50                    if($this->val[array_search("service",$this->champs)]===$service['service']) {
51                        return true;
52                    }
53                }
54                return false;
55            }
56            // Si l'utilisateur est un intructeur qui ne correspond pas à la
57            // division du dossier
58            if ($this->f->isUserInstructeur()
59                && $this->f->om_utilisateur["division"] != $this->getDivisionFromDossier()
60                && $this->getParameter("maj") != 3) {
61                //
62                return false;
63            }
64            //
65            return true;
66        }
67    
68        /**
69         * Cette méthode permet de récupérer la division d'un dossier
70         */
71        function getDivisionFromDossier() {
72            //
73            if (!isset($this->val[array_search("dossier", $this->champs)])) {
74                return NULL;
75            }
76            //
77            $sql = "select division from ".DB_PREFIXE."dossier ";
78            $sql .= " where dossier='".$this->val[array_search("dossier", $this->champs)]."'";
79            //
80            $division = $this->db->getOne($sql);
81            $this->addToLog("getDivisionFromDossier(): db->getone(\"".$sql."\")", VERBOSE_MODE);
82            database::isError($division);
83            //
84            return $division;
85        }
86    
87        // }}}
88    
89      function setValsousformulaire(&$form,$maj,$validation,$idxformulaire,$retourformulaire,$typeformulaire){      function setValsousformulaire(&$form,$maj,$validation,$idxformulaire,$retourformulaire,$typeformulaire){
90          if ($validation==0) {          if ($validation==0) {
91              if ($maj == 0){              if ($maj == 0){
92                  $form->setVal("dossier", $idxformulaire);                  $form->setVal("dossier", $idxformulaire);
93                                  $form->setVal("date_envoi",date('d/m/Y'));                  $form->setVal("date_envoi",date('d/m/Y'));
94                }
95                if($maj == 1) {
96                    if($this->f->isAccredited('consultation_retour_avis_suivi') OR
97                        $this->f->isAccredited('consultation_retour_avis_service')) {
98                        $form->setVal("date_retour",date('d/m/Y'));
99                    }
100              }              }
101                          else          }
102                                  if ( $maj == 1 )      }
103                                          $form->setVal("date_retour",date('d/m/Y'));      
104        function setVal(&$form, $maj, $validation, &$db) {
105            if($maj == 1) {
106                 $form->setVal("date_retour",date('d/m/Y'));
107          }          }
108      }      }
109    
110        function setvalF($val) {
111            parent::setValF($val);
112            if($this->getParameter('maj')==0) {
113                $this->valF["date_reception"]=$this->valF["date_envoi"];
114            }
115    
116            // Si un retour d'avis est modifie on passe "lu" a false
117            if($this->getParameter('maj')==1 AND (
118                $this->val[array_search("avis_consultation",$this->champs)] != $val["avis_consultation"] OR
119                $this->val[array_search("date_retour",$this->champs)] != $val["date_retour"] OR
120                $this->val[array_search("motivation",$this->champs)] != $val["motivation"] OR
121                $this->val[array_search("fichier",$this->champs)] != $val["fichier"])
122            ) {
123                $this->valF["lu"]=false;
124            }
125        }
126        
127        function verifier($val, &$db, $DEBUG) {
128            parent::verifier($val, $db, $DEBUG);
129            // Si le fichier envoye est different de l'existant
130            if (isset($this->val[array_search("fichier",$this->champs)])
131                && $this->val[array_search("fichier",$this->champs)] != $val["fichier"]
132                && $this->valF['fichier']!="") {
133                // Si le fichier existe dans tmp
134                if(file_exists("../tmp/".$this->valF['fichier'])) {
135                    $contents=file_get_contents("../tmp/".$this->valF['fichier']);
136                    // On essaye de l'enregistrer
137                    $res = $this->f->storeDecisionFile($contents, $this->valF['fichier'],
138                                                   $this->valF['dossier'],
139                                                   'consultation_'.$this->valF['consultation']."_");
140                    // Si l'enregistrement s'est bien deroule
141                    // on supprime le fichier dans tmp
142                    // on met a jour valF avec le nouveau nom du fichier
143                    if($res===true){
144                        $this->addToMessage(_("Sauvegarde du fichier reussi"));
145                        unlink("../tmp/".$this->valF['fichier']);
146                        $this->valF['fichier']='consultation_'.$this->valF['consultation']."_".$this->valF['fichier'];
147                    // Sinon on supprime le fichier dans tmp
148                    // on reinitialise le nom du fichier a l'ancienne valeur
149                    } else {
150                        $this->correct = false;
151                        $this->addToMessage($res);
152                        unlink("../tmp/".$this->valF['fichier']);
153                        $this->valF['fichier']=$this->val[array_search("fichier",$this->champs)];
154                    }
155                }
156            }
157        }
158        
159      function setType(&$form,$maj) {      function setType(&$form,$maj) {
160            // Appel du parent
161          parent::setType($form,$maj);          parent::setType($form,$maj);
162          if ($maj < 2) { //ajouter et modifier [add and modify]          // MODE - AJOUTER
163              if($maj==0){ // add          if ($maj == 0) {
164                  $form->setType('date_envoi', 'date2');              // On cache alors tous les champs que nous ne voulons pas voir
165                  $form->setType('service', 'select');              // apparaître dans le formulaire d'ajout (principalement les
166                  $form->setType('date_limite', 'hidden');              // informations sur le retour d'avis)
167                  $form->setType('date_retour', 'hidden');              $form->setType('date_retour', 'hidden');
168                  $form->setType('avis_consultation', 'hidden');              $form->setType('date_reception', 'hidden');
169                                  $form->setType('motivation', 'hidden');              $form->setType('date_limite', 'hidden');
170                                  $form->setType('fichier', 'hidden');              $form->setType('avis_consultation', 'hidden');
171                                  $form->setType('lu', 'hidden');              $form->setType('motivation', 'hidden');
172                                  $form->setType('date_reception', 'hidden');              $form->setType('fichier', 'hidden');
173              }else{   // modify              $form->setType('lu', 'hidden');
174                  $form->setType('date_envoi', 'hiddenstaticdate');              // On permet la modification de certains champs
                                 $form->setType('date_limite', 'hiddenstaticdate');  
                 $form->setType('service', 'selecthiddenstatic');  
                 $form->setType('date_retour', 'date2');  
                 $form->setType('avis_consultation', 'select');  
                                 $form->setType('motivation', 'textarea');  
                                 $form->setType('fichier', 'upload2');  
             }  
175              $form->setType('dossier', 'hiddenstatic');              $form->setType('dossier', 'hiddenstatic');
176                $form->setType('service', 'select');
177                $form->setType('date_envoi', 'date2');
178          }          }
179          $form->setType('consultation', 'hidden');          // MODE - MODIFIER
180            if ($maj == 1) {
181    
182                // On affiche en statique les informations qui ne sont plus
183                // modifiables
184                $form->setType('dossier', 'hiddenstatic');
185                $form->setType('date_envoi', 'hiddenstaticdate');
186                $form->setType('date_limite', 'hiddenstaticdate');
187                $form->setType('service', 'selecthiddenstatic');
188                
189                // La date de réception ne peut être modifiée que par un
190                // utilisateur en ayant spécifiquement la permission
191                if($this->f->isAccredited('consultation_modifier_date_reception')) {
192                    $form->setType('date_reception', 'date2');
193                } else {
194                    $form->setType('date_reception', 'hiddenstaticdate');
195                }
196    
197                // Le marqueur lu/non lu ne peut être modifié que par un
198                // utilisateur en ayant spécifiquement la permission
199                if ($this->f->isAccredited('consultation_modifier_lu')) {
200                    $form->setType('lu', 'checkbox');
201                } else {
202                    $form->setType('lu', 'hidden');
203                }
204    
205                // Gestion du type du widget sur le champ fichier
206                if($this->val[array_search("fichier",$this->champs)]=="" OR
207                   $this->f->isAccredited('consultation_modifier_fichier')) {
208                    // Si il n'y a jamais eu de fichier enregistré ou que
209                    // l'utilisateur a spécifiquement les droits pour modifier
210                    // un fichier déjà enregistré alors on positionne un type
211                    // de widget modifiable
212                    $form->setType('fichier', 'tmpUpload');
213                } else {
214                    // Si non on affiche uniquement le nom du fichier
215                    $form->setType('fichier', 'tmpUploadStatic');
216                }
217    
218                // Modification layout : écran de retour d'avis permettant
219                // uniquement la saisie des trois champs : avis, motivation et fichier
220                if (!$this->f->isAccredited('consultation_consulter_autre_que_retour_avis')) {
221    
222                    // On cache alors tous les champs que nous ne voulons pas voir
223                    $form->setType('dossier', 'hidden');
224                    $form->setType('service', 'hidden');
225                    $form->setType('date_envoi', 'hidden');
226                    $form->setType('date_retour', 'hidden');
227                    $form->setType('date_reception', 'hidden');
228                    $form->setType('date_limite', 'hidden');
229                    $form->setType('lu', 'hidden');
230    
231          $form->setType('consultation', 'hidden');              }
232    
233            }
234            // MODE - CONSULTER
235            if ( $maj == 3 ) {
236                $form->setType('fichier', 'tmpUploadStatic');
237            }
238            //// On cache la clé primaire
239            //$form->setType('consultation', 'hidden');
240      }      }
241    
242      // TRIGGER AVANT MODIFICATION DE DONNEES      // TRIGGER AVANT MODIFICATION DE DONNEES
# Line 87  class consultation extends consultation_ Line 276  class consultation extends consultation_
276              $corps=_("Votre service est consulte concernant le dossier no")." ".$dossier['dossier']."<br/>".              $corps=_("Votre service est consulte concernant le dossier no")." ".$dossier['dossier']."<br/>".
277              _("Il concerne le terrain situe a l'adresse :")." ".utf8_decode($dossier['terrain_adresse']).              _("Il concerne le terrain situe a l'adresse :")." ".utf8_decode($dossier['terrain_adresse']).
278              " ".utf8_decode($dossier['terrain_adresse_complement'])." ".utf8_decode($dossier['terrain_cp'])." ".$dossier['terrain_ville']."<br/>".              " ".utf8_decode($dossier['terrain_adresse_complement'])." ".utf8_decode($dossier['terrain_cp'])." ".$dossier['terrain_ville']."<br/>".
279              _("Vous pouvez y acceder et rendre votre avis a l'adresse")." <a href='".$this->f->getParameter('lien_interne_vdm').              _("Vous pouvez y acceder et rendre votre avis a l'adresse")." <a href='".$this->f->getParameter('services_consultes_lien_interne').
280              "scr/form.php?obj=consultation&action=3&idx=".$this->valF['consultation']."' >".              "scr/form.php?obj=consultation&action=3&idx=".$this->valF['consultation']."' >".
281              _("Lien interne (services VDM)")."</a> "._("ou")." <a href='".$this->f->getParameter('lien_externe').              _("Lien interne (services VDM)")."</a> "._("ou")." <a href='".$this->f->getParameter('services_consultes_lien_externe').
282              "scr/form.php?obj=consultation&action=3&idx=".$this->valF['consultation']."' >".              "scr/form.php?obj=consultation&action=3&idx=".$this->valF['consultation']."' >".
283              _("Lien externe (hors VDM)")."</a>";              _("Lien externe (hors VDM)")."</a>";
284              // Envoi du mail avec message de retour              // Envoi du mail avec message de retour
# Line 100  class consultation extends consultation_ Line 289  class consultation extends consultation_
289              }              }
290          }          }
291                    
292            // s'il s'agit de la consultation ERP Secu, ERP Accessibilite, ou
293            // deenvoie un
294            // message a ERP
295            $dossier_erp = $this->getFromDB("SELECT erp FROM ".DB_PREFIXE.
296                            "dossier WHERE dossier = '" .$this->valF['dossier'] . "'");
297            $dossier_nature = $this->getFromDB("SELECT nature FROM ".DB_PREFIXE.
298                            "dossier WHERE dossier = '" . $this->valF['dossier'] . "'");
299            if ($dossier_erp == 't'
300                && substr($dossier_nature, 0, 2) == $this->f->getParameter('erp_dossier_nature_pc')) {
301                // envoi du message "Demande d'instruction d'un dossier PC pour un ERP"
302                if (($this->valF['service'] == $this->f->getParameter('erp_service_accessibilite')
303                    || $this->valF['service'] == $this->f->getParameter('erp_service_securite'))) {
304                    $msgenque = new MessageEnqueuer();
305                    $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
306                    $msgenque->setConsultationIdentifier($this->valF['consultation']);
307                    $msgenque->enqueueMessage($msgenque::$ERP_DEMANDE_INSTRUCTION_PC);
308                }
309                
310                // envoi du message "Consultation ERP pour conformite" en cas de creation de la
311                // consultation du service ERP Conformite
312                if ($this->valF['service'] == $this->f->getParameter('erp_service_conformite')) {
313                    $msgenque = new MessageEnqueuer();
314                    $msgenque->setDossierInstructionIdentifier($this->valF['dossier']);
315                    $msgenque->setConsultationIdentifier($this->valF['consultation']);
316                    $msgenque->enqueueMessage($msgenque::$ERP_CONSULTATION_CONFORMITE);                
317                }
318            }
319            
320        }
321        
322        /**
323         * Fait une requette sql pour extraire la valeur d'un champ, et retourne
324         * cette valeur
325         * @param string $sql La requete sql a executer
326         * @return La valeur du champs cherche, sinon NULL. En cas d'erreur de la BD
327         * l'execution s'arrete.
328         */
329        function getFromDB($sql) {
330            //$sql = "SELECT libelle FROM ".DB_PREFIXE."dossier WHERE dossier = '" . $dossier . "'";
331            $res = $this->db->limitquery($sql, 0, 1);
332            $this->addToLog("getDossierERPSpecification(): db->limitquery(\"".
333                            str_replace(",",", ",$sql)."\", 0, 1);", VERBOSE_MODE);
334            // Si une erreur survient on die
335            if (database::isError($res, true)) {
336                // Appel de la methode de recuperation des erreurs
337                $this->erreur_db($res->getDebugInfo(), $res->getMessage(), 'instruction');
338            }
339            // retourne la nature du dossier
340            while ($row =& $res->fetchRow()) {
341                return $row[0];
342            }
343            // la nature n'etait pas trouve, ce qui ne devrait pas se passer
344            return NULL;
345    
346        }
347    
348        
349        /**
350         * Returne la nature du dossier auquel la consultation appartient.
351         * @param string $dossier L'identifiant du dossier
352         * @return La nature du dossier si elle existe, sinon NULL. En cas
353         * d'erreur de la BD, l'execution se termine.
354         */
355        function getDossierNature($dossier) {
356            $sql = "SELECT nature FROM ".DB_PREFIXE."dossier WHERE dossier = '" . $dossier . "'";
357            $res = $this->db->limitquery($sql, 0, 1);
358            $this->addToLog("getDossierNature(): db->limitquery(\"".str_replace(",",", ",$sql)."\", 0, 1);", VERBOSE_MODE);
359            // Si une erreur survient on die
360            if (database::isError($res, true)) {
361                // Appel de la methode de recuperation des erreurs
362                $this->erreur_db($res->getDebugInfo(), $res->getMessage(), 'dossier');
363            }
364            // retourne la nature du dossier
365            while ($row =& $res->fetchRow()) {
366                return $row[0];
367            }
368            // la nature n'etait pas trouve, ce qui ne devrait pas se passer
369            return NULL;
370      }      }
371    
372      // =============================================      // =============================================
# Line 141  class consultation extends consultation_ Line 408  class consultation extends consultation_
408          return $annee."-".$mois."-".$jour ;          return $annee."-".$mois."-".$jour ;
409      }      }
410    
411          // =============================================      // =============================================
412      // Ajout du fielset      // Ajout du fielset
413      // Add fieldset      // Add fieldset
414      // =============================================      // =============================================
415          function setLayout(&$form, $maj){      function setLayout(&$form, $maj){
416                  if ( $maj < 2 OR $maj == 3 ) {  
417                          //Champs sur lequel s'ouvre le fieldset              // Modification layout : écran de retour d'avis permettant
418                          $form->setBloc('dossier','D',"");              // uniquement la saisie des trois champs : avis, motivation et fichier
419                          $form->setFieldset('dossier','D',_('Consultation'));              if ($this->f->isAccredited('consultation_consulter_autre_que_retour_avis')) {
420                            
421                          //Champs sur lequel se ferme le fieldset                  //Champs sur lequel s'ouvre le fieldset
422                          $form->setFieldset('date_envoi','F','');                  $form->setBloc('dossier','D',"");
423                          $form->setBloc('date_envoi','F');                  $form->setFieldset('dossier','D',_('Consultation'));
424                          if ( $maj == 1 OR $maj == 3 ){      
425                                  //Champs sur lequel s'ouvre le fieldset                  //Champs sur lequel se ferme le fieldset
426                                  $form->setBloc('date_reception','D',"");                  $form->setFieldset('date_envoi','F','');
427                                  $form->setFieldset('date_reception','D',_('Retour d\'avis'));                  $form->setBloc('date_envoi','F');
428                    
429                                  //Champs sur lequel se ferme le fieldset              }
430                                  $form->setFieldset('lu','F','');              
431                                  $form->setBloc('lu','F');              // MODE - autre que AJOUTER alors on affiche un fieldset retour
432                          }              // d'avis
433                  }              if ($maj != 0) {
434                                            
435          }                  //Champs sur lequel s'ouvre le fieldset
436                            $form->setBloc('date_reception','D',"");
437                    $form->setFieldset('date_reception','D',_('Retour d\'avis'));
438        
439                    //Champs sur lequel se ferme le fieldset
440                    $form->setFieldset('lu','F','');
441                    $form->setBloc('lu','F');
442                    
443                }
444        }
445    
446        /** Surcharge de la methode retour afin de retourner sur la page de saisie de
447        * code barre si besoin
448        **/
449        function retour($premier = 0, $recherche = "", $tricol = "") {
450            $params ="obj=".get_class($this);
451            if($this->getParameter("retour")=="form") {
452                $params .= "&amp;idx=".$this->getParameter("idx");
453                $params .= "&amp;action=3";
454            }
455            $params .= "&amp;premier=".$this->getParameter("premier");
456            $params .= "&amp;tricol=".$this->getParameter("tricol");
457            $params .= "&amp;recherche=".$this->getParameter("recherche");
458            $params .= "&amp;selectioncol=".$this->getParameter("selectioncol");
459            $params .= "&amp;advs_id=".$this->getParameter("advs_id");
460            $params .= "&amp;valide=".$this->getParameter("valide");
461            echo "\n<a class=\"retour\" ";
462            echo "href=\"";
463            //
464    
465            if($this->getParameter("retour")=="form" AND !($this->getParameter("validation")>0 AND $this->getParameter("maj")==2 AND $this->correct)) {
466                echo "form.php?".$params;
467            } elseif($this->getParameter("retour")=="avis_code_barre") {
468                echo "../app/avis_code_barre.php";
469            } else {
470                echo "tab.php?".$params;
471            }
472            //
473            echo "\"";
474            echo ">";
475            //
476            echo _("Retour");
477            //
478            echo "</a>\n";
479        }
480    
481        /**
482         * Surcharge du bouton retour pour popup
483         */
484            function retoursousformulaire($idxformulaire, $retourformulaire, $val,
485                                      $objsf, $premiersf, $tricolsf, $validation,
486                                      $idx, $maj, $retour) {
487            if($retourformulaire === "demande_avis_encours") {
488                echo "\n<a class=\"retour\" ";
489                echo "href=\"";
490                echo "#";
491                echo  "\" ";
492                echo ">";
493                //
494                echo _("Retour");
495                //
496                echo "</a>\n";
497            } else {
498                parent::retoursousformulaire($idxformulaire, $retourformulaire, $val,
499                                      $objsf, $premiersf, $tricolsf, $validation,
500                                      $idx, $maj, $retour);
501            }
502        }
503  }// fin classe  }// fin classe
504  ?>  ?>

Legend:
Removed from v.555  
changed lines
  Added in v.943

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26