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

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

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

revision 815 by fmichon, Fri Nov 23 11:21:41 2012 UTC revision 1859 by fmichon, Tue May 7 11:55:24 2013 UTC
# Line 38  require_once PATH_OPENMAIRIE."om_applica Line 38  require_once PATH_OPENMAIRIE."om_applica
38  class utils extends application {  class utils extends application {
39    
40      // {{{      // {{{
41        
42        /**
43         *
44         */
45        function isAccredited($obj = NULL, $operator = "AND") {
46            // Lorsque l'utilisateur a le login 'admin' alors il est authorisé à
47            // accéder à toutes les fonctions du logiciel
48            // XXX à modifier pour changer ça vers un profil et non un login utilisateur
49            if ($_SESSION["login"] == "admin") {
50                return true;
51            }
52            // Fonctionnement standard
53            return parent::isAccredited($obj, $operator);
54        }
55        
56        // }}}
57    
58        // {{{
59    
60        var $om_utilisateur = array();
61        var $user_is_instr = NULL;
62        var $user_is_service_ext = NULL;
63    
64        /**
65         * Méthode de récupération des informations de l'utilisateur connecté.
66         */
67        function getUserInfos() {
68            
69            // Si l'utilisateur est loggé $_SESSION existe
70            if(isset($_SESSION['login']) AND !empty($_SESSION['login'])) {
71                
72                // Récupération des infos utilisateur
73                $sqlUser = "SELECT om_utilisateur, nom, email, login, om_collectivite, om_profil ".
74                "FROM ".DB_PREFIXE."om_utilisateur WHERE login = '".$_SESSION['login']."'";
75                $resUser=$this->db->query($sqlUser);
76                $this->addToLog("getUserInfos(): db->query(\"".$sqlUser."\");", VERBOSE_MODE);
77                if ( database::isError($resUser)){
78                    die();
79                }
80                $this->om_utilisateur=&$resUser->fetchRow(DB_FETCHMODE_ASSOC);
81                
82                // Récupération des infos instructeur
83                $sqlInstr = "SELECT instructeur.instructeur, instructeur.nom, instructeur.telephone,
84                division.division, division.code, division.libelle ".
85                "FROM ".DB_PREFIXE."instructeur INNER JOIN ".DB_PREFIXE."division ON division.division=instructeur.division ".
86                "WHERE instructeur.om_utilisateur = ".$this->om_utilisateur['om_utilisateur'];
87                $resInstr=$this->db->query($sqlInstr);
88                $this->addToLog("getUserInfos(): db->query(\"".$sqlInstr."\");", VERBOSE_MODE);
89                if ( database::isError($resInstr)){
90                    die();
91                }
92                $tempInstr=&$resInstr->fetchRow(DB_FETCHMODE_ASSOC);
93                // Si il y a un resultat c'est un instructeur
94                if(count($tempInstr)>0) {
95                    $this->user_is_instr=true;
96                    $this->om_utilisateur = array_merge($this->om_utilisateur,$tempInstr);
97                } else {
98                    $this->user_is_instr=false;
99                }
100                
101                // Récupération des infos de services ext consultés
102                $sqlServExt = "SELECT service.service, service.abrege, service.libelle ".
103                "FROM ".DB_PREFIXE."service ".
104                "INNER JOIN ".DB_PREFIXE."lien_service_om_utilisateur ON lien_service_om_utilisateur.service=service.service ".
105                "WHERE lien_service_om_utilisateur.om_utilisateur = ".$this->om_utilisateur['om_utilisateur'];
106                $resServExt=$this->db->query($sqlServExt);
107                $this->addToLog("getUserInfos(): db->query(\"".$sqlServExt."\");", VERBOSE_MODE);
108                if ( database::isError($resServExt)){
109                    die();
110                }
111                
112                while ($tempServExt=&$resServExt->fetchRow(DB_FETCHMODE_ASSOC)) {
113                    $this->om_utilisateur['service'][]=$tempServExt;
114                }
115                // Si il y a un resultat c'est un utilisateur de service
116                if(isset($this->om_utilisateur['service'])) {
117                    $this->user_is_service_ext=true;
118                } else {
119                    $this->user_is_service_ext=false;
120                }
121            }
122        }
123    
124        /**
125         * getter user_is_service_ext
126         */
127        function isUserServiceExt() {
128            //
129            if (is_null($this->user_is_service_ext)) {
130                //
131                $this->getUserInfos();
132            }
133            //
134            return $this->user_is_service_ext;
135        }
136    
137        /**
138         * getter user_is_instr
139         */
140        function isUserInstructeur() {
141            //
142            if (is_null($this->user_is_instr)) {
143                //
144                $this->getUserInfos();
145            }
146            //
147            return $this->user_is_instr;
148        }
149    
150      // Ajout de variables de session contenant la division pour permettre une      // Ajout de variables de session contenant la division pour permettre une
151      // utilisation plus efficace dans les requetes      // utilisation plus efficace dans les requetes
# Line 50  class utils extends application { Line 158  class utils extends application {
158          WHERE instructeur.om_utilisateur='".$utilisateur["om_utilisateur"]."'";          WHERE instructeur.om_utilisateur='".$utilisateur["om_utilisateur"]."'";
159          $res = $this->db->query($sql);          $res = $this->db->query($sql);
160          $this->addToLog("triggerAfterLogin(): db->query(\"".$sql."\");", VERBOSE_MODE);          $this->addToLog("triggerAfterLogin(): db->query(\"".$sql."\");", VERBOSE_MODE);
161          $this->isDatabaseError($res);          if ( database::isError($res)){
162                die();
163            }
164          $row = $res->fetchrow(DB_FETCHMODE_ASSOC);          $row = $res->fetchrow(DB_FETCHMODE_ASSOC);
165          //          //
166          if (isset($row["division"]) && $row["division"] != NULL) {          if (isset($row["division"]) && $row["division"] != NULL) {
# Line 72  class utils extends application { Line 182  class utils extends application {
182              echo "</li>\n";              echo "</li>\n";
183          }          }
184      }      }
       
     // }}}  
185    
186        // }}}
187    
     var $om_utilisateur = array();  
     var $user_is_instr = false;  
     var $user_is_service_ext = false;  
188            
189      /**      function getDivisionFromDossier($dossier) {
190       * Surcharge du constructeur de la classe          //
191       */          $sql = "select division from ".DB_PREFIXE."dossier ";
192      function __construct($flag = NULL, $right = NULL, $title = NULL, $icon = NULL, $help = NULL) {          $sql .= " where dossier='".$dossier."'";
193          parent::__construct($flag, $right, $title, $icon, $help);          //
194          $this->getUserInfos();          $division = $this->db->getOne($sql);
195            $this->addToLog("getDivisionFromDossier(): db->getone(\"".$sql."\")", VERBOSE_MODE);
196            database::isError($division);
197            //
198            return $division;
199      }      }
200    
201        // {{{ SURCHARGES POUR LE FONCTIONNEMENT DES REQUETES REST
   
202    
203      /**      /**
204       * Cette méthode permet de vérifier si l'utilisateur est autorisé ou non à       * Cette méthode permet de vérifier si l'utilisateur est autorisé ou non à
# Line 114  class utils extends application { Line 223  class utils extends application {
223    
224              //              //
225              $message_class = "error";              $message_class = "error";
226              $message = _("Droits insuffisants. Vous n'avez pas suffisament de ".              $message = _("Droits insuffisants. Vous n'avez pas suffisamment de ".
227                           "droits pour acceder a cette page.");                           "droits pour acceder a cette page.");
228              $this->addToMessage($message_class, $message);              $this->addToMessage($message_class, $message);
229    
# Line 238  class utils extends application { Line 347  class utils extends application {
347                  $temp = $this->database_config["schema"].".";                  $temp = $this->database_config["schema"].".";
348              }              }
349              $temp = $temp.$this->database_config["prefixe"];              $temp = $temp.$this->database_config["prefixe"];
350              define("DB_PREFIXE", $temp);              (defined("DB_PREFIXE") ? "" : define("DB_PREFIXE", $temp));
351              define("FORMATDATE", $this->database_config["formatdate"]);              (defined("FORMATDATE") ? "" : define("FORMATDATE", $this->database_config["formatdate"]));
352    
353              // Definition des constantes pour l'acces aux informations de la base              // Definition des constantes pour l'acces aux informations de la base
354              // donnees facilement.              // donnees facilement.
355              define("OM_DB_FORMATDATE", $this->database_config["formatdate"]);              (defined("OM_DB_FORMATDATE") ? "" : define("OM_DB_FORMATDATE", $this->database_config["formatdate"]));
356              define("OM_DB_PHPTYPE", $this->database_config["phptype"]);              (defined("OM_DB_PHPTYPE") ? "" : define("OM_DB_PHPTYPE", $this->database_config["phptype"]));
357              define("OM_DB_DATABASE", $this->database_config["database"]);              (defined("OM_DB_DATABASE") ? "" : define("OM_DB_DATABASE", $this->database_config["database"]));
358              define("OM_DB_SCHEMA", $this->database_config["schema"]);              (defined("OM_DB_SCHEMA") ? "" : define("OM_DB_SCHEMA", $this->database_config["schema"]));
359              define("OM_DB_TABLE_PREFIX", $this->database_config["prefixe"]);              (defined("OM_DB_TABLE_PREFIX") ? "" : define("OM_DB_TABLE_PREFIX", $this->database_config["prefixe"]));
360          }          }
361    
362      }      }
# Line 301  class utils extends application { Line 410  class utils extends application {
410       */       */
411      function displayMessage($class = "", $message = "") {      function displayMessage($class = "", $message = "") {
412          if (!defined('REST_REQUEST')) {          if (!defined('REST_REQUEST')) {
413              $this->m->displayMessage($class, $message);              $this->layout->display_message($class, $message);
414          }          }
415      }      }
416    
417      /**      // }}}
418       *  
419       */      // {{{ GESTION DES FICHIERS
     function isAccredited($obj = NULL, $operator = "AND") {  
         // Lorsque l'utilisateur a le login 'admin' alors il est authorisé à  
         // accéder à toutes les fonctions du logiciel  
         // XXX à modifier pour changer ça vers un profil et non un login utilisateur  
         if ($_SESSION["login"] == "admin") {  
             return true;  
         }  
         // Fonctionnement standard  
         return parent::isAccredited($obj, $operator);  
     }  
420    
421      /**      /**
422       * Méthode de création de répertoire dans le dossier /trs correspondant       * Méthode de création de répertoire dans le dossier /trs correspondant
# Line 361  class utils extends application { Line 460  class utils extends application {
460          }          }
461          return $file_list;          return $file_list;
462      }      }
   
     /*  
      * Store the data recived in the request into a file on the  
      * local filesystem.  
      * @todo This function will need to be changed for the save to  
      * be on GED  
      * @param mixed $data The data received with the request  
      * @param string $id The consultation ID  
      * @return string OK on success, KO otherwise  
      */  
           
     function storeDecisionFile(&$fichier_base64, $basename, $dossier, $prefix = '') {  
           
         if (empty($fichier_base64)) {  
             $this -> addToMessage("error", _("Le fichier est vide"));  
             return false;  
         }  
         $dir = $this->getPathFolderTrs().$dossier;  
           
         // if a file already exists by that name and it  
         // is not a directory, back out  
         /*if (file_exists($dir) AND is_dir($dir)) {  
             $this -> addToMessage("error", _("Le repertoire n'existe pas, le fichier ne peut pas etre enregistre."));  
             return false;  
         }*/  
         // if a dirextory by that name exists, make sure it does  
         // not already contain an avis de consultation, MAYBE WE DON'T NEED THIS  
         if (file_exists($dir) AND is_dir($dir)) {  
             $dir_contents = trim(shell_exec('ls '.$dir));  
             if (strpos($dir_contents, ' ') != false) {  
                 $dir_contents = explode(' ', $dir_contents);  
             } else {  
                 $dir_contents = array($dir_contents);  
             }  
             foreach ($dir_contents as $basefname) { // very useful for consultation  
                 if (strpos($basefname, $prefix)!==false) {  
                     return _("Un retour d'avis existe deja.");  
                       
                 }  
             }  
         } else {  
             $this->createFolder($dossier);  
         }          
           
         // store the file contents into the file named:  
         //      consultation_<ID>_<file_name_received>  
         $file_len = strlen($fichier_base64);  
   
         $filename = $dir."/".$prefix.$basename;  
   
         $file = fopen($filename, 'w');  
         if (!$file) {  
             return _("Echec a la creation du fichier.");  
         }  
         // check that the number of bytes written is equal to the length  
         // of the data received  
         $num_written = fwrite($file, $fichier_base64, $file_len);  
           
         if (!$num_written) {  
             // remove the file  
             // the return value from shell can't be used for checking since  
             // one can not know if the NULL returned is because there was no  
             // output or because there was an error  
             $ret = shell_exec("rm -f $filename 2>&1");  
             //if ($ret == NULL) { // an error occured while deleting the file  
             //}  
             return _("La sauvegarde du fichier a echoue");  
         }  
         fclose($file);  
         return true;  
     }  
463            
464      /**      /**
465       *       *
# Line 448  class utils extends application { Line 476  class utils extends application {
476          //          //
477          die();          die();
478      }      }
479        
480      /**       // }}}
481       * Méthode de récupération des informations de l'utilisateur connecté.  
      */  
     function getUserInfos() {  
           
         // Si l'utilisateur est loggé $_SESSION existe  
         if(isset($_SESSION['login']) AND !empty($_SESSION['login'])) {  
               
             // Récupération des infos utilisateur  
             $sqlUser = "SELECT om_utilisateur, nom, email, login, om_collectivite, om_profil ".  
             "FROM om_utilisateur WHERE login = '".$_SESSION['login']."'";  
             $resUser=$this->db->query($sqlUser);  
             $this->addToLog("getUserInfos(): db->query(\"".$sqlUser."\");", VERBOSE_MODE);  
             $this->isDatabaseError($resUser);  
             $this->om_utilisateur=&$resUser->fetchRow(DB_FETCHMODE_ASSOC);  
               
             // Récupération des infos instructeur  
             $sqlInstr = "SELECT instructeur.instructeur, instructeur.nom, instructeur.telephone, division.code, division.libelle ".  
             "FROM instructeur INNER JOIN division ON division.division=instructeur.division ".  
             "WHERE instructeur.om_utilisateur = ".$this->om_utilisateur['om_utilisateur'];  
             $resInstr=$this->db->query($sqlInstr);  
             $this->addToLog("getUserInfos(): db->query(\"".$sqlInstr."\");", VERBOSE_MODE);  
             $this->isDatabaseError($resInstr);  
             $tempInstr=&$resInstr->fetchRow(DB_FETCHMODE_ASSOC);  
             // Si il y a un resultat c'est un instructeur  
             if(count($tempInstr)>0) {  
                 $this->user_is_instr=true;  
                 $this->om_utilisateur = array_merge($this->om_utilisateur,$tempInstr);  
             }  
               
             // Récupération des infos de services ext consultés  
             $sqlServExt = "SELECT service.service, service.abrege, service.libelle ".  
             "FROM service ".  
             "INNER JOIN lien_service_om_utilisateur ON lien_service_om_utilisateur.service=service.service ".  
             "WHERE lien_service_om_utilisateur.om_utilisateur = ".$this->om_utilisateur['om_utilisateur'];  
             $resServExt=$this->db->query($sqlServExt);  
             $this->addToLog("getUserInfos(): db->query(\"".$sqlServExt."\");", VERBOSE_MODE);  
             $this->isDatabaseError($resServExt);  
               
             while ($tempServExt=&$resServExt->fetchRow(DB_FETCHMODE_ASSOC)) {  
                 $this->om_utilisateur['service'][]=$tempServExt;  
             }  
             // Si il y a un resultat c'est un utilisateur de service  
             if(isset($this->om_utilisateur['service'])) {  
                 $this->user_is_service_ext=true;  
             }  
         }  
     }  
       
     /**  
      * getter user_is_service_ext  
      */  
     function isUserServiceExt() {  
         return $this->user_is_service_ext;  
     }  
     /**  
      * getter user_is_instr  
      */  
     function isUserInstructeur() {  
         return $this->user_is_instr;  
     }  
482  }  }
483    
484  ?>  ?>

Legend:
Removed from v.815  
changed lines
  Added in v.1859

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26