mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-08 04:18:52 +00:00
Extend the improved error handling to language files as well as styles
Now with added paranoia! git-svn-id: file:///svn/phpbb/branches/phpBB-2_0_0@5917 89ea8834-ac86-4346-8a33-228a782c2dd0
This commit is contained in:
parent
f493eb7c1c
commit
4623973784
2 changed files with 61 additions and 10 deletions
|
@ -75,6 +75,7 @@ p,ul,td {font-size:10pt;}
|
|||
<li>[Fix] Redirect to list if cancelling deletion of ranks, smilies or word censors</li>
|
||||
<li>[Fix] Missing error message if an inactive user tried to login (Bug #1598)</li>
|
||||
<li>[Fix] Do not alter post counts when just removing a poll (Bug #1602)</li>
|
||||
<li>[Sec] Improved filtering on language selection (also addresses a number of bug reports related to missing languages)</li>
|
||||
<li>[Change] Backported more efficient highlighting code from Olympus</li>
|
||||
</ul>
|
||||
|
||||
|
|
|
@ -309,14 +309,14 @@ function make_jumpbox($action, $match_forum_id = 0)
|
|||
function init_userprefs($userdata)
|
||||
{
|
||||
global $board_config, $theme, $images;
|
||||
global $template, $lang, $phpEx, $phpbb_root_path;
|
||||
global $template, $lang, $phpEx, $phpbb_root_path, $db;
|
||||
global $nav_links;
|
||||
|
||||
if ( $userdata['user_id'] != ANONYMOUS )
|
||||
{
|
||||
if ( !empty($userdata['user_lang']))
|
||||
{
|
||||
$board_config['default_lang'] = $userdata['user_lang'];
|
||||
$default_lang = phpbb_ltrim(basename(phpbb_rtrim($userdata['user_lang'])), "'");
|
||||
}
|
||||
|
||||
if ( !empty($userdata['user_dateformat']) )
|
||||
|
@ -329,10 +329,60 @@ function init_userprefs($userdata)
|
|||
$board_config['board_timezone'] = $userdata['user_timezone'];
|
||||
}
|
||||
}
|
||||
|
||||
if ( !file_exists(@phpbb_realpath($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_main.'.$phpEx)) )
|
||||
else
|
||||
{
|
||||
$board_config['default_lang'] = 'english';
|
||||
$default_lang = phpbb_ltrim(basename(phpbb_rtrim($board_config['default_lang'])), "'");
|
||||
}
|
||||
|
||||
if ( !file_exists(@phpbb_realpath($phpbb_root_path . 'language/lang_' . $default_lang . '/lang_main.'.$phpEx)) )
|
||||
{
|
||||
if ( $userdata['user_id'] != ANONYMOUS )
|
||||
{
|
||||
// For logged in users, try the board default language next
|
||||
$default_lang = phpbb_ltrim(basename(phpbb_rtrim($board_config['default_lang'])), "'");
|
||||
}
|
||||
else
|
||||
{
|
||||
// For guests it means the default language is not present, try english
|
||||
// This is a long shot since it means serious errors in the setup to reach here,
|
||||
// but english is part of a new install so it's worth us trying
|
||||
$default_lang = 'english';
|
||||
}
|
||||
|
||||
if ( !file_exists(@phpbb_realpath($phpbb_root_path . 'language/lang_' . $default_lang . '/lang_main.'.$phpEx)) )
|
||||
{
|
||||
message_die(CRITICAL_ERROR, 'Could not locate valid language pack');
|
||||
}
|
||||
}
|
||||
|
||||
// If we've had to change the value in any way then let's write it back to the database
|
||||
// before we go any further since it means there is something wrong with it
|
||||
if ( $userdata['user_id'] != ANONYMOUS && $userdata['user_lang'] !== $default_lang )
|
||||
{
|
||||
$sql = 'UPDATE ' . USERS_TABLE . "
|
||||
SET user_lang = '" . $default_lang . "'
|
||||
WHERE user_lang = '" . $userdata['user_lang'] . "'";
|
||||
|
||||
if ( !($result = $db->sql_query($sql)) )
|
||||
{
|
||||
message_die(CRITICAL_ERROR, 'Could not update user language info');
|
||||
}
|
||||
|
||||
$board_config['default_lang'] = $default_lang;
|
||||
$userdata['user_lang'] = $default_lang;
|
||||
}
|
||||
elseif ( $board_config['default_lang'] !== $default_lang )
|
||||
{
|
||||
$sql = 'UPDATE ' . CONFIG_TABLE . "
|
||||
SET config_value = '" . $default_lang . "'
|
||||
WHERE config_name = 'default_lang'";
|
||||
|
||||
if ( !($result = $db->sql_query($sql)) )
|
||||
{
|
||||
message_die(CRITICAL_ERROR, 'Could not update user language info');
|
||||
}
|
||||
|
||||
$board_config['default_lang'] = $default_lang;
|
||||
}
|
||||
|
||||
include($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_main.' . $phpEx);
|
||||
|
@ -393,9 +443,9 @@ function setup_style($style)
|
|||
{
|
||||
global $db, $board_config, $template, $images, $phpbb_root_path;
|
||||
|
||||
$sql = "SELECT *
|
||||
FROM " . THEMES_TABLE . "
|
||||
WHERE themes_id = $style";
|
||||
$sql = 'SELECT *
|
||||
FROM ' . THEMES_TABLE . '
|
||||
WHERE themes_id = ' . (int) $style;
|
||||
if ( !($result = $db->sql_query($sql)) )
|
||||
{
|
||||
message_die(CRITICAL_ERROR, 'Could not query database for theme info');
|
||||
|
@ -410,7 +460,7 @@ function setup_style($style)
|
|||
{
|
||||
$sql = 'SELECT *
|
||||
FROM ' . THEMES_TABLE . '
|
||||
WHERE themes_id = ' . $board_config['default_style'];
|
||||
WHERE themes_id = ' . (int) $board_config['default_style'];
|
||||
if ( !($result = $db->sql_query($sql)) )
|
||||
{
|
||||
message_die(CRITICAL_ERROR, 'Could not query database for theme info');
|
||||
|
@ -421,7 +471,7 @@ function setup_style($style)
|
|||
$db->sql_freeresult($result);
|
||||
|
||||
$sql = 'UPDATE ' . USERS_TABLE . '
|
||||
SET user_style = ' . $board_config['default_style'] . "
|
||||
SET user_style = ' . (int) $board_config['default_style'] . "
|
||||
WHERE user_style = $style";
|
||||
if ( !($result = $db->sql_query($sql)) )
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue