Je ne connais pas vraiment Joomla, mais je dois écrire un script censé répertorier toutes les extensions installées et leur numéro de version, si possible. J'ai déjà fait cela pour WordPress, TYPO3 et Drupal, mais dans Joomla, cela semble être une très grosse douleur dans le cul de ce que j'ai vu jusqu'à présent parce que:
->
<extension type="module" version="1.5.0" ...>
...
<version>2.0</version>
...
</extension>
Alors c'est quoi? 8.5.1? 1.5.0? 2,0? -
N'ayant aucune expérience de Joomla, je trouve cela assez déroutant, bien que cela puisse aussi être un malentendu de ma part.
Ce que je veux réellement savoir, c’est cependant: existe-t-il un moyen fiable d’obtenir toutes les extensions Joomla installées + leur version simplement en fonction de la structure des dossiers et des fichiers qu’ils contiennent? Ou tout autre moyen d'obtenir cette information via un script (Python dans mon cas)?
Toute extension installée est stockée dans la base de données, dans le fichier #__extensions
table. Vous pouvez donc exécuter une requête de base de données simplement pour obtenir le nom et le cache de manifeste (qui contient la version):
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('name', 'manifest_cache')))
->from($db->quoteName('#__extensions'));
$db->setQuery($query);
$results = $db->loadObjectList();
foreach ($results as $extension)
{
$decode = json_decode($extension->manifest_cache);
echo $extension->name . ' : ' . $decode->version . '<br>';
}
Notez que ce qui précède obtiendra tous les plugins, composants, modules, modèles, bibliothèques et packages, y compris les extensions Joomla par défaut.
Vous pouvez bien sûr changer les types d'extensions que vous souhaitez obtenir. Par exemple, si vous souhaitez uniquement obtenir des composants, modifiez la requête dans le code ci-dessus en ceci:
$query->select($db->quoteName(array('name', 'manifest_cache', 'type')))
->from($db->quoteName('#__extensions'))
->where($db->quoteName('type') . ' = ' . $db->quote('component'));
J'espère que cela t'aides