paramètre media:joindre_deballer_lister_zip ignoré
Bonjour,
Il me semble avoir trouvé une petite incohérence dans le code du plugin media, plus précisément dans la fonction "joindre_deballer_lister_zip" ligne 301, de media/inc/joindre_document.php. Sauf erreur de ma part, cette fonction a pour but de déballer le contenu d'un fichier zip qui lui est passé en paramètre dans un répertoire temporaire et de retourner une liste décrivant sont contenus.
Cette fonction prends deux paramètres $path et $tmp_dir:
- $path corresponds au chemin du fichier zip à déballer
- $tmp_dir corresponds au dossier temporaire ou celui-ci sera déballé
Cette fonction utilise la librairie Pclzip.
L'incohérence se trouve au niveau du deuximère paramètre, $tmp_dir, celui-ci est censé indiquer dans quel répertoire le contenu du zip sera déballer or ce chemin n'est pas pris en compte par la fonction Pclzip->extraire (ligne 305), et n'est pas non plus pris en compte par la fonction callback 'callback_deballe_fichier' indiqué à la fonction extraire de Pclzip. En effet dans le code le chemin pris en compte est déclaré dans un define "_TMP_DIR" celui-ci déclaré à la ligne 140 de la fonction "joindre_trouver_fichier_envoye" (meme fichier php, début ligne 26). ($tmp_dir est uniquement utilisé dans la définition du chemin du fichier qui est renvoyé par la fonction: ligne 317: 'tmp_name' => $tmp_dir . $f)
Donc le paramètre $tmp_dir quasi non-utilisé induit en erreur car on s'attend à se que le contenu ce trouve dans le chemin $tmp_dir de plus si on appeler directement la focntion "joindre_deballer_lister_zip" sans appeler "joindre_trouver_fichier_envoye" on ne définit pas _TMP_DIR et on a une erreur incohmpréensible.
Du coup, le pire sénario (mon cas) j'appelais "joindre_deballer_lister_zip" après un autre appel "joindre_trouver_fichier_envoye" indirect, donc la variable _TMP_DIR etait défini et le contenu de mon zip déballer à cette endroit alors que je donnais un $tmp_dir completement différent, cette destination restait vide et aucun message d'erreur de la fonction "joindre_deballer_lister_zip".
Bref, je suggère de prendre en compte pour l'extraction la variable $tmp_dir, et/ou d'ajouter test/définition de la variable _TMP_DIR en début de fonction pour prévenir tout exécution "bizarre".