View file Загрузка фото AJAX/ajax/photo/upload_file.php

File size: 5.2Kb
<?
include_once('../../sys/inc/core.php');
include_once(SYS_INC . 'classes/AjaxData.class.php');
include_once(SYS_INC . 'classes/uploader.class.php');
$ad = AjaxData::getInstance();

if (!isset($_GET['id_gallery']))
	$ad -> setErrorAndHook('Поступили не все данные');

$gallery = mysql_fetch_assoc(mysql_query("SELECT * FROM `gallery` WHERE `id` = '" . intval($_GET['id_gallery']) . "' AND `id_user` = '$user[id]'"));
if (empty($gallery))
	$ad -> setErrorAndHook('Галерея не найдена');

$uploader = new Uploader();
if (!$uploader -> isUploaded('qqfile'))
	$ad -> setErrorAndHook('Файл не получен');

$result = @$uploader -> upload('qqfile');
if (!$result['success'])
	$ad -> setErrorAndHook($result['error']);

// на всякий случай
if (!is_file($result['path']))
	$ad -> setErrorAndHook('Ошибка загрузки файла');

if (!strstr($result['type'], 'image/'))
	$ad -> setErrorAndHook('Это не изображение');

$imgc = @imagecreatefromstring(file_get_contents($result['path']));
if (!$imgc) {
	@unlink($result['path']);
	@imageDestroy($imgc);
	$ad -> setErrorAndHook('Неверный формат изображения');
}

$img_x = imageSX($imgc);
$img_y = imageSY($imgc);

if ($img_x > $set['max_upload_foto_x'] || $img_y > $set['max_upload_foto_y'])
	$ad -> setErrorAndHook('Изображения превышает ограничения в '.$set['max_upload_foto_x'].'x'.$set['max_upload_foto_y']);

mysql_query("INSERT INTO `gallery_foto` (`id_gallery`, `name`, `ras`, `type`, `id_user`) values ('$gallery[id]', '" . my_esc($result['name']) . "', 'jpg', 'image/jpeg', '$user[id]')");
$id_foto = mysql_insert_id();
mysql_query("UPDATE `gallery` SET `time` = '$time' WHERE `id` = '$gallery[id]' LIMIT 1");

$previews_sizes = array(48, 128);
foreach ($previews_sizes as $preview_size) {
	if ($img_x == $img_y) {
		$dstW = $preview_size;
		$dstH = $preview_size;
	} elseif ($img_x > $img_y) {
		$prop = $img_x / $img_y;
		$dstW = $preview_size;
		$dstH = ceil($dstW / $prop);
	} else {
		$prop = $img_y / $img_x;
		$dstH = $preview_size;
		$dstW = ceil($dstH / $prop);
	}
	$screen = imagecreatetruecolor($dstW, $dstH);
	imagecopyresampled($screen, $imgc, 0, 0, 0, 0, $dstW, $dstH, $img_x, $img_y);
	$preview_file_path = H . 'sys/gallery/' . $preview_size . '/' . $id_foto . '.jpg';
	imagejpeg($screen, $preview_file_path, 90);
	@chmod($preview_file_path, 0777);
	imagedestroy($screen);
}

if ($img_x>640 || $img_y>640){
	if ($img_x==$img_y)
	{
		$dstW=640; // ширина
		$dstH=640; // высота 
	}
	elseif ($img_x>$img_y)
	{
		$prop=$img_x/$img_y;
		$dstW=640;
		$dstH=ceil($dstW/$prop);
	}
	else
	{
		$prop=$img_y/$img_x;
		$dstH=640;
		$dstW=ceil($dstH/$prop);
	}

	$screen=imagecreatetruecolor($dstW, $dstH);
	imagecopyresampled($screen, $imgc, 0, 0, 0, 0, $dstW, $dstH, $img_x, $img_y);
	//imagedestroy($imgc);
	$screen=img_copyright($screen); // наложение копирайта
	imagejpeg($screen,H."sys/gallery/640/$id_foto.jpg",90);
	imagedestroy($screen);
	$imgc=img_copyright($imgc); // наложение копирайта
	imagejpeg($imgc,H."sys/gallery/foto/$id_foto.jpg",90);
	@chmod(H."sys/gallery/foto/$id_foto.jpg",0777);
} else {
	$imgc=img_copyright($imgc); // наложение копирайта
	imagejpeg($imgc,H."sys/gallery/640/$id_foto.jpg",90);
	imagejpeg($imgc,H."sys/gallery/foto/$id_foto.jpg",90);
	@chmod(H."sys/gallery/foto/$id_foto.jpg",0777);
}

@chmod(H."sys/gallery/640/$id_foto.jpg",0777);
imagedestroy($imgc);
@crop(H."sys/gallery/640/$id_foto.jpg", H."sys/gallery/50/$id_foto.tmp.jpg");
@resize(H."sys/gallery/50/$id_foto.tmp.jpg", H."sys/gallery/50/$id_foto.jpg", 50, 50);
@chmod(H."sys/gallery/50/$id_foto.jpg",0777);
@unlink(H."sys/gallery/50/$id_foto.tmp.jpg");
@unlink($result['path']);

$result = array(
	'name' => htmlspecialchars($result['name']), 
	'name_input' => input_value_text($result['name']), 
	'extension' => htmlspecialchars($result['extension']), 
	'id_foto' => $id_foto
);

$q = mysql_query("SELECT * FROM `frends` WHERE `user` = '$user[id]' AND `lenta_foto` = '1' AND `i` = '1'");
mysql_query("UPDATE `tape` SET `count` = '0' WHERE  `type` = 'album' AND `read` = '1' AND `id_file` = '$gallery[id]'");
$q = mysql_query("SELECT * FROM `frends` WHERE `user` = '$user[id]' AND `i` = '1'");
while ($f = mysql_fetch_array($q)) {
	$a = get_user($f['frend']);
	$lentaSet = mysql_fetch_array(mysql_query("SELECT * FROM `tape_set` WHERE `id_user` = '$a[id]' LIMIT 1"));
	if ($f['lenta_foto'] == 1 && $lentaSet['lenta_foto'] == 1) {
		if (mysql_result(mysql_query("SELECT COUNT(*) FROM `tape` WHERE `id_user` = '$a[id]' AND `type` = 'album' AND `id_file` = '$gallery[id]' LIMIT 1"),0)==0)
			mysql_query("INSERT INTO `tape` (`id_user`, `avtor`, `type`, `time`, `id_file`, `count`) values('$a[id]', '$gallery[id_user]', 'album', '$time', '$gallery[id]', '1')"); 
		else {
			$tape = mysql_fetch_array(mysql_query("SELECT * FROM `tape` WHERE `type` = 'album' AND `id_file` = '$gallery[id]'"));
			mysql_query("UPDATE `tape` SET `count` = '".($tape['count']+1)."', `read` = '0', `time` = '$time' WHERE `id_user` = '$a[id]' AND `type` = 'album' AND `id_file` = '$gallery[id]' LIMIT 1");
		}
	}
}

$ad -> setStatus(AjaxData::STATUS_OK);
$ad -> setDataAndHook($result);
?>