Como posso obter programaticamente o prefixo do banco de dados Joomla usando php?

13

Às vezes, acesso o banco de dados do Joomla através de scripts externos. O problema que tenho é que, se precisar alterar o prefixo, também precisarei editar meus scripts novamente.

Existe uma maneira de determinar programaticamente o prefixo do banco de dados Joomla usando php? Se sim, como?

TryHarder
fonte

Respostas:

16

Você pode obter o prefixo usando o seguinte:

Para o Joomla 2.5, use:

$app = JFactory::getApplication(); 
$prefix = $app->getCfg('dbprefix');

Para o Joomla 3.2, use:

$app = JFactory::getApplication(); 
$prefix = $app->get('dbprefix');

Mas a documentação do Joomla recomenda que você nunca modifique o prefixo. Sei que alguns softwares de backup permitem que você faça uma alteração parcial através de uma restauração, mas não subestime o trabalho potencialmente envolvido.

Fonte: http://docs.joomla.org/How_to_determine_your_database_prefix

tim.baker
fonte
4
A documentação do Joomla não significa que você nunca deve modificar o db_prefix. Diz apenas para não alterar o valor, nas configurações globais, porque isso obviamente interromperá o site - perdendo a conexão com o banco de dados. Alterar o valor em com_config não é considerado uma alteração de prefixo db, pois não faz nenhuma alteração no próprio banco de dados. O prefixo do banco de dados pode ser alterado, supondo que alguém saiba o que está fazendo.
FFrewin
4

Se você estiver acessando o banco de dados do Joomla por meio de scripts externos, talvez não queira inicializar todos os materiais do joomla apenas para obter o prefixo do banco de dados. Portanto, você pode exigir o arquivo configuration.php dentro do seu script, instanciar a classe JConfig e obter o dbprefix

require_once $path_to_joomla_folder . "/configuration.php";
$config = new JConfig;
$dbprefix = $config->dbprefix;
csbenjamin
fonte