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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 10573 - (hide annotations)
Thu Oct 14 12:43:35 2021 UTC (3 years, 3 months ago) by softime
File size: 23571 byte(s)
* Fusion de la branche d'intégration 5.0.0-develop dans le trunk

1 mbroquet 3730 <?php
2     /**
3 nhaye 5254 * Ce script permet de définir la classe 'DigitalizedDocument'.
4 mbroquet 3730 *
5     * @package openads
6     * @version SVN : $Id
7     */
8    
9     /**
10     * Cette classe permet d'effectuer les traitements sur les documents à incorporer dans l'application
11     *
12     * Pour imorter les données depuis un dossier il faut utiliser run_import dans une boucle
13     * qui parcourt le dossier qui abrite les répertoires des dossiers d'instructions
14     *
15     * Pour purger les documents il faut utiliser la fonction run_purge dans une boucle
16     * qui parcourt le dossier qui abrite les répertoires des dossiers d'instructions
17     */
18     class DigitalizedDocument {
19    
20     /**
21 softime 10207 * [$log_file description]
22     * @var string
23     */
24     static protected $log_file = "digitalized_document.log";
25    
26     /**
27 mbroquet 3730 * @access static
28     * @var string Messages utilisées pour l'écriture dans le log
29     */
30     var $NO_REP;
31     var $NO_FILES;
32     var $NO_FILE_EXIST;
33     var $DOC_NO_CONFORME;
34     var $NO_LINK;
35     var $NO_MOVE;
36     var $NO_DELETE_FOLDER;
37     var $NO_DELETE_FILE;
38     var $NO_IMPORT;
39    
40     /**
41     * Instance de la classe utils
42     * @var utils
43     */
44     var $f = NULL;
45    
46     /**
47     * Instance du filestorage
48     * @var storage
49     */
50     var $filestorage = NULL;
51    
52     /**
53     * Nom des fichiers qui ne se sont pas importés
54     * @var array
55     */
56     var $filenameError = array();
57    
58     /**
59     * Constructeur
60     */
61     public function __construct($f) {
62    
63     //Set des attributs
64     $this->NO_REP = _("Le dossier n'existe pas.");
65     $this->NO_FILES = _("Le dossier est vide.");
66     $this->NO_FILE_EXIST = _("Le fichier n'existe pas.");
67     $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.");
69     $this->NO_MOVE = _("Le fichier n'a pas pu etre deplace.");
70     $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 : ");
72     $this->NO_IMPORT = _("L'importation a été annulee.");
73    
74     //
75     $this->f = $f;
76     // Permet lors de l'instantiation d'objets métiers d'avoir accès à f
77     $GLOBALS['f'] = $this->f;
78    
79     // initialise le msg attribute qui est utilise pour stocker les
80     // messages de retour (reussite ou erreur)
81     $this->msg = '';
82    
83     //Instance de filestorage
84     $this->filestorage = $this->f->storage;
85    
86     }
87    
88     /**
89     * Destructeur
90     */
91     public function __destruct() {
92    
93     //Détruit les instance de utils et filestorage
94     unset($this->f);
95     unset($this->filestorage);
96    
97     //Détruit la variable globale de 'f'
98     unset($GLOBALS['f']);
99     }
100    
101     /**
102     * Récupère l'identifiant du type de document par rapport au code
103     * @param string $code Code du type de document
104     * @return int Identifiant du type de document
105     */
106     private function get_document_numerise_by_code($code) {
107 softime 10573 // 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 mbroquet 3730
129     //Requête SQL
130     $sql = "SELECT document_numerise_type
131     FROM ".DB_PREFIXE."document_numerise_type
132     WHERE code = '".$code."'";
133     $document_numerise_type = $this->f->db->getOne($sql);
134 fmichon 4700 $this->f->addToLog(__METHOD__."(): db->getOne(".$sql.")", VERBOSE_MODE);
135 mbroquet 3730 $this->f->isDatabaseError($document_numerise_type);
136    
137     //retourne la clé primaire
138     return $document_numerise_type;
139     }
140    
141     /**
142     * Ajoute une chaine de caracteres dans le log.
143     * @param string $message Le message qui doit etre ajouté dans le log.
144     */
145 softime 10207 protected function add_to_log($message, $debug = false) {
146 mbroquet 3730 //
147 softime 10207 logger::instance()->log_to_file(self::$log_file, $message);
148     if ($debug === true) {
149     $this->f->addToLog($message, DEBUG_MODE);
150     }
151 mbroquet 3730 }
152    
153     /**
154     * Cette fonction permet de recupérer et de classer dans un tableau
155     * la liste des documents présent dans le dossier passé en paramètre
156     * @param string $path Le chemin vers le dossier
157     * @return array Tableau des documents
158     */
159     public function listFiles($path) {
160    
161     //Tableau qui sera retourné en fin de traitement
162     $listFiles = array();
163    
164     //Ouvre le répertoire
165     $dir = opendir($path);
166    
167     //Si un dossier est ouvert
168     if ($dir) {
169    
170     //Parcours le dossier
171     while(false !== ($file = readdir($dir))) {
172    
173     //Si le document est bien un fichier de type pdf
174     if($file != '.' && $file != '..' && !is_dir($dir.$file)
175     && strcasecmp(strstr($file, '.'), ".pdf") == 0) {
176    
177     //Alors il est ajouté dans le tableau
178     array_push($listFiles, $file);
179    
180     }
181    
182     }
183    
184     //Ferme le répertoire
185     closedir($dir);
186    
187     } else {
188    
189     //Sinon renvoi null
190 softime 10207 $this->add_to_log(__METHOD__."(): ".$path." : ".$this->NO_REP);
191 mbroquet 3730 return null;
192     }
193    
194     //Si le tableau est vide on retourne null
195     if (count($listFiles) == 0) {
196    
197 softime 10207 $this->add_to_log(__METHOD__."(): ".$path." : ".$this->NO_FILES);
198 mbroquet 3730 return null;
199    
200     }
201    
202     //Retourne le tableau des documents
203     return $listFiles;
204    
205     }
206    
207     /**
208     * Cette fonction permet de construire les métadonnées d'un document
209     * à partir des informations du nom du fichier
210     * @param string $filename Nom du fichier
211     * @return array Tableau des metadonnées
212     */
213     public function extractMetadataFromFilename($filename) {
214    
215     //Tableau qui sera retourné en fin de traitement
216     $metadata = array();
217    
218     //Récupération de l'année
219     $year = substr($filename, 0, 4);
220     //Récupération du mois
221     $month = substr($filename, 4, 2);
222     //Récupération du jour
223     $day = substr($filename, 6, 2);
224    
225     //Vérification que l'année, le mois et le jour sont des numériques
226     if (is_numeric($year) && is_numeric($month) && is_numeric($day)) {
227    
228     //Vérification que cela correspond à une date possible
229     if (checkdate($month, $day, $year)) {
230    
231     //Récupération du type de document
232     //Si le séparateur '-' n'est pas présent
233     if (strpos($filename, '-') === false) {
234    
235     //On récupère le nom du fichier avant l'extension
236     $type_doc = substr(strstr($filename, '.', true), 8);
237    
238     } else {
239    
240     //Sinon on récupère le nom du fichier avant le '-'
241     $type_doc = substr(strstr($filename, '-', true), 8);
242    
243     }
244    
245     //Si aucun type de document n'a pu être extrait
246     if (empty($type_doc)) {
247    
248     //On retourne null
249 softime 10207 $this->add_to_log(__METHOD__."(): ".$this->DOC_NO_CONFORME.$filename, true);
250 mbroquet 3730 return null;
251    
252     } else {
253    
254     //Sinon on ajoute le type de document dans les métadonnées
255     $metadata['title'] = $type_doc;
256    
257     }
258    
259     //Formate la date du document
260     $metadata["dateEvenementDocument"] = date("d/m/Y", mktime(0, 0, 0, $month, $day, $year));
261    
262     //Si le tableau est vide on retourne null
263     if (count($metadata) == 0) {
264    
265 softime 10207 $this->add_to_log(__METHOD__."(): ".$this->DOC_NO_CONFORME.$filename, true);
266 mbroquet 3730 return null;
267    
268     }
269    
270     //On retourne les métadonnées
271     return $metadata;
272     }
273     }
274    
275     //Le nom du document n'est pas conforme
276 softime 10207 $this->add_to_log(__METHOD__."(): ".$this->DOC_NO_CONFORME.$filename, true);
277 mbroquet 3730 return null;
278     }
279    
280     /**
281     * Cette fonction permet de récupérer des informations sur le fichier
282     * nécessaire pour le filestorage
283     * @param string $path Chemin du dossier
284     * @param string $filename Nom du fichier
285     * @return array Tableau des métadonnées
286     */
287     public function extractMetadataToFilestorage($path, $filename) {
288    
289     //Test si le fichier existe
290     if (!file_exists($path.'/'.$filename)) {
291     //
292 softime 10207 $this->add_to_log(__METHOD__.'(): '.$path.'/'.$filename.' : '.$this->NO_FILE_EXIST, true);
293 mbroquet 3730 return null;
294     }
295    
296     //Tableau qui sera retourné en fin de traitement
297     $metadata = array();
298    
299     //Métadonnées nécessaire au filestorage
300     $metadata["filename"] = $filename;
301     $metadata["size"] = filesize($path.'/'.$filename);
302     $metadata["mimetype"] = mime_content_type($path.'/'.$filename);
303    
304     //Si le tableau est vide on retourne null
305     if (count($metadata) == 0) {
306    
307 softime 10207 $this->add_to_log(__METHOD__."(): ".$this->DOC_NO_CONFORME.$filename, true);
308 mbroquet 3730 return null;
309    
310     }
311    
312     //Retourne le tableau des métadonnées
313     return $metadata;
314     }
315    
316     /**
317     * Cette fonction permet de créer un document temporaire dans le filesystem
318     * @param string $file_content Contenu du fichier
319     * @param array $metadata Métadonnées du fichier
320     * @return string $uid identifiant du document dans le filesystem
321     */
322     public function createFileTemporary($file_content, $metadata) {
323    
324     //Création du fichier sur le filestorage
325     $uid = $this->filestorage->create_temporary($file_content, $metadata);
326    
327     //Retourne l'identifiant unique du fichier créé
328     return $uid;
329    
330     }
331    
332     /**
333     * Permet de lier le document importé à l'application et de le créer dans le filestorage
334     * @param object $document_numerise Instance de la classe document_numerise
335     * @param string $uid Identifiant du fichier temporaire
336     * @param string $dossier Identifiant du dossier d'instruction
337     * @param string $filename Nom du document
338 softime 8989 *
339 mbroquet 3730 * @return boolean Vrai ou faux
340     */
341 softime 8989 public function createDocumentNumerise($document_numerise, $uid, $dossier, $filename) {
342 mbroquet 3730
343     //Maj en ajout
344     $document_numerise->setParameter("maj",0);
345    
346     //Extrait les informations du nom du document
347     $metadataFromFilename = $this->extractMetadataFromFilename($filename);
348    
349     //Données
350 softime 10573 // 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 mbroquet 3730 $values = array(
358     'document_numerise' => '',
359     'uid' => 'tmp|'.$uid,
360     'dossier' => $dossier,
361     'nom_fichier' => $filename,
362     'date_creation' => $metadataFromFilename['dateEvenementDocument'],
363     'document_numerise_type' => $this->get_document_numerise_by_code($metadataFromFilename['title']),
364 softime 10573 '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 mbroquet 3730 );
370    
371     //Ajoute dans la table le lien
372 softime 10207 $add = $document_numerise->ajouter($values);
373 mbroquet 3730
374     //Si le document n'est pas ajouté
375 softime 10207 if ($add === false) {
376 mbroquet 3730
377     //Log d'erreur
378 softime 10207 $this->add_to_log(__METHOD__."(): ".$dossier."/".$filename." : "._("Une erreur s'est produite lors de l'ajout du document ").$filename.".", true);
379     $this->add_to_log(__METHOD__."(): ".$document_numerise->msg, true);
380 mbroquet 3730 return false;
381     }
382    
383     return $document_numerise->valF['document_numerise'];
384     }
385    
386     /**
387     * Permet de déplacer les fichiers créés dans le filestorage vers le dossier
388     * des fichiers traités
389     * @param string $pathSrc Chemin du dossier source
390     * @param string $pathDes Chemin du dossier de destination
391     * @param string $filename Nom du fichier
392     * @return boolean Retourne true si le fichier à été déplacé sinon false
393     */
394     public function moveDocumentNumerise($pathSrc, $pathDes, $filename) {
395    
396     //Si le dossier de destination n'existe pas, il est créé
397     if (!file_exists($pathDes)) {
398     mkdir($pathDes);
399     }
400    
401     //Déplace le document
402     $move = rename($pathSrc.'/'.$filename, $pathDes.'/'.$filename);
403    
404     //Si le déplacement à réussi
405 softime 10207 if ($move === true) {
406 mbroquet 3730 return true;
407 softime 10207 } else {
408     $this->add_to_log(__METHOD__."(): ".$pathSrc."/".$filename." : ".$this->NO_MOVE, true);
409     return false;
410     }
411 mbroquet 3730
412     //Si le deplacement n'est pas fait on retourne false
413 softime 10207 $this->add_to_log(__METHOD__."(): ".$pathSrc."/".$filename." : ".$this->NO_MOVE);
414 mbroquet 3730 return false;
415     }
416    
417     /**
418     * Cette fonction permet de vider un répertoire
419     * Si la date d'import du fichier et le nombre de jour ne sont pas renseignés
420     * alors les fichiers sont supprimés sans vérification sur la date
421     * @param string $file Fichier traité
422     * @param date $dateImport Date de l'importation du fichier
423     * @param int $nbDay Nombre de jour à soustraite à la date du jour
424     * @return boolean true si le traitement à été fait sinon false
425     */
426     public function purgeFiles($file, $dateImport = null, $nbDay = null) {
427    
428     //Si la date et le nombre de jour ne sont pas renseigné
429     if (($nbDay == 'null' || $nbDay == null || $nbDay == '')
430     || ($dateImport == 'null' || $dateImport == null || $dateImport == '')) {
431    
432     //On supprime le fichier sans faire de test
433 softime 10207 $delete_file = unlink($file);
434     if ($delete_file === true) {
435 mbroquet 3730 return true;
436 softime 10207 } else {
437     $this->add_to_log(__METHOD__."(): ".$file." : ".$this->NO_DELETE_FILE.$file, true);
438     return false;
439 mbroquet 3730 }
440    
441     //Si la date d'import et le nombre de jour sont renseignés
442     } else {
443    
444     //Date d'import dans un format correct pour la comparaison
445     $dateImport = new DateTime($dateImport);
446     $dateImport = $dateImport->format('Ymd');
447    
448     //Date limite pour la suppresion des fichier (Date du jour - 60 jours)
449     $dateLimit = date('d-m-Y', strtotime("- $nbDay day", strtotime(date('d-m-Y'))));
450     $dateLimit = new DateTime($dateLimit);
451     $dateLimit = $dateLimit->format('Ymd');
452    
453     //Si la date du fichier à dépassé la date limite
454     if ($dateImport <= $dateLimit) {
455    
456     //on supprime le fichier
457 softime 10207 $delete_file = unlink($file);
458     if ($delete_file === true) {
459 mbroquet 3730 return true;
460 softime 10207 } else {
461     $this->add_to_log(__METHOD__."(): ".$file." : ".$this->NO_DELETE_FILE.$file, true);
462     return false;
463 mbroquet 3730 }
464    
465     }
466    
467     }
468    
469     //Si aucun traitement n'a été fait on retourne false
470 softime 10207 $this->add_to_log(__METHOD__."(): ".$file." : ".$this->NO_DELETE_FILE.$file);
471 mbroquet 3730 return false;
472    
473     }
474    
475     /**
476     * Cette fonction permet de supprimer un dossier
477     * @param string $path Chemin du dossier
478     * @return boolean Retourn vrai si le dossier à été supprimé sinon faux
479     */
480     public function deleteFolder($path) {
481    
482     //Si le fichier est supprimé on retourne true
483 softime 10207 $delete_folder = rmdir($path);
484     if ($delete_folder === true) {
485 mbroquet 3730 return true;
486 softime 10207 } else {
487     $this->add_to_log(__METHOD__."(): ".$path." : ".$this->NO_DELETE_FOLDER, true);
488     return false;
489 mbroquet 3730 }
490    
491     //Si le fichier n'a pas été supprimé on retourne false
492 softime 10207 $this->add_to_log(__METHOD__."(): ".$path." : ".$this->NO_DELETE_FOLDER);
493 mbroquet 3730 return false;
494    
495     }
496    
497     /**
498     * Cette fonction permet de lancer toutes les fonctions utiles
499     * à l'importation des documents scannés
500     * @param string $pathSrc Le chemin vers le dossier à traiter
501     * @param string $pathDes Le chemin vers le dossier après le traitement
502 softime 8989 *
503 mbroquet 3730 * @return boolean true si le traitement à été fait sinon false
504     */
505 softime 8989 function run_import($pathSrc, $pathDes) {
506 mbroquet 3730
507     //Récupération du nom du répertoire
508     $foldername = substr(strrchr($pathSrc, "/"), 1);
509    
510     //Identifiant du dossier
511     $dossier = str_replace('.', '', $foldername);
512    
513     //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").
515     $this->f->getParameter("commune").'[0-9]{2}[0-9]{4}[A-Za-z]{1,5}[0-9]{1,2}/',
516     $dossier)){
517    
518     //On modifie le nom du dossier d'instruction pour qu'il ait la numérotation
519     //standard
520     $tempDossier = preg_split('/([A-Za-z]{2,3}'.$this->f->getParameter("departement").
521     $this->f->getParameter("commune").'[0-9]{2})/i', $dossier, 0, PREG_SPLIT_NO_EMPTY |
522     PREG_SPLIT_DELIM_CAPTURE);
523    
524     $dossier = $tempDossier[0]."0".$tempDossier[1];
525     }
526    
527     //On vérifie que le dossier existe
528     $sql = "SELECT dossier
529     FROM ".DB_PREFIXE."dossier
530     WHERE dossier = '".$dossier."'";
531     $dossierExist = $this->f->db->getOne($sql);
532 fmichon 4700 $this->f->addToLog(__METHOD__."(): db->getOne(".$sql.")", VERBOSE_MODE);
533 mbroquet 3730 $this->f->isDatabaseError($dossierExist);
534    
535     //Si le dossier n'existe pas on annule l'importation
536     if (!$dossierExist){
537 softime 10207 $this->add_to_log(__METHOD__."(): ".$pathSrc."/ : "._("Le dossier d'instruction n'existe pas.")." ".$this->NO_IMPORT, true);
538 mbroquet 3730 return false;
539     }
540    
541     //Liste les documents contenus dans le dossier
542     $listFiles = $this->listFiles($pathSrc);
543     //Si il n'y a aucun document
544     if ($listFiles === null) {
545     //On annule l'importation
546 softime 10207 $this->add_to_log(__METHOD__."(): ".$pathSrc."/ ".$this->NO_FILES." ".$this->NO_IMPORT);
547 mbroquet 3730 return false;
548     }
549    
550     foreach ($listFiles as $key => $filename) {
551    
552     //Construit les métadonnées
553     $metadata = array();
554     //Données récupérées pour le filestorage
555     $metadata = $this->extractMetadataToFilestorage($pathSrc, $filename);
556    
557     //S'il y a des métadonnées
558     if ($metadata !== null) {
559    
560     //Recupère le contenu du fichier
561     $file_content = file_get_contents($pathSrc.'/'.$filename);
562    
563     //Créer le fichier temporaire
564     $uid = $this->createFileTemporary($file_content, $metadata);
565     // On vide la mémoire utilisée par le fichier
566     unset($file_content);
567     //Si le fichier est créé
568     if ($uid !== null) {
569    
570     //Instancie la class document_numerise
571 softime 7996 $document_numerise = $this->f->get_inst__om_dbform(array(
572     "obj" => "document_numerise",
573     "idx" => "]",
574     ));
575 mbroquet 3730
576     //Valeur retour formulaire
577 softime 8989 $document_numerise->setParameter("retourformulaire", "dossier_instruction");
578 mbroquet 3730
579     //Créer le document sur le filestorage et dans la table document_numerise
580 softime 8989 $createFileStorage = $this->createDocumentNumerise($document_numerise, $uid, $dossier, $filename);
581 mbroquet 3730
582     //Si le document est crée sur le filestorage
583     if ($createFileStorage !== false && $createFileStorage !== 'OP_FAILURE') {
584    
585     //On déplace le document créé dans le filestorage
586     //du dossier des "à traiter" vers celui des "traités"
587     $this->moveDocumentNumerise($pathSrc, $pathDes, $filename);
588    
589     }
590     else {
591     //On annule l'importation
592 softime 10207 $this->add_to_log(__METHOD__."(): ".$pathSrc." : "._("Une erreur s'est produite lors de l'ajout du document ").$filename.". ".$this->NO_IMPORT, true);
593 mbroquet 3730 $this->filenameError[] = $filename;
594     }
595     }
596     }
597    
598     }//Fin foreach
599    
600     //Retourne true
601     return true;
602    
603     }
604    
605     /**
606     * Cette fonction permet de lancer toutes les fonctions utiles à la purge de dossier
607     * @param string $path Le chemin vers le dossier
608     * @param int $nbDay Nombre de jour à soustraite à la date du jour
609     * @return boolean true si le traitement à été fait sinon false
610     */
611     function run_purge($path, $nbDay = null) {
612    
613     //Liste les documents contenus dans le dossier
614     $listFiles = $this->listFiles($path);
615     $count_purged_files = 0;
616    
617     if ($listFiles !== null) {
618    
619     //Parcours la liste des fichiers
620     foreach ($listFiles as $key => $filename) {
621     //Fichier
622     $file = $path.'/'.$filename;
623     //Si le nombre de jour est renseigné
624     if ($nbDay !== null) {
625    
626     //il faut renseigner la date d'import du fichier
627     $dateImport = date("Y-m-d", filemtime($file));
628    
629     } else {
630    
631     //Sinon la date d'import est null
632     $dateImport = null;
633    
634     }
635    
636     //S'il n'y pas d'erreur on exécute la fonction purgeFiles
637     if($this->purgeFiles($file, $dateImport, $nbDay)) {
638     unset($listFiles[$key]);
639     $count_purged_files++;
640     }
641    
642     }
643    
644     }
645    
646     //Si il n'y a plus de document
647     if (empty($listFiles)) {
648    
649     //on supprime le dossier
650     $deleteFolder = $this->deleteFolder($path);
651     //Si le dossier n'a pas été supprimé on retourne false
652     if (!$deleteFolder) {
653    
654     return false;
655     }
656     }
657    
658     //Si il n'y a pas d'erreur on retourne true
659     return $count_purged_files;
660    
661     }
662    
663     }
664    
665 softime 7996

Properties

Name Value
svn:keywords "Id"

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26