Y at-il un moyen de vérifier si dans un Joomla! installation il y a des extensions d'un fournisseur spécifique? Dans un plug-in que j'ai, je dois appliquer différentes procédures si un produit spécifique du fournisseur est présent. Peut-être interroger db pour le nom de l'auteur? S'il vous plaît donnez votre avis.
L'auteur est enregistré dans le manifest_cache
dans le #__extensions
table. Vous devez donc interroger la base de données pour obtenir ces champs et le json_decode les valeurs (ou le transférer dans JRegistry) et rechercher l'auteur.
Basé sur la réponse de Bakual, je suis arrivé avec ce code. Cela recherchera uniquement les extensions de type "composant" et "modèle".
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$fields = array(
$db->quoteName('extension_id'),
$db->quoteName('manifest_cache')
);
$query->select($fields)->from($db->quoteName('#__extensions'));
$db->setQuery($query);
$vendors = $db->loadObjectList();
$extensions = array();
foreach($vendors as $vendor)
{
$temp = new JRegistry;
$temp->loadString($vendor->manifest_cache, 'JSON');
$excList = array('joomla'); //This array will contain a extension list
foreach($excList as $ext)
{
if ((stripos($temp->get('author'), $ext) !== false) && $temp->get('type') == 'component' || (stripos($temp->get('author'), $ext) !== false) && $temp->get('type') == 'template')
{
$extensions[] = array(
'id' => $vendor->extension_id,
'type' => $temp->get('type'),
'name' => $temp->get('name')
);
}
}
}
fait un test avec 'joomla' comme nom de vendeur et génère un tableau comme celui-ci
Array
(
[0] => Array
(
[id] => 1
[type] => component
[name] => com_mailto
)
[1] => Array
(
[id] => 2
[type] => component
[name] => com_wrapper
)
[2] => Array
(
[id] => 3
[type] => component
[name] => com_admin
)
...
[29] => Array
(
[id] => 502
[type] => template
[name] => bluestork
)
[30] => Array
(
[id] => 10067
[type] => component
[name] => com_joomlaupdate
)
)