La meilleure méthode pour vérifier si un composant est installé / activé?


12

Entre joomla 2.5 et 3.x, quelle est la meilleure façon de vérifier si un autre composant est installé et / ou activé? Il existe une classe d'assistance appelée JComponentHelpermais je pense que la isEnabledfonction générera une erreur si le composant en cours de vérification n'est pas installé sur certaines versions de Joomla.

Cela peut être aussi simple que d'accéder directement à la base de données, mais je voulais voir s'il y avait d'autres classes / aides / méthodes que les gens utilisent.

Réponses:


12

J'utilise de cette façon:

// Check for component
if (!JComponentHelper::getComponent('<component name>', true)->enabled)
{
.....
}

<component name> - sans préfixe "com_"


4

essaye ça,

Vérifiez votre base de données pour voir si le composant est installé et activé.

$db = JFactory::getDbo();
$db->setQuery("SELECT enabled FROM #__extensions WHERE name = 'com_name'");
$is_enabled = $db->loadResult();

si la valeur de $ is_enabled est 1, alors votre composant est activé. autrement,

if (!JComponentHelper::isEnabled('com_mycomp', true))
{
    JError::raiseError('404', JText('Component not installed / enabled'));
}

3

Vous avez raison de dire que certaines versions afficheront une erreur si le composant n'existe pas. Autant que je sache, JComponentHelper::getComponent('com_name', true)->enabledc'est la meilleure vérification si un composant est activé.

Dans Joomla 3.0 et supérieur, vous pouvez l'utiliser même si le composant n'est pas installé.

Dans Joomla 2.5, même la dernière version (2.5.19) enverra un JError::raiseWarningmessage qui sera envoyé à l'utilisateur final si le composant n'est pas installé. Si vous souhaitez prendre en charge J2.5, il semblerait que vous deviez utiliser votre propre assistant pour charger le composant. (Vous pourriez probablement créer un nouvel assistant qui étend JComponentHelper et remplace simplement la _loadfonction pour obtenir les mêmes fonctionnalités avec juste le changement mineur.)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.