diff options
author | David M <davidmj@users.sourceforge.net> | 2007-04-08 17:40:36 +0000 |
---|---|---|
committer | David M <davidmj@users.sourceforge.net> | 2007-04-08 17:40:36 +0000 |
commit | 887863e5c5ba80cd1bcbcd6097719afe2178c672 (patch) | |
tree | e8b433b0b9aaf9266315448c96aa6ac6a0be2f6c /phpBB/includes | |
parent | 0be22140b2338b4b77f257fd3c2928d5038287fd (diff) | |
download | forums-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.php | 449 | ||||
-rw-r--r-- | phpBB/includes/constants.php | 1 | ||||
-rw-r--r-- | phpBB/includes/session.php | 45 |
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 . "&action=edit&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; |