/[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 765 by fmichon, Tue Nov 20 11:19:16 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 288  class utils extends application { Line 306  class utils extends application {
306      }      }
307    
308            
     /**  
      *  
      */  
     function addToLog($message, $type = DEBUG_MODE) {  
         //  
         if (!defined('REST_REQUEST')) {  
             logger::instance()->log("class ".get_class($this)." - ".$message, $type);  
         }  
     }  
309            
310      /**      /**
311       * Envoie un mail avec piece jointe       * Envoie un mail avec piece jointe
# Line 393  class utils extends application { Line 402  class utils extends application {
402          // Fonctionnement standard          // Fonctionnement standard
403          return parent::isAccredited($obj, $operator);          return parent::isAccredited($obj, $operator);
404      }      }
405    
406        /**
407         * Méthode de création de répertoire dans le dossier /trs correspondant
408         * à l'id du tableau de configuration de la connexion à la base de donnée
409         * (dyn/database.inc.php)
410         **/
411        function createFolder($folder) {
412            if (!mkdir($this->getPathFolderTrs().$folder)) {
413                // message
414                $message_class = "error";
415                $message = _("Echec lors de la creation du repertoires.");
416                $this->addToMessage ($message_class, $message);
417            }
418        }
419            
420      /*      /*
421       * Methode permettant de lister tous les fichiers d'un dossier       * Methode permettant de lister tous les fichiers d'un dossier
422       */       */
423      function get_folder_file_list($id_folder) {      function getFolderFileList($id_folder) {
424    
425          $file_list = array();          $file_list = array();
426          if(is_dir('../trs/'.$id_folder)) {          if(is_dir($this->getPathFolderTrs().$id_folder)) {
427              if($dossier = opendir('../trs/'.$id_folder)) {              if($dossier = opendir($this->getPathFolderTrs().$id_folder)) {
428                                    
429                  while(false !== ($fichier = readdir($dossier))) {                  while(false !== ($fichier = readdir($dossier))) {
430                                    
431                      if($fichier != '.' && $fichier != '..' && !is_dir($fichier)) {                      if($fichier != '.' && $fichier != '..' && !is_dir($fichier)) {
432                                                $file_list[]=array( $fichier,
433                          $file_list[]=$fichier;                              filemtime($this->getPathFolderTrs().$id_folder."/".$fichier));
434                      } // 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.)
435                                    
436                  } // On termine la boucle                  } // On termine la boucle
# Line 415  class utils extends application { Line 438  class utils extends application {
438                  closedir($dossier);                  closedir($dossier);
439            
440              } else {              } else {
441                  $this->displayMessage("error", _("Les documents du dossier ne sont pas accessible."));                  $this->displayMessage("error", _("Les documents du repertoire ne sont pas accessible."));
442              }              }
443          } else {          } else {
444              $this->displayMessage("error", _("Ce dossier n'a pas de document."));              $this->displayMessage("error", _("Ce repertoire n'a pas de document."));
445          }          }
446          return $file_list;          return $file_list;
447      }      }
448    
449        /*
450         * Store the data recived in the request into a file on the
451         * local filesystem.
452         * @todo This function will need to be changed for the save to
453         * be on GED
454         * @param mixed $data The data received with the request
455         * @param string $id The consultation ID
456         * @return string OK on success, KO otherwise
457         */
458            
459        function storeDecisionFile(&$fichier_base64, $basename, $dossier, $prefix = '') {
460            
461            if (empty($fichier_base64)) {
462                $this -> addToMessage("error", _("Le fichier est vide"));
463                return false;
464            }
465            $dir = $this->getPathFolderTrs().$dossier;
466            
467            // if a file already exists by that name and it
468            // is not a directory, back out
469            /*if (file_exists($dir) AND is_dir($dir)) {
470                $this -> addToMessage("error", _("Le repertoire n'existe pas, le fichier ne peut pas etre enregistre."));
471                return false;
472            }*/
473            // if a dirextory by that name exists, make sure it does
474            // not already contain an avis de consultation, MAYBE WE DON'T NEED THIS
475            if (file_exists($dir) AND is_dir($dir)) {
476                $dir_contents = trim(shell_exec('ls '.$dir));
477                if (strpos($dir_contents, ' ') != false) {
478                    $dir_contents = explode(' ', $dir_contents);
479                } else {
480                    $dir_contents = array($dir_contents);
481                }
482                foreach ($dir_contents as $basefname) { // very useful for consultation
483                    if (strpos($basefname, $prefix)!==false) {
484                        return _("Un retour d'avis existe deja.");
485                        
486                    }
487                }
488            } else {
489                $this->createFolder($dossier);
490            }        
491            
492            // store the file contents into the file named:
493            //      consultation_<ID>_<file_name_received>
494            $file_len = strlen($fichier_base64);
495    
496            $filename = $dir."/".$prefix.$basename;
497    
498            $file = fopen($filename, 'w');
499            if (!$file) {
500                return _("Echec a la creation du fichier.");
501            }
502            // check that the number of bytes written is equal to the length
503            // of the data received
504            $num_written = fwrite($file, $fichier_base64, $file_len);
505            
506            if (!$num_written) {
507                // remove the file
508                // the return value from shell can't be used for checking since
509                // one can not know if the NULL returned is because there was no
510                // output or because there was an error
511                $ret = shell_exec("rm -f $filename 2>&1");
512                //if ($ret == NULL) { // an error occured while deleting the file
513                //}
514                return _("La sauvegarde du fichier a echoue");
515            }
516            fclose($file);
517            return true;
518        }
519        
520        /**
521         *
522         */
523        function notExistsError ($explanation = NULL) {
524            // message
525            $message_class = "error";
526            $message = _("Cette page n'existe pas.");
527            $this->addToMessage ($message_class, $message);
528            //
529            $this->setFlag(NULL);
530            $this->display();
531            
532            //
533            die();
534        }
535        
536        /**
537         * Méthode de récupération des informations de l'utilisateur connecté.
538         */
539        function getUserInfos() {
540            
541            // Si l'utilisateur est loggé $_SESSION existe
542            if(isset($_SESSION['login']) AND !empty($_SESSION['login'])) {
543                
544                // Récupération des infos utilisateur
545                $sqlUser = "SELECT om_utilisateur, nom, email, login, om_collectivite, om_profil ".
546                "FROM om_utilisateur WHERE login = '".$_SESSION['login']."'";
547                $resUser=$this->db->query($sqlUser);
548                $this->addToLog("getUserInfos(): db->query(\"".$sqlUser."\");", VERBOSE_MODE);
549                $this->isDatabaseError($resUser);
550                $this->om_utilisateur=&$resUser->fetchRow(DB_FETCHMODE_ASSOC);
551                
552                // Récupération des infos instructeur
553                $sqlInstr = "SELECT instructeur.instructeur, instructeur.nom, instructeur.telephone, division.code, division.libelle ".
554                "FROM instructeur INNER JOIN division ON division.division=instructeur.division ".
555                "WHERE instructeur.om_utilisateur = ".$this->om_utilisateur['om_utilisateur'];
556                $resInstr=$this->db->query($sqlInstr);
557                $this->addToLog("getUserInfos(): db->query(\"".$sqlInstr."\");", VERBOSE_MODE);
558                $this->isDatabaseError($resInstr);
559                $tempInstr=&$resInstr->fetchRow(DB_FETCHMODE_ASSOC);
560                // Si il y a un resultat c'est un instructeur
561                if(count($tempInstr)>0) {
562                    $this->user_is_instr=true;
563                    $this->om_utilisateur = array_merge($this->om_utilisateur,$tempInstr);
564                }
565                
566                // Récupération des infos de services ext consultés
567                $sqlServExt = "SELECT service.service, service.abrege, service.libelle ".
568                "FROM service ".
569                "INNER JOIN lien_service_om_utilisateur ON lien_service_om_utilisateur.service=service.service ".
570                "WHERE lien_service_om_utilisateur.om_utilisateur = ".$this->om_utilisateur['om_utilisateur'];
571                $resServExt=$this->db->query($sqlServExt);
572                $this->addToLog("getUserInfos(): db->query(\"".$sqlServExt."\");", VERBOSE_MODE);
573                $this->isDatabaseError($resServExt);
574                
575                while ($tempServExt=&$resServExt->fetchRow(DB_FETCHMODE_ASSOC)) {
576                    $this->om_utilisateur['service'][]=$tempServExt;
577                }
578                // Si il y a un resultat c'est un utilisateur de service
579                if(isset($this->om_utilisateur['service'])) {
580                    $this->user_is_service_ext=true;
581                }
582            }
583        }
584        
585        /**
586         * getter user_is_service_ext
587         */
588        function isUserServiceExt() {
589            return $this->user_is_service_ext;
590        }
591        /**
592         * getter user_is_instr
593         */
594        function isUserInstructeur() {
595            return $this->user_is_instr;
596        }
597  }  }
598    
599  ?>  ?>

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26