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; |
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 |
|
|
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 |
} |
} |
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 |
} |
} |
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 |
|
|
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 |
|
|
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 |
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 |
} |
} |