/**
* Resets user language to default language
*
* @return void
*
* @since 4.0.0
*/
private function resetUserLanguage() : void
{
$client = ApplicationHelper::getClientInfo($this->extension->client_id);
if ($client->name !== 'site' && $client->name !== 'administrator') {
return;
}
// Setting the language of users which have this language as the default language
$db = Factory::getDbo();
$query = $db->getQuery(true)->select([$db->quoteName('id'), $db->quoteName('params')])->from($db->quoteName('#__users'));
$db->setQuery($query);
$users = $db->loadObjectList();
if ($client->name === 'administrator') {
$param_name = 'admin_language';
} else {
$param_name = 'language';
}
$count = 0;
// Prepare the query.
$query = $db->getQuery(true)->update($db->quoteName('#__users'))->set($db->quoteName('params') . ' = :registry')->where($db->quoteName('id') . ' = :userId')->bind(':registry', $registry)->bind(':userId', $userId, ParameterType::INTEGER);
$db->setQuery($query);
foreach ($users as $user) {
$registry = new Registry($user->params);
if ($registry->get($param_name) === $this->extension->element) {
// Update query parameters.
$registry->set($param_name, '');
$userId = $user->id;
$db->execute();
$count++;
}
}
if (!empty($count)) {
Log::add(Text::plural('JLIB_INSTALLER_NOTICE_LANG_RESET_USERS', $count), Log::NOTICE, 'jerror');
}
}