web-dev-qa-db-fra.com

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

Entre joomla 2.5 et 3.x, quel est le meilleur moyen de vérifier si un autre composant est installé et/ou activé? Il existe une classe d'assistance appelée JComponentHelper mais je pense que la fonction isEnabled lève en fait 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'aller directement dans la base de données, mais je voulais voir s'il y avait d'autres classes/helpers/méthodes que les gens utilisent.

12
Spunkie

J'utilise cette façon:

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

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

12
Anibal

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, votre composant est activé. autrement,

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

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)->enabled 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) lancera un JError::raiseWarning message qui sera envoyé à l'utilisateur final si le composant n'est pas installé. Si vous voulez 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 le _load fonction pour obtenir les mêmes fonctionnalités avec seulement le changement mineur.)

3
David Fritsch