|
17 | 17 | api_protect_admin_script();
|
18 | 18 |
|
19 | 19 | $request = Container::getRequest();
|
| 20 | +$em = Database::getManager(); |
20 | 21 |
|
21 | 22 | $requestAction = $request->query->get('action');
|
22 | 23 |
|
|
32 | 33 | $interbreadcrumb[] = ['url' => 'index.php', 'name' => get_lang('Administration')];
|
33 | 34 | $interbreadcrumb[] = ['url' => 'languages.php', 'name' => get_lang('Chamilo Portal Languages')];
|
34 | 35 |
|
35 |
| -$sub_language_id_exist = SubLanguageManager::languageExistsById($request->query->getInt('sub_language_id')); |
36 |
| -$language_id_exist = SubLanguageManager::languageExistsById($request->query->getInt('id')); |
37 |
| -$language_name = ''; |
38 |
| -$language_details = []; |
| 36 | +$parent_id = $request->query->getInt('id'); |
39 | 37 |
|
40 |
| -//add data |
41 |
| -if ($sub_language_id_exist) { |
42 |
| - $language_name = SubLanguageManager::get_name_of_language_by_id($_GET['sub_language_id']); |
43 |
| - $sub_language_id = $request->query->getInt('sub_language_id'); |
| 38 | +if (!SubLanguageManager::languageExistsById($parent_id)) { |
| 39 | + Display::addFlash( |
| 40 | + Display::return_message(get_lang('The parent language does not exist.')) |
| 41 | + ); |
| 42 | + api_location(api_get_path(WEB_CODE_PATH).'admin/languages.php'); |
44 | 43 | }
|
45 | 44 |
|
46 |
| -if ($language_id_exist) { |
47 |
| - $language_details = SubLanguageManager::get_all_information_of_language($_GET['id']); |
48 |
| - $language_name = $language_details['original_name']; |
49 |
| - $parent_id = $request->query->getInt('id'); |
50 |
| -} |
| 45 | +$language_details = SubLanguageManager::get_all_information_of_language($parent_id); |
| 46 | +$language_name = $language_details['original_name']; |
51 | 47 |
|
52 |
| -//removed and register |
53 |
| -if ($language_id_exist && $sub_language_id_exist) { |
54 |
| - $get_all_information = SubLanguageManager::getAllInformationOfSubLanguage($parent_id, $sub_language_id); |
55 |
| - $original_name = $get_all_information->getOriginalName(); |
56 |
| - $english_name = $get_all_information->getEnglishName(); |
57 |
| - $isocode = $get_all_information->getIsocode(); |
58 |
| -} |
| 48 | +if ('definenewsublanguage' === $requestAction) { |
| 49 | + $form = new FormValidator( |
| 50 | + 'addsublanguage', |
| 51 | + 'post', |
| 52 | + 'sub_language_add.php?id='.Security::remove_XSS($_GET['id']).'&action=definenewsublanguage' |
| 53 | + ); |
| 54 | + $form->addHeader( |
| 55 | + get_lang('Create sub-languageForLanguage').' ( '.strtolower($language_name).' )' |
| 56 | + ); |
| 57 | + $form->addText('original_name', get_lang('Original name'), true, ['class' => 'input_titles']); |
| 58 | + $form->addText('english_name', get_lang('English name'), true, ['class' => 'input_titles']); |
| 59 | + $form->addText('isocode', get_lang('ISO code'), true, ['class' => 'input_titles']); |
| 60 | + $form->addElement('static', null, ' ', '<i>en, es, fr</i>'); |
| 61 | + $form->addCheckBox('sub_language_is_visible', '', get_lang('Visibility')); |
| 62 | + $form->addButtonCreate(get_lang('Create sub-language'), 'SubmitAddNewLanguage'); |
| 63 | + $form->protect(); |
59 | 64 |
|
60 |
| -$language_name = get_lang('Create sub-languageForLanguage').' ( '.strtolower($language_name).' )'; |
| 65 | + if ($form->validate()) { |
| 66 | + $values = $form->exportValues(); |
| 67 | + $values['english_name'] = str_replace(' ', '_', $values['english_name']); |
| 68 | + $values['isocode'] = str_replace(' ', '_', $values['isocode']); |
61 | 69 |
|
62 |
| -if ($request->request->has('SubmitAddNewLanguage')) { |
63 |
| - $original_name = $request->request->get('original_name'); |
64 |
| - $english_name = str_replace(' ', '_', $request->request->get('english_name')); |
65 |
| - $isocode = str_replace(' ', '_', $request->request->get('isocode')); |
| 70 | + $check_information = SubLanguageManager::checkIfLanguageExists( |
| 71 | + $values['original_name'], |
| 72 | + $values['english_name'], |
| 73 | + $values['isocode'] |
| 74 | + ); |
| 75 | + $allow_insert_info = $check_information['execute_add'] ?? false; |
66 | 76 |
|
67 |
| - $sublanguage_available = $request->request->getInt('sub_language_is_visible'); |
68 |
| - $check_information = SubLanguageManager::checkIfLanguageExists($original_name, $english_name, $isocode); |
69 |
| - $allow_insert_info = $check_information['execute_add'] ?? false; |
| 77 | + if ($check_information['original_name'] ) { |
| 78 | + Display::addFlash( |
| 79 | + Display::return_message( |
| 80 | + sprintf( |
| 81 | + '%s "%s (%s)', |
| 82 | + get_lang('Already exists'), |
| 83 | + get_lang('Original name'), |
| 84 | + $values['original_name'] |
| 85 | + ), |
| 86 | + 'error' |
| 87 | + ) |
| 88 | + ); |
| 89 | + } |
| 90 | + if ($check_information['english_name'] ) { |
| 91 | + Display::addFlash( |
| 92 | + Display::return_message( |
| 93 | + get_lang('Already exists').' "'.get_lang('English name').'" '.'('.$values['english_name'].')', |
| 94 | + 'error' |
| 95 | + ) |
| 96 | + ); |
| 97 | + } |
| 98 | + if ($check_information['isocode'] ) { |
| 99 | + Display::addFlash( |
| 100 | + Display::return_message(get_lang('This code does not exist').': '.$values['isocode'], 'error') |
| 101 | + ); |
| 102 | + } |
70 | 103 |
|
71 |
| - if ($check_information['original_name'] ) { |
72 |
| - Display::addFlash( |
73 |
| - Display::return_message( |
74 |
| - get_lang('Already exists').' "'.get_lang('Original name').'" '.'('.$original_name.')', |
75 |
| - 'error' |
76 |
| - ) |
77 |
| - ); |
78 |
| - } |
79 |
| - if ($check_information['english_name'] ) { |
80 |
| - Display::addFlash( |
81 |
| - Display::return_message( |
82 |
| - get_lang('Already exists').' "'.get_lang('English name').'" '.'('.$english_name.')', |
83 |
| - 'error' |
84 |
| - ) |
85 |
| - ); |
86 |
| - } |
87 |
| - if ($check_information['isocode'] ) { |
88 |
| - Display::addFlash( |
89 |
| - Display::return_message(get_lang('This code does not exist').': '.$isocode.'', 'error') |
90 |
| - ); |
91 |
| - } |
| 104 | + if (strlen($values['original_name']) > 0 && strlen($values['english_name']) > 0 && strlen($values['isocode']) > 0) { |
| 105 | + if ($allow_insert_info) { |
| 106 | + //$values['english_name'] = str_replace(' ', '_', $values['english_name']); |
| 107 | + //Fixes BT#1636 |
| 108 | + $values['english_name'] = api_strtolower($values['english_name']); |
| 109 | + |
| 110 | + try { |
| 111 | + $newSubLanguage = SubLanguageManager::addSubLanguage( |
| 112 | + $values['original_name'], |
| 113 | + $values['english_name'], |
| 114 | + $values['sub_language_is_visible'] ?? false, |
| 115 | + $parent_id, |
| 116 | + $language_details['isocode'] |
| 117 | + ); |
92 | 118 |
|
93 |
| - if (strlen($original_name) > 0 && strlen($english_name) > 0 && strlen($isocode) > 0) { |
94 |
| - if ($allow_insert_info && $language_id_exist) { |
95 |
| - $english_name = str_replace(' ', '_', $english_name); |
96 |
| - //Fixes BT#1636 |
97 |
| - $english_name = api_strtolower($english_name); |
98 |
| - |
99 |
| - $firstIso = substr($language_details['isocode'], 0, 2); |
100 |
| - //$english_name = str_starts_with($english_name, $firstIso.'_') ? $english_name : $firstIso.'_'.$english_name; |
101 |
| - |
102 |
| - $isocode = SubLanguageManager::generateSublanguageCode($firstIso, $request->request->get('english_name')); |
103 |
| - $str_info = '<br/>'.get_lang('Original name').' : ' |
104 |
| - .$original_name.'<br/>'.get_lang('English name').' : ' |
105 |
| - .$english_name.'<br/>'.get_lang('Character set').' : '.$isocode; |
106 |
| - |
107 |
| - $mkdir_result = SubLanguageManager::addPoFileForSubLanguage($isocode); |
108 |
| - if ($mkdir_result) { |
109 |
| - $sl_id = SubLanguageManager::addSubLanguage( |
110 |
| - $original_name, |
111 |
| - $english_name, |
112 |
| - $sublanguage_available, |
113 |
| - $parent_id, |
114 |
| - $isocode |
115 |
| - ); |
116 |
| - if (false === $sl_id) { |
117 |
| - SubLanguageManager::removePoFileForSubLanguage($isocode); |
| 119 | + if (SubLanguageManager::addPoFileForSubLanguage($newSubLanguage->getIsocode())) { |
| 120 | + $str_info = '<br/>'.get_lang('Original name').' : ' |
| 121 | + .$values['original_name'].'<br/>'.get_lang('English name').' : ' |
| 122 | + .$values['english_name'].'<br/>'.get_lang('Character set').' : '.$newSubLanguage->getIsocode(); |
| 123 | + |
| 124 | + Display::addFlash( |
| 125 | + Display::return_message(get_lang('The new sub-language has been added').$str_info, 'normal', false) |
| 126 | + ); |
| 127 | + api_location(api_get_path(WEB_CODE_PATH).'admin/languages.php?sub_language_id='.$newSubLanguage->getId()); |
| 128 | + } else { |
| 129 | + $em->remove($newSubLanguage); |
| 130 | + $em->flush(); |
| 131 | + |
| 132 | + throw new Exception(); |
| 133 | + } |
| 134 | + } catch (Exception $e) { |
118 | 135 | Display::addFlash(
|
119 | 136 | Display::return_message(
|
120 | 137 | get_lang('The /main/lang directory, used on this portal to store the languages, is not writable. Please contact your platform administrator and report this message.'),
|
121 | 138 | 'error'
|
122 | 139 | )
|
123 | 140 | );
|
124 |
| - } else { |
125 |
| - Display::addFlash( |
126 |
| - Display::return_message(get_lang('The new sub-language has been added').$str_info, null, false) |
127 |
| - ); |
128 |
| - api_location(api_get_path(WEB_CODE_PATH).'admin/languages.php?sub_language_id='.$sl_id); |
129 | 141 | }
|
130 |
| - } else { |
131 |
| - Display::addFlash( |
132 |
| - Display::return_message( |
133 |
| - get_lang('The /main/lang directory, used on this portal to store the languages, is not writable. Please contact your platform administrator and report this message.'), |
134 |
| - 'error' |
135 |
| - ) |
136 |
| - ); |
137 | 142 | }
|
138 |
| - } elseif (false === $language_id_exist) { |
| 143 | + } else { |
139 | 144 | Display::addFlash(
|
140 |
| - Display::return_message(get_lang('The parent language does not exist.'), 'error') |
| 145 | + Display::return_message( |
| 146 | + get_lang('The form contains incorrect or incomplete data. Please check your input.'), |
| 147 | + 'error' |
| 148 | + ) |
141 | 149 | );
|
142 | 150 | }
|
143 |
| - } else { |
144 |
| - Display::addFlash( |
145 |
| - Display::return_message( |
146 |
| - get_lang('The form contains incorrect or incomplete data. Please check your input.'), |
147 |
| - 'error' |
148 |
| - ) |
149 |
| - ); |
150 |
| - } |
151 |
| -} |
152 |
| - |
153 |
| -if (isset($_POST['SubmitAddDeleteLanguage'])) { |
154 |
| - $removed = SubLanguageManager::removeSubLanguage($_GET['id'], $_GET['sub_language_id']); |
155 |
| - if ($removed) { |
156 |
| - Display::addFlash( |
157 |
| - Display::return_message(get_lang('The sub language has been removed.')) |
158 |
| - ); |
159 |
| - api_location(api_get_path(WEB_CODE_PATH).'admin/languages.php'); |
160 | 151 | }
|
161 |
| -} |
162 | 152 |
|
163 |
| -if ('definenewsublanguage' === $requestAction) { |
164 |
| - $form = new FormValidator( |
165 |
| - 'addsublanguage', |
166 |
| - 'post', |
167 |
| - 'sub_language_add.php?id='.Security::remove_XSS($_GET['id']).'&action=definenewsublanguage' |
168 |
| - ); |
169 |
| - $class = 'add'; |
170 |
| - $form->addHeader($language_name); |
171 |
| - $form->addText('original_name', get_lang('Original name'), true, ['class' => 'input_titles']); |
172 |
| - $form->addText('english_name', get_lang('English name'), true, ['class' => 'input_titles']); |
173 |
| - $form->addText('isocode', get_lang('ISO code'), true, ['class' => 'input_titles']); |
174 |
| - $form->addElement('static', null, ' ', '<i>en, es, fr</i>'); |
175 |
| - $form->addCheckBox('sub_language_is_visible', '', get_lang('Visibility')); |
176 |
| - $form->addButtonCreate(get_lang('Create sub-language'), 'SubmitAddNewLanguage'); |
177 | 153 | $form->setDefaults([
|
178 | 154 | //'original_name' => $language_details['original_name'].'...'; -> cannot be used because of quickform filtering (freeze),
|
179 | 155 | 'english_name' => $language_details['english_name'].'2',
|
180 | 156 | 'isocode' => $language_details['isocode'],
|
181 | 157 | ]);
|
182 | 158 | $content .= $form->returnForm();
|
183 |
| -} else { |
184 |
| - if (true === SubLanguageManager::isParentOfSubLanguage($parent_id) |
185 |
| - && 'deletesublanguage' === $requestAction |
186 |
| - ) { |
187 |
| - $language_name = get_lang('Delete sub-language'); |
188 |
| - |
189 |
| - $form = new FormValidator( |
190 |
| - 'deletesublanguage', |
191 |
| - 'post', |
192 |
| - 'sub_language_add.php?id='.http_build_query([ |
193 |
| - 'id' => $request->query->getInt('id'), |
194 |
| - 'sub_language_id' => $request->query->getInt('sub_language_id'), |
195 |
| - ]) |
196 |
| - ); |
197 |
| - $class = 'minus'; |
198 |
| - $form->addHeader($language_name); |
199 |
| - $form->addElement('static', '', get_lang('Original name'), $original_name); |
200 |
| - $form->addElement('static', '', get_lang('English name'), $english_name); |
201 |
| - $form->addElement('static', '', get_lang('Character set'), $isocode); |
202 |
| - $form->addButtonCreate(get_lang('Delete sub-language'), 'SubmitAddDeleteLanguage'); |
203 |
| - $content .= $form->returnForm(); |
204 |
| - } |
205 |
| - if ('definenewsublanguage' == $requestAction) { |
| 159 | +} elseif (true === SubLanguageManager::isParentOfSubLanguage($parent_id) |
| 160 | + && 'deletesublanguage' === $requestAction |
| 161 | +) { |
| 162 | + $sub_language_id = $request->query->getInt('sub_language_id'); |
| 163 | + |
| 164 | + if (!SubLanguageManager::languageExistsById($sub_language_id)) { |
206 | 165 | Display::addFlash(
|
207 |
| - Display::return_message(get_lang('The sub-language of this language has been added')) |
| 166 | + Display::return_message(get_lang('The sub-language does not exist.')) |
208 | 167 | );
|
| 168 | + |
| 169 | + api_location(api_get_path(WEB_CODE_PATH).'admin/languages.php'); |
| 170 | + } |
| 171 | + |
| 172 | + $language_name = SubLanguageManager::get_name_of_language_by_id($sub_language_id); |
| 173 | + $get_all_information = SubLanguageManager::getAllInformationOfSubLanguage($parent_id, $sub_language_id); |
| 174 | + |
| 175 | + $form = new FormValidator( |
| 176 | + 'deletesublanguage', |
| 177 | + 'post', |
| 178 | + 'sub_language_add.php?id='.http_build_query([ |
| 179 | + 'id' => $parent_id, |
| 180 | + 'sub_language_id' => $sub_language_id, |
| 181 | + ]) |
| 182 | + ); |
| 183 | + $form->addHeader(get_lang('Delete sub-language')); |
| 184 | + $form->addElement('static', '', get_lang('Original name'), $get_all_information->getOriginalName()); |
| 185 | + $form->addElement('static', '', get_lang('English name'), $get_all_information->getEnglishName()); |
| 186 | + $form->addElement('static', '', get_lang('Character set'), $get_all_information->getIsocode()); |
| 187 | + $form->addButtonCreate(get_lang('Delete sub-language'), 'SubmitAddDeleteLanguage'); |
| 188 | + $form->protect(); |
| 189 | + |
| 190 | + if ($form->validate()) { |
| 191 | + $removed = SubLanguageManager::removeSubLanguage($parent_id, $sub_language_id); |
| 192 | + |
| 193 | + if ($removed) { |
| 194 | + Display::addFlash( |
| 195 | + Display::return_message(get_lang('The sub language has been removed.')) |
| 196 | + ); |
| 197 | + api_location(api_get_path(WEB_CODE_PATH).'admin/languages.php'); |
| 198 | + } |
209 | 199 | }
|
| 200 | + |
| 201 | + $content .= $form->returnForm(); |
210 | 202 | }
|
211 | 203 | /**
|
212 | 204 | * Footer.
|
|
0 commit comments