Файл: panel/modules/control/upload.img.php
Строк: 57
<?
//лимит на загрузку изображений(в килобайтах):
$limitSize = $settingsSystem['icon_size'];
//сравниваем размер файла с разрешенным
if ($limitSize >= $_FILES['file']['size']) {
//разрешенные форматы файлов
$allowedType = array("jpg", "gif", "bmp", "jpeg", "png");
//транслит
$newName = translit($_FILES['file']['name']);
//проверяем нет ли одноименных уже загруженных файлов, если есть, то прибавляем индекс в конец файла.
$newName = substitute($newName);
$sizeWH = getimagesize($_FILES['file']['tmp_name']);
if (($sizeWH[0] > $settingsSystem['icon_width']) || ($sizeWH[1] > $settingsSystem['icon_height']))
fatalError('Размер (ширина, высота) изображения превышает допустимый!<br>
<a href="#" onclick="javascript:history.go(-1);">Назад</a>');
//размер файла(байты)
$sizeOfFile = $_FILES['file']['size'];
//проверяем есть ли пароль, если есть, то записываем
$password = (!empty($_POST['password'])) ? sha1(md5($_POST['password'])) : 0;
//расширение загружаемого файла
$ext = strtolower(pathinfo($newName, PATHINFO_EXTENSION));
//имя без расширения
$nfile = strtolower(pathinfo($newName, PATHINFO_FILENAME));
//проверяем разрешен ли данный формат
if (in_array($ext, $allowedType)) {
//загружаем файл
$upload = move_uploaded_file($_FILES['file']['tmp_name'], '../../style/default/imgs/' . $newName);
//в зависимости от результата загрузки выводим оповещение
if ($upload) show('Иконка успешно обновлена!'); else fatalErrors('Ошибка загрузки.<br>
<a href="#" onclick="javascript:history.go(-1);">Назад</a>');
//добавляем инфу о файле в БД
$icon = $nfile.'.'.$ext;
$sql = $db -> query("UPDATE modules SET icon = ?s WHERE id = ?i", $icon, $idEditIcon);
//если формат не разрешен, выводим ошибку
} else {
$oldName = $_FILES['file']['name'];
errors("Файл (<b>{$oldName}</b>) имеет недопустимое расширение".'<br>
<a href="#" onclick="javascript:history.go(-1);">Назад</a>');
}
//если файл превышает допустимый размер
} else errors('Размер файла больше разрешенного!<br>
<a href="#" onclick="javascript:history.go(-1);">Назад</a>');
//транслит имени файла
function translit($text) {
$rus = array("а", "б", "в",
"г", "ґ", "д", "е", "ё", "ж",
"з", "и", "й", "к", "л", "м",
"н", "о", "п", "р", "с", "т",
"у", "ф", "х", "ц", "ч", "ш",
"щ", "ы", "э", "ю", "я", "ь",
"ъ", "і", "ї", "є", "А", "Б",
"В", "Г", "ґ", "Д", "Е", "Ё",
"Ж", "З", "И", "Й", "К", "Л",
"М", "Н", "О", "П", "Р", "С",
"Т", "У", "Ф", "Х", "Ц", "Ч",
"Ш", "Щ", "Ы", "Э", "Ю", "Я",
"Ь", "Ъ", "І", "Ї", "Є", " ");
$lat = array("a", "b", "v",
"g", "g", "d", "e", "e", "zh", "z", "i",
"j", "k", "l", "m", "n", "o", "p", "r",
"s", "t", "u", "f", "h", "c", "ch", "sh",
"sh'", "y", "e", "yu", "ya", "_", "_", "i",
"i", "e", "A", "B", "V", "G", "G", "D",
"E", "E", "ZH", "Z", "I", "J", "K", "L",
"M", "N", "O", "P", "R", "S", "T", "U",
"F", "H", "C", "CH", "SH", "SH'", "Y", "E",
"YU", "YA", "_", "_", "I", "I", "E", "_");
$text = str_replace($rus, $lat, $text);
return(preg_replace("#[^a-z0-9._-]#i", "", $text));
}
//добавление индекса в конец файла
function substitute($name) {
$files = scandir('../../style/default/imgs/');
unset($files[0]);
unset($files[1]);
$i = 0;
$newName = $name;
preg_match("#([w()-_]+).([w]{1,4})#i", $name, $arrayNameFiles);
$nameStart = $arrayNameFiles[1];
$nameEnd = $arrayNameFiles[2];
while (in_array($newName, $files)) {
$newName = "{$nameStart}({$i}).{$nameEnd}";
$i++;
}
return $newName;
}
?>