/[openfoncier]/branches/3.14.0-b13/obj/utils.class.php
ViewVC logotype

Diff of /branches/3.14.0-b13/obj/utils.class.php

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

revision 515 by mlimic, Wed Oct 17 16:22:13 2012 UTC revision 1689 by nhaye, Mon Apr 15 15:15:43 2013 UTC
# Line 37  require_once PATH_OPENMAIRIE."om_applica Line 37  require_once PATH_OPENMAIRIE."om_applica
37   */   */
38  class utils extends application {  class utils extends application {
39    
40        // {{{
41        
42      /**      /**
43       * Constructeur       *
      *  
      * @param  
      * @param  
      * @param  
      * @param  
      * @param  
44       */       */
45      function __construct($flag = NULL, $right = NULL, $title = NULL, $icon = NULL, $help = NULL) {      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          $this->timestart = microtime(true);          // XXX à modifier pour changer ça vers un profil et non un login utilisateur
49            if ($_SESSION["login"] == "admin") {
50          // Logger              return true;
         $this->addToLog("__construct() : 0.000 sec", VERBOSE_MODE);  
   
         // Logger  
         $this->addToLog("__construct()", EXTRA_VERBOSE_MODE);  
   
         // Instanciation de la classe message  
         $this->m = new message();  
   
         //  
         $this->setParamsFromFiles();  
         $this->checkParams();  
   
         //  
         $this->setDefaultValues();  
   
         // Transformation des cinq éléments paramètres en attribut de l'objet  
         $this->setFlag($flag);  
         $this->setTitle($title);  
         $this->setRight($right);  
         $this->setHelp($help);  
         $this->setIcon($icon);  
   
         // Vérification de l'authentification de l'utilisateur et stockage du  
         // résultat en attribut de l'objet  
         $this->authenticated = $this->isAuthenticated();  
   
         // Déconnexion de l'utilisateur  
         if ($this->flag == "logout") {  
             $this->logout();  
51          }          }
52            // Fonctionnement standard
53            return parent::isAccredited($obj, $operator);
54        }
55        
56        // }}}
57    
58          // Connexion de l'utilisateur      // {{{
         if ($this->flag == "login") {  
             $this->login();  
         }  
59    
60          // Demande de redéfinition du mot de passe      var $om_utilisateur = array();
61          if ($this->flag == "password_reset") {      var $user_is_instr = NULL;
62              if ($this->authenticated) {      var $user_is_service_ext = NULL;
                 $this->redirectAuthenticatedUsers();  
             }  
         }  
63    
64          //      /**
65          if ($this->authenticated) {       * Méthode de récupération des informations de l'utilisateur connecté.
66              // Connexion à la base de données si l'utilisateur est authentifié       */
67              $this->connectDatabase();      function getUserInfos() {
68              // on verifie que l'utilisateur connecté est toujours valide          
69              if (!defined('REST_REQUEST')) {          // Si l'utilisateur est loggé $_SESSION existe
70                  $this->checkIfUserIsAlwaysValid();          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                $this->isDatabaseError($resUser);
78                $this->om_utilisateur=&$resUser->fetchRow(DB_FETCHMODE_ASSOC);
79                
80                // Récupération des infos instructeur
81                $sqlInstr = "SELECT instructeur.instructeur, instructeur.nom, instructeur.telephone,
82                division.division, division.code, division.libelle ".
83                "FROM ".DB_PREFIXE."instructeur INNER JOIN ".DB_PREFIXE."division ON division.division=instructeur.division ".
84                "WHERE instructeur.om_utilisateur = ".$this->om_utilisateur['om_utilisateur'];
85                $resInstr=$this->db->query($sqlInstr);
86                $this->addToLog("getUserInfos(): db->query(\"".$sqlInstr."\");", VERBOSE_MODE);
87                $this->isDatabaseError($resInstr);
88                $tempInstr=&$resInstr->fetchRow(DB_FETCHMODE_ASSOC);
89                // Si il y a un resultat c'est un instructeur
90                if(count($tempInstr)>0) {
91                    $this->user_is_instr=true;
92                    $this->om_utilisateur = array_merge($this->om_utilisateur,$tempInstr);
93                } else {
94                    $this->user_is_instr=false;
95                }
96                
97                // Récupération des infos de services ext consultés
98                $sqlServExt = "SELECT service.service, service.abrege, service.libelle ".
99                "FROM ".DB_PREFIXE."service ".
100                "INNER JOIN ".DB_PREFIXE."lien_service_om_utilisateur ON lien_service_om_utilisateur.service=service.service ".
101                "WHERE lien_service_om_utilisateur.om_utilisateur = ".$this->om_utilisateur['om_utilisateur'];
102                $resServExt=$this->db->query($sqlServExt);
103                $this->addToLog("getUserInfos(): db->query(\"".$sqlServExt."\");", VERBOSE_MODE);
104                $this->isDatabaseError($resServExt);
105                
106                while ($tempServExt=&$resServExt->fetchRow(DB_FETCHMODE_ASSOC)) {
107                    $this->om_utilisateur['service'][]=$tempServExt;
108                }
109                // Si il y a un resultat c'est un utilisateur de service
110                if(isset($this->om_utilisateur['service'])) {
111                    $this->user_is_service_ext=true;
112                } else {
113                    $this->user_is_service_ext=false;
114              }              }
115          }          }
116        }
117    
118        /**
119         * getter user_is_service_ext
120         */
121        function isUserServiceExt() {
122          //          //
123          if (!in_array($this->flag, $this->special_flags)) {          if (is_null($this->user_is_service_ext)) {
   
             //  
             $this->getAllRights();  
   
             //  
             $this->getCollectivite();  
   
124              //              //
125              $this->isAuthorized();              $this->getUserInfos();
   
126          }          }
   
127          //          //
128          $this->setMoreParams();          return $this->user_is_service_ext;
   
         // Affichage HTML  
         $this->display();  
   
129      }      }
       
       
       
         /**  
      * Desctructeur de la classe, cette methode (appelee automatiquement)  
      * permet d'afficher le footer de la page, le footer HTML, et de  
      * deconnecter la base de donnees  
      *  
      * @return void  
      */  
     function __destruct() {  
   
         // Footer  
         if (!defined('REST_REQUEST')) {  
             $this->displayFooter();  
         }  
   
         // Deconnexion SGBD  
         $this->disconnectDatabase();  
   
         // Logger  
         $this->addToLog("__destruct()", EXTRA_VERBOSE_MODE);  
   
         // Logger  
         $this->addToLog("__destruct() : ".$this->elapsedtime()." sec", VERBOSE_MODE);  
   
         // Affichage des logs  
         logger::instance()->displayLog();  
   
         // Footer HTML  
         if (!defined('REST_REQUEST')) {  
             $this->displayHTMLFooter();  
         }  
     }  
   
   
130    
131      /**      /**
132       * Cette methode permet de charger les differents fichiers de configs dans       * getter user_is_instr
      * des attributs de la classe  
      *  
      * @return void  
133       */       */
134      function setParamsFromFiles() {      function isUserInstructeur() {
   
         //  
         if (file_exists("../dyn/config.inc.php")) {  
             include_once("../dyn/config.inc.php");  
         }  
         if (isset($config)) {  
             $this->config = $config;  
         }  
   
135          //          //
136          if (file_exists("../dyn/database.inc.php")) {          if (is_null($this->user_is_instr)) {
             include("../dyn/database.inc.php");  
         }  
   
         if (isset($conn)) {  
             $this->conn = $conn;  
137              //              //
138              foreach($this->conn as $key => $conn) {              $this->getUserInfos();
                 $this->database[$key] = array(  
                     'title' => $conn[0],  
                     'phptype' => $conn[1],  
                     'dbsyntax' => $conn[2],  
                     'username' => $conn[3],  
                     'password' => $conn[4],  
                     'protocol' => $conn[5],  
                     'hostspec' => $conn[6],  
                     'port' => $conn[7],  
                     'socket' => $conn[8],  
                     'database' => $conn[9],  
                     'formatdate' => $conn[10],  
                     'schema' => $conn[11],  
                     'prefixe' => (isset($conn[12]) ? $conn[12]: ""),  
                     'directory' => (isset($conn[13]) ? $conn[13]: ""),  
                     'mail' => (isset($conn[14]) ? $conn[14]: ""),  
                 );  
             }  
139          }          }
   
140          //          //
141          if (file_exists("../dyn/directory.inc.php")) {          return $this->user_is_instr;
142              include_once("../dyn/directory.inc.php");      }
         }  
         if (isset($directory)) {  
             $this->directory = $directory;  
         }  
143    
144          //      // Ajout de variables de session contenant la division pour permettre une
145          if (file_exists("../dyn/mail.inc.php")) {      // utilisation plus efficace dans les requetes
146              include_once("../dyn/mail.inc.php");      function triggerAfterLogin($utilisateur = NULL) {
147          }          //
148          if (isset($mail)) {          $sql = "SELECT instructeur.division, division.code
149              $this->mail = $mail;          FROM ".DB_PREFIXE."instructeur
150            LEFT JOIN ".DB_PREFIXE."division
151            ON instructeur.division = division.division
152            WHERE instructeur.om_utilisateur='".$utilisateur["om_utilisateur"]."'";
153            $res = $this->db->query($sql);
154            $this->addToLog("triggerAfterLogin(): db->query(\"".$sql."\");", VERBOSE_MODE);
155            $this->isDatabaseError($res);
156            $row = $res->fetchrow(DB_FETCHMODE_ASSOC);
157            //
158            if (isset($row["division"]) && $row["division"] != NULL) {
159                $_SESSION["division"] = $row["division"];
160                $_SESSION["division_code"] = $row["code"];
161            } else {
162                $_SESSION["division"] = "0";
163                $_SESSION["division_code"] = "";
164          }          }
165    
166          //      }    
         if (file_exists("../dyn/menu.inc.php")) {  
             include_once("../dyn/menu.inc.php");  
         }  
         if (isset($menu)) {  
             $this->menu = $menu;  
         }  
167    
168          //      // Affichage des actions supplémentaires
169          if (file_exists("../dyn/actions.inc.php")) {      function displayActionExtras() {
170              include_once("../dyn/actions.inc.php");          // Affichage de la division si l'utilisateur en possède une
171          }          if ($_SESSION["division"] != 0) {
172          if (isset($actions)) {              echo "\t\t\t<li class=\"action-division\">";
173              $this->actions = $actions;              echo "(".$_SESSION['division_code'].")";
174                echo "</li>\n";
175          }          }
176        }
177    
178          //      // }}}
         if (file_exists("../dyn/shortlinks.inc.php")) {  
             include_once("../dyn/shortlinks.inc.php");  
         }  
         if (isset($shortlinks)) {  
             $this->shortlinks = $shortlinks;  
         }  
179    
180        
181        function getDivisionFromDossier($dossier) {
182          //          //
183          if (file_exists("../dyn/footer.inc.php")) {          $sql = "select division from ".DB_PREFIXE."dossier ";
184              include_once("../dyn/footer.inc.php");          $sql .= " where dossier='".$dossier."'";
         }  
         if (isset($footer)) {  
             $this->footer = $footer;  
         }  
   
185          //          //
186          if (file_exists("../dyn/version.inc.php")) {          $division = $this->db->getOne($sql);
187              include_once("../dyn/version.inc.php");          $this->addToLog("getDivisionFromDossier(): db->getone(\"".$sql."\")", VERBOSE_MODE);
188          }          database::isError($division);
189          if (isset($version)) {          //
190              $this->version = $version;          return $division;
         }  
   
191      }      }
192    
193            // {{{ SURCHARGES POUR LE FONCTIONNEMENT DES REQUETES REST
194    
195      /**      /**
196       * 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 à
197       * accéder à un élément et permet d'agir en conséquence       * accéder à un élément et permet d'agir en conséquence
# Line 290  class utils extends application { Line 215  class utils extends application {
215    
216              //              //
217              $message_class = "error";              $message_class = "error";
218              $message = _("Droits insuffisants. Vous n'avez pas suffisament de ".              $message = _("Droits insuffisants. Vous n'avez pas suffisamment de ".
219                           "droits pour acceder a cette page.");                           "droits pour acceder a cette page.");
220              $this->addToMessage($message_class, $message);              $this->addToMessage($message_class, $message);
221    
# Line 320  class utils extends application { Line 245  class utils extends application {
245          // On recupere la liste des cles du tableau associatif de configuration          // On recupere la liste des cles du tableau associatif de configuration
246          // de la connexion aux bases de donnees          // de la connexion aux bases de donnees
247          $database_keys = array_keys($this->database);          $database_keys = array_keys($this->database);
         //print '   database keys:';  
         //print_r($database_keys);  
248          // Si il y a plusieurs cles          // Si il y a plusieurs cles
249          if (count($database_keys) != 0) {          if (count($database_keys) != 0) {
250              // On configure la premiere par defaut              // On configure la premiere par defaut
# Line 359  class utils extends application { Line 282  class utils extends application {
282          }          }
283    
284          // On renvoi le tableau de parametres pour la connexion a la base          // On renvoi le tableau de parametres pour la connexion a la base
         //print '   $coll:'.$coll.'   ';  
         //print '   database:';  
         //print_r($this->database[$coll]);  
285          $this->database_config = $this->database[$coll];          $this->database_config = $this->database[$coll];
286      }      }
287    
# Line 400  class utils extends application { Line 320  class utils extends application {
320                  $this->display();                  $this->display();
321              }              }
322              // On arrete le script              // On arrete le script
             //print 'and we die';  
323              die();              die();
324          } else {          } else {
325              // On affecte la resource a l'attribut de la classe du meme nom              // On affecte la resource a l'attribut de la classe du meme nom
# Line 483  class utils extends application { Line 402  class utils extends application {
402       */       */
403      function displayMessage($class = "", $message = "") {      function displayMessage($class = "", $message = "") {
404          if (!defined('REST_REQUEST')) {          if (!defined('REST_REQUEST')) {
405              $this->m->displayMessage($class, $message);              $this->layout->display_message($class, $message);
406          }          }
407      }      }
408    
409        // }}}
410    
411        // {{{ GESTION DES FICHIERS
412    
413        /**
414         * Méthode de création de répertoire dans le dossier /trs correspondant
415         * à l'id du tableau de configuration de la connexion à la base de donnée
416         * (dyn/database.inc.php)
417         **/
418        function createFolder($folder) {
419            if (!mkdir($this->getPathFolderTrs().$folder)) {
420                // message
421                $message_class = "error";
422                $message = _("Echec lors de la creation du repertoires.");
423                $this->addToMessage ($message_class, $message);
424            }
425        }
426        
427        /*
428         * Methode permettant de lister tous les fichiers d'un dossier
429         */
430        function getFolderFileList($id_folder) {
431    
432            $file_list = array();
433            if(is_dir($this->getPathFolderTrs().$id_folder)) {
434                if($dossier = opendir($this->getPathFolderTrs().$id_folder)) {
435                    
436                    while(false !== ($fichier = readdir($dossier))) {
437                    
438                        if($fichier != '.' && $fichier != '..' && !is_dir($fichier)) {
439                            $file_list[]=array( $fichier,
440                                filemtime($this->getPathFolderTrs().$id_folder."/".$fichier));
441                        } // On ferme le if (qui permet de ne pas afficher index.php, etc.)
442                    
443                    } // On termine la boucle
444            
445                    closedir($dossier);
446        
447                } else {
448                    $this->displayMessage("error", _("Les documents du repertoire ne sont pas accessible."));
449                }
450            } else {
451                $this->displayMessage("error", _("Ce repertoire n'a pas de document."));
452            }
453            return $file_list;
454        }
455            
456      /**      /**
457       *       *
458       */       */
459      function addToLog($message, $type = DEBUG_MODE) {      function notExistsError ($explanation = NULL) {
460            // message
461            $message_class = "error";
462            $message = _("Cette page n'existe pas.");
463            $this->addToMessage ($message_class, $message);
464          //          //
465          if (!defined('REST_REQUEST')) {          $this->setFlag(NULL);
466              logger::instance()->log("class ".get_class($this)." - ".$message, $type);          $this->display();
467          }          
468            //
469            die();
470      }      }
471        
472         // }}}
473    
474  }  }
475    

Legend:
Removed from v.515  
changed lines
  Added in v.1689

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26