Files
Gnuboard7/plugins/_bundled/sirsoft-ckeditor5/src/Http/Requests/BulkDeleteUploadsRequest.php
T
HeuJung cfc2caba1b feat(ckeditor5,board,ecommerce,page,core,admin_basic): 미참조 에디터 업로드 이미지 정리 신설 + 업로드 고아 동종 결함 7건 전수 해소
공개 (@Tuwasduliebst 제보) 대응.

- ckeditor5: 미참조 이미지 정리 엔진 신설 — 참조 판정(hash + 파일명 2토큰,
 filter_reference_sources 훅으로 확장 콘텐츠 등록) + 정리 커맨드(기본 꺼짐 옵트인,
 3중 게이트) + 업로드 관리 화면(권한 분리·참조 배지·개별/선택 삭제) + 기설치본
 설정 백필 upgrade step
- board: 임시 첨부 GC(상시) + 소프트삭제 첨부 영구 정리(옵트인) + 설정 UI,
 저장 payload 누락(F4)·빈 temp 디렉토리 잔존(F5) 수정
- ecommerce: 임시 상품 이미지 GC + 카테고리 삭제 시 이미지 파일 미삭제(S4) 수정
- page: 임시 첨부 GC
- 코어: 고아 첨부 정리 커맨드(옵트인, site_logo 보호) + 사이트 로고 교체 시
 구 로고 재편입 차단(S6) + DB 백업 미구현 501 정직화(B3) + 플러그인 관리자
 메뉴 설치·업데이트 자동 동기화(F1·F7)
- 동반: 플러그인 설정 검증 오류 필드명 라벨화(F3), Toggle 노드 type 정정
 수평 전개(marketing 1.0.2 bump·gdpr·ecommerce), ja 언어팩 4종, API 문서,
 hooks.md, 시나리오 매니페스트 8종, Playwright E2E 4종
2026-08-17 02:44:54 +09:00

68 lines
1.8 KiB
PHP

<?php
namespace Plugins\Sirsoft\Ckeditor5\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
use Plugins\Sirsoft\Ckeditor5\Models\Ckeditor5ImageUpload;
/**
* 관리자 업로드 이미지 일괄 삭제 요청 검증
*/
class BulkDeleteUploadsRequest extends FormRequest
{
/** 한 번에 삭제할 수 있는 최대 건수 */
public const MAX_IDS = 100;
/**
* 요청 권한 — 라우트 permission 미들웨어가 담당하므로 true 고정.
*
* @return bool 항상 true
*/
public function authorize(): bool
{
return true;
}
/**
* 검증 규칙을 반환합니다.
*
* @return array<string, array<int, mixed>> 검증 규칙
*/
public function rules(): array
{
return [
'ids' => ['required', 'array', 'min:1', 'max:'.self::MAX_IDS],
'ids.*' => ['integer', Rule::exists(Ckeditor5ImageUpload::class, 'id')],
];
}
/**
* 검증 메시지를 반환합니다.
*
* @return array<string, string> 메시지 배열
*/
public function messages(): array
{
return [
'ids.required' => __('sirsoft-ckeditor5::messages.uploads.ids_required'),
'ids.min' => __('sirsoft-ckeditor5::messages.uploads.ids_required'),
'ids.*.exists' => __('sirsoft-ckeditor5::messages.uploads.ids_invalid'),
'ids.*.integer' => __('sirsoft-ckeditor5::messages.uploads.ids_invalid'),
];
}
/**
* 삭제 대상 ID 목록을 반환합니다.
*
* @return array<int, int> ID 목록
*/
public function ids(): array
{
/** @var array<int, int|string> $ids */
$ids = $this->validated('ids') ?? [];
return array_values(array_unique(array_map('intval', $ids)));
}
}