/[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 580 by nhaye, Fri Nov 2 14:24:05 2012 UTC revision 815 by fmichon, Fri Nov 23 11:21:41 2012 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                // {{{
     /**  
      * 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() {  
41    
42          // Footer      // Ajout de variables de session contenant la division pour permettre une
43          if (!defined('REST_REQUEST')) {      // utilisation plus efficace dans les requetes
44              $this->displayFooter();      function triggerAfterLogin($utilisateur = NULL) {
45            //
46            $sql = "SELECT instructeur.division, division.code
47            FROM ".DB_PREFIXE."instructeur
48            LEFT JOIN ".DB_PREFIXE."division
49            ON instructeur.division = division.division
50            WHERE instructeur.om_utilisateur='".$utilisateur["om_utilisateur"]."'";
51            $res = $this->db->query($sql);
52            $this->addToLog("triggerAfterLogin(): db->query(\"".$sql."\");", VERBOSE_MODE);
53            $this->isDatabaseError($res);
54            $row = $res->fetchrow(DB_FETCHMODE_ASSOC);
55            //
56            if (isset($row["division"]) && $row["division"] != NULL) {
57                $_SESSION["division"] = $row["division"];
58                $_SESSION["division_code"] = $row["code"];
59            } else {
60                $_SESSION["division"] = "0";
61                $_SESSION["division_code"] = "";
62          }          }
63    
64          // Deconnexion SGBD      }    
         $this->disconnectDatabase();  
   
         // Logger  
         $this->addToLog("__destruct()", EXTRA_VERBOSE_MODE);  
65    
66          // Logger      // Affichage des actions supplémentaires
67          $this->addToLog("__destruct() : ".$this->elapsedtime()." sec", VERBOSE_MODE);      function displayActionExtras() {
68            // Affichage de la division si l'utilisateur en possède une
69            if ($_SESSION["division"] != 0) {
70                echo "\t\t\t<li class=\"action-division\">";
71                echo "(".$_SESSION['division_code'].")";
72                echo "</li>\n";
73            }
74        }
75        
76        // }}}
77    
         // Affichage des logs  
         logger::instance()->displayLog();  
78    
79          // Footer HTML      var $om_utilisateur = array();
80          if (!defined('REST_REQUEST')) {      var $user_is_instr = false;
81              $this->displayHTMLFooter();      var $user_is_service_ext = false;
82          }      
83        /**
84         * Surcharge du constructeur de la classe
85         */
86        function __construct($flag = NULL, $right = NULL, $title = NULL, $icon = NULL, $help = NULL) {
87            parent::__construct($flag, $right, $title, $icon, $help);
88            $this->getUserInfos();
89      }      }
90    
91    
# Line 287  class utils extends application { Line 305  class utils extends application {
305          }          }
306      }      }
307    
       
     /**  
      *  
      */  
     function addToLog($message, $type = DEBUG_MODE) {  
         //  
         if (!defined('REST_REQUEST')) {  
             logger::instance()->log("class ".get_class($this)." - ".$message, $type);  
         }  
     }  
       
     /**  
      * Envoie un mail avec piece jointe  
      *  
      * @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.  
      */  
     public function sendMail($title, $message, $recipient, $file = array()) {  
           
         @include_once "../php/phpmailer/class.phpmailer.php";  
           
         if (!class_exists("PHPMailer")) {  
             $this->addToLog("sendMail(): !class_exists(\"PHPMailer\")", DEBUG_MODE);  
             return false;  
         }  
   
         //  
         $this->setMailConfig();  
           
         //  
         if ($this->mail_config == false) {  
             $this->addToLog("sendMail(): aucune configuration mail", DEBUG_MODE);  
             return false;  
         }  
           
         //  
         $mail = new PHPMailer(true);  
           
         //  
         $mail->IsSMTP();  
   
         $mail->SMTPAuth = true; // enable SMTP authentication  
         $mail->SMTPSecure = "tls";  
         $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;  
         }  
     }  
   
308      /**      /**
309       *       *
310       */       */
# Line 393  class utils extends application { Line 318  class utils extends application {
318          // Fonctionnement standard          // Fonctionnement standard
319          return parent::isAccredited($obj, $operator);          return parent::isAccredited($obj, $operator);
320      }      }
321    
322        /**
323         * Méthode de création de répertoire dans le dossier /trs correspondant
324         * à l'id du tableau de configuration de la connexion à la base de donnée
325         * (dyn/database.inc.php)
326         **/
327        function createFolder($folder) {
328            if (!mkdir($this->getPathFolderTrs().$folder)) {
329                // message
330                $message_class = "error";
331                $message = _("Echec lors de la creation du repertoires.");
332                $this->addToMessage ($message_class, $message);
333            }
334        }
335            
336      /*      /*
337       * Methode permettant de lister tous les fichiers d'un dossier       * Methode permettant de lister tous les fichiers d'un dossier
338       */       */
339      function get_folder_file_list($id_folder) {      function getFolderFileList($id_folder) {
340    
341          $file_list = array();          $file_list = array();
342          if(is_dir('../trs/'.$id_folder)) {          if(is_dir($this->getPathFolderTrs().$id_folder)) {
343              if($dossier = opendir('../trs/'.$id_folder)) {              if($dossier = opendir($this->getPathFolderTrs().$id_folder)) {
344                                    
345                  while(false !== ($fichier = readdir($dossier))) {                  while(false !== ($fichier = readdir($dossier))) {
346                                    
347                      if($fichier != '.' && $fichier != '..' && !is_dir($fichier)) {                      if($fichier != '.' && $fichier != '..' && !is_dir($fichier)) {
348                                                $file_list[]=array( $fichier,
349                          $file_list[]=$fichier;                              filemtime($this->getPathFolderTrs().$id_folder."/".$fichier));
350                      } // On ferme le if (qui permet de ne pas afficher index.php, etc.)                      } // On ferme le if (qui permet de ne pas afficher index.php, etc.)
351                                    
352                  } // On termine la boucle                  } // On termine la boucle
# Line 415  class utils extends application { Line 354  class utils extends application {
354                  closedir($dossier);                  closedir($dossier);
355            
356              } else {              } else {
357                  $this->displayMessage("error", _("Les documents du dossier ne sont pas accessible."));                  $this->displayMessage("error", _("Les documents du repertoire ne sont pas accessible."));
358              }              }
359          } else {          } else {
360              $this->displayMessage("error", _("Ce dossier n'a pas de document."));              $this->displayMessage("error", _("Ce repertoire n'a pas de document."));
361          }          }
362          return $file_list;          return $file_list;
363      }      }
364    
365        /*
366         * Store the data recived in the request into a file on the
367         * local filesystem.
368         * @todo This function will need to be changed for the save to
369         * be on GED
370         * @param mixed $data The data received with the request
371         * @param string $id The consultation ID
372         * @return string OK on success, KO otherwise
373         */
374            
375        function storeDecisionFile(&$fichier_base64, $basename, $dossier, $prefix = '') {
376            
377            if (empty($fichier_base64)) {
378                $this -> addToMessage("error", _("Le fichier est vide"));
379                return false;
380            }
381            $dir = $this->getPathFolderTrs().$dossier;
382            
383            // if a file already exists by that name and it
384            // is not a directory, back out
385            /*if (file_exists($dir) AND is_dir($dir)) {
386                $this -> addToMessage("error", _("Le repertoire n'existe pas, le fichier ne peut pas etre enregistre."));
387                return false;
388            }*/
389            // if a dirextory by that name exists, make sure it does
390            // not already contain an avis de consultation, MAYBE WE DON'T NEED THIS
391            if (file_exists($dir) AND is_dir($dir)) {
392                $dir_contents = trim(shell_exec('ls '.$dir));
393                if (strpos($dir_contents, ' ') != false) {
394                    $dir_contents = explode(' ', $dir_contents);
395                } else {
396                    $dir_contents = array($dir_contents);
397                }
398                foreach ($dir_contents as $basefname) { // very useful for consultation
399                    if (strpos($basefname, $prefix)!==false) {
400                        return _("Un retour d'avis existe deja.");
401                        
402                    }
403                }
404            } else {
405                $this->createFolder($dossier);
406            }        
407            
408            // store the file contents into the file named:
409            //      consultation_<ID>_<file_name_received>
410            $file_len = strlen($fichier_base64);
411    
412            $filename = $dir."/".$prefix.$basename;
413    
414            $file = fopen($filename, 'w');
415            if (!$file) {
416                return _("Echec a la creation du fichier.");
417            }
418            // check that the number of bytes written is equal to the length
419            // of the data received
420            $num_written = fwrite($file, $fichier_base64, $file_len);
421            
422            if (!$num_written) {
423                // remove the file
424                // the return value from shell can't be used for checking since
425                // one can not know if the NULL returned is because there was no
426                // output or because there was an error
427                $ret = shell_exec("rm -f $filename 2>&1");
428                //if ($ret == NULL) { // an error occured while deleting the file
429                //}
430                return _("La sauvegarde du fichier a echoue");
431            }
432            fclose($file);
433            return true;
434        }
435        
436        /**
437         *
438         */
439        function notExistsError ($explanation = NULL) {
440            // message
441            $message_class = "error";
442            $message = _("Cette page n'existe pas.");
443            $this->addToMessage ($message_class, $message);
444            //
445            $this->setFlag(NULL);
446            $this->display();
447            
448            //
449            die();
450        }
451        
452        /**
453         * Méthode de récupération des informations de l'utilisateur connecté.
454         */
455        function getUserInfos() {
456            
457            // Si l'utilisateur est loggé $_SESSION existe
458            if(isset($_SESSION['login']) AND !empty($_SESSION['login'])) {
459                
460                // Récupération des infos utilisateur
461                $sqlUser = "SELECT om_utilisateur, nom, email, login, om_collectivite, om_profil ".
462                "FROM om_utilisateur WHERE login = '".$_SESSION['login']."'";
463                $resUser=$this->db->query($sqlUser);
464                $this->addToLog("getUserInfos(): db->query(\"".$sqlUser."\");", VERBOSE_MODE);
465                $this->isDatabaseError($resUser);
466                $this->om_utilisateur=&$resUser->fetchRow(DB_FETCHMODE_ASSOC);
467                
468                // Récupération des infos instructeur
469                $sqlInstr = "SELECT instructeur.instructeur, instructeur.nom, instructeur.telephone, division.code, division.libelle ".
470                "FROM instructeur INNER JOIN division ON division.division=instructeur.division ".
471                "WHERE instructeur.om_utilisateur = ".$this->om_utilisateur['om_utilisateur'];
472                $resInstr=$this->db->query($sqlInstr);
473                $this->addToLog("getUserInfos(): db->query(\"".$sqlInstr."\");", VERBOSE_MODE);
474                $this->isDatabaseError($resInstr);
475                $tempInstr=&$resInstr->fetchRow(DB_FETCHMODE_ASSOC);
476                // Si il y a un resultat c'est un instructeur
477                if(count($tempInstr)>0) {
478                    $this->user_is_instr=true;
479                    $this->om_utilisateur = array_merge($this->om_utilisateur,$tempInstr);
480                }
481                
482                // Récupération des infos de services ext consultés
483                $sqlServExt = "SELECT service.service, service.abrege, service.libelle ".
484                "FROM service ".
485                "INNER JOIN lien_service_om_utilisateur ON lien_service_om_utilisateur.service=service.service ".
486                "WHERE lien_service_om_utilisateur.om_utilisateur = ".$this->om_utilisateur['om_utilisateur'];
487                $resServExt=$this->db->query($sqlServExt);
488                $this->addToLog("getUserInfos(): db->query(\"".$sqlServExt."\");", VERBOSE_MODE);
489                $this->isDatabaseError($resServExt);
490                
491                while ($tempServExt=&$resServExt->fetchRow(DB_FETCHMODE_ASSOC)) {
492                    $this->om_utilisateur['service'][]=$tempServExt;
493                }
494                // Si il y a un resultat c'est un utilisateur de service
495                if(isset($this->om_utilisateur['service'])) {
496                    $this->user_is_service_ext=true;
497                }
498            }
499        }
500        
501        /**
502         * getter user_is_service_ext
503         */
504        function isUserServiceExt() {
505            return $this->user_is_service_ext;
506        }
507        /**
508         * getter user_is_instr
509         */
510        function isUserInstructeur() {
511            return $this->user_is_instr;
512        }
513  }  }
514    
515  ?>  ?>

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26