View file wip-site-portal/src/add_photo.php

File size: 6.09Kb
<?
require('ini.php');
$link=connect();

@$mod=$_GET['mod'];
@$photo=$_FILES['photo'];

$user=login('nick, plim');

if(stristr($agent, 'Opera Mini')) $om = true;
else $om = false;

header("Content-type:text/html");
echo '<!doctype html public "-//w3c//dtd html 4.0 transitional//en">';
echo '<html><head><title>Закачка фотографии</title>';
//echo '<meta http-equiv="content-type" content="text/html; charset=utf-8">';
echo '<meta http-equiv="content-type" content="text/html;">';
echo '</head><body>';

switch($mod){
	
	default:
		
		@$aid=intval($_GET['aid']);
		$add=($aid)?"and id='$aid'":'';
		
		$select=mysql_query("select id,name from wip_photos_albums where uid='$user[id]' $add;");
		if(mysql_affected_rows()<1){
			if($aid) echo 'Неверный фотоальбом!<br/>';
			else echo 'У Вас нет фотоальбомов [<a href="my_photos.php?sid='.$sid.'&amp;mod=add_album">создать</a>]<br/>';
			break;
		}
		
		if($om)  echo '<form action="add_photo.php?sid='.$sid.'&amp;mod=load&amp;" method="post">';
		else echo '<form enctype="multipart/form-data" action="add_photo.php?sid='.$sid.'&amp;mod=load&amp;" method="post">';
		
		echo 'Добавление фотографии для <b>'.$user['nick'].'</b>:<br/>';
		echo 'Если размеры фотографии больше чем 320*240, она автоматически урезается до этих размеров<br/>';
		echo '---<br/>';
		echo '* Выберите файл: ';
		
		if($om) echo '<input name="photo" value=""><a href="op:fileselect">Обзор</a><br/>';
		else echo '<input name="photo" type="file" size="20"><br/>';
		
		echo '* Название: <input name="name" type="text" maxlength="50"><br/>';
		echo 'Описание:<br/><textarea class=button name="descr" rows=3 cols=20></textarea><br/>';
		if(!$aid){
			echo 'Сохранить в альбом: ';
			echo '<select name="aid">';
			while($res=mysql_fetch_assoc($select)) echo '<option value="'.$res['id'].'">'.$res['name'].'</option>';
			echo '</select><br/>';
		}
		else {
			$res=mysql_fetch_assoc($select);
			echo 'Сохранить в альбом: <b>'.$res['name'].'</b><br/>';
			echo '<input name="aid" type="hidden" value="'.$aid.'">';
		}
		
		echo '<input type="submit" value="Добавить"><br/>';
		echo '</form>';
		break;


	case 'load':
		@$aid=intval($_POST['aid']);
		@$descr= mb_substr(trim(htmlspecialchars($_POST['descr'])), 0, 400, 'UTF-8');
		@$name = mb_substr(trim(htmlspecialchars($_POST['name'])), 0, 400, 'UTF-8');
		
		if($om){
			if(!isset($_POST['photo'])){
				echo 'Выберите файл для загрузки!<br/>';
				break;
			}
			
			$arr = explode('file=', $_POST['photo']);
			
			$rnd_tmp = rand(10, 1000);
			$f_tmp = fopen('temp/'.$rnd_tmp, 'w');
			fputs($f_tmp, base64_decode($arr[1]));
			fclose($f_tmp);
			
			$photo['tmp_name'] = 'temp/'.$rnd_tmp;
		}
		
		if(!$name){
			echo 'Вы должны ввести название фотографии!<br/>';
			break;
		}
		$select=mysql_query("select name from wip_photos_albums where id='$aid' and uid='$user[id]';");
		if(mysql_affected_rows()<1){
			echo 'Неверный фотоальбом!<br/>';
			break;
		}
		$album=mysql_fetch_row($select);
		
		if(!$photo['tmp_name']){
			echo 'Выберите файл для загрузки!<br/>';
			break;
		}

		$par=getimagesize($photo['tmp_name']);
		$format=strtolower(substr($par['mime'], strpos($par['mime'], '/')+1));
		
		/*if ($format!='jpeg'){
			echo 'Фотография должна иметь формат JPEG!<br/>';
			break;
		}*/
	
		
		while (true) {
			$file = false;
			while(strlen($file)<9) $file .= mt_rand(0, 9);
		
			if(!file_exists('photos/ '.$file. '.jpg')) break;
		}
		
		$upd=mysql_query("INSERT INTO `wip_photos_photos` SET `aid`='".$aid."', `name`='".$name."', `descr`='".$descr."', `file`='".$file."', `time`='".time()."', uid='".$user['id']."';");
		
		# Параметры обработки
		$qual = 70; # Качество выходного JPEG
		$w_max = 320; # Максимальная ширина картинки
		$h_max = 240; # Максимальная высота картинки
		
		$w_max_t = 120; # Максимальная ширина превью
		$h_max_t = 90; # Максимальная высота превью
		
		# Открываем изображение
		$func = 'imagecreatefrom'.$format;
		
		$im = $func($photo['tmp_name']);
		
		
		# Определяем размеры в пикселях
		
		# Основное изображение
		$w_i = imagesx($im);
		$h_i = imagesy($im);
		
		if($w_i > $w_max){
			$w_i = $w_max;
			$h_i = ( imagesy($im) / imagesx($im) ) * $w_max;
		}
		
		if ( $h_i > $h_max ){
			$w_i = ( imagesx($im) / imagesy($im) ) * $h_max;
			$h_i = $h_max;
		}
		
		$im1 = imagecreatetruecolor($w_i, $h_i);
		imagecopyresampled($im1, $im, 0, 0, 0, 0, $w_i, $h_i, imagesx($im), imagesy($im));
		imagejpeg($im1, 'photos/'.$file.'.jpg', $qual);
		####
		
		# Превью:
		$w_t = imagesx($im);
		$h_t = imagesy($im);
		
		if($w_t > $w_max_t){
			$w_t = $w_max_t;
			$h_t = ( imagesy($im) / imagesx($im) ) * $w_max_t;
		}
		
		if ( $h_t > $h_max_t ){
			$w_t = ( imagesx($im) / imagesy($im) ) * $h_max_t;
			$h_t = $h_max_t;
		}
		
		$im1 = imagecreatetruecolor($w_i, $h_i);
		imagecopyresampled($im1, $im, 0, 0, 0, 0, $w_i, $h_i, imagesx($im), imagesy($im));
		imagejpeg($im1, 'files/'.$file.'.jpg', $qual);
		###
		
		# Очищаем память
		imagedestroy($im);
		imagedestroy($im1);

		if($om){
			if(file_exists($rnd_tmp)) unlink($rnd_tmp);
		}
		
		echo '<img src="thumbs/'.$file.'.jpg" alt="photo"><br/>Фотография успешно добавлена!<br/>';
		break;
	
}

echo '---<br/>';
if($mod) echo '<a href="add_photo.php?sid='.$sid.'">Назад</a><br/>';
echo '<a href="my_photos.php?sid='.$sid.'">Мои фотографии</a><br/>';
echo '<a href="enter.php?sid='.$sid.'">Главное меню</a>';
echo '</body></html>';

mysql_close($link);
?>