Replace JFactory for Joomla 4/5
JFactory::[WHATEVER]
is deprecated in Joomla 5 and should be replaced with Factory::[WHATEVER]
in all Joomla-relevant context, i.e. in admin/civicrm/CRM/Utils/System/Joomla.php.
Also the initialization of a DB-object, which is now $db = JFactory::getDbo();
must be replaced with $db = Factory::getDbo();
for Joomla 4 and with $db = Factory::getContainer()->get('DatabaseDriver');
for Joomla 5.
I propose to code a version-check like so:
<?php
defined('_JEXEC') or die;
use Joomla\CMS\Factory;
if (version_compare(JVERSION, '4', 'lt'))
{
$db = Factory::getDbo();
}
else
{
$db = Factory::getContainer()->get('DatabaseDriver');
}
Workaround for the moment is to keep the Joomla compatibility plugin activated: https://manual.joomla.org/migrations/44-50/compat-plugin/ which of course does NOT help in every case/context.
Other issues here like i.e. #46 (closed) could be solved most probably through this adaption.
Edited by guitarman