Файл: upload/core/load-set-users.php
Строк: 36
<?php
require_once ($_SERVER['DOCUMENT_ROOT'] . '/core/core.php');
if (!isset($user['id'])) {
showAlert('Ошибка', 'fail', 'Сперва необходимо авторизоваться');
RedirectToPage('/');
exit();
}
// Карта директорий
$paths = [
'avatar' => '/uploads/avatars/',
'header' => '/uploads/us-headers/',
'background' => '/uploads/us-backgrounds/'
];
// Карта полей в БД
$dbFields = [
'avatar' => 'avatar',
'header' => 'header',
'background' => 'background'
];
// Карта дефолтных файлов
$defaults = [
'avatar' => 'ava.png',
'header' => 'non-header.png',
'background' => 'non-background.png'
];
// Загружаем актуальные данные пользователя
$current = FetchAssoc(dbquery("SELECT avatar, header, background FROM users WHERE id = ?", [$user['id']]));
// -------------------------
// УДАЛЕНИЕ ФАЙЛА
// -------------------------
foreach ($dbFields as $type => $field) {
if (isset($_POST["delete_$type"])) {
$oldFile = $current[$field];
// Не удаляем дефолтные файлы
if (!empty($oldFile) && $oldFile !== $defaults[$type]) {
$fullPath = $_SERVER['DOCUMENT_ROOT'] . $paths[$type] . $oldFile;
if (file_exists($fullPath)) unlink($fullPath);
}
// Ставим дефолт
dbquery("UPDATE users SET $field = ? WHERE id = ?", [$defaults[$type], $user['id']]);
RedirectToPage('/account/design-profile');
exit();
}
}
// -------------------------
// ЗАГРУЗКА ФАЙЛОВ
// -------------------------
foreach ($dbFields as $type => $field) {
if (!empty($_FILES[$type]['name'])) {
$uploadDir = $_SERVER['DOCUMENT_ROOT'] . $paths[$type];
// Создаём директорию если нет
if (!is_dir($uploadDir)) {
mkdir($uploadDir, 0755, true);
}
$fileName = time() . "_" . basename($_FILES[$type]['name']);
$targetFile = $uploadDir . $fileName;
$ext = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION));
if (!in_array($ext, ['jpg', 'jpeg', 'png'])) {
showAlert('Ошибка', 'fail', 'Допустимы только JPG/PNG файлы');
RedirectToPage('/account/design-profile');
exit();
}
// Перемещаем файл
if (move_uploaded_file($_FILES[$type]['tmp_name'], $targetFile)) {
// Удаляем старый файл
$oldFile = $current[$field];
if (!empty($oldFile) && $oldFile !== $defaults[$type]) {
$oldPath = $_SERVER['DOCUMENT_ROOT'] . $paths[$type] . $oldFile;
if (file_exists($oldPath)) unlink($oldPath);
}
// Обновляем БД
dbquery("UPDATE users SET $field = ? WHERE id = ?", [$fileName, $user['id']]);
}
}
}
showAlert('Успешно', 'success', 'Изменения успешно сохранены!');
RedirectToPage('/account/design-profile');
exit();
?>