samedi, 24 décembre 2022 10:15

Correction du chemin d'upload du composant BigFile Uploader

Écrit par
Évaluer cet élément
(0 Votes)

Bien qu'à avoir déjà contacté le développeur pour la problématique que je vais vous évoquer ici, je n'ai malheureusement eu aucune réponse de sa part. Italien, peut-être ne savait-il pas lire les langues (fançais et anglais) dans lesquelles je me suis exprimé, c'est la raison pour laquelle je me suis attaqué ce matin à de la rétro engineering de ce bel outil Big File Uploader afin de regarder comment son code fonctionne pour pouvoir modifier ce que je devais faire.

Un petit rappel de ma problématique.

 Afin de pouvoir mettre en ligne des gros fichiers très volumineux, j'utilise la version gratuite du composant Big File Uploader édité par Prisma net. Deux versions de cet outil existent :
  • l'une en version gratuite, celle que j'utilise,
  • l'autre en version Pro dont je n'ai pas les moyens de m'acheter ! (mais surtout dont je n'ai pas l'utilité)

Enfin, la version gratuite répond surtout tout à fait à mes attentes. Cette version gratuite permet de mettre en ligne sur votre serveur de gros fichiers, mais le chemin de cette destination de ce répertoire de stockage, codé en dur dans le code, ne correspond pas du tout à l'architecture que j'ai mise en place pour stocker mes fichiers. Cette architecture m'est plus ou moins imposée par une organisation fonctionnelle de notre environnement de travail.

L'idée est donc de pouvoir spécifier un nouveau répertoire de destination qui se trouvera d'ailleurs dans un sous répertoire bien spécifique. Actuellement, le code de Big File Uploader définit un dossier dans le répertoire image de Joomla. Mais pourquoi diable ce dossier-ci ?

 Je n'aime pas coder en dur ce genre de données, surtout si les "oeuvres" sont destinées à être diffusées. Ce n'est qu'un point de vue personnel (mais surtout professionnel) des choses. Aller je ferme cette parenthèse bien triste.
 
Après avoir analysé le code du composant sous licence Licence GNU GPL, étape dont je vous ferai grâce, j'ai découvert effectivement que des informations étaient donc stockées en dur dans le code. Ces informations sont placées à trois endroits différents, dans deux fichiers qui permet de faire l'upload de vos fichiers sur le serveur :
- le fichier upload.php,
- Le fichier uploadfile.php
 
Dans un premier fichier, celui que vous retrouverez dans le dossier "[dossier Joomla]/components/com_bigfileuploader/models, vous retrouverez sur la ligne 30, la variable targetir.
private function getTempPath($idFile){
  return JPATH_SITE . DIRECTORY_SEPARATOR . "__DOCUMENTS__" . DIRECTORY_SEPARATOR . "fileuploaded" . DIRECTORY_SEPARATOR ;
}
Dans le deuxieme fichier, vous retrouverez à la ligne 80 le retour de la fonction getFilePath, le nom du répertoire dans lequel il faut modifier le chemin. c'est sur la ligne return.
private function getFilePath($nomeFile=''){
   //return JPATH_ADMINISTRATOR.DIRECTORY_SEPARATOR."components".DIRECTORY_SEPARATOR."com_bigfileuploader".DIRECTORY_SEPARATOR."uploadedfile".DIRECTORY_SEPARATOR.$nomeFile;
   return JPATH_SITE . DIRECTORY_SEPARATOR . "__DOCUMENTS__" . DIRECTORY_SEPARATOR . "fileuploaded" . DIRECTORY_SEPARATOR . $nomeFile;
}
Dans ce même fichier, à la ligne 84, dans la fonction qui retourne le chemin temporaire, modifier il y a aussi votre chemin de positionnement de votre dossier dans lequel vous souhaitez que le fichier destination s'insère.
private function getTempPath($idFile){
//return JPATH_ADMINISTRATOR.DIRECTORY_SEPARATOR."components".DIECCTORY_SEPARATOR."com_bigfileuploader".DIRECTORY_SEPARATOR."uploadedfile";
return JPATH_SITE . DIRECTORY_SEPARATOR . "__DOCUMENTS__" . DIRECTORY_SEPARATOR . "fileuploaded" . DIRECTORY_SEPARATOR ;
}
 Il suffit là aussi de donner le même chemin que celui que vous avez déjà changé sur les deux lignes précédentes. Bien entendu, il serait fort intéressant de remodifier l'ensemble du code pour que ces informations ne se trouvent qu'à un seul et même endroit, mais peut-être est-ce une volonté spécifique du développeur.
 
Voilà nous avons donc désormais spécifié le nouveau dossier cible dans lequel les fichiers seront enregistrés avec ce beau composant italien.
Lu 711 fois Dernière modification le mercredi, 28 décembre 2022 08:12