Файл: pages/avatar/index.php
Строк: 153
<?
include ('../../system/mysql.php');
include ('../../system/sys_func.php');
if (!isset($user)) {
$title = 'Кабинет/Ошибка';
include ('../../system/head.php');
echo '<div class="err">Чтобы просматривать данную страницу вы должны <a href="/pages/registration/">зарегистрироваться</a> или <a href="/pages/registration/?menu=login">авторизоваться</a>!</div>';
foot();
exit;
}
if (isset($_GET['delete'])) {
mysql_query("UPDATE `users` SET `avatar` = '0' WHERE `id` = '". $user['id'] ."'");
if (is_file('../../design/imgs/user_avatars/'. $user['id'] .'.jpg')) @unlink('../../design/imgs/user_avatars/'. $user['id'] .'.jpg');
if (is_file('../../design/imgs/user_avatars/'. $user['id'] .'.png')) @unlink('../../design/imgs/user_avatars/'. $user['id'] .'.png');
header('Location: index.php');
exit;
}
$path = '../../design/imgs/user_avatars/'; //Путь загрузки аватара
$tmp_path = '../../design/imgs/user_avatars/tmp/'; //Путь временного загрузки аватара
$types = array('image/png', 'image/jpeg'); //Разрешенные типы
if (is_uploaded_file($_FILES['avatar']['tmp_name'])) {
if (!in_array($file['type'], $types)) $err = '<div class="err">Неверный формат файла</div>';
function big($file, $rotate = NULL) {
global $tmp_path;
// Ограничение по ширине в пикселях
$size = 1366;
// Качество изображения по умолчанию
$quality = 100;
// Cоздаём исходное изображение на основе исходного файла
if ($file['type'] == 'image/jpeg') $source = imagecreatefromjpeg($file['tmp_name']);
elseif ($file['type'] == 'image/png') $source = imagecreatefrompng($file['tmp_name']);
else return false;
// Поворачиваем изображение
if ($rotate != NULL) $src = imagerotate($source, $rotate, 0);
else $src = $source;
// Определяем ширину и высоту изображения
$w_src = imagesx($src);
$h_src = imagesy($src);
// Устанавливаем ограничение по ширине.
$w = $size;
// Если ширина больше заданной
if ($w_src > $w) {
// Вычисление пропорций
$ratio = $w_src/$w;
$w_dest = round($w_src/$ratio);
$h_dest = round($h_src/$ratio);
// Создаём пустую квадратную картинку
if ($file['type'] == 'image/jpeg') $dest = imagecreatetruecolor($w_dest, $h_dest);
elseif ($file['type'] == 'image/png') $dest = ImageCreate($w_dest, $h_dest);
if ($file['type'] == 'image/png') imagealphablending($dest, false);
// Копируем старое изображение в новое с изменением параметров
imagecopyresampled($dest, $src, 0, 0, 0, 0, $w_dest, $h_dest, $w_src, $h_src);
if ($file['type'] == 'image/png') imagesavealpha($dest, true);
// Вывод картинки и очистка памяти
if ($file['type'] == 'image/jpeg') imagejpeg($dest, $tmp_path.$file['name'], $quality);
elseif ($file['type'] == 'image/png') imagepng($dest, $tmp_path.$file['name']);
imagedestroy($dest);
imagedestroy($src);
return $file['name'];
} else {
if ($file['type'] == 'image/png') imagealphablending($src, false);
if ($file['type'] == 'image/png') imagesavealpha($src, true);
// Вывод картинки и очистка памяти
if ($file['type'] == 'image/jpeg') imagejpeg($src, $tmp_path.$file['name'], $quality);
elseif ($file['type'] == 'image/png') imagepng($src, $tmp_path.$file['name']);
imagedestroy($src);
return $file['name'];
}
}
$name = big($_FILES['avatar'], $_POST['file_rotate']);
if (preg_match('#.jpe?g$#i',$name)) $f = '.jpg';
elseif (preg_match('#.png$#i',$name)) $f = '.png';
// Загрузка файла и вывод сообщения
if (is_file($path.$user['id'] .'.jpg')) @unlink($path.$user['id'] .'_orig.jpg');
elseif (is_file($path.$user['id'] .'.png')) @unlink($path.$user['id'] .'_orig.png');
@copy($tmp_path.$name, $path.$user['id'] .'_orig'.$f);
mysql_query("UPDATE `users` SET `avatar` = '0' WHERE `id` = '". $user['id'] ."'");
mysql_query("UPDATE `users` SET `ava_user` = '".$user['id'].$f."' WHERE `id` = '". $user['id'] ."'");
// Удаляем временный файл
if (is_file($tmp_path.$name)) unlink($tmp_path.$name);
function mini($file, $rotate = NULL) {
global $tmp_path;
// Ограничение по ширине в пикселях
$max_sizesize = 130;
// Качество изображения по умолчанию
$quality = 100;
// Cоздаём исходное изображение на основе исходного файла
if ($file['type'] == 'image/jpeg') $source = imagecreatefromjpeg($file['tmp_name']);
elseif ($file['type'] == 'image/png') $source = imagecreatefrompng($file['tmp_name']);
else return false;
// Поворачиваем изображение
if ($rotate != NULL) $src = imagerotate($source, $rotate, 0);
else $src = $source;
// Определяем ширину и высоту изображения
$w_src = imagesx($src);
$h_src = imagesy($src);
// Устанавливаем ограничение по ширине.
$w = $max_sizesize;
// Если ширина больше заданной
if ($w_src > $w) {
// Вычисление пропорций
$ratio = $w_src/$w;
$w_dest = round($w_src/$ratio);
$h_dest = round($h_src/$ratio);
// Создаём пустую квадратную картинку
if ($file['type'] == 'image/jpeg') $dest = imagecreatetruecolor($w, $w);
elseif ($file['type'] == 'image/png') $dest = ImageCreate($w, $w);
if ($file['type'] == 'image/png') imagealphablending($dest, false);
// Вырезаем квадратную серединку по x, если фото горизонтальное
if ($w_src > $h_src) imagecopyresampled($dest, $src, 0, 0, round((max($w_src, $h_src) - min($w_src, $h_src))/2), 0, $w, $w, min($w_src, $h_src), min($w_src, $h_src));
// Вырезаем квадратную серединку по y, если фото горизонтальное
elseif ($w_src < $h_src) imagecopyresampled($dest, $src, 0, 0, 0, round((max($w_src, $h_src) - min($w_src, $h_src))/2), $w, $w, min($w_src, $h_src), min($w_src, $h_src));
// Квадратная картинка масштабируется без вырезок
elseif ($w_src == $h_src) imagecopyresampled($dest, $src, 0, 0, 0, 0, $w, $w, $w_src, $w_src);
if ($file['type'] == 'image/png') imagesavealpha($dest, true);
// Вывод картинки и очистка памяти
if ($file['type'] == 'image/jpeg') imagejpeg($dest, $tmp_path.$file['name'], $quality);
elseif ($file['type'] == 'image/png') imagepng($dest, $tmp_path.$file['name']);
imagedestroy($dest);
imagedestroy($src);
return $file['name'];
} else {
if ($file['type'] == 'image/png') imagealphablending($src, false);
if ($file['type'] == 'image/png') imagesavealpha($src, true);
// Вывод картинки и очистка памяти
if ($file['type'] == 'image/jpeg') imagejpeg($src, $tmp_path.$file['name'], $quality);
elseif ($file['type'] == 'image/png') imagepng($src, $tmp_path.$file['name']);
imagedestroy($src);
return $file['name'];
}
}
$name = mini($_FILES['avatar'], $_POST['file_rotate']);
if (preg_match('#.jpe?g$#i',$name)) $f = '.jpg';
elseif (preg_match('#.png$#i',$name)) $f = '.png';
// Загрузка файла и вывод сообщения
if (is_file($path.$user['id'] .'.jpg')) @unlink($path.$user['id'] .'.jpg');
elseif (is_file($path.$user['id'] .'.png')) @unlink($path.$user['id'] .'.png');
if (!@copy($tmp_path.$name, $path.$user['id'].$f)) $err = '<div class="err">Ошибка</div>';
else $err = '<div class="info">Успешно</div>';
mysql_query("UPDATE `users` SET `avatar` = '0' WHERE `id` = '". $user['id'] ."'");
// Удаляем временный файл
if (is_file($tmp_path.$name)) unlink($tmp_path.$name);
header('Location: index.php');
}
$title = 'Аватар';
include ('../../system/head.php');
echo '<div class="title">Аватар</div><div class="c"><center>';
online_avatar($user['id']);
echo '</center></div>';
if (isset($err)) echo $err;
echo '<form method="post" enctype="multipart/form-data">';
$path = '../../design/imgs/user_avatars/'. $user['id'];
if (is_file($path .".jpg") || is_file($path .".png") || $user['avatar'] != '0') echo ' <a class="at" href="?delete"><center>Удалить</center></a>';
echo '<p>Загружать картинки можно только форматов: .jpg/jpeg и .png.<br>.gif-анимации загружать нельзя.<br>Также вы можете <a href="avatars.php">установить</a> аватары с нашего сайта.</p>
<input type="file" style="width:60%" name="avatar" accept="image/*,image/png,image/jpeg" /><br>
Поворот:<br>
<input name="file_rotate" type="radio" value="90" />90
<input name="file_rotate" type="radio" value="180" />180
<input name="file_rotate" type="radio" value="270" />270<br>
<input value="Заменить" type="submit" name="set" />
</form>';
foot();
?>