/[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 531 by nhaye, Mon Oct 22 16:21:15 2012 UTC revision 1859 by fmichon, Tue May 7 11:55:24 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                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 (!in_array($this->flag, $this->special_flags)) {          if (is_null($this->user_is_service_ext)) {
   
             //  
             $this->getAllRights();  
   
             //  
             $this->getCollectivite();  
   
130              //              //
131              $this->isAuthorized();              $this->getUserInfos();
   
132          }          }
   
133          //          //
134          $this->setMoreParams();          return $this->user_is_service_ext;
   
         // Affichage HTML  
         $this->display();  
   
135      }      }
       
       
       
         /**  
      * 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();  
         }  
     }  
   
   
136    
137      /**      /**
138       * Cette methode permet de charger les differents fichiers de configs dans       * getter user_is_instr
      * des attributs de la classe  
      *  
      * @return void  
139       */       */
140      function setParamsFromFiles() {      function isUserInstructeur() {
   
141          //          //
142          if (file_exists("../dyn/config.inc.php")) {          if (is_null($this->user_is_instr)) {
143              include_once("../dyn/config.inc.php");              //
144          }              $this->getUserInfos();
         if (isset($config)) {  
             $this->config = $config;  
145          }          }
   
146          //          //
147          if (file_exists("../dyn/database.inc.php")) {          return $this->user_is_instr;
148              include("../dyn/database.inc.php");      }
         }  
149    
150          if (isset($conn)) {      // Ajout de variables de session contenant la division pour permettre une
151              $this->conn = $conn;      // utilisation plus efficace dans les requetes
152              //      function triggerAfterLogin($utilisateur = NULL) {
153              foreach($this->conn as $key => $conn) {          //
154                  $this->database[$key] = array(          $sql = "SELECT instructeur.division, division.code
155                      'title' => $conn[0],          FROM ".DB_PREFIXE."instructeur
156                      'phptype' => $conn[1],          LEFT JOIN ".DB_PREFIXE."division
157                      'dbsyntax' => $conn[2],          ON instructeur.division = division.division
158                      'username' => $conn[3],          WHERE instructeur.om_utilisateur='".$utilisateur["om_utilisateur"]."'";
159                      'password' => $conn[4],          $res = $this->db->query($sql);
160                      'protocol' => $conn[5],          $this->addToLog("triggerAfterLogin(): db->query(\"".$sql."\");", VERBOSE_MODE);
161                      'hostspec' => $conn[6],          if ( database::isError($res)){
162                      'port' => $conn[7],              die();
                     '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]: ""),  
                 );  
             }  
163          }          }
164            $row = $res->fetchrow(DB_FETCHMODE_ASSOC);
165          //          //
166          if (file_exists("../dyn/directory.inc.php")) {          if (isset($row["division"]) && $row["division"] != NULL) {
167              include_once("../dyn/directory.inc.php");              $_SESSION["division"] = $row["division"];
168          }              $_SESSION["division_code"] = $row["code"];
169          if (isset($directory)) {          } else {
170              $this->directory = $directory;              $_SESSION["division"] = "0";
171                $_SESSION["division_code"] = "";
172          }          }
173    
174          //      }    
         if (file_exists("../dyn/mail.inc.php")) {  
             include_once("../dyn/mail.inc.php");  
         }  
         if (isset($mail)) {  
             $this->mail = $mail;  
         }  
175    
176          //      // Affichage des actions supplémentaires
177          if (file_exists("../dyn/menu.inc.php")) {      function displayActionExtras() {
178              include_once("../dyn/menu.inc.php");          // Affichage de la division si l'utilisateur en possède une
179          }          if ($_SESSION["division"] != 0) {
180          if (isset($menu)) {              echo "\t\t\t<li class=\"action-division\">";
181              $this->menu = $menu;              echo "(".$_SESSION['division_code'].")";
182                echo "</li>\n";
183          }          }
184        }
185    
186          //      // }}}
         if (file_exists("../dyn/actions.inc.php")) {  
             include_once("../dyn/actions.inc.php");  
         }  
         if (isset($actions)) {  
             $this->actions = $actions;  
         }  
187    
188        
189        function getDivisionFromDossier($dossier) {
190          //          //
191          if (file_exists("../dyn/shortlinks.inc.php")) {          $sql = "select division from ".DB_PREFIXE."dossier ";
192              include_once("../dyn/shortlinks.inc.php");          $sql .= " where dossier='".$dossier."'";
         }  
         if (isset($shortlinks)) {  
             $this->shortlinks = $shortlinks;  
         }  
   
193          //          //
194          if (file_exists("../dyn/footer.inc.php")) {          $division = $this->db->getOne($sql);
195              include_once("../dyn/footer.inc.php");          $this->addToLog("getDivisionFromDossier(): db->getone(\"".$sql."\")", VERBOSE_MODE);
196          }          database::isError($division);
         if (isset($footer)) {  
             $this->footer = $footer;  
         }  
   
197          //          //
198          if (file_exists("../dyn/version.inc.php")) {          return $division;
             include_once("../dyn/version.inc.php");  
         }  
         if (isset($version)) {  
             $this->version = $version;  
         }  
   
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 à
205       * 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 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 414  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 477  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
420    
421      /**      /**
422       *       * Méthode de création de répertoire dans le dossier /trs correspondant
423       */       * à l'id du tableau de configuration de la connexion à la base de donnée
424      function addToLog($message, $type = DEBUG_MODE) {       * (dyn/database.inc.php)
425          //       **/
426          if (!defined('REST_REQUEST')) {      function createFolder($folder) {
427              logger::instance()->log("class ".get_class($this)." - ".$message, $type);          if (!mkdir($this->getPathFolderTrs().$folder)) {
428                // message
429                $message_class = "error";
430                $message = _("Echec lors de la creation du repertoires.");
431                $this->addToMessage ($message_class, $message);
432          }          }
433      }      }
434            
435      /**      /*
436       * Envoie un mail avec piece jointe       * Methode permettant de lister tous les fichiers d'un dossier
      *  
      * @param string $title Titre du mail  
      * @param string $message Corps du mail  
      * @param string $recipient Destinataire du mail  
      * @param array $file Destinataire du mail  
      * @access public  
      * @return bool True si le mail est correctement envoye, false sinon.  
437       */       */
438      public function sendMail($title, $message, $recipient, $file = array()) {      function getFolderFileList($id_folder) {
           
         @include_once "../php/phpmailer/class.phpmailer.php";  
           
         if (!class_exists("PHPMailer")) {  
             $this->addToLog("sendMail(): !class_exists(\"PHPMailer\")", DEBUG_MODE);  
             return false;  
         }  
439    
440          //          $file_list = array();
441          $this->setMailConfig();          if(is_dir($this->getPathFolderTrs().$id_folder)) {
442                if($dossier = opendir($this->getPathFolderTrs().$id_folder)) {
443                    
444                    while(false !== ($fichier = readdir($dossier))) {
445                    
446                        if($fichier != '.' && $fichier != '..' && !is_dir($fichier)) {
447                            $file_list[]=array( $fichier,
448                                filemtime($this->getPathFolderTrs().$id_folder."/".$fichier));
449                        } // On ferme le if (qui permet de ne pas afficher index.php, etc.)
450                    
451                    } // On termine la boucle
452                    
453          //                  closedir($dossier);
454          if ($this->mail_config == false) {      
455              $this->addToLog("sendMail(): aucune configuration mail", DEBUG_MODE);              } else {
456              return false;                  $this->displayMessage("error", _("Les documents du repertoire ne sont pas accessible."));
457                }
458            } else {
459                $this->displayMessage("error", _("Ce repertoire n'a pas de document."));
460          }          }
461                    return $file_list;
462        }
463        
464        /**
465         *
466         */
467        function notExistsError ($explanation = NULL) {
468            // message
469            $message_class = "error";
470            $message = _("Cette page n'existe pas.");
471            $this->addToMessage ($message_class, $message);
472          //          //
473          $mail = new PHPMailer(true);          $this->setFlag(NULL);
474            $this->display();
475                    
476          //          //
477          $mail->IsSMTP();          die();
         $mail->Username = $this->mail_config["mail_username"];  
         $mail->Password = $this->mail_config["mail_pass"];  
         if ($this->mail_config["mail_username"] == '') {  
             $mail->SMTPAuth = false;  
         } else {  
             $mail->SMTPAuth = true;  
         }  
         $mail->Port = $this->mail_config["mail_port"];  
         $mail->Host = $this->mail_config["mail_host"];  
         $mail->AddReplyTo($this->mail_config["mail_from"], $this->mail_config["mail_from_name"]);  
         $mail->From = $this->mail_config["mail_from"];  
         $mail->FromName = $this->mail_config["mail_from_name"];  
         foreach (explode(",",$recipient) as $adresse) {  
             if (!$this->checkValidEmailAddress($adresse)) {  
                 $this->addToLog("sendMail(): courriel incorrect ".$adresse, DEBUG_MODE);  
                 return false;  
             } else  
                 $mail->AddAddress(trim($adresse));  
         }  
         $mail->IsHTML(true);  
           
         // Corps du message  
         $mail_body ="<html>";  
         $mail_body .= "<head><title>".$title."</title></head>";  
         $mail_body .= "<body>".$message."</body>";  
         $mail_body .= "</html>";  
           
         $mail->Subject  = $title;  
         $mail->MsgHTML($mail_body);  
         foreach($file as $oneFile) {  
               
             if($oneFile['stream']){  
                 $mail->AddStringAttachment($oneFile['content'], $oneFile['title'], $oneFile['encoding'] = 'base64',$oneFile['type'] = 'application/octet-stream');  
             } else{  
                 $mail->AddAttachment($oneFile['url']);  
             }  
         }  
         // Envoie de l'email  
         if ($mail->Send()) {  
             return true;  
         } else {  
             $this->addToLog("sendMail(): ".$mail->ErrorInfo, DEBUG_MODE);  
             return false;  
         }  
478      }      }
479    
480         // }}}
481    
482  }  }
483    
484  ?>  ?>

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26