Файл: user/avatar.php
Строк: 208
<?php
/* DCMS Special
* Дата последнего редактирования 18.01.2016
* Модифицировал densnet
*/
foreach (array('start', 'compress', 'sess', 'settings', 'db_connect', 'ipua', 'fnc', 'user') as $inc) {
require_once "../sys/inc/$inc.php";
}
only_reg();
$set['title'] = lang('Мой аватар');
require_once H . 'sys/inc/thead.php';
aut();
err();
#Навигация
echo "<div class='card-header'>";
echo "<a href='/' data-toggle='tooltip' data-placement='right' title='" . lang('На главную') . "'><i class='fa fa-home fa-lg'></i></a> <i class='fa fa-angle-right fa-fw'></i> ";
echo "<a href='/?umenu'>" . lang('Кабинет') . "</a> <i class='fa fa-angle-right fa-fw'></i> ";
echo lang('Аватар');
echo "</div>";
if (isset($_GET['act']) && $_GET['act'] == 'delete' && isset($_GET['ok'])) {
@unlink(H . "user/avatar/$user[id].jpg");
@unlink(H . "user/avatar/$user[id].gif");
@unlink(H . "user/avatar/$user[id].png");
mysql_query("DELETE FROM `avatar_comments` WHERE `avatar_id`= '$user[id]' ");
mysql_query("DELETE FROM `avatar_like` WHERE `id_komm`= '$user[id]' ");
$_SESSION['message'] = lang('Фото успешно удалено');
header("Location:/user/avatar.php?");
exit;
}
if (isset($_GET['act']) && $_GET['act'] == 'foto') {
if (isset($_GET['rotate']) && ($_GET['rotate'] == 'right' || $_GET['rotate'] == 'left')) {
$rotate = $_GET['rotate'];
if ($rotate == 'left') {
$degrees = 90;
} else {
$degrees = 270;
}
$file = H . "user/avatar/$user[id].jpg";
$source = imagecreatefromjpeg($file);
$rotate1 = imagerotate($source, $degrees, 0);
imagejpeg($rotate1, H . "user/avatar/$user[id].jpg", 90);
$_SESSION['message'] = lang('Изменения сохранены');
header("Location:/user/avatar.php?");
exit;
}
}
if (isset($_FILES['file'])) {
if (preg_match('#.jpe?g$#i', $_FILES['file']['name']) && $imgc = @imagecreatefromstring(file_get_contents($_FILES['file']['tmp_name']))) {
$img_x = imagesx($imgc);
$img_y = imagesy($imgc);
if ($img_x > $set['max_upload_foto_x'] || $img_y > $set['max_upload_foto_y']) {
$err = lang('Размер изображения превышает ограничения в') . ' ' . $set['max_upload_foto_x'] . '*' . $set['max_upload_foto_y'];
}
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);
}
copy($_FILES['file']['tmp_name'], H . 'sys/tmp/' . $user['id'] . '_' . md5_file($_FILES['file']['tmp_name']) . '.wall.tmp');
chmod(H . 'sys/tmp/' . $user['id'] . '_' . md5_file($_FILES['file']['tmp_name']) . '.wall.tmp', 0777);
if (isset($_SESSION['file'])) {
$next_f = count($_SESSION['file']);
} else {
$next_f = 0;
}
$file = esc(stripcslashes(htmlspecialchars($_FILES['file']['name'])));
$_SESSION['file'][$next_f]['name'] = preg_replace('#.[^.]*$#i', NULL, $file); // имя файла без расширения
$_SESSION['file'][$next_f]['ras'] = strtolower(preg_replace('#^.*.#i', NULL, $file));
$_SESSION['file'][$next_f]['tmp_name'] = H . 'sys/tmp/' . $user['id'] . '_' . md5_file($_FILES['file']['tmp_name']) . '.wall.tmp';
$_SESSION['file'][$next_f]['size'] = filesize(H . 'sys/tmp/' . $user['id'] . '_' . md5_file($_FILES['file']['tmp_name']) . '.wall.tmp');
$_SESSION['file'][$next_f]['type'] = $_FILES['file']['type'];
if (isset($_SESSION['file']) && isset($user)) {
for ($i = 0; $i < count($_SESSION['file']); $i++) {
if (isset($_SESSION['file'][$i]) && is_file($_SESSION['file'][$i]['tmp_name'])) {
$msg = "" . ($user['sex'] ? '' . lang('Обновил') . '' : '' . lang('Обновила') . '') . " " . lang('свою фотографию') . "";
mysql_query("INSERT INTO `wall` (`id_user`,`id_wall`,`time`,`msg`) values('$user[id]','$user[id]','$time','$msg')");
$q = mysql_query("SELECT * FROM `wall` ORDER BY `id` DESC LIMIT 1");
while ($post = mysql_fetch_assoc($q)) {
mysql_query("INSERT INTO `wall_files` (`id_wall`, `name`, `ras`, `size`, `type`) values('$post[id]', '" . $_SESSION['file'][$i]['name'] . "', '" . $_SESSION['file'][$i]['ras'] . "', '" . $_SESSION['file'][$i]['size'] . "', '" . $_SESSION['file'][$i]['type'] . "')");
}
$file_id = mysql_insert_id();
copy($_SESSION['file'][$i]['tmp_name'], H . 'sys/wall/' . $file_id . '.frf');
unlink($_SESSION['file'][$i]['tmp_name']);
}
}
unset($_SESSION['file']);
}
$imgc = img_copyright($imgc); // наложение копирайта
imagejpeg($imgc, H . "user/avatar/$user[id].jpg", 90);
@chmod(H . "user/avatar/$user[id].jpg", 0777);
} else {
$imgc = img_copyright($imgc); // наложение копирайта
imagejpeg($imgc, H . "user/avatar/$user[id].jpg", 90);
@chmod(H . "user/avatar/$user[id].jpg", 0777);
}
imagedestroy($imgc);
mysql_query("DELETE FROM `avatar_comments` WHERE `avatar_id`= '$user[id]' ");
mysql_query("DELETE FROM `avatar_like` WHERE `id_komm`= '$user[id]' ");
$_SESSION['message'] = lang('Фото успешно установлено');
header("Location:/user/avatar.php?");
exit;
} elseif (preg_match('#.gif$#i', $_FILES['file']['name']) && $imgc = @imagecreatefromgif($_FILES['file']['tmp_name'])) {
include_once H . 'sys/inc/gif_resize.php';
$screen = gif_resize(fread(fopen($_FILES['file']['tmp_name'], "rb"), filesize($_FILES['file']['tmp_name'])), 48, 48);
$avs = glob(H . "user/avatar/$user[id].*");
if ($avs) {
foreach ($avs as $value) {
@chmod($value, 0777);
@unlink($value);
}
}
file_put_contents(H . "user/avatar/$user[id].gif", $screen);
@chmod(H . "user/avatar/$user[id].gif", 0777);
copy($_FILES['file']['tmp_name'], H . 'sys/tmp/' . $user['id'] . '_' . md5_file($_FILES['file']['tmp_name']) . '.wall.tmp');
chmod(H . 'sys/tmp/' . $user['id'] . '_' . md5_file($_FILES['file']['tmp_name']) . '.wall.tmp', 0777);
if (isset($_SESSION['file'])) {
$next_f = count($_SESSION['file']);
} else {
$next_f = 0;
}
$file = esc(stripcslashes(htmlspecialchars($_FILES['file']['name'])));
$_SESSION['file'][$next_f]['name'] = preg_replace('#.[^.]*$#i', NULL, $file); // имя файла без расширения
$_SESSION['file'][$next_f]['ras'] = strtolower(preg_replace('#^.*.#i', NULL, $file));
$_SESSION['file'][$next_f]['tmp_name'] = H . 'sys/tmp/' . $user['id'] . '_' . md5_file($_FILES['file']['tmp_name']) . '.wall.tmp';
$_SESSION['file'][$next_f]['size'] = filesize(H . 'sys/tmp/' . $user['id'] . '_' . md5_file($_FILES['file']['tmp_name']) . '.wall.tmp');
$_SESSION['file'][$next_f]['type'] = $_FILES['file']['type'];
if (isset($_SESSION['file']) && isset($user)) {
for ($i = 0; $i < count($_SESSION['file']); $i++) {
if (isset($_SESSION['file'][$i]) && is_file($_SESSION['file'][$i]['tmp_name'])) {
$msg = "" . ($user['sex'] ? '' . lang('Обновил') . '' : '' . lang('Обновила') . '') . " " . lang('свою фотографию') . "";
mysql_query("INSERT INTO `wall` (`id_user`,`id_wall`,`time`,`msg`) values('$user[id]','$user[id]','$time','$msg')");
$q = mysql_query("SELECT * FROM `wall` ORDER BY `id` DESC LIMIT 1");
while ($post = mysql_fetch_assoc($q)) {
mysql_query("INSERT INTO `wall_files` (`id_wall`, `name`, `ras`, `size`, `type`) values('$post[id]', '" . $_SESSION['file'][$i]['name'] . "', '" . $_SESSION['file'][$i]['ras'] . "', '" . $_SESSION['file'][$i]['size'] . "', '" . $_SESSION['file'][$i]['type'] . "')");
}
$file_id = mysql_insert_id();
copy($_SESSION['file'][$i]['tmp_name'], H . 'sys/wall/' . $file_id . '.frf');
unlink($_SESSION['file'][$i]['tmp_name']);
}
}
unset($_SESSION['file']);
}
mysql_query("DELETE FROM `avatar_comments` WHERE `avatar_id`= '$user[id]' ");
mysql_query("DELETE FROM `avatar_like` WHERE `id_komm`= '$user[id]' ");
$_SESSION['message'] = lang('Фото успешно установлено');
header("Location:/user/avatar.php?");
exit;
} elseif (preg_match('#.png$#i', $_FILES['file']['name']) && $imgc = @imagecreatefrompng($_FILES['file']['tmp_name'])) {
if (imagesx($imgc) > 1000 || imagesy($imgc) > 1000) {
$img_x = imagesx($imgc);
$img_y = imagesy($imgc);
if ($img_x == $img_y) {
$dstW = 1000; // ширина
$dstH = 1000; // высота
} elseif ($img_x > $img_y) {
$prop = $img_x / $img_y;
$dstW = 1000;
$dstH = ceil($dstW / $prop);
} else {
$prop = $img_y / $img_x;
$dstH = 1000;
$dstW = ceil($dstH / $prop);
}
$screen = ImageCreate($dstW, $dstH);
imagecopyresampled($screen, $imgc, 0, 0, 0, 0, $dstW, $dstH, $img_x, $img_y);
imagedestroy($imgc);
$avs = glob(H . "user/avatar/$user[id].*");
if ($avs) {
foreach ($avs as $value) {
@chmod($value, 0777);
@unlink($value);
}
}
imagepng($screen, H . "user/avatar/$user[id].png");
@chmod(H . "user/avatar/$user[id].png", 0777);
imagedestroy($screen);
} else {
copy($_FILES['file']['tmp_name'], H . "user/avatar/$user[id].png");
}
copy($_FILES['file']['tmp_name'], H . 'sys/tmp/' . $user['id'] . '_' . md5_file($_FILES['file']['tmp_name']) . '.wall.tmp');
chmod(H . 'sys/tmp/' . $user['id'] . '_' . md5_file($_FILES['file']['tmp_name']) . '.wall.tmp', 0777);
if (isset($_SESSION['file'])) {
$next_f = count($_SESSION['file']);
} else {
$next_f = 0;
}
$file = esc(stripcslashes(htmlspecialchars($_FILES['file']['name'])));
$_SESSION['file'][$next_f]['name'] = preg_replace('#.[^.]*$#i', NULL, $file); // имя файла без расширения
$_SESSION['file'][$next_f]['ras'] = strtolower(preg_replace('#^.*.#i', NULL, $file));
$_SESSION['file'][$next_f]['tmp_name'] = H . 'sys/tmp/' . $user['id'] . '_' . md5_file($_FILES['file']['tmp_name']) . '.wall.tmp';
$_SESSION['file'][$next_f]['size'] = filesize(H . 'sys/tmp/' . $user['id'] . '_' . md5_file($_FILES['file']['tmp_name']) . '.wall.tmp');
$_SESSION['file'][$next_f]['type'] = $_FILES['file']['type'];
if (isset($_SESSION['file']) && isset($user)) {
for ($i = 0; $i < count($_SESSION['file']); $i++) {
if (isset($_SESSION['file'][$i]) && is_file($_SESSION['file'][$i]['tmp_name'])) {
$msg = "" . ($user['sex'] ? '' . lang('Обновил') . '' : '' . lang('Обновила') . '') . " " . lang('свою фотографию') . "";
mysql_query("INSERT INTO `wall` (`id_user`,`id_wall`,`time`,`msg`) values('$user[id]','$user[id]','$time','$msg')");
$q = mysql_query("SELECT * FROM `wall` ORDER BY `id` DESC LIMIT 1");
while ($post = mysql_fetch_assoc($q)) {
mysql_query("INSERT INTO `wall_files` (`id_wall`, `name`, `ras`, `size`, `type`) values('$post[id]', '" . $_SESSION['file'][$i]['name'] . "', '" . $_SESSION['file'][$i]['ras'] . "', '" . $_SESSION['file'][$i]['size'] . "', '" . $_SESSION['file'][$i]['type'] . "')");
}
$file_id = mysql_insert_id();
copy($_SESSION['file'][$i]['tmp_name'], H . 'sys/wall/' . $file_id . '.frf');
unlink($_SESSION['file'][$i]['tmp_name']);
}
}
unset($_SESSION['file']);
}
mysql_query("DELETE FROM `avatar_comments` WHERE `avatar_id`= '$user[id]' ");
mysql_query("DELETE FROM `avatar_like` WHERE `id_komm`= '$user[id]' ");
$_SESSION['message'] = lang('Фото успешно установлено');
header("Location:/user/avatar.php?");
exit;
} else {
$err[] = lang('Неверный формат файла');
}
}
if (isset($_GET['act']) && $_GET['act'] == 'delete') {
echo '<div class="card">';
echo "<div class='card-header'>" . lang('Удаление') . " <a style = 'float:right;color: grey;' href = '?'>" . lang('Закрыть') . "</a></div>";
echo "<form method='post' class='card-block' action='?act=delete&ok'>n";
echo lang('Вы действительно хотите удалить фото') . "?<br />";
$doc->Button('btn btn-primary btn-sm', null, 'trash', 'Удалить');
echo "</form>";
echo "</div>";
}
$ava = avatar_path($user['id']);
if (isset($_POST['delete'])) {
header("Location: ?act=delete" . SID);
exit;
}
echo '<div class="card">';
if ($ava) {
echo "<div class='card-header'>" . lang('Ваше текущее фото') . "</div>";
} else {
echo "<div class='card-header'>" . lang('Загрузка фото') . "</div>";
}
echo "<form method='post' class='card-block' enctype='multipart/form-data' action='?$passgen'>n";
if ($ava) {
echo "<center>";
avatar_p($user['id'], '300');
echo "<br /><a href='?act=foto&rotate=left'><i class='fa fa-rotate-left'></i></a> <a href='?act=foto&rotate=right'><i class='fa fa-rotate-right'></i></a>n";
echo "</center><br />";
}
echo "<div class='alert alert-warning' role='alert'>";
echo lang('Можно загружать изображения форматов') . ": GIF, JPG, PNG<br />";
echo lang('Качественное преобразование GIF-анимации не гарантируется');
echo "</div>";
$doc->File('file');
if ($ava) {
$doc->Button('btn btn-primary btn-sm', null, null, 'Заменить');
$doc->Button('btn btn-primary btn-sm', 'delete', 'trash-o', 'Удалить фото');
} else {
$doc->Button('btn btn-primary btn-sm', null, null, 'Загрузить');
}
echo "</form>";
echo "</div>";
require_once H . 'sys/inc/tfoot.php';