web-dev-qa-db-fra.com

Vérifier le vendeur d'extensions

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.

1
n.h.

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.

2
Bakual

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
    )
)
2
n.h.