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.
Eu uso desta maneira:
// Check for component
if (!JComponentHelper::getComponent('<component name>', true)->enabled)
{
.....
}
<component name>
- sem prefixo "com_"
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'));
}
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.)