You are here

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');
    }
  }
}