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

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

@$mod = $_GET['mod'];
@$photo = $_FILES['pic'];
@$uid = intval($_GET['uid']);

$user = login('nick');

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:
		
		$select=mysql_query("SELECT `nick` FROM `wip_users` WHERE `id`='".$uid."';");
		if(mysql_affected_rows()<1){
			echo 'Неверный юзер!<br/>';
			break;
		}
		
		@$uid = intval($_GET['uid']);
		
		echo '<form enctype="multipart/form-data" action="wall_pic.php?sid='.$sid.'&amp;mod=load&amp;uid='.$uid.'" method="post">';
		
		if($user['id'] == $uid) echo 'Оставить картинку на своей стене:<br/>';
		else {
			$nick = mysql_result($select, 0);
			echo 'Оставить картинку на стене <b>'.$nick.'</b>:<br/>';
		}
			
		echo 'Если размеры картинки больше чем 640x480, она автоматически урезается до этих размеров. На стене же будет показываться уменьшенная копия картинки (120x90)<br/>';
		echo 'Изображение может иметь формат JPEG, GIF или PNG<br/>';
		echo '---<br/>';
		echo '* Выберите файл: <input name="pic" type="file" size="20"><br/>';
		echo 'Подпись:<br/><textarea class=button name="msg" rows=3 cols=20></textarea><br/>';
		echo '<input type="submit" value="Добавить">';
		echo '</form>';
		break;


	case 'load':
		
		$select=mysql_query("SELECT `nick` FROM `wip_users` WHERE `id`='".$uid."';");
		if(mysql_affected_rows()<1){
			echo 'Неверный юзер!<br/>';
			break;
		}

		@$msg= mb_substr(trim(htmlspecialchars($_POST['msg'])), 0, 150, 'UTF-8');
		
		# Добавление смайлов
		$msg=strtr($msg,array(':)'=>'<smile.gif>', ';)'=>'<wink.gif>', 'B)'=>'<cool.gif>', ':(('=>'<aaa.gif>', ':!'=>'<be.gif>', ':S'=>'<blin.gif>', '@='=>'<bum.gif>', ':X'=>'<close.gif>', ';('=>'<cry.gif>', ']:)'=>'<devil.gif>', '@-/-'=>'<flow.gif>', ':]'=>'<gaga.gif>', ':D'=>'<green.gif>', '=)'=>'<ha.gif>', '(:'=>'<lol.gif>', '=/'=>'<hm.gif>', '.kiss.'=>'<kiss.gif>', ':o)'=>'<kloun.gif>', '.lips.'=>'<lips.gif>', '.love.'=>'<love.gif>', '8o'=>'<mmm.gif>', '[:)'=>'<music.gif>', '=]'=>'<napolu.gif>', '.ninja.'=>'<ninja.gif>', '.down.'=>'<no.gif>', '%)'=>'<ogo.gif>', '.pirat.'=>'<pirate.gif>', '.beer.'=>'<pivo.gif>', ':['=>'<red.gif>', ':('=>'<sad.gif>', '.woot.'=>'<shok.gif>', '.zz.'=>'<spit.gif>', '=p'=>'<tong.gif>', ':T'=>'<svist.gif>', '.uuu.'=>'<uuu.gif>', '.wow.'=>'<view.gif>', ':?'=>'<vopros.gif>', '.up.'=>'<yes.gif>', ':@'=>'<angry2.gif>', ':O'=>'<angry.gif>'));
		$arr=explode('<',$msg);
			
		$msg=false;
			
		foreach($arr as $k=>$val){
			if($k!=0 and $k<=3) $msg.='<img src="smiles/'.$val; 
			else $msg.=$val;
		}
			
		$msg=preg_replace("/src\=\"smiles\/([a-z]+)\.gif\>/","src=\"smiles/\\1.gif\" alt=\"\\1\"/>",$msg);
		$msg=eregi_replace("([a-z]+)\.gif\>","",$msg);
		####
		
		if(trim($msg)) $msg = '<br/>'. $msg;
		
		if(!$photo['tmp_name']){
			echo 'Выберите файл для загрузки!<br/>';
			break;
		}

		$par=getimagesize($photo['tmp_name']);
		$format=strtolower(substr($par['mime'], strpos($par['mime'], '/')+1));
		
		if($format != 'jpeg' and $format != 'gif' and $format !='png'){
			echo 'Картинка должна иметь формат JPEG, GIF или PNG!<br/>';
			break;
		}
		
		while (true) {
			$file = false;
			while(strlen($file)<9) $file .= mt_rand(0, 9);
		
			if(!file_exists('wall_pic/'.$file. '.jpg')) break;
		}
		
		$msg = '<a href="wall_pic/'.$file.'.jpg"><img src="wall_thumbs/'.$file.'.jpg" alt="image"/></a>'. $msg;
		$upd=mysql_query("INSERT INTO `wip_wall` SET `uid`='".$uid."', `send_id`='".$user['id']."', `time`='".time()."', `msg`='".$msg."';");
		
		# Параметры обработки
		$qual = 70; # Качество выходного JPEG
		$w_max = 640; # Максимальная ширина картинки
		$h_max = 480; # Максимальная высота картинки
		
		$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;
		}
		
		$w_i = round($w_i);
		$h_i = round($h_i);
		
		$im1 = imagecreatetruecolor($w_i, $h_i);
		imagecopyresampled($im1, $im, 0, 0, 0, 0, $w_i, $h_i, imagesx($im), imagesy($im));
		imagejpeg($im1, 'wall_pic/'.$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;
		}
		
		$w_t = round($w_t);
		$h_t = round($h_t);
		
		# Создаем дескриптор нового изображения и вставляем в него результат
		$im2 = imagecreatetruecolor($w_t, $h_t);
		imagecopyresampled($im2, $im, 0, 0, 0, 0, $w_t, $h_t, imagesx($im), imagesy($im));
		
		$color_black = imagecolorallocate($im2, 0, 0, 0);
		$color_white = imagecolorallocate($im2, 255, 255, 255);
		
		# Подписываем на картинке её размер
		if($w_t > 84){
			
			$file_size=false;
			$size = filesize($photo['tmp_name']);
			
			if($size >= 1048576) $file_size = round($size/1048576,2).' mb';
			elseif($size >= 1024) $file_size = round($size/1024,2).' kb';
			else $file_size = $size.' b';
			
			$str = imagesx($im).'x'.imagesy($im). ', ' . $file_size;

			echo $str;
			
			# определяем координаты вывода текста
			$size = 1; // размер шрифта
			$x_text = ($w_t/2 - (5*strlen($str))/2) ;
			$y_text = $h_t - 9;
			
			# определяем каким цветом на каком фоне выводить текст
			
			$color = $color_white;
			
			# выводим текст
			imagestring($im2, $size, $x_text-1, $y_text-1, $str, $color_white-$color);
			imagestring($im2, $size, $x_text+1, $y_text+1, $str, $color_white-$color);
			imagestring($im2, $size, $x_text+1, $y_text-1, $str, $color_white-$color);
			imagestring($im2, $size, $x_text-1, $y_text+1, $str, $color_white-$color);
			
			imagestring($im2, $size, $x_text-1, $y_text,   $str, $color_white-$color);
			imagestring($im2, $size, $x_text+1, $y_text,   $str, $color_white-$color);
			imagestring($im2, $size, $x_text,   $y_text-1, $str, $color_white-$color);
			imagestring($im2, $size, $x_text,   $y_text+1, $str, $color_white-$color);
			
			imagestring($im2, $size, $x_text,   $y_text,   $str, $color);
			
		}
		###
		
		imagejpeg($im2, 'wall_thumbs/'.$file.'.jpg', $qual);
		
		# Очищаем память
		imagedestroy($im);
		imagedestroy($im1);
		imagedestroy($im2);

		echo '<img src="wall_thumbs/'.$file.'.jpg" alt="photo"><br/>';
		echo 'Картинка добавлена на стену!<br/>';
		break;
	
}

echo '---<br/>';
if($mod) echo '<a href="wall_pic.php?sid='.$sid.'&amp;uid='.$uid.'">Назад</a><br/>';

if($user['id'] == $uid) echo '<a href="my_wall.php?sid='.$sid.'">Моя стена</a><br/>';
else echo '<a href="wall.php?sid='.$sid.'&amp;uid='.$uid.'">Стена</a><br/>';

echo '<a href="enter.php?sid='.$sid.'">Главное меню</a>';
echo '</body></html>';

mysql_close($link);
?>