public function onAfterLoad(&$model, &$keys)
{
// Make sure we have a DataModel
if (!$model instanceof DataModel) {
return;
}
// Make sure the field actually exists AND we're not in CLI
if (!$model->hasField('language') || $model->getContainer()->platform->isCli()) {
return;
}
// Make sure it is a multilingual site and get a list of languages
/** @var \JApplicationSite $app */
$app = \JFactory::getApplication();
$hasLanguageFilter = method_exists($app, 'getLanguageFilter');
if ($hasLanguageFilter) {
$hasLanguageFilter = $app->getLanguageFilter();
}
if (!$hasLanguageFilter) {
return;
}
// Ask Joomla for the plugin only if we don't already have it. Useful for tests
if (!$this->lang_filter_plugin) {
$this->lang_filter_plugin = \JPluginHelper::getPlugin('system', 'languagefilter');
}
$lang_filter_params = new \JRegistry($this->lang_filter_plugin->params);
$languages = array('*');
if ($lang_filter_params->get('remove_default_prefix')) {
// Get default site language
$lg = $model->getContainer()->platform->getLanguage();
$languages[] = $lg->getTag();
} else {
$languages[] = \JFactory::getApplication()->input->getCmd('language', '*');
}
// Filter out double languages
$languages = array_unique($languages);
// Filter by language
if (!in_array($model->getFieldValue('language'), $languages)) {
$model->reset();
}
}