mirror of
https://github.com/phpbb/phpbb.git
synced 2025-08-07 01:06:48 +02:00
[ticket/13762] Moving language related functionality into a separate class
PHPBB3-13762
This commit is contained in:
@@ -76,7 +76,7 @@ class acp_extensions
|
||||
{
|
||||
$md_manager->get_metadata('all');
|
||||
}
|
||||
catch(\phpbb\extension\exception $e)
|
||||
catch (\phpbb\extension\exception $e)
|
||||
{
|
||||
$message = call_user_func_array(array($this->user, 'lang'), array_merge(array($e->getMessage()), $e->get_parameters()));
|
||||
trigger_error($message, E_USER_WARNING);
|
||||
@@ -353,7 +353,7 @@ class acp_extensions
|
||||
$enabled_extension_meta_data[$name]['S_VERSIONCHECK'] = true;
|
||||
$enabled_extension_meta_data[$name]['U_VERSIONCHECK_FORCE'] = $this->u_action . '&action=details&versioncheck_force=1&ext_name=' . urlencode($md_manager->get_metadata('name'));
|
||||
}
|
||||
catch(\phpbb\extension\exception $e)
|
||||
catch (\phpbb\extension\exception $e)
|
||||
{
|
||||
$message = call_user_func_array(array($this->user, 'lang'), array_merge(array($e->getMessage()), $e->get_parameters()));
|
||||
$this->template->assign_block_vars('disabled', array(
|
||||
@@ -410,7 +410,7 @@ class acp_extensions
|
||||
$disabled_extension_meta_data[$name]['S_VERSIONCHECK'] = true;
|
||||
$disabled_extension_meta_data[$name]['U_VERSIONCHECK_FORCE'] = $this->u_action . '&action=details&versioncheck_force=1&ext_name=' . urlencode($md_manager->get_metadata('name'));
|
||||
}
|
||||
catch(\phpbb\extension\exception $e)
|
||||
catch (\phpbb\extension\exception $e)
|
||||
{
|
||||
$message = call_user_func_array(array($this->user, 'lang'), array_merge(array($e->getMessage()), $e->get_parameters()));
|
||||
$this->template->assign_block_vars('disabled', array(
|
||||
@@ -470,7 +470,7 @@ class acp_extensions
|
||||
$available_extension_meta_data[$name]['S_VERSIONCHECK'] = true;
|
||||
$available_extension_meta_data[$name]['U_VERSIONCHECK_FORCE'] = $this->u_action . '&action=details&versioncheck_force=1&ext_name=' . urlencode($md_manager->get_metadata('name'));
|
||||
}
|
||||
catch(\phpbb\extension\exception $e)
|
||||
catch (\phpbb\extension\exception $e)
|
||||
{
|
||||
$message = call_user_func_array(array($this->user, 'lang'), array_merge(array($e->getMessage()), $e->get_parameters()));
|
||||
$this->template->assign_block_vars('disabled', array(
|
||||
|
@@ -31,7 +31,7 @@ class acp_language
|
||||
|
||||
function main($id, $mode)
|
||||
{
|
||||
global $config, $db, $user, $template, $phpbb_log;
|
||||
global $config, $db, $user, $template, $phpbb_log, $phpbb_container;
|
||||
global $phpbb_root_path, $phpEx, $request;
|
||||
|
||||
include_once($phpbb_root_path . 'includes/functions_user.' . $phpEx);
|
||||
@@ -377,37 +377,19 @@ class acp_language
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$new_ary = $iso = array();
|
||||
$dp = @opendir("{$phpbb_root_path}language");
|
||||
|
||||
if ($dp)
|
||||
/** @var \phpbb\language\language_file_helper $language_helper */
|
||||
$language_helper = $phpbb_container->get('language.helper.language_file');
|
||||
$iso = $language_helper->get_available_languages();
|
||||
|
||||
foreach ($iso as $lang_array)
|
||||
{
|
||||
while (($file = readdir($dp)) !== false)
|
||||
{
|
||||
if ($file[0] == '.' || !is_dir($phpbb_root_path . 'language/' . $file))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
$lang_iso = $lang_array['iso'];
|
||||
|
||||
if (file_exists("{$phpbb_root_path}language/$file/iso.txt"))
|
||||
{
|
||||
if (!in_array($file, $installed))
|
||||
{
|
||||
if ($iso = file("{$phpbb_root_path}language/$file/iso.txt"))
|
||||
{
|
||||
if (sizeof($iso) == 3)
|
||||
{
|
||||
$new_ary[$file] = array(
|
||||
'iso' => $file,
|
||||
'name' => trim($iso[0]),
|
||||
'local_name'=> trim($iso[1]),
|
||||
'author' => trim($iso[2])
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!in_array($lang_iso, $installed))
|
||||
{
|
||||
$new_ary[$lang_iso] = $lang_array;
|
||||
}
|
||||
closedir($dp);
|
||||
}
|
||||
|
||||
unset($installed);
|
||||
|
@@ -1719,7 +1719,7 @@ function redirect($url, $return = false, $disable_cd_check = false)
|
||||
|
||||
$failover_flag = false;
|
||||
|
||||
if (empty($user->lang))
|
||||
if (!$user->is_setup())
|
||||
{
|
||||
$user->add_lang('common');
|
||||
}
|
||||
@@ -2243,7 +2243,7 @@ function login_box($redirect = '', $l_explain = '', $l_success = '', $admin = fa
|
||||
$err = '';
|
||||
|
||||
// Make sure user->setup() has been called
|
||||
if (empty($user->lang))
|
||||
if (!$user->is_setup())
|
||||
{
|
||||
$user->setup();
|
||||
}
|
||||
@@ -3268,7 +3268,7 @@ function msg_handler($errno, $msg_text, $errfile, $errline)
|
||||
|
||||
case E_USER_ERROR:
|
||||
|
||||
if (!empty($user) && !empty($user->lang))
|
||||
if (!empty($user) && $user->is_setup())
|
||||
{
|
||||
$msg_text = (!empty($user->lang[$msg_text])) ? $user->lang[$msg_text] : $msg_text;
|
||||
$msg_title = (!isset($msg_title)) ? $user->lang['GENERAL_ERROR'] : ((!empty($user->lang[$msg_title])) ? $user->lang[$msg_title] : $msg_title);
|
||||
@@ -3388,7 +3388,7 @@ function msg_handler($errno, $msg_text, $errfile, $errline)
|
||||
// We re-init the auth array to get correct results on login/logout
|
||||
$auth->acl($user->data);
|
||||
|
||||
if (empty($user->lang))
|
||||
if (!$user->is_setup())
|
||||
{
|
||||
$user->setup();
|
||||
}
|
||||
@@ -3761,178 +3761,6 @@ function phpbb_optionset($bit, $set, $data)
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine which plural form we should use.
|
||||
* For some languages this is not as simple as for English.
|
||||
*
|
||||
* @param $rule int ID of the plural rule we want to use, see http://wiki.phpbb.com/Plural_Rules#Plural_Rules
|
||||
* @param $number int|float The number we want to get the plural case for. Float numbers are floored.
|
||||
* @return int The plural-case we need to use for the number plural-rule combination
|
||||
*/
|
||||
function phpbb_get_plural_form($rule, $number)
|
||||
{
|
||||
$number = (int) $number;
|
||||
|
||||
if ($rule > 15 || $rule < 0)
|
||||
{
|
||||
trigger_error('INVALID_PLURAL_RULE');
|
||||
}
|
||||
|
||||
/**
|
||||
* The following plural rules are based on a list published by the Mozilla Developer Network
|
||||
* https://developer.mozilla.org/en/Localization_and_Plurals
|
||||
*/
|
||||
switch ($rule)
|
||||
{
|
||||
case 0:
|
||||
/**
|
||||
* Families: Asian (Chinese, Japanese, Korean, Vietnamese), Persian, Turkic/Altaic (Turkish), Thai, Lao
|
||||
* 1 - everything: 0, 1, 2, ...
|
||||
*/
|
||||
return 1;
|
||||
|
||||
case 1:
|
||||
/**
|
||||
* Families: Germanic (Danish, Dutch, English, Faroese, Frisian, German, Norwegian, Swedish), Finno-Ugric (Estonian, Finnish, Hungarian), Language isolate (Basque), Latin/Greek (Greek), Semitic (Hebrew), Romanic (Italian, Portuguese, Spanish, Catalan)
|
||||
* 1 - 1
|
||||
* 2 - everything else: 0, 2, 3, ...
|
||||
*/
|
||||
return ($number == 1) ? 1 : 2;
|
||||
|
||||
case 2:
|
||||
/**
|
||||
* Families: Romanic (French, Brazilian Portuguese)
|
||||
* 1 - 0, 1
|
||||
* 2 - everything else: 2, 3, ...
|
||||
*/
|
||||
return (($number == 0) || ($number == 1)) ? 1 : 2;
|
||||
|
||||
case 3:
|
||||
/**
|
||||
* Families: Baltic (Latvian)
|
||||
* 1 - 0
|
||||
* 2 - ends in 1, not 11: 1, 21, ... 101, 121, ...
|
||||
* 3 - everything else: 2, 3, ... 10, 11, 12, ... 20, 22, ...
|
||||
*/
|
||||
return ($number == 0) ? 1 : ((($number % 10 == 1) && ($number % 100 != 11)) ? 2 : 3);
|
||||
|
||||
case 4:
|
||||
/**
|
||||
* Families: Celtic (Scottish Gaelic)
|
||||
* 1 - is 1 or 11: 1, 11
|
||||
* 2 - is 2 or 12: 2, 12
|
||||
* 3 - others between 3 and 19: 3, 4, ... 10, 13, ... 18, 19
|
||||
* 4 - everything else: 0, 20, 21, ...
|
||||
*/
|
||||
return ($number == 1 || $number == 11) ? 1 : (($number == 2 || $number == 12) ? 2 : (($number >= 3 && $number <= 19) ? 3 : 4));
|
||||
|
||||
case 5:
|
||||
/**
|
||||
* Families: Romanic (Romanian)
|
||||
* 1 - 1
|
||||
* 2 - is 0 or ends in 01-19: 0, 2, 3, ... 19, 101, 102, ... 119, 201, ...
|
||||
* 3 - everything else: 20, 21, ...
|
||||
*/
|
||||
return ($number == 1) ? 1 : ((($number == 0) || (($number % 100 > 0) && ($number % 100 < 20))) ? 2 : 3);
|
||||
|
||||
case 6:
|
||||
/**
|
||||
* Families: Baltic (Lithuanian)
|
||||
* 1 - ends in 1, not 11: 1, 21, 31, ... 101, 121, ...
|
||||
* 2 - ends in 0 or ends in 10-20: 0, 10, 11, 12, ... 19, 20, 30, 40, ...
|
||||
* 3 - everything else: 2, 3, ... 8, 9, 22, 23, ... 29, 32, 33, ...
|
||||
*/
|
||||
return (($number % 10 == 1) && ($number % 100 != 11)) ? 1 : ((($number % 10 < 2) || (($number % 100 >= 10) && ($number % 100 < 20))) ? 2 : 3);
|
||||
|
||||
case 7:
|
||||
/**
|
||||
* Families: Slavic (Croatian, Serbian, Russian, Ukrainian)
|
||||
* 1 - ends in 1, not 11: 1, 21, 31, ... 101, 121, ...
|
||||
* 2 - ends in 2-4, not 12-14: 2, 3, 4, 22, 23, 24, 32, ...
|
||||
* 3 - everything else: 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 25, 26, ...
|
||||
*/
|
||||
return (($number % 10 == 1) && ($number % 100 != 11)) ? 1 : ((($number % 10 >= 2) && ($number % 10 <= 4) && (($number % 100 < 10) || ($number % 100 >= 20))) ? 2 : 3);
|
||||
|
||||
case 8:
|
||||
/**
|
||||
* Families: Slavic (Slovak, Czech)
|
||||
* 1 - 1
|
||||
* 2 - 2, 3, 4
|
||||
* 3 - everything else: 0, 5, 6, 7, ...
|
||||
*/
|
||||
return ($number == 1) ? 1 : ((($number >= 2) && ($number <= 4)) ? 2 : 3);
|
||||
|
||||
case 9:
|
||||
/**
|
||||
* Families: Slavic (Polish)
|
||||
* 1 - 1
|
||||
* 2 - ends in 2-4, not 12-14: 2, 3, 4, 22, 23, 24, 32, ... 104, 122, ...
|
||||
* 3 - everything else: 0, 5, 6, ... 11, 12, 13, 14, 15, ... 20, 21, 25, ...
|
||||
*/
|
||||
return ($number == 1) ? 1 : ((($number % 10 >= 2) && ($number % 10 <= 4) && (($number % 100 < 12) || ($number % 100 > 14))) ? 2 : 3);
|
||||
|
||||
case 10:
|
||||
/**
|
||||
* Families: Slavic (Slovenian, Sorbian)
|
||||
* 1 - ends in 01: 1, 101, 201, ...
|
||||
* 2 - ends in 02: 2, 102, 202, ...
|
||||
* 3 - ends in 03-04: 3, 4, 103, 104, 203, 204, ...
|
||||
* 4 - everything else: 0, 5, 6, 7, 8, 9, 10, 11, ...
|
||||
*/
|
||||
return ($number % 100 == 1) ? 1 : (($number % 100 == 2) ? 2 : ((($number % 100 == 3) || ($number % 100 == 4)) ? 3 : 4));
|
||||
|
||||
case 11:
|
||||
/**
|
||||
* Families: Celtic (Irish Gaeilge)
|
||||
* 1 - 1
|
||||
* 2 - 2
|
||||
* 3 - is 3-6: 3, 4, 5, 6
|
||||
* 4 - is 7-10: 7, 8, 9, 10
|
||||
* 5 - everything else: 0, 11, 12, ...
|
||||
*/
|
||||
return ($number == 1) ? 1 : (($number == 2) ? 2 : (($number >= 3 && $number <= 6) ? 3 : (($number >= 7 && $number <= 10) ? 4 : 5)));
|
||||
|
||||
case 12:
|
||||
/**
|
||||
* Families: Semitic (Arabic)
|
||||
* 1 - 1
|
||||
* 2 - 2
|
||||
* 3 - ends in 03-10: 3, 4, ... 10, 103, 104, ... 110, 203, 204, ...
|
||||
* 4 - ends in 11-99: 11, ... 99, 111, 112, ...
|
||||
* 5 - everything else: 100, 101, 102, 200, 201, 202, ...
|
||||
* 6 - 0
|
||||
*/
|
||||
return ($number == 1) ? 1 : (($number == 2) ? 2 : ((($number % 100 >= 3) && ($number % 100 <= 10)) ? 3 : ((($number % 100 >= 11) && ($number % 100 <= 99)) ? 4 : (($number != 0) ? 5 : 6))));
|
||||
|
||||
case 13:
|
||||
/**
|
||||
* Families: Semitic (Maltese)
|
||||
* 1 - 1
|
||||
* 2 - is 0 or ends in 01-10: 0, 2, 3, ... 9, 10, 101, 102, ...
|
||||
* 3 - ends in 11-19: 11, 12, ... 18, 19, 111, 112, ...
|
||||
* 4 - everything else: 20, 21, ...
|
||||
*/
|
||||
return ($number == 1) ? 1 : ((($number == 0) || (($number % 100 > 1) && ($number % 100 < 11))) ? 2 : ((($number % 100 > 10) && ($number % 100 < 20)) ? 3 : 4));
|
||||
|
||||
case 14:
|
||||
/**
|
||||
* Families: Slavic (Macedonian)
|
||||
* 1 - ends in 1: 1, 11, 21, ...
|
||||
* 2 - ends in 2: 2, 12, 22, ...
|
||||
* 3 - everything else: 0, 3, 4, ... 10, 13, 14, ... 20, 23, ...
|
||||
*/
|
||||
return ($number % 10 == 1) ? 1 : (($number % 10 == 2) ? 2 : 3);
|
||||
|
||||
case 15:
|
||||
/**
|
||||
* Families: Icelandic
|
||||
* 1 - ends in 1, not 11: 1, 21, 31, ... 101, 121, 131, ...
|
||||
* 2 - everything else: 0, 2, 3, ... 10, 11, 12, ... 20, 22, ...
|
||||
*/
|
||||
return (($number % 10 == 1) && ($number % 100 != 11)) ? 1 : 2;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Login using http authenticate.
|
||||
*
|
||||
|
@@ -482,3 +482,22 @@ function phpbb_realpath($path)
|
||||
|
||||
return $phpbb_filesystem->realpath($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine which plural form we should use.
|
||||
* For some languages this is not as simple as for English.
|
||||
*
|
||||
* @param $rule int ID of the plural rule we want to use, see http://wiki.phpbb.com/Plural_Rules#Plural_Rules
|
||||
* @param $number int|float The number we want to get the plural case for. Float numbers are floored.
|
||||
* @return int The plural-case we need to use for the number plural-rule combination
|
||||
*
|
||||
* @deprecated 3.2.0-dev (To be removed: 3.3.0)
|
||||
*/
|
||||
function phpbb_get_plural_form($rule, $number)
|
||||
{
|
||||
global $phpbb_container;
|
||||
|
||||
/** @var \phpbb\language\language $language */
|
||||
$language = $phpbb_container->get('language');
|
||||
return $language->get_plural_form($number, $rule);
|
||||
}
|
||||
|
@@ -3384,7 +3384,7 @@ function get_group_name($group_id)
|
||||
$row = $db->sql_fetchrow($result);
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
if (!$row || ($row['group_type'] == GROUP_SPECIAL && empty($user->lang)))
|
||||
if (!$row || ($row['group_type'] == GROUP_SPECIAL && !$user->is_setup()))
|
||||
{
|
||||
return '';
|
||||
}
|
||||
|
Reference in New Issue
Block a user