|
1
|
|
|
<?php |
|
2
|
|
|
/** |
|
3
|
|
|
* xLanguage module (eXtensible Language Management For XOOPS) |
|
4
|
|
|
* |
|
5
|
|
|
* You may not change or alter any portion of this comment or credits |
|
6
|
|
|
* of supporting developers from this source code or any supporting source code |
|
7
|
|
|
* which is considered copyrighted (c) material of the original comment or credit authors. |
|
8
|
|
|
* This program is distributed in the hope that it will be useful, |
|
9
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
10
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
|
11
|
|
|
* |
|
12
|
|
|
* @copyright XOOPS Project (https://xoops.org) |
|
13
|
|
|
* @license {@link https://www.gnu.org/licenses/gpl-2.0.html GNU Public License} |
|
14
|
|
|
* @package xlanguage |
|
15
|
|
|
* @since 2.0 |
|
16
|
|
|
* @author D.J.(phppp) [email protected] |
|
17
|
|
|
**/ |
|
18
|
|
|
|
|
19
|
|
|
use Xmf\Request; |
|
20
|
|
|
use XoopsModules\Xlanguage\{ |
|
21
|
|
|
Helper, |
|
22
|
|
|
LanguageHandler, |
|
23
|
|
|
Utility |
|
24
|
|
|
}; |
|
25
|
|
|
|
|
26
|
|
|
/** @var Helper $helper */ |
|
27
|
|
|
/** @var Utility $utility */ |
|
28
|
|
|
/** @var LanguageHandler $languageHandler */ |
|
29
|
|
|
|
|
30
|
|
|
global $xlanguage, $xoopsConfig; |
|
31
|
|
|
|
|
32
|
|
|
$helper = Helper::getInstance(); |
|
33
|
|
|
|
|
34
|
|
|
require $helper->path( 'include/vars.php'); |
|
35
|
|
|
|
|
36
|
|
|
//$cookie_prefix = preg_replace("/[^a-z_0-9]+/i", "_", preg_replace("/(http(s)?:\/\/)?(www.)?/i", "", XOOPS_URL)); |
|
37
|
|
|
$cookie_var = XLANGUAGE_LANG_TAG; |
|
38
|
|
|
$utility = new Utility(); |
|
39
|
|
|
|
|
40
|
|
|
$xlanguage['action'] = false; |
|
41
|
|
|
$langTag = Request::getString(XLANGUAGE_LANG_TAG, '', 'GET'); |
|
42
|
|
|
if (!empty($langTag)) { |
|
43
|
|
|
if (!empty($_GET[XLANGUAGE_LANG_TAG])) { |
|
44
|
|
|
$cookie_path = '/'; |
|
45
|
|
|
setcookie($cookie_var, $langTag, time() + 3600 * 24 * 30, $cookie_path, '', 0); |
|
46
|
|
|
$xlanguage['lang'] = $langTag; |
|
47
|
|
|
} elseif (!empty($_COOKIE[$cookie_var])) { |
|
48
|
|
|
$xlanguage['lang'] = $_COOKIE[$cookie_var]; |
|
49
|
|
|
|
|
50
|
|
|
/* FIXME: shall we remove it? */ |
|
51
|
|
|
|
|
52
|
|
|
// if (preg_match("/[&|\?]\b".XLANGUAGE_LANG_TAG."\b=/i",$_SERVER['REQUEST_URI'])) { |
|
53
|
|
|
// } elseif (strpos($_SERVER['REQUEST_URI'], "?")) { |
|
54
|
|
|
// $_SERVER['REQUEST_URI'] .= "&".XLANGUAGE_LANG_TAG."=".$xlanguage["lang"]; |
|
55
|
|
|
// } else { |
|
56
|
|
|
// $_SERVER['REQUEST_URI'] .= "?".XLANGUAGE_LANG_TAG."=".$xlanguage["lang"]; |
|
57
|
|
|
// } |
|
58
|
|
|
|
|
59
|
|
|
} elseif ($lang = $utility::detectLang()) { |
|
60
|
|
|
$xlanguage['lang'] = $lang; |
|
61
|
|
|
} else { |
|
62
|
|
|
$xlanguage['lang'] = $xoopsConfig['language']; |
|
63
|
|
|
} |
|
64
|
|
|
|
|
65
|
|
|
$helper = Helper::getInstance(); |
|
66
|
|
|
$languageHandler = $helper->getHandler('Language'); |
|
67
|
|
|
$languageHandler->loadConfig(); |
|
68
|
|
|
$lang = $languageHandler->getByName($xlanguage['lang']); |
|
69
|
|
|
if (is_object($lang) && strcasecmp($lang->getVar('lang_name'), $xoopsConfig['language'])) { |
|
70
|
|
|
if ($lang->hasBase()) { |
|
71
|
|
|
$xoopsConfig['language'] = $lang->getVar('lang_name'); |
|
72
|
|
|
} else { |
|
73
|
|
|
$lang_base = $languageHandler->getByName($lang->getVar('lang_base')); |
|
|
|
|
|
|
74
|
|
|
if (is_object($lang_base)) { |
|
75
|
|
|
$xlanguage['charset_base'] = $lang_base->getVar('lang_charset'); |
|
76
|
|
|
$xlanguage['charset'] = $lang->getVar('lang_charset') ?? ''; |
|
77
|
|
|
$xlanguage['code'] = $lang->getVar('lang_code' ?? ''); |
|
78
|
|
|
$xlanguage['action'] = true; |
|
79
|
|
|
$xoopsConfig['language'] = $lang_base->getVar('lang_name'); |
|
80
|
|
|
unset($lang_base); |
|
81
|
|
|
} |
|
82
|
|
|
} |
|
83
|
|
|
// if ($lang->getVar('lang_charset')) { |
|
84
|
|
|
// $xlanguage['charset'] = $lang->getVar('lang_charset'); |
|
85
|
|
|
// } |
|
86
|
|
|
// if ($lang->getVar('lang_code')) { |
|
87
|
|
|
// $xlanguage['code'] = $lang->getVar('lang_code'); |
|
88
|
|
|
// } |
|
89
|
|
|
} |
|
90
|
|
|
unset($lang); |
|
91
|
|
|
|
|
92
|
|
|
$GLOBALS['xlanguageHandler'] = $languageHandler; |
|
93
|
|
|
|
|
94
|
|
|
if ($xlanguage['action']) { |
|
95
|
|
|
//if (CONV_REQUEST && (!empty($_GET)||!empty($_POST))) { |
|
96
|
|
|
if (!empty($_POST)) { |
|
97
|
|
|
$in_charset = $xlanguage['charset']; |
|
98
|
|
|
$out_charset = $xlanguage['charset_base']; |
|
99
|
|
|
|
|
100
|
|
|
//$CONV_REQUEST_array=array("_GET", "_POST"); |
|
101
|
|
|
$CONV_REQUEST_array = ['_POST']; |
|
102
|
|
|
foreach ($CONV_REQUEST_array as $HV) { |
|
103
|
|
|
if (!empty(${$HV})) { |
|
104
|
|
|
${$HV} = $utility::convertEncoding(${$HV}, $out_charset, $in_charset); |
|
105
|
|
|
} |
|
106
|
|
|
$GLOBALS['HTTP' . $HV . '_VARS'] = ${$HV}; |
|
107
|
|
|
} |
|
108
|
|
|
} |
|
109
|
|
|
ob_start('XoopsModules\Xlanguage\Utility::encodeCharSet'); |
|
110
|
|
|
} else { |
|
111
|
|
|
ob_start('XoopsModules\Xlanguage\Utility::cleanMultiLang'); |
|
112
|
|
|
} |
|
113
|
|
|
|
|
114
|
|
|
/* |
|
115
|
|
|
* hardcoded scripts for language switching in theme html files |
|
116
|
|
|
* |
|
117
|
|
|
* To use it: |
|
118
|
|
|
* 1 set "$xlanguage_theme_enable = true;" |
|
119
|
|
|
* 2 config options "$options = array("images", " ", 5); // display mode, delimitor, number per line"; Options for display mode: image - flag; text - text; dropdown - dropdown selection box with text |
|
120
|
|
|
* 3 insert "<{$smarty.const.XLANGUAGE_SWITCH_CODE}>" into your theme html anywhere you would like to see it present |
|
121
|
|
|
*/ |
|
122
|
|
|
$xlanguage_theme_enable = true; |
|
123
|
|
|
if (!empty($xlanguage_theme_enable)) { |
|
|
|
|
|
|
124
|
|
|
$options = ['dropdown', ' ', 5]; // display mode, delimitor, number per line |
|
125
|
|
|
$utility::showSelectedLanguage($options); |
|
126
|
|
|
} |
|
127
|
|
|
} |
|
128
|
|
|
|