1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-08-09 10:16:36 +02:00

- ok, get away with the secondary style approach (styles can be mixed together easily with the acp)

- introduce a more generic approach of defining some additional variables through cfg files as well as the name, copyright and version fields
- please note that at the moment this is in flux. I added it now for Tom because he needs the theme parameters.


git-svn-id: file:///svn/phpbb/trunk@5372 89ea8834-ac86-4346-8a33-228a782c2dd0
This commit is contained in:
Meik Sievertsen
2005-12-22 16:28:27 +00:00
parent 088ed2c414
commit 60d218245c
12 changed files with 256 additions and 115 deletions

View File

@@ -702,7 +702,7 @@ class user extends session
function setup($lang_set = false, $style = false)
{
global $db, $template, $config, $auth, $phpEx, $phpbb_root_path;
global $db, $template, $config, $auth, $phpEx, $phpbb_root_path, $cache;
if ($this->data['user_id'] != ANONYMOUS)
{
@@ -773,72 +773,62 @@ class user extends session
$style = ($style) ? $style : ((!$config['override_user_style'] && $this->data['user_id'] != ANONYMOUS) ? $this->data['user_style'] : $config['default_style']);
}
// TODO: DISTINCT making problems with DBMS not able to distinct TEXT fields, test grouping
switch (SQL_LAYER)
{
case 'mssql':
case 'mssql_odbc':
$sql = 'SELECT s.style_id, t.*, c.*, i.*
FROM ' . STYLES_TABLE . ' s, ' . STYLES_TPL_TABLE . ' t, ' . STYLES_CSS_TABLE . ' c, ' . STYLES_IMAGE_TABLE . " i
WHERE s.style_id IN ($style, " . $config['default_style'] . ')
AND t.template_id = s.template_id
AND c.theme_id = s.theme_id
AND i.imageset_id = s.imageset_id
GROUP BY s.style_id';
break;
default:
$sql = 'SELECT s.style_id, t.*, c.*, i.*
FROM ' . STYLES_TABLE . ' s, ' . STYLES_TPL_TABLE . ' t, ' . STYLES_CSS_TABLE . ' c, ' . STYLES_IMAGE_TABLE . " i
WHERE s.style_id IN ($style, " . $config['default_style'] . ')
AND t.template_id = s.template_id
AND c.theme_id = s.theme_id
AND i.imageset_id = s.imageset_id
GROUP BY s.style_id';
break;
}
$sql = 'SELECT s.style_id, t.*, c.*, i.*
FROM ' . STYLES_TABLE . ' s, ' . STYLES_TPL_TABLE . ' t, ' . STYLES_CSS_TABLE . ' c, ' . STYLES_IMAGE_TABLE . " i
WHERE s.style_id = $style
AND t.template_id = s.template_id
AND c.theme_id = s.theme_id
AND i.imageset_id = s.imageset_id";
$result = $db->sql_query($sql, 3600);
$this->theme = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
if (!($row = $db->sql_fetchrow($result)))
if (!$this->theme)
{
trigger_error('Could not get style data');
}
$this->theme = ($row2 = $db->sql_fetchrow($result)) ? array(
($style == $row['style_id']) ? 'primary' : 'secondary' => $row,
($style == $row2['style_id']) ? 'primary' : 'secondary' => $row2) : array('primary' => $row);
$db->sql_freeresult($result);
// Now parse the cfg file and cache it
$parsed_items = $cache->obtain_cfg_items($this->theme);
// We are only interested in the theme configuration for now
$parsed_items = $parsed_items['theme'];
unset($row);
unset($row2);
$check_for = array(
'parse_css_file' => (int) 0,
'pagination_sep' => (string) ', '
);
// Add to template database
foreach (array_keys($this->theme) as $style_priority)
foreach ($check_for as $key => $default_value)
{
$this->theme[$style_priority]['pagination_sep'] = ', ';
$this->theme[$key] = (isset($parsed_items[$key]) && $parsed_items[$key]) ? $parsed_items[$key] : $default_value;
settype($this->theme[$key], gettype($default_value));
if (is_string($default_value))
{
$this->theme[$key] = htmlspecialchars($this->theme[$key]);
}
}
// TEMP
$this->theme['primary']['parse_css_file'] = false;
if (!$this->theme['primary']['theme_storedb'] && $this->theme['primary']['parse_css_file'])
if (!$this->theme['theme_storedb'] && $this->theme['parse_css_file'])
{
$this->theme['primary']['theme_storedb'] = 1;
$this->theme['theme_storedb'] = 1;
$sql_ary = array(
'theme_data' => implode('', file("{$phpbb_root_path}styles/" . $this->theme['primary']['theme_path'] . '/theme/stylesheet.css')),
'theme_data' => implode('', file("{$phpbb_root_path}styles/" . $this->theme['theme_path'] . '/theme/stylesheet.css')),
'theme_mtime' => time(),
'theme_storedb' => 1
);
$db->sql_query('UPDATE ' . STYLES_CSS_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $sql_ary) . '
WHERE theme_id = ' . $this->theme['primary']['theme_id']);
WHERE theme_id = ' . $this->theme['theme_id']);
unset($sql_ary);
}
$template->set_template();
$this->img_lang = (file_exists($phpbb_root_path . 'styles/' . $this->theme['primary']['imageset_path'] . '/imageset/' . $this->lang_name)) ? $this->lang_name : $config['default_lang'];
$this->img_lang = (file_exists($phpbb_root_path . 'styles/' . $this->theme['imageset_path'] . '/imageset/' . $this->lang_name)) ? $this->lang_name : $config['default_lang'];
// Is board disabled and user not an admin or moderator?
// TODO
@@ -1015,7 +1005,7 @@ class user extends session
if (empty($imgs[$img . $suffix]) || $width !== false)
{
if (!isset($this->theme['primary'][$img]) || !$this->theme['primary'][$img])
if (!isset($this->theme[$img]) || !$this->theme[$img])
{
// Do not fill the image to let designers decide what to do if the image is empty
$imgs[$img . $suffix] = '';
@@ -1024,11 +1014,11 @@ class user extends session
if ($width === false)
{
list($imgsrc, $height, $width) = explode('*', $this->theme['primary'][$img]);
list($imgsrc, $height, $width) = explode('*', $this->theme[$img]);
}
else
{
list($imgsrc, $height) = explode('*', $this->theme['primary'][$img]);
list($imgsrc, $height) = explode('*', $this->theme[$img]);
}
if ($suffix !== '')
@@ -1036,7 +1026,7 @@ class user extends session
$imgsrc = str_replace('{SUFFIX}', $suffix, $imgsrc);
}
$imgs[$img . $suffix]['src'] = $phpbb_root_path . 'styles/' . $this->theme['primary']['imageset_path'] . '/imageset/' . str_replace('{LANG}', $this->img_lang, $imgsrc);
$imgs[$img . $suffix]['src'] = $phpbb_root_path . 'styles/' . $this->theme['imageset_path'] . '/imageset/' . str_replace('{LANG}', $this->img_lang, $imgsrc);
$imgs[$img . $suffix]['width'] = $width;
$imgs[$img . $suffix]['height'] = $height;
}