Файл: modules/obmen/scr_file.php
Строк: 73
<?php
/* Мод "Обменник"
* Версия v0.0.1
* Дата последнего редактирования 24.11.2014
* Двиг DCMS Special
* Модифицировал densnet
* Файл scr_file.php
* Описание: работает со скриншотами
*/
require_once '../../sys/inc/start.php';
require_once H.'sys/inc/sess.php';
require_once H.'sys/inc/settings.php';
require_once H.'sys/inc/db_connect.php';
require_once H.'sys/inc/ipua.php';
require_once H.'sys/inc/fnc.php';
require_once H.'sys/inc/loads.php'; #все необходимые функции для работы загруз-центра
require_once H.'sys/inc/user.php';
define('LS', realpath(H . 'sys/obmen/screens/')); #путь до папки со скриншотами
if (isset($_GET['w'])) {
define('SCR_WIDTH', max(64, min(1024, intval($_GET['w'])))); #максимальная ширина скриншотов
} else {
define('SCR_WIDTH', IS_WEB ? $set['loads_screen_size_web'] : $set['loads_screen_size_wap']);
}
if (!isset($_GET['id'])) {
exit;
}
if (!isset($_GET['ras'])) {
exit;
}
switch ($_GET['ras']) {
case 'GIF':define('LF_RAS', 'gif');
break;
case 'JPG':define('LF_RAS', 'jpg');
break;
case 'JPEG':define('LF_RAS', 'jpeg');
break;
case 'PNG':define('LF_RAS', 'png');
break;
default:exit;
}
$file['id'] = (int) $_GET['id'];
if (!is_file(H . "sys/obmen/files/$file[id].dat" . '.' . strtoupper(LF_RAS))) {
exit;
}
define('LF_PATH', H . "sys/obmen/files/$file[id].dat" . '.' . strtoupper(LF_RAS));
define('LF_SIZE', filesize(H . "sys/obmen/files/$file[id].dat" . '.' . strtoupper(LF_RAS)));
define('LF_TIME', filectime(H . "sys/obmen/files/$file[id].dat" . '.' . strtoupper(LF_RAS)));
define('LF_NAME', $file['id']);
define('SCR_FILE', LS . '/width-' . SCR_WIDTH . '_name-' . LF_NAME . '_size-' . LF_SIZE . '.' . LF_RAS);
header("Last-Modified: " . gmdate("D, d M Y H:i:s", LF_TIME) . " GMT");
header("Expires: " . gmdate("D, d M Y H:i:s", $time + 3600) . " GMT");
header('Content-type: image/' . LF_RAS);
header('Content-Disposition: filename=' . $file['id'] . '.' . LF_RAS);
#чтобы не ресайзить каждый раз
if (file_exists(SCR_FILE) && filesize(SCR_FILE)) {
header('Content-length: ' . filesize(SCR_FILE));
echo file_get_contents(SCR_FILE);
exit;
}
switch (LF_RAS) {
case 'jpg':
$img = @imagecreatefromjpeg(LF_PATH);
break;
case 'jpeg':
$img = @imagecreatefromjpeg(LF_PATH);
break;
case 'gif':
$img = @imagecreatefromgif(LF_PATH);
break;
case 'png':
$img = @imagecreatefrompng(LF_PATH);
break;
}
$img_x = imagesx($img);
$img_y = imagesy($img);
$x_ratio = SCR_WIDTH / $img_x;
if ($img_x <= SCR_WIDTH) {
$dstW = $img_x;
$dstH = $img_y;
} else {
$dstH = ceil($x_ratio * $img_y);
$dstW = SCR_WIDTH;
}
$screen = ImageCreateTrueColor($dstW, $dstH);
imagecopyresampled($screen, $img, 0, 0, 0, 0, $dstW, $dstH, $img_x, $img_y);
imagedestroy($img);
$screen = img_copyright($screen); // наложение копирайта
switch (LF_RAS) {
case 'jpg':
@ImageJpeg($screen, SCR_FILE, 100);
break;
case 'jpeg':
@ImageJpeg($screen, SCR_FILE, 100);
break;
case 'gif':
@ImageGif($screen, SCR_FILE);
break;
case 'png':
@ImagePng($screen, SCR_FILE);
break;
}
chmod(SCR_FILE, 0777);
echo file_get_contents(SCR_FILE);
exit;