65 lines
2.2 KiB
PHP
65 lines
2.2 KiB
PHP
|
|
<?php
|
|||
|
|
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
|
|||
|
|
|
|||
|
|
$isCkeditor = !empty($_GET['ckeditor']) || !empty($_GET['CKEditor']);
|
|||
|
|
$ckFuncNum = isset($_GET['CKEditorFuncNum']) ? (int)$_GET['CKEditorFuncNum'] : 0;
|
|||
|
|
|
|||
|
|
function respond($success, $message, $url = '') {
|
|||
|
|
global $isCkeditor, $ckFuncNum;
|
|||
|
|
if ($isCkeditor) {
|
|||
|
|
// CKEditor 4 ожидает HTML с window.parent.CKEDITOR.tools.callFunction(...)
|
|||
|
|
header('Content-Type: text/html; charset=utf-8');
|
|||
|
|
$url = addslashes($url);
|
|||
|
|
$message = addslashes($message);
|
|||
|
|
echo "<script>window.parent.CKEDITOR.tools.callFunction($ckFuncNum, '$url', '$message');</script>";
|
|||
|
|
} else {
|
|||
|
|
// TinyMCE / стандартный JSON-ответ
|
|||
|
|
header('Content-Type: application/json');
|
|||
|
|
if ($success) {
|
|||
|
|
echo json_encode(array('location' => $url));
|
|||
|
|
} else {
|
|||
|
|
echo json_encode(array('error' => $message));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
exit();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (!$_SESSION['superadmin']) {
|
|||
|
|
respond(false, 'Доступ запрещён');
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// CKEditor отправляет файл в поле "upload", TinyMCE — в "file"
|
|||
|
|
$file = null;
|
|||
|
|
if (isset($_FILES['upload'])) $file = $_FILES['upload'];
|
|||
|
|
elseif (isset($_FILES['file'])) $file = $_FILES['file'];
|
|||
|
|
|
|||
|
|
if (!$file || $file['error'] !== UPLOAD_ERR_OK) {
|
|||
|
|
respond(false, 'Ошибка загрузки файла');
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$maxSize = 5 * 1024 * 1024; // 5 MB
|
|||
|
|
if ($file['size'] > $maxSize) {
|
|||
|
|
respond(false, 'Файл слишком большой (макс. 5 MB)');
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$ext = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION));
|
|||
|
|
if (!in_array($ext, array('jpg', 'jpeg', 'png', 'webp', 'gif'))) {
|
|||
|
|
respond(false, 'Недопустимый тип файла');
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (@getimagesize($file['tmp_name']) === false) {
|
|||
|
|
respond(false, 'Файл не является изображением');
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$dir = $_SERVER['DOCUMENT_ROOT'] . '/images/articles/';
|
|||
|
|
if (!is_dir($dir)) mkdir($dir, 0755, true);
|
|||
|
|
|
|||
|
|
$filename = 'art-upload-' . time() . '-' . mt_rand(1000, 9999) . '.' . $ext;
|
|||
|
|
$dest = $dir . $filename;
|
|||
|
|
|
|||
|
|
if (!move_uploaded_file($file['tmp_name'], $dest)) {
|
|||
|
|
respond(false, 'Не удалось сохранить файл');
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
respond(true, '', '/images/articles/' . $filename);
|