mirror of
https://github.com/phpbb/phpbb.git
synced 2025-05-05 23:25:30 +02:00
#10283 - no style if banning anonymous/ip and using style requiring stylesheet parsing. Also fixes a bug for non-parsed THEME_DATA...
git-svn-id: file:///svn/phpbb/trunk@7439 89ea8834-ac86-4346-8a33-228a782c2dd0
This commit is contained in:
parent
35cf64c370
commit
00a63fa813
@ -3973,7 +3973,6 @@ function page_header($page_title = '', $display_online_list = true)
|
||||
'T_UPLOAD_PATH' => "{$phpbb_root_path}{$config['upload_path']}/",
|
||||
'T_STYLESHEET_LINK' => (!$user->theme['theme_storedb']) ? "{$phpbb_root_path}styles/" . $user->theme['theme_path'] . '/theme/stylesheet.css' : "{$phpbb_root_path}style.$phpEx?sid=$user->session_id&id=" . $user->theme['style_id'] . '&lang=' . $user->data['user_lang'],
|
||||
'T_STYLESHEET_NAME' => $user->theme['theme_name'],
|
||||
'T_THEME_DATA' => (!$user->theme['theme_storedb']) ? '' : $user->theme['theme_data'],
|
||||
|
||||
'SITE_LOGO_IMG' => $user->img('site_logo'))
|
||||
);
|
||||
@ -3981,6 +3980,73 @@ function page_header($page_title = '', $display_online_list = true)
|
||||
// Once used, we do not want to have the whole theme data twice in memory...
|
||||
if ($user->theme['theme_storedb'])
|
||||
{
|
||||
// Parse Theme Data
|
||||
$replace = array(
|
||||
'{T_THEME_PATH}' => "{$phpbb_root_path}styles/" . $user->theme['theme_path'] . '/theme',
|
||||
'{T_TEMPLATE_PATH}' => "{$phpbb_root_path}styles/" . $user->theme['template_path'] . '/template',
|
||||
'{T_IMAGESET_PATH}' => "{$phpbb_root_path}styles/" . $user->theme['imageset_path'] . '/imageset',
|
||||
'{T_IMAGESET_LANG_PATH}' => "{$phpbb_root_path}styles/" . $user->theme['imageset_path'] . '/imageset/' . $user->data['user_lang'],
|
||||
'{T_STYLESHEET_NAME}' => $user->theme['theme_name'],
|
||||
'{S_USER_LANG}' => $user->data['user_lang']
|
||||
);
|
||||
|
||||
$user->theme['theme_data'] = str_replace(array_keys($replace), array_values($replace), $user->theme['theme_data']);
|
||||
|
||||
$matches = array();
|
||||
if (strpos($user->theme['theme_data'], '{IMG_') !== false)
|
||||
{
|
||||
preg_match_all('#\{IMG_([A-Za-z0-9_]*?)_(WIDTH|HEIGHT|SRC)\}#', $user->theme['theme_data'], $matches);
|
||||
|
||||
$imgs = $find = $replace = array();
|
||||
if (isset($matches[0]) && sizeof($matches[0]))
|
||||
{
|
||||
foreach ($matches[1] as $i => $img)
|
||||
{
|
||||
$img = strtolower($img);
|
||||
if (!isset($img_array[$img]))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!isset($imgs[$img]))
|
||||
{
|
||||
$img_data = &$img_array[$img];
|
||||
$imgsrc = ($img_data['image_lang'] ? $img_data['image_lang'] . '/' : '') . $img_data['image_filename'];
|
||||
$imgs[$img] = array(
|
||||
'src' => $phpbb_root_path . 'styles/' . $user->theme['imageset_path'] . '/imageset/' . $imgsrc,
|
||||
'width' => $img_data['image_width'],
|
||||
'height' => $img_data['image_height'],
|
||||
);
|
||||
}
|
||||
|
||||
switch ($matches[2][$i])
|
||||
{
|
||||
case 'SRC':
|
||||
$replace[] = $imgs[$img]['src'];
|
||||
break;
|
||||
|
||||
case 'WIDTH':
|
||||
$replace[] = $imgs[$img]['width'];
|
||||
break;
|
||||
|
||||
case 'HEIGHT':
|
||||
$replace[] = $imgs[$img]['height'];
|
||||
break;
|
||||
|
||||
default:
|
||||
continue;
|
||||
}
|
||||
$find[] = $matches[0][$i];
|
||||
}
|
||||
|
||||
if (sizeof($find))
|
||||
{
|
||||
$user->theme['theme_data'] = str_replace($find, $replace, $user->theme['theme_data']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$template->assign_var('T_THEME_DATA', $user->theme['theme_data']);
|
||||
$user->theme['theme_data'] = '';
|
||||
}
|
||||
|
||||
|
@ -914,6 +914,8 @@ class session
|
||||
|
||||
if ($banned && !$return)
|
||||
{
|
||||
global $template;
|
||||
|
||||
// If the session is empty we need to create a valid one...
|
||||
if (empty($this->session_id))
|
||||
{
|
||||
@ -934,12 +936,12 @@ class session
|
||||
{
|
||||
global $phpEx;
|
||||
|
||||
// Set as a precaution to allow login_box() handling this case correctly as well as this function not being executed again.
|
||||
define('IN_CHECK_BAN', 1);
|
||||
|
||||
$this->setup('ucp');
|
||||
$this->data['is_registered'] = $this->data['is_bot'] = false;
|
||||
|
||||
// Set as a precaution to allow login_box() handling this case correctly as well as this function not being executed again.
|
||||
define('IN_CHECK_BAN', 1);
|
||||
|
||||
login_box("index.$phpEx");
|
||||
|
||||
// The false here is needed, else the user is able to circumvent the ban.
|
||||
@ -948,11 +950,14 @@ class session
|
||||
|
||||
// Ok, we catch the case of an empty session id for the anonymous user...
|
||||
// This can happen if the user is logging in, banned by username and the login_box() being called "again".
|
||||
if (empty($this->session_id))
|
||||
if (empty($this->session_id) && defined('IN_CHECK_BAN'))
|
||||
{
|
||||
$this->session_create(ANONYMOUS);
|
||||
}
|
||||
|
||||
// Because we never have a fully working session we need to embed the style
|
||||
$template->assign_var('S_FORCE_EMBED_STYLE', true);
|
||||
|
||||
// Determine which message to output
|
||||
$till_date = ($ban_row['ban_end']) ? $this->format_date($ban_row['ban_end']) : '';
|
||||
$message = ($ban_row['ban_end']) ? 'BOARD_BAN_TIME' : 'BOARD_BAN_PERM';
|
||||
|
@ -77,7 +77,7 @@
|
||||
<script type="text/javascript" src="{T_TEMPLATE_PATH}/styleswitcher.js"></script>
|
||||
<script type="text/javascript" src="{T_TEMPLATE_PATH}/forum_fn.js"></script>
|
||||
|
||||
<!-- IF T_STYLESHEET_LINK -->
|
||||
<!-- IF T_STYLESHEET_LINK and not S_FORCE_EMBED_STYLE -->
|
||||
<link href="{T_THEME_PATH}/print.css" rel="stylesheet" type="text/css" media="print" title="printonly" />
|
||||
<link href="{T_STYLESHEET_LINK}" rel="stylesheet" type="text/css" media="screen, projection" />
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user