aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes
diff options
context:
space:
mode:
authorDavid M <davidmj@users.sourceforge.net>2007-04-08 17:40:36 +0000
committerDavid M <davidmj@users.sourceforge.net>2007-04-08 17:40:36 +0000
commit887863e5c5ba80cd1bcbcd6097719afe2178c672 (patch)
treee8b433b0b9aaf9266315448c96aa6ac6a0be2f6c /phpBB/includes
parent0be22140b2338b4b77f257fd3c2928d5038287fd (diff)
downloadforums-887863e5c5ba80cd1bcbcd6097719afe2178c672.tar
forums-887863e5c5ba80cd1bcbcd6097719afe2178c672.tar.gz
forums-887863e5c5ba80cd1bcbcd6097719afe2178c672.tar.bz2
forums-887863e5c5ba80cd1bcbcd6097719afe2178c672.tar.xz
forums-887863e5c5ba80cd1bcbcd6097719afe2178c672.zip
- overhaul of imagesets
imagesets are now "intelligently" multilingual, one may use imagesets inside of CSS files now (as well as properties like the width and height of an imageset's image) all previous styles should change their imageset.cfg to be like prosilver and subsilver2 (notice how there is now an imageset.cfg in the /en folder, there should be one for each language) git-svn-id: file:///svn/phpbb/trunk@7304 89ea8834-ac86-4346-8a33-228a782c2dd0
Diffstat (limited to 'phpBB/includes')
-rw-r--r--phpBB/includes/acp/acp_styles.php449
-rw-r--r--phpBB/includes/constants.php1
-rw-r--r--phpBB/includes/session.php45
3 files changed, 354 insertions, 141 deletions
diff --git a/phpBB/includes/acp/acp_styles.php b/phpBB/includes/acp/acp_styles.php
index f29010d1e6..c8a7d4885a 100644
--- a/phpBB/includes/acp/acp_styles.php
+++ b/phpBB/includes/acp/acp_styles.php
@@ -90,7 +90,7 @@ parse_css_file = {PARSE_CSS_FILE}
'site_logo',
),
'buttons' => array(
- 'icon_contact_aim', 'icon_contact_email', 'icon_contact_icq', 'icon_contact_jabber', 'icon_contact_msnm', 'icon_contact_pm', 'icon_contact_yahoo', 'icon_contact_www', 'icon_post_delete', 'icon_post_edit', 'icon_post_info', 'icon_post_quote', 'icon_post_report', 'icon_user_online', 'icon_user_offline', 'icon_user_profile', 'icon_user_search', 'icon_user_warn', 'button_pm_forward', 'button_pm_new', 'button_pm_reply', 'button_topic_locked', 'button_topic_new', 'button_topic_reply',
+ 'icon_back_top', 'icon_contact_aim', 'icon_contact_email', 'icon_contact_icq', 'icon_contact_jabber', 'icon_contact_msnm', 'icon_contact_pm', 'icon_contact_yahoo', 'icon_contact_www', 'icon_post_delete', 'icon_post_edit', 'icon_post_info', 'icon_post_quote', 'icon_post_report', 'icon_user_online', 'icon_user_offline', 'icon_user_profile', 'icon_user_search', 'icon_user_warn', 'button_pm_forward', 'button_pm_new', 'button_pm_reply', 'button_topic_locked', 'button_topic_new', 'button_topic_reply',
),
'icons' => array(
'icon_post_target', 'icon_post_target_unread', 'icon_topic_attach', 'icon_topic_latest', 'icon_topic_newest', 'icon_topic_reported', 'icon_topic_unapproved', 'icon_friend', 'icon_foe',
@@ -372,35 +372,111 @@ parse_css_file = {PARSE_CSS_FILE}
{
$sql_ary = array();
- $cfg_data = parse_cfg_file("{$phpbb_root_path}styles/{$imageset_row['imageset_path']}/imageset/imageset.cfg");
-
$imageset_definitions = array();
foreach ($this->imageset_keys as $topic => $key_array)
{
$imageset_definitions = array_merge($imageset_definitions, $key_array);
}
-
- foreach ($cfg_data as $key => $value)
+
+ $cfg_data_imageset = parse_cfg_file("{$phpbb_root_path}styles/{$imageset_row['imageset_path']}/imageset/imageset.cfg");
+
+ $db->sql_transaction('begin');
+
+ $sql = 'DELETE FROM ' . STYLES_IMAGESET_DATA_TABLE . '
+ WHERE imageset_id = ' . $style_id;
+ $result = $db->sql_query($sql);
+
+ foreach ($cfg_data_imageset as $image_name => $value)
{
- if (strpos($key, 'img_') === 0)
+ if (strpos($value, '*') !== false)
+ {
+ if (substr($value, -1, 1) === '*')
+ {
+ list($image_filename, $image_height) = explode('*', $value);
+ $image_width = 0;
+ }
+ else
+ {
+ list($image_filename, $image_height, $image_width) = explode('*', $value);
+ }
+ }
+ else
+ {
+ $image_filename = $value;
+ $image_height = $image_width = 0;
+ }
+
+ if (strpos($image_name, 'img_') === 0 && $image_filename)
{
- $key = substr($key, 4);
- if (in_array($key, $imageset_definitions))
+ $image_name = substr($image_name, 4);
+ if (in_array($image_name, $imageset_definitions))
{
- $sql_ary[$key] = str_replace('{PATH}', "styles/{$imageset_row['imageset_path']}/imageset/", trim($value));
+ $sql_ary = array(
+ 'image_name' => $image_name,
+ 'image_filename' => $image_filename,
+ 'image_height' => (int) $image_height,
+ 'image_width' => (int) $image_width,
+ 'imageset_id' => $style_id,
+ 'image_lang' => '',
+ );
+ $db->sql_query('INSERT INTO ' . STYLES_IMAGESET_DATA_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary));
}
}
}
- unset($cfg_data);
- if (sizeof($sql_ary))
+ $sql = 'SELECT lang_dir
+ FROM ' . LANG_TABLE;
+ $result = $db->sql_query($sql);
+
+ while ($row = $db->sql_fetchrow($result))
{
- $sql = 'UPDATE ' . STYLES_IMAGESET_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $sql_ary) . "
- WHERE imageset_id = $style_id";
- $db->sql_query($sql);
+ if (@file_exists("{$phpbb_root_path}styles/{$imageset_row['imageset_path']}/imageset/{$row['lang_dir']}/imageset.cfg"))
+ {
+ $cfg_data_imageset_data = parse_cfg_file("{$phpbb_root_path}styles/{$imageset_row['imageset_path']}/imageset/{$row['lang_dir']}/imageset.cfg");
+ foreach ($cfg_data_imageset_data as $image_name => $value)
+ {
+ if (strpos($value, '*') !== false)
+ {
+ if (substr($value, -1, 1) === '*')
+ {
+ list($image_filename, $image_height) = explode('*', $value);
+ $image_width = 0;
+ }
+ else
+ {
+ list($image_filename, $image_height, $image_width) = explode('*', $value);
+ }
+ }
+ else
+ {
+ $image_filename = $value;
+ $image_height = $image_width = 0;
+ }
+
+ if (strpos($image_name, 'img_') === 0 && $image_filename)
+ {
+ $image_name = substr($image_name, 4);
+ if (in_array($image_name, $imageset_definitions))
+ {
+ $sql_ary = array(
+ 'image_name' => $image_name,
+ 'image_filename' => $image_filename,
+ 'image_height' => $image_height,
+ 'image_width' => $image_width,
+ 'imageset_id' => $style_id,
+ 'image_lang' => $row['lang_dir'],
+ );
+ $db->sql_query('INSERT INTO ' . STYLES_IMAGESET_DATA_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary));
+ }
+ }
+ }
+ }
}
+ $db->sql_freeresult($result);
+
+ $db->sql_transaction('commit');
- $cache->destroy('sql', STYLES_IMAGESET_TABLE);
+ $cache->destroy('sql', STYLES_IMAGESET_DATA_TABLE);
add_log('admin', 'LOG_IMAGESET_REFRESHED', $imageset_row['imageset_name']);
trigger_error($user->lang['IMAGESET_REFRESHED'] . adm_back_link($this->u_action));
@@ -1356,20 +1432,40 @@ parse_css_file = {PARSE_CSS_FILE}
if ($imageset_id)
{
- $sql_select = ($imgname) ? ", $imgname" : '';
-
- $sql = "SELECT imageset_path, imageset_name, imageset_copyright$sql_select
- FROM " . STYLES_IMAGESET_TABLE . "
+ $sql = 'SELECT imageset_path, imageset_name
+ FROM ' . STYLES_IMAGESET_TABLE . "
WHERE imageset_id = $imageset_id";
$result = $db->sql_query($sql);
$imageset_row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
+ $imageset_path = $imageset_row['imageset_path'];
+ $imageset_name = $imageset_row['imageset_name'];
+
+ $sql_extra = '';
+ if (strpos($imgname, '-') !== false)
+ {
+ list($imgname, $imgnamelang) = explode('-', $imgname);
+ $sql_extra = " AND image_lang IN('" . $db->sql_escape($imgnamelang) . "', '')";
+ }
+
+ $sql = 'SELECT image_filename, image_width, image_height, image_lang, image_id
+ FROM ' . STYLES_IMAGESET_DATA_TABLE . "
+ WHERE imageset_id = $imageset_id
+ AND image_name = '" . $db->sql_escape($imgname) . "'$sql_extra";
+ $result = $db->sql_query($sql);
+ $imageset_data_row = $db->sql_fetchrow($result);
+ $image_filename = $imageset_data_row['image_filename'];
+ $image_width = $imageset_data_row['image_width'];
+ $image_height = $imageset_data_row['image_height'];
+ $image_lang = $imageset_data_row['image_lang'];
+ $image_id = $imageset_data_row['image_id'];
+ $db->sql_freeresult($result);
+
if (!$imageset_row)
{
trigger_error($user->lang['NO_IMAGESET'] . adm_back_link($this->u_action), E_USER_WARNING);
}
- extract($imageset_row);
// Check to see whether the selected image exists in the table
$valid_name = ($update) ? false : true;
@@ -1390,7 +1486,8 @@ parse_css_file = {PARSE_CSS_FILE}
// If imgwidth and imgheight are non-zero grab the actual size
// from the image itself ... we ignore width settings for the poll center
// image
- $imgwidth = $imgheight = '';
+ $imgwidth = $imgheight = 0;
+ $imglang = '';
if ($imageset_path && !file_exists("{$phpbb_root_path}styles/$imageset_path/imageset/$imgpath"))
{
@@ -1400,50 +1497,54 @@ parse_css_file = {PARSE_CSS_FILE}
if ($imgsize && $imageset_path)
{
list($imgwidth, $imgheight) = getimagesize("{$phpbb_root_path}styles/$imageset_path/imageset/$imgpath");
- $imgheight = '*' . $imgheight;
- $imgwidth = ($imgname != 'poll_center') ? '*' . $imgwidth : '';
+ $imgwidth = ($imgname != 'poll_center') ? (int) $imgwidth : 0;
+ $imgheight = (int) $imgheight;
}
- $imgpath = preg_replace('/^([^\/]+\/)/', '{LANG}/', $imgpath) . $imgheight . $imgwidth;
+ if (strpos($imgpath, '/') !== false)
+ {
+ list($imglang, $imgfilename) = explode('/', $imgpath);
+ }
+ else
+ {
+ $imgfilename = $imgpath;
+ }
- $sql = 'UPDATE ' . STYLES_IMAGESET_TABLE . "
- SET $imgname = '" . $db->sql_escape($imgpath) . "'
- WHERE imageset_id = $imageset_id";
- $db->sql_query($sql);
+ $sql_ary = array(
+ 'image_filename' => $imgfilename,
+ 'image_width' => $imgwidth,
+ 'image_height' => $imgheight,
+ 'image_lang' => $imglang,
+ );
- $cache->destroy('sql', STYLES_IMAGESET_TABLE);
+ // already exists
+ if ($imageset_data_row)
+ {
+ $sql = 'UPDATE ' . STYLES_IMAGESET_DATA_TABLE . '
+ SET ' . $db->sql_build_array('UPDATE', $sql_ary) . "
+ WHERE image_id = $image_id";
+ $db->sql_query($sql);
+ }
+ // does not exist
+ else if (!$imageset_data_row)
+ {
+ $sql_ary['image_name'] = $image_name;
+ $sql_ary['imageset_id'] = $imageset_id;
+ $db->sql_query('INSERT INTO ' . STYLES_IMAGESET_DATA_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary));
+ }
+
+ $cache->destroy('sql', STYLES_IMAGESET_DATA_TABLE);
add_log('admin', 'LOG_IMAGESET_EDIT', $imageset_name);
$template->assign_var('SUCCESS', true);
- $$imgname = $imgpath;
}
}
}
- // Generate list of image options
- $img_options = '';
- foreach ($this->imageset_keys as $category => $img_ary)
- {
- $template->assign_block_vars('category', array(
- 'NAME' => $user->lang['IMG_CAT_' . strtoupper($category)]
- ));
-
- foreach ($img_ary as $img)
- {
- $template->assign_block_vars('category.images', array(
- 'SELECTED' => ($img == $imgname),
- 'VALUE' => $img,
- 'TEXT' => (($category == 'custom') ? $img : $user->lang['IMG_' . strtoupper($img)])
- ));
- }
- }
-
- // TODO
- // Check whether localised buttons exist in admins language first
- // Clean up this code
$imglang = '';
$imagesetlist = array('nolang' => array(), 'lang' => array());
+ $langs = array();
$dir = "{$phpbb_root_path}styles/$imageset_path/imageset";
$dp = @opendir($dir);
@@ -1454,66 +1555,85 @@ parse_css_file = {PARSE_CSS_FILE}
{
if (!is_file($dir . '/' . $file) && !is_link($dir . '/' . $file) && $file[0] != '.' && strtoupper($file) != 'CVS')
{
- $dp2 = @opendir("$dir/$file");
-
- if (!$dp2)
- {
- continue;
- }
-
- while (($file2 = readdir($dp2)) !== false)
- {
- if (preg_match('#\.(?:gif|jpg|png)$#', $file2))
- {
- $imagesetlist['all_lang'][$file][] = "$file/$file2";
- }
- }
- closedir($dp2);
+ $langs[] = $file;
}
else if (preg_match('#\.(?:gif|jpg|png)$#', $file))
{
$imagesetlist['nolang'][] = $file;
}
}
+
+ if ($sql_extra)
+ {
+ $dp2 = @opendir("$dir/$imgnamelang");
+
+ if (!$dp2)
+ {
+ continue;
+ }
+
+ while (($file2 = readdir($dp2)) !== false)
+ {
+ if (preg_match('#\.(?:gif|jpg|png)$#', $file2))
+ {
+ $imagesetlist['lang'][] = "$imgnamelang/$file2";
+ }
+ }
+ closedir($dp2);
+ }
closedir($dp);
}
- // Make sure the list of possible images is sorted alphabetically
- sort($imagesetlist['nolang']);
- foreach ($imagesetlist['all_lang'] as $lang => $data)
+ // Generate list of image options
+ $img_options = '';
+ foreach ($this->imageset_keys as $category => $img_ary)
{
- sort($imagesetlist['all_lang'][$lang]);
- }
+ $template->assign_block_vars('category', array(
+ 'NAME' => $user->lang['IMG_CAT_' . strtoupper($category)]
+ ));
- if (isset($imagesetlist['all_lang'][$user->img_lang]) && sizeof($imagesetlist['all_lang'][$user->img_lang]))
- {
- $imglang = $lang;
- $imagesetlist['lang'] = $imagesetlist['all_lang'][$user->img_lang];
- }
- else
- {
- foreach ($imagesetlist['all_lang'] as $lang => $data)
+ foreach ($img_ary as $img)
{
- if (sizeof($imagesetlist['all_lang'][$user->img_lang]))
+ if ($category == 'buttons')
{
- $imglang = $lang;
- $imagesetlist['lang'] = $imagesetlist['all_lang'][$lang];
- break;
+ foreach ($langs as $language)
+ {
+ $template->assign_block_vars('category.images', array(
+ 'SELECTED' => ($img == $imgname),
+ 'VALUE' => $img . '-' . $language,
+ 'TEXT' => $user->lang['IMG_' . strtoupper($img)] . ' [ ' . $language . ' ]'
+ ));
+ }
+ }
+ else
+ {
+ $template->assign_block_vars('category.images', array(
+ 'SELECTED' => ($img == $imgname),
+ 'VALUE' => $img,
+ 'TEXT' => (($category == 'custom') ? $img : $user->lang['IMG_' . strtoupper($img)])
+ ));
}
}
}
- unset($imagesetlist['all_lang']);
+
+ // Make sure the list of possible images is sorted alphabetically
+ sort($imagesetlist['lang']);
+ sort($imagesetlist['nolang']);
$imagesetlist_options = '';
foreach ($imagesetlist as $type => $img_ary)
{
- $template->assign_block_vars('imagesetlist', array(
- 'TYPE' => ($type == 'lang')
- ));
+ if ($type !== 'lang' || $sql_extra)
+ {
+ $template->assign_block_vars('imagesetlist', array(
+ 'TYPE' => ($type == 'lang')
+ ));
+ }
+
foreach ($img_ary as $img)
{
$imgtext = preg_replace('/^([^\/]+\/)/', '', $img);
- $selected = (!empty($imgname) && strpos($$imgname, $imgtext) !== false);
+ $selected = (!empty($imgname) && strpos($image_filename, $imgtext) !== false);
if ($selected)
{
$template->assign_var('IMAGE_SELECT', true);
@@ -1526,9 +1646,9 @@ parse_css_file = {PARSE_CSS_FILE}
}
}
- $imgsize_bool = (!empty($imgname) && ($imgsize || preg_match('#\*\d+#', $$imgname))) ? true : false;
+ $imgsize_bool = (!empty($imgname) && $image_width && $image_height) ? true : false;
- $img_info = (!empty($imgname)) ? explode('*', $$imgname) : array();
+ $image_request = '../styles/' . $imageset_path . '/imageset/' . ($image_lang ? $imgnamelang . '/' : '') . $image_filename;
$template->assign_vars(array(
'S_EDIT_IMAGESET' => true,
@@ -1537,7 +1657,7 @@ parse_css_file = {PARSE_CSS_FILE}
'IMAGE_OPTIONS' => $img_options,
'IMAGELIST_OPTIONS' => $imagesetlist_options,
'IMAGE_SIZE' => $imgsize_bool,
- 'IMAGE_REQUEST' => (!empty($img_info[0])) ? '../styles/' . $imageset_path . '/imageset/' . str_replace('{LANG}', $imglang, $img_info[0]) : '',
+ 'IMAGE_REQUEST' => $image_request,
'U_ACTION' => $this->u_action . "&amp;action=edit&amp;id=$imageset_id",
'U_BACK' => $this->u_action,
'NAME' => $imageset_name,
@@ -1637,6 +1757,12 @@ parse_css_file = {PARSE_CSS_FILE}
set_config('default_style', $new_id);
}
}
+ else if ($mode == 'imageset')
+ {
+ $sql = 'DELETE FROM ' . STYLES_IMAGESET_DATA_TABLE . "
+ WHERE imageset_id = $style_id";
+ $db->sql_query($sql);
+ }
else
{
$sql = 'UPDATE ' . STYLES_TABLE . "
@@ -1883,11 +2009,27 @@ parse_css_file = {PARSE_CSS_FILE}
{
$imageset_cfg = str_replace(array('{MODE}', '{NAME}', '{COPYRIGHT}', '{VERSION}'), array($mode, $style_row['imageset_name'], $style_row['imageset_copyright'], $config['version']), $this->imageset_cfg);
+ $imageset_main = array();
+
+ $sql = 'SELECT image_filename, image_name, image_height, image_width
+ FROM ' . STYLES_IMAGESET_DATA_TABLE . "
+ WHERE imageset_id = $style_id
+ AND image_lang = ''";
+ $result = $db->sql_query($sql);
+ while ($row = $db->sql_fetchrow($result))
+ {
+ $imageset_main[$row['image_name']] = $row['image_filename'] . ($row['image_height'] ? '*' . $row['image_height']: '') . ($row['image_width'] ? '*' . $row['image_width']: '');
+ }
+ $db->sql_freeresult($result);
+
foreach ($this->imageset_keys as $topic => $key_array)
{
foreach ($key_array as $key)
{
- $imageset_cfg .= "\nimg_" . $key . ' = ' . str_replace("styles/{$style_row['imageset_path']}/imageset/", '{PATH}', $style_row[$key]);
+ if (isset($imageset_main[$key]))
+ {
+ $imageset_cfg .= "\nimg_" . $key . ' = ' . str_replace("styles/{$style_row['imageset_path']}/imageset/", '{PATH}', $imageset_main[$key]);
+ }
}
}
@@ -3021,7 +3163,7 @@ parse_css_file = {PARSE_CSS_FILE}
if ($row)
{
- // If it exist, we just use the stlye on installation
+ // If it exist, we just use the style on installation
if ($action == 'install')
{
$id = $row[$mode . '_id'];
@@ -3079,27 +3221,8 @@ parse_css_file = {PARSE_CSS_FILE}
);
break;
+ // all the heavy lifting is done later
case 'imageset':
- $cfg_data = parse_cfg_file("$root_path$mode/imageset.cfg");
-
- $imageset_definitions = array();
- foreach ($this->imageset_keys as $topic => $key_array)
- {
- $imageset_definitions = array_merge($imageset_definitions, $key_array);
- }
-
- foreach ($cfg_data as $key => $value)
- {
- if (strpos($key, 'img_') === 0)
- {
- $key = substr($key, 4);
- if (in_array($key, $imageset_definitions))
- {
- $sql_ary[$key] = str_replace('{PATH}', "styles/$path/imageset/", trim($value));
- }
- }
- }
- unset($cfg_data);
break;
}
@@ -3116,6 +3239,106 @@ parse_css_file = {PARSE_CSS_FILE}
$filelist = filelist("{$root_path}template", '', 'html');
$this->store_templates('insert', $id, $path, $filelist);
}
+ else if ($mode == 'imageset')
+ {
+ $cfg_data = parse_cfg_file("$root_path$mode/imageset.cfg");
+
+ $imageset_definitions = array();
+ foreach ($this->imageset_keys as $topic => $key_array)
+ {
+ $imageset_definitions = array_merge($imageset_definitions, $key_array);
+ }
+
+ foreach ($cfg_data as $key => $value)
+ {
+ if (strpos($value, '*') !== false)
+ {
+ if (substr($value, -1, 1) === '*')
+ {
+ list($image_filename, $image_height) = explode('*', $value);
+ $image_width = 0;
+ }
+ else
+ {
+ list($image_filename, $image_height, $image_width) = explode('*', $value);
+ }
+ }
+ else
+ {
+ $image_filename = $value;
+ $image_height = $image_width = 0;
+ }
+
+ if (strpos($key, 'img_') === 0&& $image_filename)
+ {
+ $key = substr($key, 4);
+ if (in_array($key, $imageset_definitions))
+ {
+ $sql_ary = array(
+ 'image_name' => $key,
+ 'image_filename' => str_replace('{PATH}', "styles/$path/imageset/", trim($image_filename)),
+ 'image_height' => $image_height,
+ 'image_width' => $image_width,
+ 'imageset_id' => $id,
+ 'image_lang' => '',
+ );
+ $db->sql_query('INSERT INTO ' . STYLES_IMAGESET_DATA_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary));
+ }
+ }
+ }
+ unset($cfg_data);
+
+ $sql = 'SELECT lang_dir
+ FROM ' . LANG_TABLE;
+ $result = $db->sql_query($sql);
+
+ while ($row = $db->sql_fetchrow($result))
+ {
+ if (@file_exists("$root_path$mode/{$row['lang_dir']}/imageset.cfg"))
+ {
+ $cfg_data_imageset_data = parse_cfg_file("$root_path$mode/{$row['lang_dir']}/imageset.cfg");
+ foreach ($cfg_data_imageset_data as $image_name => $value)
+ {
+ if (strpos($value, '*') !== false)
+ {
+ if (substr($value, -1, 1) === '*')
+ {
+ list($image_filename, $image_height) = explode('*', $value);
+ $image_width = 0;
+ }
+ else
+ {
+ list($image_filename, $image_height, $image_width) = explode('*', $value);
+ }
+ }
+ else
+ {
+ $image_filename = $value;
+ $image_height = $image_width = 0;
+ }
+
+ if (strpos($image_name, 'img_') === 0 && $image_filename)
+ {
+ $image_name = substr($image_name, 4);
+ if (in_array($image_name, $imageset_definitions))
+ {
+ $sql_ary = array(
+ 'image_name' => $image_name,
+ 'image_filename' => $image_filename,
+ 'image_height' => $image_height,
+ 'image_width' => $image_width,
+ 'imageset_id' => $id,
+ 'image_lang' => $row['lang_dir'],
+ );
+ $db->sql_query('INSERT INTO ' . STYLES_IMAGESET_DATA_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary));
+ }
+ }
+ }
+ unset($cfg_data_imageset_data);
+ }
+ }
+ $db->sql_freeresult($result);
+ }
$db->sql_transaction('commit');
diff --git a/phpBB/includes/constants.php b/phpBB/includes/constants.php
index cb6b816224..37b448df9f 100644
--- a/phpBB/includes/constants.php
+++ b/phpBB/includes/constants.php
@@ -206,6 +206,7 @@ define('STYLES_TEMPLATE_TABLE', $table_prefix . 'styles_template');
define('STYLES_TEMPLATE_DATA_TABLE',$table_prefix . 'styles_template_data');
define('STYLES_THEME_TABLE', $table_prefix . 'styles_theme');
define('STYLES_IMAGESET_TABLE', $table_prefix . 'styles_imageset');
+define('STYLES_IMAGESET_DATA_TABLE',$table_prefix . 'styles_imageset_data');
define('TOPICS_TABLE', $table_prefix . 'topics');
define('TOPICS_POSTED_TABLE', $table_prefix . 'topics_posted');
define('TOPICS_TRACK_TABLE', $table_prefix . 'topics_track');
diff --git a/phpBB/includes/session.php b/phpBB/includes/session.php
index 2b845bc4d7..fc380436d3 100644
--- a/phpBB/includes/session.php
+++ b/phpBB/includes/session.php
@@ -1166,6 +1166,7 @@ class user extends session
var $lang_name;
var $lang_path;
var $img_lang;
+ var $img_array = array();
// Able to add new option (id 7)
var $keyoptions = array('viewimg' => 0, 'viewflash' => 1, 'viewsmilies' => 2, 'viewsigs' => 3, 'viewavatars' => 4, 'viewcensors' => 5, 'attachsig' => 6, 'bbcode' => 8, 'smilies' => 9, 'popuppm' => 10);
@@ -1366,6 +1367,17 @@ class user extends session
$this->img_lang = (file_exists($phpbb_root_path . 'styles/' . $this->theme['imageset_path'] . '/imageset/' . $this->lang_name)) ? $this->lang_name : $config['default_lang'];
+ $sql = 'SELECT *
+ FROM ' . STYLES_IMAGESET_DATA_TABLE . '
+ WHERE imageset_id = ' . $this->theme['imageset_id'] . "
+ AND image_lang IN('" . $db->sql_escape($this->img_lang) . "', '')";
+ $result = $db->sql_query($sql, 3600);
+
+ while ($row = $db->sql_fetchrow($result))
+ {
+ $this->img_array[$row['image_name']] = $row;
+ }
+
// If this function got called from the error handler we are finished here.
if (defined('IN_ERROR_HANDLER'))
{
@@ -1610,43 +1622,20 @@ class user extends session
static $imgs;
global $phpbb_root_path;
- $img_data = &$imgs[$img . $suffix];
+ $img_data = &$imgs[$img];
if (empty($img_data) || $width !== false)
{
- if (!isset($this->theme[$img]) || !$this->theme[$img])
+ if (!isset($this->img_array[$img]))
{
// Do not fill the image to let designers decide what to do if the image is empty
$img_data = '';
return $img_data;
}
- // Do not include dimensions?
- if (strpos($this->theme[$img], '*') === false)
- {
- $imgsrc = trim($this->theme[$img]);
- $width = $height = false;
- }
- else
- {
- if ($width === false)
- {
- list($imgsrc, $height, $width) = explode('*', $this->theme[$img]);
- }
- else
- {
- list($imgsrc, $height) = explode('*', $this->theme[$img]);
- }
- }
-
- if ($suffix !== '')
- {
- $imgsrc = str_replace('{SUFFIX}', $suffix, $imgsrc);
- }
-
- $img_data['src'] = $phpbb_root_path . 'styles/' . $this->theme['imageset_path'] . '/imageset/' . str_replace('{LANG}', $this->img_lang, $imgsrc);
- $img_data['width'] = $width;
- $img_data['height'] = $height;
+ $img_data['src'] = $phpbb_root_path . 'styles/' . $this->theme['imageset_path'] . '/imageset/' . ($this->img_array[$img]['image_lang'] ? $this->img_array[$img]['image_lang'] .'/' : '') . $this->img_array[$img]['image_filename'];
+ $img_data['width'] = $this->img_array[$img]['image_width'];
+ $img_data['height'] = $this->img_array[$img]['image_height'];
}
$alt = (!empty($this->lang[$alt])) ? $this->lang[$alt] : $alt;