проработаны имена файлов. улучшен выизуальный вывод.
This commit is contained in:
@@ -655,7 +655,20 @@ $is_dangerous = in_array($ext, ['php', 'php3', 'php4', 'php5', 'phtml', 'exe',
|
||||
// Условие: расширение разрешено, файл не опасен и проходит по размеру
|
||||
if ($is_allowed_ext && !$is_dangerous && $file['size'] > 0 && $file['size'] <= $max_file_size_bytes)
|
||||
{
|
||||
$new_name = time() . '_' . rand(100, 999) . '.' . $ext;
|
||||
// 1. Берем имя
|
||||
$original_basename = pathinfo($file['name'], PATHINFO_FILENAME);
|
||||
|
||||
// 2. Очищаем (БЕЗ $this->, просто вызываем функцию)
|
||||
$clean_name = prepare_fname($original_basename);
|
||||
|
||||
// 3. Если пусто - дефолт
|
||||
if (empty($clean_name)) {
|
||||
$clean_name = 'file';
|
||||
}
|
||||
|
||||
// 4. Собираем имя
|
||||
$new_name = $clean_name . '_' . time() . '.' . $ext;
|
||||
|
||||
if (move_uploaded_file($file['tmp_name'], $upload_path . $new_name)) {
|
||||
$uploaded_files[] = $new_name;
|
||||
$processed_hashes[] = $file_hash;
|
||||
@@ -860,7 +873,26 @@ function commentPostEdit($comment_id)
|
||||
{
|
||||
if (!is_dir($upload_dir)) @mkdir($upload_dir, 0775, true);
|
||||
|
||||
$new_file_name = 'comm_' . time() . '_' . rand(1000, 9999) . '.' . $file_ext;
|
||||
// --- НАЧАЛО ИЗМЕНЕНИЙ ---
|
||||
|
||||
// 1. Получаем оригинальное имя файла без расширения
|
||||
$original_basename = pathinfo($fname, PATHINFO_FILENAME);
|
||||
|
||||
// 2. Очищаем имя через нашу исправленную функцию
|
||||
$clean_name = prepare_fname($original_basename);
|
||||
|
||||
// 3. Защита от пустого имени
|
||||
if (empty($clean_name)) {
|
||||
$clean_name = 'file';
|
||||
}
|
||||
|
||||
// 4. Формируем новое имя: чистое_имя + время + расширение
|
||||
// Убираем старый префикс 'comm_' и rand(), чтобы было как в новых комментах
|
||||
$new_file_name = $clean_name . '_' . time() . '.' . $file_ext;
|
||||
|
||||
// --- КОНЕЦ ИЗМЕНЕНИЙ ---
|
||||
|
||||
|
||||
|
||||
if (move_uploaded_file($tmp_name, $upload_dir . $new_file_name)) {
|
||||
$current_files[] = $new_file_name;
|
||||
|
||||
@@ -216,4 +216,19 @@
|
||||
display: flex !important;
|
||||
align-items: center !important;
|
||||
height: 32px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.comment-image-item .card-link-wrapper {
|
||||
transition: all 0.2s ease-in-out;
|
||||
display: block;
|
||||
border-radius: 8px;
|
||||
}
|
||||
.comment-image-item .card-link-wrapper:hover {
|
||||
transform: translateY(-2px); /* Легкий подъем вверх */
|
||||
}
|
||||
.comment-image-item .card-link-wrapper:hover img,
|
||||
.comment-image-item .card-link-wrapper:hover .file-box {
|
||||
box-shadow: 0 4px 12px rgba(0,0,0,0.15) !important;
|
||||
border-color: #0d6efd !important; /* Цвет границы при наведении (синий) */
|
||||
}
|
||||
@@ -70,25 +70,33 @@
|
||||
{assign var="all_files" value=","|explode:$c.comment_file}
|
||||
{assign var="img_exts" value=['jpg', 'jpeg', 'png', 'gif', 'webp']}
|
||||
|
||||
{* 1. Сначала выводим только ИЗОБРАЖЕНИЯ *}
|
||||
{foreach from=$all_files item=file}
|
||||
{assign var="f_name" value=$file|trim}
|
||||
{if $f_name}
|
||||
{assign var="ext_parts" value="."|explode:$f_name}
|
||||
{assign var="f_ext" value=$ext_parts[$ext_parts|@count-1]|lower}
|
||||
|
||||
{if in_array($f_ext, $img_exts)}
|
||||
<div class="comment-image-item">
|
||||
<a href="{$ABS_PATH}uploads/comments/{$f_name}" target="_blank" class="d-block">
|
||||
<img src="{$ABS_PATH}uploads/comments/{$f_name}"
|
||||
class="img-fluid rounded border shadow-sm"
|
||||
style="width: 100px; height: 100px; object-fit: cover;"
|
||||
alt="Изображение" />
|
||||
</a>
|
||||
</div>
|
||||
{/if}
|
||||
{* 1. Сначала выводим только ИЗОБРАЖЕНИЯ *}
|
||||
{foreach from=$all_files item=file}
|
||||
{assign var="f_name" value=$file|trim}
|
||||
{if $f_name}
|
||||
{assign var="ext_parts" value="."|explode:$f_name}
|
||||
{assign var="f_ext" value=$ext_parts[$ext_parts|@count-1]|lower}
|
||||
|
||||
{if in_array($f_ext, $img_exts)}
|
||||
<div class="comment-image-item d-flex flex-column align-items-center justify-content-between h-100">
|
||||
<a href="{$ABS_PATH}uploads/comments/{$f_name}" target="_blank" class="card-link-wrapper d-flex align-items-center justify-content-center mb-1" style="height: 100px;">
|
||||
<img src="{$ABS_PATH}uploads/comments/{$f_name}"
|
||||
class="img-fluid rounded border shadow-sm"
|
||||
style="width: 100px; height: 100px; object-fit: cover;"
|
||||
alt="Изображение" />
|
||||
</a>
|
||||
|
||||
<div class="d-flex align-items-center">
|
||||
<span class="badge bg-light text-secondary border fw-normal text-truncate d-inline-block"
|
||||
style="max-width: 100px; font-size: 0.7rem; padding: 1px 4px; line-height: 1.2;"
|
||||
title="{$f_name|regex_replace:'/_[0-9]+(?=\.[a-z0-9]+$)/i':''}">
|
||||
{$f_name|regex_replace:"/_[0-9]+(?=\.[a-z0-9]+$)/i":""}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
{/foreach}
|
||||
{/if}
|
||||
{/foreach}
|
||||
|
||||
{* 2. Затем выводим все ОСТАЛЬНЫЕ файлы *}
|
||||
{foreach from=$all_files item=file}
|
||||
@@ -98,19 +106,22 @@
|
||||
{assign var="f_ext" value=$ext_parts[$ext_parts|@count-1]|lower}
|
||||
|
||||
{if !in_array($f_ext, $img_exts)}
|
||||
<div class="comment-image-item d-flex flex-column align-items-center">
|
||||
<a href="{$ABS_PATH}uploads/comments/{$f_name}" target="_blank" class="text-decoration-none d-block text-center">
|
||||
{* Блок с расширением *}
|
||||
<div class="d-flex align-items-center justify-content-center bg-light text-dark rounded border shadow-sm mb-1"
|
||||
style="width: 100px; height: 100px; font-weight: bold; text-transform: uppercase; font-size: 14px;">
|
||||
<i class="bi bi-file-earmark-arrow-down me-1"></i>{$f_ext}
|
||||
</div>
|
||||
{* Название файла *}
|
||||
<div class="text-muted small text-truncate" style="max-width: 100px;" title="{$f_name}">
|
||||
{$f_name}
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="comment-image-item d-flex flex-column align-items-center justify-content-between h-100">
|
||||
<a href="{$ABS_PATH}uploads/comments/{$f_name}" target="_blank" class="card-link-wrapper text-decoration-none d-block text-center mb-1">
|
||||
<div class="file-box d-flex align-items-center justify-content-center bg-light text-dark rounded border shadow-sm"
|
||||
style="width: 100px; height: 100px; font-weight: bold; text-transform: uppercase; font-size: 14px; transition: all 0.2s;">
|
||||
<i class="bi bi-file-earmark-arrow-down me-1"></i>{$f_ext}
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<div class="d-flex align-items-center">
|
||||
<span class="badge bg-light text-secondary border fw-normal text-truncate d-inline-block"
|
||||
style="max-width: 100px; font-size: 0.7rem; padding: 1px 4px; line-height: 1.2;"
|
||||
title="{$f_name|regex_replace:'/_[0-9]+(?=\.[a-z0-9]+$)/i':''}">
|
||||
{$f_name|regex_replace:"/_[0-9]+(?=\.[a-z0-9]+$)/i":""}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
{/if}
|
||||
{/foreach}
|
||||
|
||||
Reference in New Issue
Block a user