function domain_variable_language_init in Domain Variable 7
Implements hook_language_init().
Make sure that the javascript hash on the language_default value is up to date. The language_default variable stores the complete language object and therefore it can happen that the realm specific value becomes out-of-sync with the original language object.
Instead of trying to monitor updates of the javascript hash we check that the has is up to date on every page request. The overhead for doing so should be neglegible because both the language_default variable and the list of enabled languages are loaded and cached by core anyway.
(original issue in domain_conf)
(issue for domain_variable)
Note: this hook is also required to ensure that the module is loaded at boot.
See also
https://drupal.org/node/1271810
https://drupal.org/node/1593494
File
- ./
domain_variable.module, line 38 - domain_variable Domain Variable: configuration extension Functions for the Domain Variable module.
Code
function domain_variable_language_init() {
$realm = variable_realm_controller('domain');
$store = $realm
->getCurrentStore();
// Make sure that there is a valid store, @see https://drupal.org/node/2029191
if (!$store) {
return;
}
// Only proceed if 'language_default' is configured as a domain variable.
if (in_array('language_default', $realm
->getEnabledVariables())) {
$languages = language_list('language');
$language_default = language_default();
// If the language is passed as array it is saved wrongly. Probably by
// Features.
if (is_array($language_default)) {
$language_default = (object) $language_default;
$store
->variable_set('language_default', $language_default);
}
// If the javascript hash has been changed in the language list, then we
// update the runtime realm value with the new hash.
if ($language_default->javascript != $languages[$language_default->language]->javascript) {
// Update stored value, then refresh runtime value.
$language_default->javascript = $languages[$language_default->language]->javascript;
$store
->variable_set('language_default', $language_default);
variable_realm_refresh('domain', $realm
->getKey(), 'language_default');
}
}
}