ti-enxame.com

Melhor método para verificar se um componente está instalado / ativado?

Entre o joomla 2.5 e 3.x, qual é a melhor maneira de verificar se outro componente está instalado e/ou ativado? Existe uma classe auxiliar chamada JComponentHelper, mas acredito que a função isEnabled realmente gera um erro se o componente que está sendo verificado não estiver instalado em algumas versões do joomla.

Isso pode ser tão simples quanto acessar o banco de dados diretamente, mas eu queria ver se existem outras classes/ajudantes/métodos que as pessoas usam.

12
Spunkie

Eu uso desta maneira:

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

<component name> - sem prefixo "com_"

12
Anibal

tente isso,

Verifique seu banco de dados para ver se o componente está instalado e ativado.

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

se o valor de $ is_enabled for 1, seu componente estará ativado. de outra forma,

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

Você está certo de que algumas versões exibirão um erro se o componente não existir. Tanto quanto sei JComponentHelper::getComponent('com_name', true)->enabled é a melhor verificação se um componente está ativado.

No Joomla 3.0 e superior, você pode usar isso mesmo se o componente não estiver instalado.

No Joomla 2.5, até a versão mais recente (2.5.19) lançará um JError::raiseWarning mensagem que será enviada ao usuário final se o componente não estiver instalado. Se você deseja dar suporte ao J2.5, parece que você precisaria usar seu próprio auxiliar para carregar o componente. (Você provavelmente pode criar um novo auxiliar que estenda o JComponentHelper e substitua o _load funcionam para obter os mesmos recursos com apenas uma pequena alteração.)

3
David Fritsch