$row)
{
unset($images_global[$key]);
}
// CSS replacements
$not_compatible = array(
'{T_TEMPLATE_PATH}',
'{T_IMAGESET_PATH}',
'{T_IMAGESET_LANG_PATH}',
'{T_STYLESHEET_NAME}',
'{S_USER_LANG}'
);
$replace = array(
'{T_THEME_PATH}' => '.',
);
// Enable/disable one of lines below to enable/disable replacement of English buttons
// $replace = array_merge($replace, get_replacements($images_global));
$replace = array_merge($replace, get_replacements($images_global), get_replacements($images_en));
// BIDI code
$bidi_code = css($images_global, './images/', true);
// Get all CSS files, parse them
$files = list_files($theme_path, 'css');
if ($files === false || !count($files))
{
echo 'No CSS files found in theme directory.
';
}
else for ($i=0; $i';
continue;
}
}
if (basename($file) == 'bidi.css' && strpos($data, '/* Former imageset */') === false && strlen($bidi_code))
{
// Add bidi data
$data .= "\n/* Former imageset */\n" . $bidi_code;
$bidi_code = '';
echo 'Note: RTL imageset entries were added at the end of file below:
';
}
if (md5($data) == $hash)
{
echo 'Nothing to replace in ', $file, '
';
}
else
{
echo 'Updated ', $file, ':', dump_code($data, $files[$i]);
}
}
// Check if there are invalid images in imageset
$list = array_merge($images_global, $images_en);
foreach ($list as $key => $row)
{
if ($row['skip'])
{
echo 'Unable to generate code to add to CSS files because some images are missing or invalid. See errors above.';
echo ob_get_clean();
return;
}
}
// Code to add to CSS files
$code = '
/* Former imageset */
span.imageset {
display: inline-block;
background: transparent none 0 0 no-repeat;
margin: 0;
padding: 0;
width: 0;
height: 0;
overflow: hidden;
}
/* Global imageset items */
' . css($images_global, './images/') . '
/* English images for fallback */
' . css($images_en, './en/');
if (strlen($bidi_code))
{
$code .= "\n/* RTL imageset entries */\n" . $bidi_code;
}
echo 'Code to add to CSS file:', dump_code($code, 'imageset.css');
$list = list_languages($imageset_path);
for ($i=0; $i';
$skip = true;
}
else
{
$size = @getimagesize($filename);
if ($size === false)
{
echo 'Error: file ', $filename, ' is not a valid image
';
$skip = true;
}
else
{
if(!$width) $width = intval($size[0]);
if(!$height) $height = intval($size[1]);
}
}
}
$result[$key] = array(
'lang' => $lang,
'file' => $file,
'height' => $height,
'width' => $width,
'skip' => $skip
);
}
return $result;
}
function get_replacements($list)
{
$result = array();
foreach ($list as $key => $row)
{
$key = '{' . strtoupper($key);
$result[$key . '_SRC}'] = strlen($row['file']) ? ($row['lang'] ? './' . $row['lang'] : './images') . '/' . $row['file'] : '';
$result[$key . '_WIDTH}'] = intval($row['width']);
$result[$key . '_HEIGHT}'] = intval($row['height']);
}
return $result;
}
function list_files($dir, $ext)
{
$res = @opendir($dir);
if ($res === false)
{
return false;
}
$files = array();
while (($file = readdir($res)) !== false)
{
$list = explode('.', $file);
if(count($list) > 1 && strtolower($list[count($list) - 1]) == $ext)
{
$files[] = $file;
}
}
closedir($res);
return $files;
}
function list_languages($dir)
{
$res = @opendir($dir);
if ($res === false)
{
return array();
}
$files = array();
while (($file = readdir($res)) !== false)
{
if (substr($file, 0, 1) == '.')
{
continue;
}
$filename = $dir . '/' . $file;
if (is_dir($filename) && file_exists($filename . '/imageset.cfg'))
{
$files[] = $file;
}
}
closedir($res);
return $files;
}
function dump_code($code, $filename = 'file.txt')
{
$hash = md5($code);
if (isset($_GET['download']) && $_GET['download'] === $hash)
{
// Download file
ob_end_clean();
header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Content-Type: application/force-download');
header('Content-Disposition: attachment; filename="' . $filename . '";');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . strlen($code));
echo $code;
exit;
}
$list = explode("\n", $code);
$height = 15 * count($list);
echo ' [ download expand ]
';
echo '
';
}
function css($list, $path = './', $bidi = false)
{
$code = '';
// Change value to true if you want images to be grouped up by size
$group = $bidi;
if ($group)
{
// group up images by size
$groups = array();
foreach ($list as $key => $row)
{
if (!strlen($row['file']))
{
continue;
}
$groups[$row['width'] . '*' . $row['height']][] = $key;
}
foreach ($groups as $size => $keys)
{
$extra = '';
for ($i=0; $i $row)
{
if (!strlen($row['file']))
{
continue;
}
$code .= ($bidi ? '.rtl ' : '') . '.imageset.' . substr($key, 4) . ' {';
if ($bidi)
{
$code .= '
padding-right: ' . $row['width'] . 'px;
padding-left: 0;
}
';
}
else
{
$code .= '
background-image: url("' . $path . $row['file'] . '");
padding-left: ' . $row['width'] . 'px;
padding-top: ' . $row['height'] . 'px;
}
';
}
}
}
return $code;
}