Файл: theme.php
Строк: 303
<?php
// mod Gemorroj
require 'moduls/config.php';
ini_set('memory_limit', '128M');
define('DIRECTORY', str_replace(array('\', '//'), '/', dirname($_SERVER['PHP_SELF']) . '/'));
$id = intval($_GET['id']);
$file_info = mysql_fetch_row(mysql_query('SELECT `path`, LOWER(RIGHT(`path`,4)) FROM `files` WHERE `id` = ' . $id, $mysql));
$name = $setup['tpath'] . '/' . str_replace('/', '--', iconv_substr(strstr($file_info[0], '/'), 1)) . '.gif';
$location = 'http://' . $_SERVER['HTTP_HOST'] . DIRECTORY . $name;
if (file_exists($name)) {
header('Location: ' . $location, true, 301);
exit;
} else if (file_exists($name . '.swf')) {
header('Location: ' . $location . '.swf', true, 301);
exit;
}
if ($file_info[1] == '.nth') {
require_once 'moduls/PEAR/pclzip.lib.php';
$nth = new PclZip($file_info[0]);
$content = $nth->extract(PCLZIP_OPT_BY_NAME, 'theme_descriptor.xml', PCLZIP_OPT_EXTRACT_AS_STRING);
if (!$content) {
$content = $nth->extract(PCLZIP_OPT_BY_PREG, '.xml$', PCLZIP_OPT_EXTRACT_AS_STRING);
}
//var_dump($nth, $file_info[0], is_readable($file_info[0]));
//exit;
$teg = simplexml_load_string($content[0]['content'])->wallpaper['src'];
if (!$teg) {
$teg = simplexml_load_string($content[0]['content'])->wallpaper['main_display_graphics'];
}
if (!$teg) {
$teg = simplexml_load_string($content[0]['content'])->background['main_default_bg'];
}
$image = $nth->extract(PCLZIP_OPT_BY_NAME, (string)$teg, PCLZIP_OPT_EXTRACT_AS_STRING);
file_put_contents($name, $image[0]['content']);
unset($image);
$info = getimagesize($name);
if ($info[2] == 4 || $info[2] == 13) {
img_resize($name, $name . '.swf', 0, 0, $setup['marker']);
$location .= '.swf';
} else {
img_resize($name, $name, 0, 0, $setup['marker']);
}
} elseif ($file_info[1] == '.thm') {
require_once 'moduls/PEAR/Tar.php';
$thm = new Archive_Tar($file_info[0]);
$content = $thm->extractInString('Theme.xml');
if (!$content) {
$content = $thm->extractInString(pathinfo($file_info[0], PATHINFO_FILENAME).'.xml');
}
if (!$content) {
$list = $thm->listContent();
$all = sizeof($list);
for ($i=0; $i<$all; ++$i) {
if (pathinfo($list[$i]['filename'], PATHINFO_EXTENSION) == 'xml') {
$content = $thm->extractInString($list[$i]['filename']);
break;
}
}
}
// fix bug in tar.php
if (!$content) {
preg_match('/<?s*xmls*versions*=s*"1.0"s*?>(.*)</.+>/isU', file_get_contents($file_info[0]), $arr);
$content = trim($arr[0]);
unset($arr);
}
$load = (string)simplexml_load_string($content)->Standby_image['Source'];
if (!$load) {
$load = (string)simplexml_load_string($content)->Desktop_image['Source'];
}
if (!$load) {
exit;
}
file_put_contents($name, $thm->extractInString($load));
unset($load, $content);
$info = getimagesize($name);
if ($info[2] == 4 || $info[2] == 13) {
img_resize($name, $name . '.swf', 0, 0, $setup['marker']);
$location .= '.swf';
} else {
img_resize($name, $name, 0, 0, $setup['marker']);
}
} elseif ($file_info[1] == '.sdt') {
require_once 'moduls/PEAR/pclzip.lib.php';
$sdt = new PclZip($file_info[0]);
$format = $teg = $image = $skin = '';
$content = $sdt->extract(PCLZIP_OPT_BY_NAME, 'config.stc', PCLZIP_OPT_EXTRACT_AS_STRING);
if ($content) {
$format = 'stc';
} else {
$content = $sdt->extract(PCLZIP_OPT_BY_NAME, 'config.spc', PCLZIP_OPT_EXTRACT_AS_STRING);
$format = 'spc';
}
$xml = simplexml_load_string($content[0]['content']);
switch ($format) {
case 'stc':
foreach ($xml->resource_assignment->res as $f) {
if ($f['name'] == 'Idle background animation') {
$teg = (string)$f['src'];
break;
} else if ($f['name'] == 'Color skin') {
$skin = (string)$f['src'];
}
}
if (!$teg) {
if ($skin) {
$content = $sdt->extract(PCLZIP_OPT_BY_NAME, $skin, PCLZIP_OPT_EXTRACT_AS_STRING);
} else {
$content = $sdt->extract(PCLZIP_OPT_BY_PREG, '.scs$', PCLZIP_OPT_EXTRACT_AS_STRING);
}
if ($content) {
file_put_contents($name, $content[0]['content']);
$scs = new PclZip($name);
$image = $scs->extract(PCLZIP_OPT_BY_NAME, 'SkinApplicationImage.jpg', PCLZIP_OPT_EXTRACT_AS_STRING);
if (!$image) {
$image = $scs->extract(PCLZIP_OPT_BY_NAME, 'SkinApplicationImage.gif', PCLZIP_OPT_EXTRACT_AS_STRING);
}
if (!$image) {
$image = $scs->extract(PCLZIP_OPT_BY_NAME, 'SkinApplicationImage.png', PCLZIP_OPT_EXTRACT_AS_STRING);
}
if (!$image) {
$image = $scs->extract(PCLZIP_OPT_BY_NAME, 'SkinApplicationImage.bmp', PCLZIP_OPT_EXTRACT_AS_STRING);
}
if (!$image) {
$image = $scs->extract(PCLZIP_OPT_BY_PREG, '.jpg$', PCLZIP_OPT_EXTRACT_AS_STRING);
}
if (!$image) {
$image = $scs->extract(PCLZIP_OPT_BY_PREG, '.gif$', PCLZIP_OPT_EXTRACT_AS_STRING);
}
if (!$image) {
$image = $scs->extract(PCLZIP_OPT_BY_PREG, '.png$', PCLZIP_OPT_EXTRACT_AS_STRING);
}
if (!$image) {
$image = $scs->extract(PCLZIP_OPT_BY_PREG, '.bmp$', PCLZIP_OPT_EXTRACT_AS_STRING);
}
}
}
break;
case 'spc':
foreach ($xml->format->res as $f) {
if ($f['name'] == 'idle_wallpaper' || $f['name'] == 'screensaver_image' || $f['name'] == 'switch_on_animation') {
$teg = (string)$f['src'];
break;
}
}
break;
}
if (!$image) {
$image = $sdt->extract(PCLZIP_OPT_BY_NAME, $teg, PCLZIP_OPT_EXTRACT_AS_STRING);
}
file_put_contents($name, $image[0]['content']);
$info = getimagesize($name);
if ($info[2] == 4 || $info[2] == 13) {
img_resize($name, $name . '.swf', 0, 0, $setup['marker']);
$location .= '.swf';
} else {
img_resize($name, $name, 0, 0, $setup['marker']);
}
} elseif ($file_info[1] == '.scs') {
require_once 'moduls/PEAR/pclzip.lib.php';
$scs = new PclZip($file_info[0]);
$content = $scs->extract(PCLZIP_OPT_BY_NAME, 'SkinApplicationImage.jpg', PCLZIP_OPT_EXTRACT_AS_STRING);
if (!$content) {
$content = $scs->extract(PCLZIP_OPT_BY_NAME, 'SkinApplicationImage.gif', PCLZIP_OPT_EXTRACT_AS_STRING);
}
if (!$content) {
$content = $scs->extract(PCLZIP_OPT_BY_NAME, 'SkinApplicationImage.png', PCLZIP_OPT_EXTRACT_AS_STRING);
}
if (!$content) {
$content = $scs->extract(PCLZIP_OPT_BY_NAME, 'SkinApplicationImage.bmp', PCLZIP_OPT_EXTRACT_AS_STRING);
}
if (!$content) {
$content = $scs->extract(PCLZIP_OPT_BY_PREG, '.jpg$', PCLZIP_OPT_EXTRACT_AS_STRING);
}
if (!$content) {
$content = $scs->extract(PCLZIP_OPT_BY_PREG, '.gif$', PCLZIP_OPT_EXTRACT_AS_STRING);
}
if (!$content) {
$content = $scs->extract(PCLZIP_OPT_BY_PREG, '.png$', PCLZIP_OPT_EXTRACT_AS_STRING);
}
if (!$content) {
$content = $scs->extract(PCLZIP_OPT_BY_PREG, '.bmp$', PCLZIP_OPT_EXTRACT_AS_STRING);
}
file_put_contents($name, $content[0]['content']);
img_resize($name, $name, 0, 0, $setup['marker']);
} elseif ($file_info[1] == '.utz') {
require_once 'moduls/PEAR/pclzip.lib.php';
$utz = new PclZip($file_info[0]);
$content = $utz->extract(PCLZIP_OPT_BY_NAME, 'Theme.xml', PCLZIP_OPT_EXTRACT_AS_STRING);
if (!$content) {
$content = $utz->extract(PCLZIP_OPT_BY_PREG, '.xml$', PCLZIP_OPT_EXTRACT_AS_STRING);
}
$teg = (string)simplexml_load_string($content[0]['content'])->preview['file'];
if (!$teg) {
$teg = (string)simplexml_load_string($content[0]['content'])->wallpapers->wallpaper['file'];
}
if ($teg) {
$image = $utz->extract(PCLZIP_OPT_BY_NAME, $teg, PCLZIP_OPT_EXTRACT_AS_STRING);
} else {
$image = $utz->extract(PCLZIP_OPT_BY_PREG, '.png$', PCLZIP_OPT_EXTRACT_AS_STRING);
}
file_put_contents($name, $image[0]['content']);
$info = getimagesize($name);
if ($info[2] == 4 || $info[2] == 13) {
img_resize($name, $name . '.swf', 0, 0, $setup['marker']);
$location .= '.swf';
} else {
img_resize($name, $name, 0, 0, $setup['marker']);
}
}
header('Location: ' . $location, true, 301);
?>