Un petit peu en retard dans la rédaction de mes articles concernant mes différents développements, je vous propose aujourd'hui l'un des plugins que j'ai développé il y a quelques semaines, vous permettant d'afficher à votre utilisateur, un lien hypertexte vers un fichier. Vous allez me dire rien d'exubérant.
Sauf que, dans le cadre de mes fonctions de documentaliste web, je dois mettre à disposition des fichiers à mes utilisateurs, mais ces derniers peuvent pour diverses raisons, peuvent ne plus être accessibles.
C'est notamment le cas, si le fichier que je mets à disposition de mes utilisateurs sur mon intranet, n'est plus disponible sur le serveur sur lequel il était accessible, serveur sur lequel je n'ai pas forcément la main puisqu'il ne m'appartient pas. Toutefois, je dois faire un lien hypertexte vers ce fichier.
Dans ce cas, comment faire pour pouvoir être au courant que le fichier n'est plus accessible ?
Partant de ce constat, et dans le cas qui nous occupe ici, dans le cas où le fichier n'est plus accessible sur le serveur à distance, ce petit plugin Joomla va afficher un petit sens interdit devant le nom du fichier.
Cette manière de faire permet de montrer à l'utilisateur que le fichier a été disponible, mais que ce dernier n'est plus actuellement accessible. Bien entendu, ce plugin pourrait être agrémenté par un lien de type mailto par exemple pour alerter le webmaster de l'indisponibilité du fichier, de manière à refaire le lien hypertexte correct.
Encore une fois, je dois bien souligner le fait que ce plugin est fonctionnel dans le cadre d'un intranet dans lequel j'abuse des liens mailto:. Bien que cela fonctionne effectivement sur Internet, vous risquez si vous mettez un lien de ce type, d'être rapidement spammé et alerté de et à part d'un grand nombre d'utilisateurs.
Si vous souhaitez le faire, il vous suffit simplement de modifier il y a ligne 15 en rajoutant votre adresse email, et en commentant et des commentaires les lignes 15 à 16, après avoir bien entendu renseigner votre adresse email.
existfic.php
<?php
defined('_JEXEC') or die('Access deny');
class plgContentExistFic extends JPlugin //Concatener à "plg" le nom du groupe (ici Content) puis le nom du plugin ( que l'on trouve ds le XML ligne extension) : plg<Plugin Group><Plugin name>
{
function onContentPrepare($content, $article, $params, $limit){
$re = '/<a\s+(?:[^>]*?\s+)?href=(["\'])(.*?)\1/m';
$str = $article->text;
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
foreach($matches as $O)
{
$monFichier = $O[2];
$handle = @fopen($monFichier, 'r');
if(!$handle){
echo '<div>⛔ '.$monFichier.'</div>';
}
else
{
echo '<div><span style="color:green;font-weight:bold;">✓</span><a href="'.$monFichier.'">'.$monFichier.'</a></div>';
}
fclose($monFichier);
}
}
}
existfic.xml
<?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="Content">
<name>Existe file</name>
<author>Sebastien LHUILLIER</author>
<creationDate>Janvier 2023</creationDate>
<copyright>Sébastien LHUILLIER</copyright>
<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
<authorEmail>Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.</authorEmail>
<authorUrl>www.sebastien-lhuillier.com</authorUrl>
<version>1.0</version>
<description>Affiche un lien vers le fichiers (distant) s'il est accessible</description>
<files>
<filename plugin="existfic">existfic.php</filename>
<filename>existfic.xml</filename>
</files>
</extension>
