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

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

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

revision 10573 by softime, Thu Oct 14 12:43:35 2021 UTC revision 18876 by softime, Tue Oct 8 08:41:06 2024 UTC
# Line 61  class DigitalizedDocument { Line 61  class DigitalizedDocument {
61      public function __construct($f) {      public function __construct($f) {
62    
63          //Set des attributs          //Set des attributs
64          $this->NO_REP = _("Le dossier n'existe pas.");          $this->NO_REP = __("Le dossier n'existe pas.");
65          $this->NO_FILES = _("Le dossier est vide.");          $this->NO_FILES = __("Le dossier est vide.");
66          $this->NO_FILE_EXIST = _("Le fichier n'existe pas.");          $this->NO_FILE_EXIST = __("Le fichier n'existe pas.");
67          $this->DOC_NO_CONFORME = _("Le document n'est pas conforme a la regle RG2 : ");          $this->DOC_NO_CONFORME = __("Le document n'est pas conforme a la regle RG2 : ");
68          $this->NO_LINK = _("Le lien entre le document et le dossier d'instruction n'a pu etre etabli.");          $this->NO_LINK = __("Le lien entre le document et le dossier d'instruction n'a pu etre etabli.");
69          $this->NO_MOVE = _("Le fichier n'a pas pu etre deplace.");          $this->NO_MOVE = __("Le fichier n'a pas pu etre deplace.");
70          $this->NO_DELETE_FOLDER = _("Le dossier n'a pas pu etre supprime");          $this->NO_DELETE_FOLDER = __("Le dossier n'a pas pu etre supprime");
71          $this->NO_DELETE_FILE = _("Le fichier n'a pas pu etre supprime : ");          $this->NO_DELETE_FILE = __("Le fichier n'a pas pu etre supprime : ");
72          $this->NO_IMPORT = _("L'importation a été annulee.");          $this->NO_IMPORT = __("L'importation a été annulee.");
73    
74          //          //
75          $this->f = $f;          $this->f = $f;
# Line 109  class DigitalizedDocument { Line 109  class DigitalizedDocument {
109          // Dans le nom du fichier des "_" sont utilisés à la place des "-" pour éviter          // Dans le nom du fichier des "_" sont utilisés à la place des "-" pour éviter
110          // la confusion entre le code de le pièce et son numéro de version. Pour          // la confusion entre le code de le pièce et son numéro de version. Pour
111          // retrouver la pièce ils doivent être remplacé.          // retrouver la pièce ils doivent être remplacé.
112          $sql = sprintf(          $qres = $this->f->get_one_result_from_db_query(
113              'SELECT              sprintf(
114                  lien_document_n_type_d_i_t.document_numerise_type                  'SELECT
115              FROM                      lien_document_n_type_d_i_t.document_numerise_type
116                  %1$slien_document_n_type_d_i_t                  FROM
117              WHERE                      %1$slien_document_n_type_d_i_t
118                  lien_document_n_type_d_i_t.code LIKE \'%2$s\'',                  WHERE
119              DB_PREFIXE,                      lien_document_n_type_d_i_t.code LIKE \'%2$s\'',
120              str_replace('_', '-', $code)                  DB_PREFIXE,
121                    $this->f->db->escapeSimple(str_replace('_', '-', $code))
122                ),
123                array(
124                    "origin" => __METHOD__,
125                )
126          );          );
127          $document_numerise_type = $this->f->db->getOne($sql);          $document_numerise_type = $qres["result"];
         $this->f->addToLog(__METHOD__."(): db->getOne(".$sql.")", VERBOSE_MODE);  
         $this->f->isDatabaseError($document_numerise_type);  
128          if (! empty($document_numerise_type) && is_numeric($document_numerise_type)) {          if (! empty($document_numerise_type) && is_numeric($document_numerise_type)) {
129              return $document_numerise_type;              return $document_numerise_type;
130          }          }
131    
132          //Requête SQL          //Requête SQL
133          $sql = "SELECT document_numerise_type          $qres = $this->f->get_one_result_from_db_query(
134                  FROM ".DB_PREFIXE."document_numerise_type              sprintf(
135                  WHERE code = '".$code."'";                  'SELECT
136          $document_numerise_type = $this->f->db->getOne($sql);                      document_numerise_type
137          $this->f->addToLog(__METHOD__."(): db->getOne(".$sql.")", VERBOSE_MODE);                  FROM
138          $this->f->isDatabaseError($document_numerise_type);                      %1$sdocument_numerise_type
139                    WHERE
140          //retourne la clé primaire                      code = \'%2$s\'',
141                    DB_PREFIXE,
142                    $this->f->db->escapeSimple($code)
143                ),
144                array(
145                    "origin" => __METHOD__,
146                )
147            );
148            $document_numerise_type = $qres["result"];
149          return $document_numerise_type;          return $document_numerise_type;
150      }      }
151    
# Line 171  class DigitalizedDocument { Line 182  class DigitalizedDocument {
182              while(false !== ($file = readdir($dir))) {              while(false !== ($file = readdir($dir))) {
183    
184                  //Si le document est bien un fichier de type pdf                  //Si le document est bien un fichier de type pdf
185                  if($file != '.' && $file != '..' && !is_dir($dir.$file)                  $autorisedExtension = explode(';', $this->f->config['upload_extension']);
                     && strcasecmp(strstr($file, '.'), ".pdf") == 0) {  
186    
187                      //Alors il est ajouté dans le tableau                  // $this->add_to_log(__METHOD__."(): file = ".$file."; extension ? = ".strstr($file, '.')."; tableau= ".var_export($autorisedExtension, true));
188                    if($file != '.' && $file != '..' && !is_dir($dir.$file)
189                        && ! empty($autorisedExtension) && is_array($autorisedExtension)
190                        && in_array(strtolower(strstr($file, '.')), $autorisedExtension, true) === true) {
191                            
192                    // Alors il est ajouté dans le tableau
193                      array_push($listFiles, $file);                      array_push($listFiles, $file);
194    
195                  }                  }
# Line 375  class DigitalizedDocument { Line 390  class DigitalizedDocument {
390          if ($add === false) {          if ($add === false) {
391    
392              //Log d'erreur              //Log d'erreur
393              $this->add_to_log(__METHOD__."(): ".$dossier."/".$filename." : "._("Une erreur s'est produite lors de l'ajout du document ").$filename.".", true);              $this->add_to_log(__METHOD__."(): ".$dossier."/".$filename." : ".__("Une erreur s'est produite lors de l'ajout du document ").$filename.".", true);
394              $this->add_to_log(__METHOD__."(): ".$document_numerise->msg, true);              $this->add_to_log(__METHOD__."(): ".$document_numerise->msg, true);
395              return false;              return false;
396          }          }
# Line 499  class DigitalizedDocument { Line 514  class DigitalizedDocument {
514       * à l'importation des documents scannés       * à l'importation des documents scannés
515       * @param string $pathSrc Le chemin vers le dossier à traiter       * @param string $pathSrc Le chemin vers le dossier à traiter
516       * @param string $pathDes Le chemin vers le dossier après le traitement       * @param string $pathDes Le chemin vers le dossier après le traitement
517       *       * @param string $pathErr Le chemin vers le dossier des fichiers en erreur
518         *
519       * @return boolean true si le traitement à été fait sinon false       * @return boolean true si le traitement à été fait sinon false
520       */       */
521      function run_import($pathSrc, $pathDes) {      function run_import($pathSrc, $pathDes, $pathErr = null) {
522            
523          //Récupération du nom du répertoire          //Récupération du nom du répertoire
524          $foldername = substr(strrchr($pathSrc, "/"), 1);          $foldername = substr(strrchr($pathSrc, "/"), 1);
525    
# Line 511  class DigitalizedDocument { Line 527  class DigitalizedDocument {
527          $dossier = str_replace('.', '', $foldername);          $dossier = str_replace('.', '', $foldername);
528    
529          //Vérifie si le numéro de dossier d'instruction est sur quatres chiffres          //Vérifie si le numéro de dossier d'instruction est sur quatres chiffres
530          if(preg_match('/[A-Za-z]{2,3}'.$this->f->getParameter("departement").          if(preg_match('/[A-Za-z]{2,3}'.strtoupper($this->f->getParameter("departement")).
531              $this->f->getParameter("commune").'[0-9]{2}[0-9]{4}[A-Za-z]{1,5}[0-9]{1,2}/',              $this->f->getParameter("commune").'[0-9]{2}[0-9]{4}[A-Za-z]{1,5}[0-9]{1,2}/',
532              $dossier)){              $dossier)){
533                            
534              //On modifie le nom du dossier d'instruction pour qu'il ait la numérotation              //On modifie le nom du dossier d'instruction pour qu'il ait la numérotation
535              //standard              //standard
536              $tempDossier = preg_split('/([A-Za-z]{2,3}'.$this->f->getParameter("departement").              $tempDossier = preg_split('/([A-Za-z]{2,3}'.strtoupper($this->f->getParameter("departement")).
537                  $this->f->getParameter("commune").'[0-9]{2})/i', $dossier, 0, PREG_SPLIT_NO_EMPTY |                  $this->f->getParameter("commune").'[0-9]{2})/i', $dossier, 0, PREG_SPLIT_NO_EMPTY |
538                  PREG_SPLIT_DELIM_CAPTURE);                  PREG_SPLIT_DELIM_CAPTURE);
539                            
# Line 525  class DigitalizedDocument { Line 541  class DigitalizedDocument {
541          }          }
542                    
543          //On vérifie que le dossier existe          //On vérifie que le dossier existe
544          $sql = "SELECT dossier          $inst_dossier_instruction = $this->f->get_inst__om_dbform(array(
545              FROM ".DB_PREFIXE."dossier              "obj" => "dossier",
546              WHERE dossier = '".$dossier."'";              "idx" => $dossier,
547          $dossierExist = $this->f->db->getOne($sql);          ));
548          $this->f->addToLog(__METHOD__."(): db->getOne(".$sql.")", VERBOSE_MODE);          // Si le dossier n'existe pas on verifie si le dossier existe avec un suffixe sur un seul caractère par exemple M1 au lieu de M01
549          $this->f->isDatabaseError($dossierExist);          if (!$inst_dossier_instruction->exists()){
550                        $dossier = str_replace(' ', '', $dossier);
551          //Si le dossier n'existe pas on annule l'importation              $matches = array();
552          if (!$dossierExist){              // Cette expression reguliere permet de créer 3 groupe dans le numero de dossier afin
553              $this->add_to_log(__METHOD__."(): ".$pathSrc."/ : "._("Le dossier d'instruction n'existe pas.")." ".$this->NO_IMPORT, true);              // de pouvoir supprimer le 0 du numero de suffixe grace a un intval
554              return false;              // Ceci est fait pour pouvoir verifier si le dossier traité existe avec un numero de suffixe sur un seul caractère
555                if (preg_match('/(?P<num_dossier_sans_suffix>^.*?)(?P<lettre_suffix>[A-Za-z]{1,5})(?P<num_suffix>[0-9]{1,2}$)/', $dossier, $matches) === 1) {
556                    $dossier = $matches["num_dossier_sans_suffix"] . $matches["lettre_suffix"] . intval($matches["num_suffix"]);
557                    $inst_dossier_instruction = $this->f->get_inst__om_dbform(array(
558                        "obj" => "dossier",
559                        "idx" => $dossier,
560                    ));
561                    if (!$inst_dossier_instruction->exists()){
562                        $this->add_to_log(__METHOD__."(): ".$pathSrc."/ : ".__("Le dossier d'instruction n'existe pas.")." ".$this->NO_IMPORT, true);
563                        return false;
564                    }
565                }
566                else {
567                    $this->add_to_log(__METHOD__."(): ".$pathSrc."/ : ".__("Le dossier d'instruction n'existe pas.")." ".$this->NO_IMPORT, true);
568                    return false;
569                }
570          }          }
571    
572          //Liste les documents contenus dans le dossier          //Liste les documents contenus dans le dossier
# Line 588  class DigitalizedDocument { Line 619  class DigitalizedDocument {
619    
620                      }                      }
621                      else {                      else {
622                          //On annule l'importation                          //On annule l'importation et on move dans le repertoire erreur
623                          $this->add_to_log(__METHOD__."(): ".$pathSrc." : "._("Une erreur s'est produite lors de l'ajout du document ").$filename.". ".$this->NO_IMPORT, true);                          $this->moveDocumentNumerise($pathSrc, $pathErr, $filename);
624                            $this->add_to_log(__METHOD__."(): ".$pathSrc." : ".__("Une erreur s'est produite lors de l'ajout du document ").$filename.". ".$this->NO_IMPORT, true);
625                          $this->filenameError[] = $filename;                          $this->filenameError[] = $filename;
626                      }                      }
627                  }                  }

Legend:
Removed from v.10573  
changed lines
  Added in v.18876

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26