XCL Web Application Platform 2.5.0
The XoopsCube Legacy Project
Loading...
Searching...
No Matches
Legacy_LanguageManager.class.php
1<?php
11
12if (!defined('XOOPS_ROOT_PATH')) {
13 exit();
14}
15
16require_once XOOPS_ROOT_PATH . '/core/XCube_LanguageManager.class.php';
17
19{
20 public function prepare()
21 {
22 parent::prepare();
23
24 $this->_setupDatabase();
26
27 $this->_setupMbstring();
28 }
29
33 public function _setupDatabase()
34 {
35 $filename = XOOPS_MODULE_PATH . '/legacy/language/' . $this->mLanguageName . '/charset_' . XOOPS_DB_TYPE . '.php';
36 if (file_exists($filename)) {
37 require_once($filename);
38 }
39 }
40
51 public function _setupMbstring()
52 {
53 #ifdef _MBSTRING_LANGUAGE
54 if (defined('_MBSTRING_LANGUAGE') && function_exists('mb_language')) {
55 if (false != @mb_language(_MBSTRING_LANGUAGE) && false != @mb_internal_encoding(_CHARSET)) {
56 define('MBSTRING', true);
57 } else {
58 mb_language('neutral');
59 mb_internal_encoding('ISO-8859-1');
60 if (!defined('MBSTRING')) {
61 define('MBSTRING', false);
62 }
63 }
64
65 if (function_exists('mb_regex_encoding')) {
66 @mb_regex_encoding(_CHARSET);
67 }
68
69 ini_set('mbstring.substitute_character', 'none');
70 ini_set('default_charset', _CHARSET);
71 ini_set('mbstring.substitute_character', 'none');
72 //if (PHP_VERSION_ID < 50600) {
73 // ini_set('mbstring.http_input', 'pass');
74 // ini_set('mbstring.http_output', 'pass');
75 //} else {
76 @ini_set('mbstring.internal_encoding', '');
77 // @ini_set('mbstring.http_input', ''); deprecated
78 // @ini_set('mbstring.http_output', ''); deprecated
79
80 // }
81 }
82 #endif
83
84 if (!defined('MBSTRING')) {
85 define('MBSTRING', false);
86 }
87 }
88
89 public function loadGlobalMessageCatalog()
90 {
91 $lpath = XOOPS_ROOT_PATH . '/modules/legacy/language/' . $this->mLanguageName;
92 if (!$this->_loadFile($lpath . '/global.php')) {
93 $this->_loadFile(XOOPS_ROOT_PATH . '/modules/legacy/language/' . $this->getFallbackLanguage() . '/global.php');
94 }
95 if (!$this->_loadFile($lpath . '/setting.php')) {
96 $this->_loadFile(XOOPS_ROOT_PATH . '/modules/legacy/language/' . $this->getFallbackLanguage() . '/setting.php');
97 }
98
99 //
100 // Now, if XOOPS_USE_MULTIBYTES isn't defined, set zero to it.
101 //
102 if (!defined('XOOPS_USE_MULTIBYTES')) {
103 define('XOOPS_USE_MULTIBYTES', 0);
104 }
105 }
106
113 public function loadPageTypeMessageCatalog(string $type)
114 {
115 if (false === strpos($type, '.')) {
116 if (!$this->_loadFile(XOOPS_ROOT_PATH . '/language/' . $this->mLanguageName . '/' . $type . '.php')) {
117 $this->_loadFile(XOOPS_ROOT_PATH . '/language/' . $this->getFallbackLanguage() . '/' . $type . '.php');
118 }
119 }
120 }
121
128 public function loadModuleMessageCatalog(string $moduleName)
129 {
130 $this->_loadLanguage($moduleName, 'main');
131 }
132
139 public function loadModuleAdminMessageCatalog($dirname)
140 {
141 $this->_loadLanguage($dirname, 'admin');
142 }
143
150 public function loadBlockMessageCatalog($dirname)
151 {
152 $this->_loadLanguage($dirname, 'blocks');
153 }
154
161 public function loadModinfoMessageCatalog($dirname)
162 {
163 $this->_loadLanguage($dirname, 'modinfo');
164 }
165
171 public function _loadLanguage($dirname, $fileBodyName)
172 {
173 static $trust_dirnames = [];
174 if (!isset($trust_dirnames[$dirname])) {
175 $trust_dirnames[$dirname] = Legacy_Utils::getTrustDirnameByDirname($dirname);
176 }
177 (
178 $this->_loadFile(XOOPS_MODULE_PATH . '/' . $dirname . '/language/' . $this->mLanguageName . '/' . $fileBodyName . '.php')
179 ||
180 $this->_loadFile(XOOPS_MODULE_PATH . '/' . $dirname . '/language/' . $this->getFallbackLanguage() . '/' . $fileBodyName . '.php')
181 ||
182 (
183 $trust_dirnames[$dirname] &&
184 (
185 $this->_loadFile(XOOPS_TRUST_PATH . '/modules/' . $trust_dirnames[$dirname] . '/language/' . $this->mLanguageName . '/' . $fileBodyName . '.php', $dirname)
186 ||
187 $this->_loadFile(XOOPS_TRUST_PATH . '/modules/' . $trust_dirnames[$dirname] . '/language/' . $this->getFallbackLanguage() . '/' . $fileBodyName . '.php', $dirname)
188 )
189 )
190 );
191 }
192
199 public function _loadFile($filename, $mydirname = null)
200 {
201 if (file_exists($filename)) {
202 require_once $filename;
203 return true;
204 }
205
206 return false;
207 }
208
217 public function existFile(string $section, string $filename)
218 {
219 return file_exists(XOOPS_ROOT_PATH . '/languages/' . $this->mLanguageName . ($section?"/$section/$filename":"/$filename"));
220 }
221
230 public function getFilepath(string $section, string $filename)
231 {
232 $filepath = XOOPS_ROOT_PATH . '/languages/' . $this->mLanguageName . ($section?"/{$section}/{$filename}":"/{$filename}");
233
234 if (file_exists($filepath)) {
235 return $filepath;
236 } else {
237 return XOOPS_ROOT_PATH . '/languages/' . $this->getFallbackLanguage() . ($section?"/{$section}/{$filename}":"/{$filename}");
238 }
239 }
240
249 public function loadTextFile(string $section, string $filename)
250 {
251 $filepath = $this->getFilepath($section, $filename);
252 return file_get_contents($filepath);
253 }
254
255 public function getFallbackLanguage() : string
256 {
257 return 'english';
258 }
259
260 public function encodeUTF8($text)
261 {
262 if ((XOOPS_USE_MULTIBYTES == 1) && function_exists('mb_convert_encoding')) {
263 return mb_convert_encoding($text, 'UTF-8', _CHARSET);
264 }
265
266 return utf8_encode($text);
267 }
268
269 public function decodeUTF8($text)
270 {
271 if ((XOOPS_USE_MULTIBYTES == 1) && function_exists('mb_convert_encoding')) {
272 return mb_convert_encoding($text, _CHARSET, 'UTF-8');
273 }
274
275 return utf8_decode($text);
276 }
277}
existFile(string $section, string $filename)
_loadFile($filename, $mydirname=null)
loadTextFile(string $section, string $filename)
_loadLanguage($dirname, $fileBodyName)
getFilepath(string $section, string $filename)
static getTrustDirnameByDirname( $dirname)