Dans le cadre de ma profession, où je dois gérer de la documentation numérique, afin de savoir la quantité et le volume de documents que mon site contient, j'ai dû fabriquer un élément pour m'afficher cette taille. Cet élément aimant est un plugin que l'on peut installer dans Joomla.
Ce plugin s'appelle de la manière suivante : {tailledossier "__DOCUMENTS__"} où __DOCUMENTS__ est le nom du dossier que j'ai placé adns le dossier Joomla. Les double-cotes sont necessaires et servent de "séparateurs" pour détecter le nom du dossier
tailledossier.php
<?php
defined('_JEXEC') or die('Access deny');
class plgContentTailleDossier extends JPlugin
{
function onContentPrepare($content, $article, $params, $limit){
$doc = JFactory::getDocument();
$doc->addStyleSheet('plugins/content/tailledossier/tailledossier.css');
$re = '/{tailledossier\s*"(.*)"\s*}/m';
preg_match_all($re, $article->text, $matches, PREG_SET_ORDER, 0);
$bytestotal = 0;
$path = realpath($matches[0][1]);
if($path!==false && $path!='' && file_exists($path)){
foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS)) as $object){
$bytestotal += $object->getSize();
}
}
if (round($bytestotal / 1024 / 1024 / 1024 / 1024,0)>0)
{
$remplacement = '<div class="taille-dossier">'.round($bytestotal / 1024 / 1024 / 1024 / 1024,0) . 'TB</div>';
}
else
{
if (round($bytestotal / 1024 / 1024 / 1024 ,0)>0)
{
$remplacement = '<div class="taille-dossier">'.round($bytestotal / 1024 / 1024 / 1024 ,0) . 'GB</div>';
}
else{
if (round($bytestotal / 1024 / 1024 ,0)>0)
{
$remplacement = '<div class="taille-dossier">'.round($bytestotal / 1024 / 1024 ,0) . 'MB</div>';
}
else{
if (round($bytestotal / 1024 / 1024 ,0)>0)
{
$remplacement = '<div class="taille-dossier">'.round($bytestotal / 1024 ,0) . 'KB</div>';
}
}
}
}
$article->text = preg_replace($re, $remplacement, $article->text);
}
}
tailledossier.xml
<?xml version="1.0" encoding="utf-8"?>
<extension version="1.0" type="plugin" group="Content">
<name>TailleDossier__DOCUMENTS__</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>Afficher la taille du dossier de documents __DOCUMENTS__</description>
<files>
<filename plugin="tailledossier">tailledossier.php</filename>
<filename>tailledossier.xml</filename>
<filename>tailledossier.css</filename>
</files>
</extension>
