From fd9b201346a6cf5fc98115b5af81f30170087051 Mon Sep 17 00:00:00 2001 From: Clemens Schwaighofer Date: Fri, 15 Apr 2022 13:57:26 +0900 Subject: [PATCH] Remove old GetSettings for language legacy flow --- .../tests/CoreLibsLanguageGetSettingsTest.php | 325 ------------------ www/configs/config.php | 1 + www/lib/CoreLibs/Language/GetSettings.php | 141 -------- 3 files changed, 1 insertion(+), 466 deletions(-) delete mode 100644 4dev/tests/CoreLibsLanguageGetSettingsTest.php delete mode 100644 www/lib/CoreLibs/Language/GetSettings.php diff --git a/4dev/tests/CoreLibsLanguageGetSettingsTest.php b/4dev/tests/CoreLibsLanguageGetSettingsTest.php deleted file mode 100644 index 14fb8d9c..00000000 --- a/4dev/tests/CoreLibsLanguageGetSettingsTest.php +++ /dev/null @@ -1,325 +0,0 @@ - [ - // lang, domain, path - null, null, null, - // global set no session - // SESSION: DEFAULT_CHARSET, GLOBALS: OVERRIDE_LANG, SESSION: DEFAULT_LANG - null, null, null, - // return array - [ - 0 => 'UTF-8', - 1 => 'en_US', - 2 => 'en', - 3 => 'frontend', - 4 => "/^\/(.*\/)?includes\/lang\/frontend\/$/", - 'encoding' => 'UTF-8', - 'lang' => 'en_US', - 'lang_short' => 'en', - 'domain' => 'frontend', - 'path' => "/^\/(.*\/)?includes\/lang\/frontend\/$/", - ], - ], - 'no params, session charset and lang' => [ - // lang, domain, path - null, null, null, - // global set no session - // SESSION: DEFAULT_CHARSET, GLOBALS: OVERRIDE_LANG, SESSION: DEFAULT_LANG - 'UTF-8', null, 'ja_JP', - // return array - [ - 0 => 'UTF-8', - 1 => 'ja_JP', - 2 => 'ja', - 3 => 'frontend', - 4 => "/^\/(.*\/)?includes\/lang\/frontend\/$/", - 'encoding' => 'UTF-8', - 'lang' => 'ja_JP', - 'lang_short' => 'ja', - 'domain' => 'frontend', - 'path' => "/^\/(.*\/)?includes\/lang\/frontend\/$/", - ], - ], - 'no params, session charset and lang short' => [ - // lang, domain, path - null, null, null, - // global set no session - // SESSION: DEFAULT_CHARSET, GLOBALS: OVERRIDE_LANG, SESSION: DEFAULT_LANG - 'UTF-8', null, 'ja', - // return array - [ - 0 => 'UTF-8', - 1 => 'ja', - 2 => 'ja', - 3 => 'frontend', - 4 => "/^\/(.*\/)?includes\/lang\/frontend\/$/", - 'encoding' => 'UTF-8', - 'lang' => 'ja', - 'lang_short' => 'ja', - 'domain' => 'frontend', - 'path' => "/^\/(.*\/)?includes\/lang\/frontend\/$/", - ], - ], - // globals override lang - 'no params, session charset and lang, default lang override' => [ - // lang, domain, path - null, null, null, - // global set no session - // SESSION: DEFAULT_CHARSET, GLOBALS: OVERRIDE_LANG, SESSION: DEFAULT_LANG - 'UTF-8', 'en_US', 'ja_JP', - // return array - [ - 0 => 'UTF-8', - 1 => 'en_US', - 2 => 'en', - 3 => 'frontend', - 4 => "/^\/(.*\/)?includes\/lang\/frontend\/$/", - 'encoding' => 'UTF-8', - 'lang' => 'en_US', - 'lang_short' => 'en', - 'domain' => 'frontend', - 'path' => "/^\/(.*\/)?includes\/lang\/frontend\/$/", - ], - ], - // globals override lang short - 'no params, session charset and lang, default lang short override' => [ - // lang, domain, path - null, null, null, - // global set no session - // SESSION: DEFAULT_CHARSET, GLOBALS: OVERRIDE_LANG, SESSION: DEFAULT_LANG - 'UTF-8', 'en', 'ja_JP', - // return array - [ - 0 => 'UTF-8', - 1 => 'en', - 2 => 'en', - 3 => 'frontend', - 4 => "/^\/(.*\/)?includes\/lang\/frontend\/$/", - 'encoding' => 'UTF-8', - 'lang' => 'en', - 'lang_short' => 'en', - 'domain' => 'frontend', - 'path' => "/^\/(.*\/)?includes\/lang\/frontend\/$/", - ], - ], - // param lang (no override) - 'locale param only, no override' => [ - // lang, domain, path - 'ja.UTF-8', null, null, - // global set no session - // SESSION: DEFAULT_CHARSET, GLOBALS: OVERRIDE_LANG, SESSION: DEFAULT_LANG - null, null, null, - // return array - [ - 0 => 'UTF-8', - 1 => 'ja', - 2 => 'ja', - 3 => 'frontend', - 4 => "/^\/(.*\/)?includes\/lang\/frontend\/$/", - 'encoding' => 'UTF-8', - 'lang' => 'ja', - 'lang_short' => 'ja', - 'domain' => 'frontend', - 'path' => "/^\/(.*\/)?includes\/lang\/frontend\/$/", - ], - ], - // different locale setting - 'locale complex param only, no override' => [ - // lang, domain, path - 'ja_JP.SJIS', null, null, - // global set no session - // SESSION: DEFAULT_CHARSET, GLOBALS: OVERRIDE_LANG, SESSION: DEFAULT_LANG - null, null, null, - // return array - [ - 0 => 'SJIS', - 1 => 'ja_JP', - 2 => 'ja', - 3 => 'frontend', - 4 => "/^\/(.*\/)?includes\/lang\/frontend\/$/", - 'encoding' => 'SJIS', - 'lang' => 'ja_JP', - 'lang_short' => 'ja', - 'domain' => 'frontend', - 'path' => "/^\/(.*\/)?includes\/lang\/frontend\/$/", - ], - ], - // param lang and domain (no override) - 'locale, domain params, no override' => [ - // lang, domain, path - 'ja.UTF-8', 'admin', null, - // global set no session - // SESSION: DEFAULT_CHARSET, GLOBALS: OVERRIDE_LANG, SESSION: DEFAULT_LANG - null, null, null, - // return array - [ - 0 => 'UTF-8', - 1 => 'ja', - 2 => 'ja', - 3 => 'admin', - 4 => "/^\/(.*\/)?includes\/lang\/frontend\/$/", - 'encoding' => 'UTF-8', - 'lang' => 'ja', - 'lang_short' => 'ja', - 'domain' => 'admin', - 'path' => "/^\/(.*\/)?includes\/lang\/frontend\/$/", - ], - ], - // all params set (no override) - 'all params, no override' => [ - // lang, domain, path - 'ja.UTF-8', 'admin', __DIR__ . '/locale_other/', - // global set no session - // SESSION: DEFAULT_CHARSET, GLOBALS: OVERRIDE_LANG, SESSION: DEFAULT_LANG - null, null, null, - // return array - [ - 0 => 'UTF-8', - 1 => 'ja', - 2 => 'ja', - 3 => 'admin', - 4 => "/^\/(.*\/)?locale_other\/$/", - 'encoding' => 'UTF-8', - 'lang' => 'ja', - 'lang_short' => 'ja', - 'domain' => 'admin', - 'path' => "/^\/(.*\/)?locale_other\/$/", - ], - ], - // TODO invalid params (bad path) (no override) - // TODO param calls, but with override set - ]; - } - - /** - * Undocumented function - * - * @covers ::setLangEncoding - * @dataProvider setLangEncodingProvider - * @testdox lang settings lang $language, domain $domain, path $path; null session char: $SESSION_DEFAULT_CHARSET, null global lang: $GLOBAL_OVERRIDE_LANG, null session lang: $SESSION_DEFAULT_LANG [$_dataName] - * - * @return void - */ - public function testSetLangEncoding( - ?string $language, - ?string $domain, - ?string $path, - ?string $SESSION_DEFAULT_CHARSET, - ?string $GLOBAL_OVERRIDE_LANG, - ?string $SESSION_DEFAULT_LANG, - array $expected, - ): void { - $return_lang_settings = []; - global $_SESSION; - // set override - if ($SESSION_DEFAULT_CHARSET !== null) { - $_SESSION['DEFAULT_CHARSET'] = $SESSION_DEFAULT_CHARSET; - } - if ($GLOBAL_OVERRIDE_LANG !== null) { - $GLOBALS['OVERRIDE_LANG'] = $GLOBAL_OVERRIDE_LANG; - } - if ($SESSION_DEFAULT_LANG !== null) { - $_SESSION['DEFAULT_LANG'] = $SESSION_DEFAULT_LANG; - } - // function call - if ($language === null && $domain === null && $path === null) { - $return_lang_settings = \CoreLibs\Language\GetSettings::setLangEncoding(); - } elseif ($language !== null && $domain === null && $path === null) { - $return_lang_settings = \CoreLibs\Language\GetSettings::setLangEncoding( - $language - ); - } elseif ($language !== null && $domain !== null && $path === null) { - $return_lang_settings = \CoreLibs\Language\GetSettings::setLangEncoding( - $language, - $domain - ); - } else { - $return_lang_settings = \CoreLibs\Language\GetSettings::setLangEncoding( - $language, - $domain, - $path - ); - } - // print "RETURN: " . print_r($return_lang_settings, true) . "\n"; - - foreach ( - [ - 0, 1, 2, 3, 4, - 'encoding', 'lang', 'lang_short', 'domain', 'path' - ] as $key - ) { - $value = $expected[$key]; - if (strpos($value, "/") === 0) { - // this is regex - $this->assertMatchesRegularExpression( - $value, - $return_lang_settings[$key] - ); - } else { - // assert equal - $this->assertEquals( - $value, - $return_lang_settings[$key], - ); - } - } - // unset all vars - $_SESSION = []; - unset($GLOBALS['OVERRIDE_LANG']); - } -} - -// __END__ diff --git a/www/configs/config.php b/www/configs/config.php index ce6c3b95..f9353fd0 100644 --- a/www/configs/config.php +++ b/www/configs/config.php @@ -57,6 +57,7 @@ foreach (['admin', 'frontend'] as $folder) { } } // if content path is empty, fallback is default +/** @phpstan-ignore-next-line can be empty */ if (empty($folder)) { $folder = 'default'; } diff --git a/www/lib/CoreLibs/Language/GetSettings.php b/www/lib/CoreLibs/Language/GetSettings.php deleted file mode 100644 index c73598b1..00000000 --- a/www/lib/CoreLibs/Language/GetSettings.php +++ /dev/null @@ -1,141 +0,0 @@ -. - * _. - * _.@ - * If no encoding is set in the is, UTF-8 is assumed - * - * Returned is an array with array indes and dictionary index - * 0~4 array are - * encoding: 0 - * lang: 1 - * lang_short: 2 - * domain: 3 - * path: 4 - * - * @param string|null $locale A valid locale name - * @param string|null $path A valid path where the mo files will be based - * @return array Settings as array/dictionary - * @deprecated Use CoreLibs\Language\GetLocale::setLocale() - */ - public static function setLangEncoding( - ?string $locale = null, - ?string $domain = null, - ?string $path = null - ): array { - $lang = ''; - $lang_short = ''; - $encoding = ''; - // if is is set, extract - if (!empty($locale)) { - preg_match( - // language code - '/^(?P[a-z]{2,3})' - // _ country code - . '(?:_(?P[A-Z]{2}))?' - // . charset - . '(?:\\.(?P[-A-Za-z0-9_]+))?' - // @ modifier - . '(?:@(?P[-A-Za-z0-9_]+))?$/', - $locale, - $matches - ); - // lang short part - $lang_short = $matches['lang'] ?? ''; - $lang = $lang_short; - // lang + country if country is set - if (!empty($matches['country'])) { - $lang = sprintf('%s_%s', $lang_short, $matches['country']); - } - // encoding if set - $encoding = strtoupper($matches['charset'] ?? 'UTF-8'); - } - // if domain is set, must be alphanumeric, if not unset - if ( - !empty($domain) && - !preg_match("/^\w+$/", $domain) - ) { - $domain = ''; - } - // path checks if set, if not valid path unset - if ( - !empty($path) && - !is_dir($path) - ) { - $path = ''; - } - - // just emergency fallback for language - // set encoding - if (empty($encoding)) { - if (!empty($_SESSION['DEFAULT_CHARSET'])) { - $encoding = $_SESSION['DEFAULT_CHARSET']; - } else { - $encoding = DEFAULT_ENCODING; - } - } - // gobal override - if (empty($lang)) { - if (!empty($GLOBALS['OVERRIDE_LANG'])) { - $lang = $GLOBALS['OVERRIDE_LANG']; - } elseif (!empty($_SESSION['DEFAULT_LANG'])) { - // session (login) - $lang = $_SESSION['DEFAULT_LANG']; - } else { - // mostly default SITE LANG or DEFAULT LANG - $lang = defined('SITE_LANG') && !empty(SITE_LANG) ? - SITE_LANG : - DEFAULT_LANG; - } - } - // create the char lang encoding - if (empty($lang_short)) { - $lang_short = substr($lang, 0, 2); - } - // set the language folder - if (empty($path)) { - // LEGACY - $path = BASE . INCLUDES . LANG . CONTENT_PATH; - // will be BASE . INCLUDES . LANG . $language . /LC_MESSAGES/ - // so CONTENT_PATH has to be removed - } - // if no domain is set, fall back to content path - if (empty($domain)) { - $domain = str_replace('/', '', CONTENT_PATH); - } - // return - return [ - // as array - 0 => $encoding, - 1 => $lang, - 2 => $lang_short, - 3 => $domain, - 4 => $path, - // with index name - // encoding - 'encoding' => $encoding, - // language full string, eg en_US - 'lang' => $lang, - // lang short, if eg en_US only en - 'lang_short' => $lang_short, - // translation domain (CONTENT_PATH) - 'domain' => $domain, - // folder BASE ONLY - 'path' => $path, - ]; - } -}