Dans cet article, je vais vous conter comment j'ai fabriqué un petit plugin qui vous permet de faire des recherches de fichiers de manière récursive dans un dossier de stockage de documents.

 Le besoin spécifique

Aujourd'hui, je reviens sur un principe de développement que j'ai mis en place dans le cadre de mon travail. Toujours dans un cadre de gestion d'une application d'une documentation numérique, nous sommes confrontés, au niveau de notre CMS favoris Joomla, à un souci de mise en ligne de documents, qui évolue dans le temps de manière très régulière pour un document donné.
Ces évolutions sont mentionnées dans le nom du fichier qui comporte systématiquement la date de derniere modification (Ex : 20230102_DOCUMENT_voiture-verte-destinee-a-des-liaisons-inter-etablissements.pdf).
De ce fait, chaque fois que je mets à disposition un fichier sur mon serveur web, l'ensemble de l'URL de ce document vient à changer, dans la mesure où le nom comporte une date. Ainsi, si un lien vers ce fichier est créé depuis une application métier, dans cette application métier, la correction de l'URL doit se faire. Je trouve le système lourd et complexe, alors je propose une simplification du système.

Les bases fixées pour fonctionner

Après avoir effectué interview et recensement spécifique du besoin auprès de mes collègues, nous avons conclu qu'au fil des mises à jour de ces fichiers, et donc du renommage de l'ensemble des URL qui pointent vers ces dits fichiers, nous devons copier-coller les URL dans les applications métier.
L'ensemble du nom du fichier est donc variable, et peut se retrouver sous la forme date-emetteur-numéro-libellé.
  • Une date au format 8 caractères sous la forme année mois jour,
  • Un nom d'émetteur,
  • Un numéro correspondant à une sorte de clé primaire
  • Un libellé textuel libre 
  • Et bien entendu une extension de fichiers, en l'occurrence PDF.
Toutefois, une partie du nom de fichier peut rester "fixe" au fil des mises à jour et nous allons travailler sur cette partie.
 Comme nous pouvons le déduire, sur une série de plusieurs mises à jour de contenu de fichier, le numéro du fichier, son libellé et extension du fichier n'évoluent jamais au fil des évolutions de son contenu. Partant de cette constatation, j'en ai déduit une règle métier que je vous présente.

 La règle le métier du nommage des fichiers

 Au fil des évolutions du contenu du fichier, le nom du fichier ne doit jamais bouger sur sa partie numéro de kit + libellé + extension.

Conséquences

Puisqu'une partie du nom de fichier n'évolue jamais au fil du temps, mon outil va effectuer ses recherches unioquement sur cette partie du nom. Et comme cette sous-chaine de caractères sur laquelle les recherche seront effectuées, comporte une chaîne unique, un seul et unique et résultat de fichiers ne peut-être retourné.
Si une recherche est lancée, cette sous-chaîne correspondra au nom du fichier présent sur le serveur, il suffit de retourner le chemin complet du document trouvé à l'utilisateur.
 
Cette théorie reste théorique, c'est pour cette raison que je teste tout de même dans mon code, le nombre de résultats retournés.
 
 

Mon Github

slhuilli1's GitHub repositories