Mock module for language layer tests.
<?php
/**
* @file
* Mock module for language layer tests.
*/
/**
* Implements hook_boot().
*
* For testing domain language negotiation, we fake it by setting
* the HTTP_HOST here
*/
function language_test_boot() {
if (state()
->get('language_test.domain')) {
$_SERVER['HTTP_HOST'] = state()
->get('language_test.domain');
}
}
/**
* Implements hook_init().
*/
function language_test_init() {
language_test_store_language_negotiation();
if (isset(language(LANGUAGE_TYPE_INTERFACE)->langcode) && isset(language(LANGUAGE_TYPE_INTERFACE)->method_id)) {
drupal_set_message(t('Language negotiation method: @name', array(
'@name' => language(LANGUAGE_TYPE_INTERFACE)->method_id,
)));
}
}
/**
* Implements hook_language_types_info().
*/
function language_test_language_types_info() {
if (state()
->get('language_test.language_types')) {
return array(
'test_language_type' => array(
'name' => t('Test'),
'description' => t('A test language type.'),
),
'fixed_test_language_type' => array(
'fixed' => array(
'test_language_negotiation_method',
),
),
);
}
}
/**
* Implements hook_language_types_info_alter().
*/
function language_test_language_types_info_alter(array &$language_types) {
if (state()
->get('language_test.content_language_type')) {
unset($language_types[LANGUAGE_TYPE_CONTENT]['fixed']);
}
}
/**
* Implements hook_language_negotiation_info().
*/
function language_test_language_negotiation_info() {
if (state()
->get('language_test.language_negotiation_info')) {
$info = array(
'callbacks' => array(
'negotiation' => 'language_test_language_negotiation_method',
),
'file' => drupal_get_path('module', 'language_test') . '/language_test.module',
'weight' => -10,
'description' => t('This is a test language negotiation method.'),
);
return array(
'test_language_negotiation_method' => array(
'name' => t('Test'),
'types' => array(
LANGUAGE_TYPE_CONTENT,
'test_language_type',
'fixed_test_language_type',
),
) + $info,
'test_language_negotiation_method_ts' => array(
'name' => t('Type-specific test'),
'types' => array(
'test_language_type',
),
) + $info,
);
}
}
/**
* Implements hook_language_negotiation_info_alter().
*/
function language_test_language_negotiation_info_alter(array &$negotiation_info) {
if (state()
->get('language_test.language_negotiation_info_alter')) {
unset($negotiation_info[LANGUAGE_NEGOTIATION_INTERFACE]);
}
}
/**
* Store the last negotiated languages.
*/
function language_test_store_language_negotiation() {
$last = array();
foreach (language_types_get_all() as $type) {
$last[$type] = language($type)->langcode;
}
state()
->set('language_test.language_negotiation_last', $last);
}
/**
* Provides a test language negotiation method.
*/
function language_test_language_negotiation_method($languages) {
return 'it';
}
Name | Description |
---|---|
language_test_boot | Implements hook_boot(). |
language_test_init | Implements hook_init(). |
language_test_language_negotiation_info | Implements hook_language_negotiation_info(). |
language_test_language_negotiation_info_alter | Implements hook_language_negotiation_info_alter(). |
language_test_language_negotiation_method | Provides a test language negotiation method. |
language_test_language_types_info | Implements hook_language_types_info(). |
language_test_language_types_info_alter | Implements hook_language_types_info_alter(). |
language_test_store_language_negotiation | Store the last negotiated languages. |