/[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 5254 by nhaye, Fri Nov 25 10:59:14 2016 UTC revision 11228 by softime, Tue Jan 18 17:22:30 2022 UTC
# Line 18  Line 18 
18  class DigitalizedDocument {  class DigitalizedDocument {
19    
20      /**      /**
21         * [$log_file description]
22         * @var string
23         */
24        static protected $log_file = "digitalized_document.log";
25    
26        /**
27       * @access static       * @access static
28       * @var string Messages utilisées pour l'écriture dans le log       * @var string Messages utilisées pour l'écriture dans le log
29       */       */
# Line 98  class DigitalizedDocument { Line 104  class DigitalizedDocument {
104       * @return int       Identifiant du type de document       * @return int       Identifiant du type de document
105       */       */
106      private function get_document_numerise_by_code($code) {      private function get_document_numerise_by_code($code) {
107            // Recherche du type de document avec le code de la nomenclature externe
108            // issu du nom du fichier
109            // 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
111            // retrouver la pièce ils doivent être remplacé.
112            $sql = sprintf(
113                'SELECT
114                    lien_document_n_type_d_i_t.document_numerise_type
115                FROM
116                    %1$slien_document_n_type_d_i_t
117                WHERE
118                    lien_document_n_type_d_i_t.code LIKE \'%2$s\'',
119                DB_PREFIXE,
120                str_replace('_', '-', $code)
121            );
122            $document_numerise_type = $this->f->db->getOne($sql);
123            $this->f->addToLog(__METHOD__."(): db->getOne(".$sql.")", VERBOSE_MODE);
124            $this->f->isDatabaseError($document_numerise_type);
125            if (! empty($document_numerise_type) && is_numeric($document_numerise_type)) {
126                return $document_numerise_type;
127            }
128    
129          //Requête SQL          //Requête SQL
130          $sql = "SELECT document_numerise_type          $sql = "SELECT document_numerise_type
# Line 114  class DigitalizedDocument { Line 141  class DigitalizedDocument {
141      /**      /**
142       * Ajoute une chaine de caracteres dans le log.       * Ajoute une chaine de caracteres dans le log.
143       * @param string $message Le message qui doit etre ajouté dans le log.       * @param string $message Le message qui doit etre ajouté dans le log.
      * @param mixed $type Le mode de log.  
144       */       */
145      protected function addToLog($message, $type = DEBUG_MODE) {      protected function add_to_log($message, $debug = false) {
146          //          //
147          logger::instance()->log($message, $type);          logger::instance()->log_to_file(self::$log_file, $message);
148            if ($debug === true) {
149                $this->f->addToLog($message, DEBUG_MODE);
150            }
151      }      }
152    
153      /**      /**
# Line 158  class DigitalizedDocument { Line 187  class DigitalizedDocument {
187          } else {          } else {
188    
189              //Sinon renvoi null              //Sinon renvoi null
190              $this->addToLog(__METHOD__."(): ".$path." : ".$this->NO_REP);              $this->add_to_log(__METHOD__."(): ".$path." : ".$this->NO_REP);
191              return null;              return null;
192          }          }
193    
194          //Si le tableau est vide on retourne null          //Si le tableau est vide on retourne null
195          if (count($listFiles) == 0) {          if (count($listFiles) == 0) {
196    
197              $this->addToLog(__METHOD__."(): ".$path." : ".$this->NO_FILES, EXTRA_VERBOSE_MODE);              $this->add_to_log(__METHOD__."(): ".$path." : ".$this->NO_FILES);
198              return null;              return null;
199    
200          }          }
# Line 217  class DigitalizedDocument { Line 246  class DigitalizedDocument {
246                  if (empty($type_doc)) {                  if (empty($type_doc)) {
247    
248                      //On retourne null                      //On retourne null
249                      $this->addToLog(__METHOD__."(): ".$this->DOC_NO_CONFORME.$filename);                      $this->add_to_log(__METHOD__."(): ".$this->DOC_NO_CONFORME.$filename, true);
250                      return null;                      return null;
251    
252                  } else {                  } else {
# Line 233  class DigitalizedDocument { Line 262  class DigitalizedDocument {
262                  //Si le tableau est vide on retourne null                  //Si le tableau est vide on retourne null
263                  if (count($metadata) == 0) {                  if (count($metadata) == 0) {
264    
265                      $this->addToLog(__METHOD__."(): ".$this->DOC_NO_CONFORME.$filename);                      $this->add_to_log(__METHOD__."(): ".$this->DOC_NO_CONFORME.$filename, true);
266                      return null;                      return null;
267    
268                  }                  }
# Line 244  class DigitalizedDocument { Line 273  class DigitalizedDocument {
273          }          }
274    
275          //Le nom du document n'est pas conforme          //Le nom du document n'est pas conforme
276          $this->addToLog(__METHOD__."(): ".$this->DOC_NO_CONFORME.$filename);          $this->add_to_log(__METHOD__."(): ".$this->DOC_NO_CONFORME.$filename, true);
277          return null;          return null;
           
278      }      }
279    
280      /**      /**
# Line 261  class DigitalizedDocument { Line 289  class DigitalizedDocument {
289          //Test si le fichier existe          //Test si le fichier existe
290          if (!file_exists($path.'/'.$filename)) {          if (!file_exists($path.'/'.$filename)) {
291              //              //
292              $this->addToLog(__METHOD__.'(): '.$path.'/'.$filename.' : '.$this->NO_FILE_EXIST);              $this->add_to_log(__METHOD__.'(): '.$path.'/'.$filename.' : '.$this->NO_FILE_EXIST, true);
293              return null;              return null;
294          }          }
295    
# Line 276  class DigitalizedDocument { Line 304  class DigitalizedDocument {
304          //Si le tableau est vide on retourne null          //Si le tableau est vide on retourne null
305          if (count($metadata) == 0) {          if (count($metadata) == 0) {
306    
307              $this->addToLog(__METHOD__."(): ".$this->DOC_NO_CONFORME.$filename);              $this->add_to_log(__METHOD__."(): ".$this->DOC_NO_CONFORME.$filename, true);
308              return null;              return null;
309    
310          }              }    
# Line 307  class DigitalizedDocument { Line 335  class DigitalizedDocument {
335       * @param  string $uid               Identifiant du fichier temporaire       * @param  string $uid               Identifiant du fichier temporaire
336       * @param  string $dossier           Identifiant du dossier d'instruction       * @param  string $dossier           Identifiant du dossier d'instruction
337       * @param  string $filename          Nom du document       * @param  string $filename          Nom du document
338       * @param  mixed $db                 Référence à la bdd       *
      * @param  mixed $DEBUG              Mode de debug  
339       * @return boolean                   Vrai ou faux       * @return boolean                   Vrai ou faux
340       */       */
341      public function createDocumentNumerise($document_numerise, $uid, $dossier, $filename, $db, $DEBUG = NULL) {      public function createDocumentNumerise($document_numerise, $uid, $dossier, $filename) {
342                    
343          //Maj en ajout          //Maj en ajout
344          $document_numerise->setParameter("maj",0);          $document_numerise->setParameter("maj",0);
# Line 320  class DigitalizedDocument { Line 347  class DigitalizedDocument {
347          $metadataFromFilename = $this->extractMetadataFromFilename($filename);          $metadataFromFilename = $this->extractMetadataFromFilename($filename);
348    
349          //Données          //Données
350            // Récupèration d'une nature de document numérisé pour pouvoir utiliser
351            // la méthode de récupèration de la valeur de la nature par défaut
352            $docNumNature = $this->f->get_inst__om_dbform(array(
353                'obj' => 'document_numerise_nature',
354                'idx' => ']'
355            ));
356    
357          $values = array(          $values = array(
358              'document_numerise' => '',              'document_numerise' => '',
359              'uid' => 'tmp|'.$uid,              'uid' => 'tmp|'.$uid,
# Line 327  class DigitalizedDocument { Line 361  class DigitalizedDocument {
361              'nom_fichier' => $filename,              'nom_fichier' => $filename,
362              'date_creation' => $metadataFromFilename['dateEvenementDocument'],              'date_creation' => $metadataFromFilename['dateEvenementDocument'],
363              'document_numerise_type' => $this->get_document_numerise_by_code($metadataFromFilename['title']),              'document_numerise_type' => $this->get_document_numerise_by_code($metadataFromFilename['title']),
364                'uid_dossier_final' => '',
365                'document_numerise_nature' => $docNumNature->get_default_select_value($dossier),
366                'description_type' => '',
367                'document_travail' => false,
368                'uid_thumbnail' => null,
369          );          );
370    
371          //Ajoute dans la table le lien          //Ajoute dans la table le lien
372          $document_numerise->ajouter($values, $db, $DEBUG);          $add = $document_numerise->ajouter($values);
373    
374          //Si le document n'est pas ajouté          //Si le document n'est pas ajouté
375          if (!$document_numerise->correct) {          if ($add === false) {
376    
377              //Log d'erreur              //Log d'erreur
378              $this->addToLog(__METHOD__."(): ".$dossier."/".$filename." : "._("Une erreur s'est produite lors de l'ajout du document ").$filename.".");              $this->add_to_log(__METHOD__."(): ".$dossier."/".$filename." : "._("Une erreur s'est produite lors de l'ajout du document ").$filename.".", true);
379              $this->addToLog(__METHOD__."(): ".$document_numerise->msg);              $this->add_to_log(__METHOD__."(): ".$document_numerise->msg, true);
380              return false;              return false;
381          }          }
382    
# Line 363  class DigitalizedDocument { Line 402  class DigitalizedDocument {
402          $move = rename($pathSrc.'/'.$filename, $pathDes.'/'.$filename);          $move = rename($pathSrc.'/'.$filename, $pathDes.'/'.$filename);
403    
404          //Si le déplacement à réussi          //Si le déplacement à réussi
405          if ($move) {          if ($move === true) {
   
             //On retourne TRUE  
406              return true;              return true;
407          }          } else {
408                $this->add_to_log(__METHOD__."(): ".$pathSrc."/".$filename." : ".$this->NO_MOVE, true);
409                return false;
410            }
411    
412          //Si le deplacement n'est pas fait on retourne false          //Si le deplacement n'est pas fait on retourne false
413          $this->addToLog(__METHOD__."(): ".$pathSrc."/".$filename." : ".$this->NO_MOVE);          $this->add_to_log(__METHOD__."(): ".$pathSrc."/".$filename." : ".$this->NO_MOVE);
414          return false;          return false;
           
415      }      }
416    
417      /**      /**
# Line 391  class DigitalizedDocument { Line 430  class DigitalizedDocument {
430              || ($dateImport == 'null' || $dateImport == null || $dateImport == '')) {              || ($dateImport == 'null' || $dateImport == null || $dateImport == '')) {
431    
432              //On supprime le fichier sans faire de test              //On supprime le fichier sans faire de test
433              if (unlink($file)) {              $delete_file = unlink($file);
434                              if ($delete_file === true) {
435                  return true;                  return true;
436                } else {
437                    $this->add_to_log(__METHOD__."(): ".$file." : ".$this->NO_DELETE_FILE.$file, true);
438                    return false;
439              }              }
440    
441          //Si la date d'import et le nombre de jour sont renseignés          //Si la date d'import et le nombre de jour sont renseignés
# Line 413  class DigitalizedDocument { Line 454  class DigitalizedDocument {
454              if ($dateImport <= $dateLimit) {              if ($dateImport <= $dateLimit) {
455    
456                  //on supprime le fichier                  //on supprime le fichier
457                  if (unlink($file)) {                  $delete_file = unlink($file);
458                                        if ($delete_file === true) {
459                      return true;                      return true;
460                    } else {
461                        $this->add_to_log(__METHOD__."(): ".$file." : ".$this->NO_DELETE_FILE.$file, true);
462                        return false;
463                  }                  }
464    
465              }              }
# Line 424  class DigitalizedDocument { Line 467  class DigitalizedDocument {
467          }          }
468    
469          //Si aucun traitement n'a été fait on retourne false          //Si aucun traitement n'a été fait on retourne false
470          $this->addToLog(__METHOD__."(): ".$file." : ".$this->NO_DELETE_FILE.$file);          $this->add_to_log(__METHOD__."(): ".$file." : ".$this->NO_DELETE_FILE.$file);
471          return false;          return false;
472    
473      }      }
# Line 437  class DigitalizedDocument { Line 480  class DigitalizedDocument {
480      public function deleteFolder($path) {      public function deleteFolder($path) {
481    
482          //Si le fichier est supprimé on retourne true          //Si le fichier est supprimé on retourne true
483          if (rmdir($path)) {          $delete_folder = rmdir($path);
484            if ($delete_folder === true) {
485              return true;              return true;
486            } else {
487                $this->add_to_log(__METHOD__."(): ".$path." : ".$this->NO_DELETE_FOLDER, true);
488                return false;
489          }          }
490    
491          //Si le fichier n'a pas été supprimé on retourne false          //Si le fichier n'a pas été supprimé on retourne false
492          $this->addToLog(__METHOD__."(): ".$path." : ".$this->NO_DELETE_FOLDER);          $this->add_to_log(__METHOD__."(): ".$path." : ".$this->NO_DELETE_FOLDER);
493          return false;          return false;
494    
495      }      }
# Line 452  class DigitalizedDocument { Line 499  class DigitalizedDocument {
499       * à l'importation des documents scannés       * à l'importation des documents scannés
500       * @param string $pathSrc Le chemin vers le dossier à traiter       * @param string $pathSrc Le chemin vers le dossier à traiter
501       * @param string $pathDes Le chemin vers le dossier après le traitement       * @param string $pathDes Le chemin vers le dossier après le traitement
502       * @param mixed $DEBUG mode de débuggage       *
503       * @return boolean true si le traitement à été fait sinon false       * @return boolean true si le traitement à été fait sinon false
504       */       */
505      function run_import($pathSrc, $pathDes, $DEBUG = NULL) {      function run_import($pathSrc, $pathDes) {
506                    
507          //Récupération du nom du répertoire          //Récupération du nom du répertoire
508          $foldername = substr(strrchr($pathSrc, "/"), 1);          $foldername = substr(strrchr($pathSrc, "/"), 1);
# Line 464  class DigitalizedDocument { Line 511  class DigitalizedDocument {
511          $dossier = str_replace('.', '', $foldername);          $dossier = str_replace('.', '', $foldername);
512    
513          //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
514          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")).
515              $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}/',
516              $dossier)){              $dossier)){
517                            
518              //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
519              //standard              //standard
520              $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")).
521                  $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 |
522                  PREG_SPLIT_DELIM_CAPTURE);                  PREG_SPLIT_DELIM_CAPTURE);
523                            
# Line 487  class DigitalizedDocument { Line 534  class DigitalizedDocument {
534                    
535          //Si le dossier n'existe pas on annule l'importation          //Si le dossier n'existe pas on annule l'importation
536          if (!$dossierExist){          if (!$dossierExist){
537              $this->addToLog(__METHOD__."(): ".$pathSrc."/ : "._("Le dossier d'instruction n'existe pas.")." ".$this->NO_IMPORT);              $this->add_to_log(__METHOD__."(): ".$pathSrc."/ : "._("Le dossier d'instruction n'existe pas.")." ".$this->NO_IMPORT, true);
538              return false;              return false;
539          }          }
540    
# Line 496  class DigitalizedDocument { Line 543  class DigitalizedDocument {
543          //Si il n'y a aucun document          //Si il n'y a aucun document
544          if ($listFiles === null) {          if ($listFiles === null) {
545              //On annule l'importation              //On annule l'importation
546              $this->addToLog(__METHOD__."(): ".$pathSrc."/ ".$this->NO_FILES." ".$this->NO_IMPORT);              $this->add_to_log(__METHOD__."(): ".$pathSrc."/ ".$this->NO_FILES." ".$this->NO_IMPORT);
547              return false;              return false;
548          }          }
549                    
# Line 521  class DigitalizedDocument { Line 568  class DigitalizedDocument {
568                  if ($uid !== null) {                  if ($uid !== null) {
569    
570                      //Instancie la class document_numerise                      //Instancie la class document_numerise
571                      require_once "../obj/document_numerise.class.php";                      $document_numerise = $this->f->get_inst__om_dbform(array(
572                      $document_numerise = new document_numerise("]", $this->f->db, $DEBUG);                          "obj" => "document_numerise",
573                            "idx" => "]",
574                        ));
575                            
576                      //Valeur retour formulaire                      //Valeur retour formulaire
577                      $document_numerise->retourformulaire = "dossier_instruction";                      $document_numerise->setParameter("retourformulaire", "dossier_instruction");
578    
579                      //Créer le document sur le filestorage et dans la table document_numerise                      //Créer le document sur le filestorage et dans la table document_numerise
580                      $createFileStorage = $this->createDocumentNumerise($document_numerise, $uid, $dossier, $filename, $this->f->db, $DEBUG);                      $createFileStorage = $this->createDocumentNumerise($document_numerise, $uid, $dossier, $filename);
581    
582                      //Si le document est crée sur le filestorage                      //Si le document est crée sur le filestorage
583                      if ($createFileStorage !== false && $createFileStorage !== 'OP_FAILURE') {                      if ($createFileStorage !== false && $createFileStorage !== 'OP_FAILURE') {
# Line 540  class DigitalizedDocument { Line 589  class DigitalizedDocument {
589                      }                      }
590                      else {                      else {
591                          //On annule l'importation                          //On annule l'importation
592                          $this->addToLog(__METHOD__."(): ".$pathSrc." : "._("Une erreur s'est produite lors de l'ajout du document ").$filename.". ".$this->NO_IMPORT);                          $this->add_to_log(__METHOD__."(): ".$pathSrc." : "._("Une erreur s'est produite lors de l'ajout du document ").$filename.". ".$this->NO_IMPORT, true);
593                          $this->filenameError[] = $filename;                          $this->filenameError[] = $filename;
594                      }                      }
                     //Del le fichier temporaire  
                     if($uid != $this->filestorage->delete_temporary($uid)) {  
                         $this->addToLog(__METHOD__."(): "._("Erreur lors de la suppression du fichier temporaire")." : ".$filename);  
                     }  
595                  }                  }
596              }              }
597    
# Line 617  class DigitalizedDocument { Line 662  class DigitalizedDocument {
662    
663  }  }
664    
665  ?>  

Legend:
Removed from v.5254  
changed lines
  Added in v.11228

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26