diff options
| author | Tristan Darricau <tristan.darricau@sensiolabs.com> | 2016-04-02 13:10:34 +0200 | 
|---|---|---|
| committer | Tristan Darricau <tristan.darricau@sensiolabs.com> | 2016-04-02 13:10:34 +0200 | 
| commit | bd91925fe7675dbcfc8eedd0cd41d3c7014138ed (patch) | |
| tree | ebb68b561e41306d4195bb839fb35d3f7a624c5c | |
| parent | 28ba2d4494f37382a2519571a0398b1c4b937f08 (diff) | |
| parent | ccdf8e7ee1753a962f673d7b261166b1317384c2 (diff) | |
| download | forums-bd91925fe7675dbcfc8eedd0cd41d3c7014138ed.tar forums-bd91925fe7675dbcfc8eedd0cd41d3c7014138ed.tar.gz forums-bd91925fe7675dbcfc8eedd0cd41d3c7014138ed.tar.bz2 forums-bd91925fe7675dbcfc8eedd0cd41d3c7014138ed.tar.xz forums-bd91925fe7675dbcfc8eedd0cd41d3c7014138ed.zip | |
Merge branch '3.1.x' into 3.2.x
* 3.1.x:
  [ticket/14562] Language fallback for extension permissions
| -rw-r--r-- | phpBB/includes/functions_admin.php | 33 | 
1 files changed, 31 insertions, 2 deletions
| diff --git a/phpBB/includes/functions_admin.php b/phpBB/includes/functions_admin.php index a0073ec158..9884e9b31a 100644 --- a/phpBB/includes/functions_admin.php +++ b/phpBB/includes/functions_admin.php @@ -2991,18 +2991,47 @@ function tidy_database()  */  function add_permission_language()  { -	global $user, $phpEx, $phpbb_extension_manager; +	global $config, $user, $phpEx, $phpbb_extension_manager;  	// add permission language files from extensions  	$finder = $phpbb_extension_manager->get_finder(); -	$lang_files = $finder +	// We grab the language files from the default, English and user's language. +	// So we can fall back to the other files like we do when using add_lang() +	$default_lang_files = $english_lang_files = $user_lang_files = array(); + +	// Search for board default language if it's not the user language +	if ($config['default_lang'] != $user->lang_name) +	{ +		$default_lang_files = $finder +			->prefix('permissions_') +			->suffix(".$phpEx") +			->core_path('language/' . basename($config['default_lang']) . '/') +			->extension_directory('/language/' . basename($config['default_lang'])) +			->find(); +	} + +	// Search for english, if its not the default or user language +	if ($config['default_lang'] != 'en' && $user->lang_name != 'en') +	{ +		$english_lang_files = $finder +			->prefix('permissions_') +			->suffix(".$phpEx") +			->core_path('language/en/') +			->extension_directory('/language/en') +			->find(); +	} + +	// Find files in the user's language +	$user_lang_files = $finder  		->prefix('permissions_')  		->suffix(".$phpEx")  		->core_path('language/' . $user->lang_name . '/')  		->extension_directory('/language/' . $user->lang_name)  		->find(); +	$lang_files = array_merge($english_lang_files, $default_lang_files, $user_lang_files); +  	foreach ($lang_files as $lang_file => $ext_name)  	{  		if ($ext_name === '/') | 
