575b8e067a46e54f2a6a12835c830027177e7865
[yaffs-website] / web / core / modules / language / tests / language_test / language_test.module
1 <?php
2
3 /**
4  * @file
5  * Mock module for language layer tests.
6  */
7
8 use Drupal\Core\Language\LanguageInterface;
9 use Drupal\Core\Url;
10 use Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationUI;
11
12 /**
13  * Implements hook_page_top().
14  */
15 function language_test_page_top() {
16   if (\Drupal::moduleHandler()->moduleExists('language')) {
17     language_test_store_language_negotiation();
18     \Drupal::messenger()->addStatus(t('Language negotiation method: @name', ['@name' => \Drupal::languageManager()->getNegotiatedLanguageMethod()]));
19   }
20 }
21
22 /**
23  * Implements hook_language_types_info().
24  */
25 function language_test_language_types_info() {
26   if (\Drupal::state()->get('language_test.language_types')) {
27     return [
28       'test_language_type' => [
29         'name' => t('Test'),
30         'description' => t('A test language type.'),
31       ],
32       'fixed_test_language_type' => [
33         'fixed' => ['test_language_negotiation_method'],
34         'locked' => TRUE,
35       ],
36     ];
37   }
38 }
39
40 /**
41  * Implements hook_language_types_info_alter().
42  */
43 function language_test_language_types_info_alter(array &$language_types) {
44   if (\Drupal::state()->get('language_test.content_language_type')) {
45     $language_types[LanguageInterface::TYPE_CONTENT]['locked'] = FALSE;
46     unset($language_types[LanguageInterface::TYPE_CONTENT]['fixed']);
47     // By default languages are not configurable. Make
48     // LanguageInterface::TYPE_CONTENT configurable.
49     $config = \Drupal::configFactory()->getEditable('language.types');
50     $configurable = $config->get('configurable');
51     if (!in_array(LanguageInterface::TYPE_CONTENT, $configurable)) {
52       $configurable[] = LanguageInterface::TYPE_CONTENT;
53       $config->set('configurable', $configurable)->save();
54     }
55   }
56 }
57
58 /**
59  * Implements hook_language_negotiation_info_alter().
60  */
61 function language_test_language_negotiation_info_alter(array &$negotiation_info) {
62   if (\Drupal::state()->get('language_test.language_negotiation_info_alter')) {
63     unset($negotiation_info[LanguageNegotiationUI::METHOD_ID]);
64   }
65 }
66
67 /**
68  * Store the last negotiated languages.
69  */
70 function language_test_store_language_negotiation() {
71   $last = [];
72   foreach (\Drupal::languageManager()->getDefinedLanguageTypes() as $type) {
73     $last[$type] = \Drupal::languageManager()->getCurrentLanguage($type)->getId();
74   }
75   \Drupal::state()->set('language_test.language_negotiation_last', $last);
76 }
77
78 /**
79  * Implements hook_language_fallback_candidates_alter().
80  */
81 function language_test_language_fallback_candidates_alter(array &$candidates, array $context) {
82   if (Drupal::state()->get('language_test.fallback_alter.candidates')) {
83     unset($candidates[LanguageInterface::LANGCODE_NOT_SPECIFIED]);
84   }
85 }
86
87 /**
88  * Implements hook_language_fallback_candidates_OPERATION_alter().
89  */
90 function language_test_language_fallback_candidates_test_alter(array &$candidates, array $context) {
91   if (Drupal::state()->get('language_test.fallback_operation_alter.candidates')) {
92     $langcode = LanguageInterface::LANGCODE_NOT_APPLICABLE;
93     $candidates[$langcode] = $langcode;
94   }
95 }
96
97 /**
98  * Implements hook_module_preinstall().
99  */
100 function language_test_module_preinstall() {
101   \Drupal::state()->set('language_test.language_count_preinstall', count(\Drupal::languageManager()->getLanguages()));
102 }
103
104 /**
105  * Implements hook_language_switch_links_alter().
106  */
107 function language_test_language_switch_links_alter(array &$links, $type, Url $url) {
108   // I'll just sit here and wait to be called with the right arguments.
109 }