Просмотр файла down/theme.php

Размер файла: 3.64Kb
<?php
// mod Gemorroj


require 'moduls/config.php';


$id = intval($_GET['id']);

$file_info = mysql_fetch_row(mysql_query('SELECT TRIM(`path`), LOWER(RIGHT(`path`,4)) FROM `files` WHERE `id` = '.$id.' LIMIT 1'));
$theme = urldecode(htmlspecialchars($file_info[0]));
$type = $file_info[1];

$name = $setup['tpath'] . '/' . str_replace('/', '--', $theme) . '.gif';
$location = 'http://' . str_replace(array('\\','//'), array('/','/'), $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . '/' . $name);



if (file_exists($name)) {
    header('Location: ' . $location, true, 301);
    exit;
}


$size = explode('*', $setup['prev_size']);
$g_preview_image_w = round(intval($size[0])); // ширина картинки
$g_preview_image_h = round(intval($size[1])); // высота картинки


if ($type == '.nth') {
include 'moduls/pclzip.lib.php';

$nth = new PclZip($theme);

$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);
}


$teg = simplexml_load_string($content[0]['content'])->wallpaper['src'] or $teg = simplexml_load_string($content[0]['content'])->wallpaper['main_display_graphics'];
$image = $nth->extract(PCLZIP_OPT_BY_NAME, trim($teg), PCLZIP_OPT_EXTRACT_AS_STRING);


$im = array_reverse(explode('.', $teg));
$im = 'imagecreatefrom' . str_ireplace('jpg', 'jpeg', trim($im[0]));

file_put_contents($name,$image[0]['content']);
$f = $im($name);

$h = imagesy($f);
$w = imagesx($f);

$ratio = $w/$h;
if ($g_preview_image_w / $g_preview_image_h > $ratio) {
    $g_preview_image_w = $g_preview_image_h * $ratio;
} else {
    $g_preview_image_h = $g_preview_image_w / $ratio;
}


$new = imagecreatetruecolor($g_preview_image_w, $g_preview_image_h);
imagecopyresampled($new, $f, 0, 0, 0, 0, $g_preview_image_w, $g_preview_image_h, $w, $h);

imagegif($new, $name);
}
elseif($type == '.thm'){
include 'moduls/tar.php';

$thm = new Archive_Tar($theme);
if(!$file=$thm->extractInString('Theme.xml') or !$file=$thm->extractInString(pathinfo($theme, PATHINFO_FILENAME).'.xml')){

$list = $thm->listContent();

$all = sizeof($list);
for($i=0; $i<$all; ++$i) {
    if (pathinfo($list[$i]['filename'], PATHINFO_EXTENSION) == 'xml') {
        $file = $thm->extractInString($list[$i]['filename']);
        break;
    }
}

}

// fix bug in tar.php
if (!$file) {
    preg_match('/<\?\s*xml\s*version\s*=\s*"1\.0"\s*\?>(.*)<\/.+>/isU', file_get_contents($theme), $arr);
    $file = trim($arr[0]);
}


$load = trim((string)simplexml_load_string($file)->Standby_image['Source']);

if (strtolower(strrchr($load,'.')) == '.swf') {
    $load = '';
}

if (!$load) {
    $load = trim((string)simplexml_load_string($file)->Desktop_image['Source']);
}

if (strtolower(strrchr($load,'.')) == '.swf') {
    $load = '';
}


if (!$load) {
    $load = trim((string)simplexml_load_string($file)->Desktop_image['Source']);
}

if (strtolower(strrchr($load,'.')) == '.swf') {
    $load = '';
}

if (!$load) {
    exit;
}


$image = $thm->extractInString($load);


$im = array_reverse(explode('.', $load));
$im = 'imagecreatefrom'.str_ireplace('jpg', 'jpeg', trim($im[0]));

file_put_contents($name,$image);
$f = $im($name);

$h = imagesy($f);
$w = imagesx($f);

$ratio = $w/$h;
if($g_preview_image_w/$g_preview_image_h > $ratio){
    $g_preview_image_w = $g_preview_image_h*$ratio;
} else {
    $g_preview_image_h = $g_preview_image_w/$ratio;
}


$new = imagecreatetruecolor($g_preview_image_w, $g_preview_image_h);
imagecopyresampled($new, $f, 0, 0, 0, 0, $g_preview_image_w, $g_preview_image_h, $w, $h);

imagegif($new, $name);
}


header('Location: ' . $location, true, 301);

?>