7.0.7 페이로드 전수 검증에서 발견된 error 4건·warn 14건을 릴리즈 전에 처리했다. 미출시 분량의 자체 결함(회원 통합검색 500, 관리자 스코프 403 의 500 위장 등)이므로 페이로드에 합류시키고, 출시 대상 26개 CHANGELOG 의 버전 섹션 날짜를 2026-08-18 로 정렬했다. - 통합검색 import 복원 + 이커머스 관리자 typed 403 catch 대칭(테스트 동반) - admin 판정 스니핑 사설 사본 전수 수렴(BoardResource) + 조건 스캔 테스트 - 스케줄 인터프리터 변형 표기(확장자·버전 접미사) 정규화 차단 - ckeditor5 참조 판정 배치화·fail-safe, 결제 플러그인 진단 페이로드 대칭 - 템플릿 다크 대비·상태 Select value-제어 + --production 재빌드 - Upgrade_7_0_7 잔존 중복 색인 정리 스텝, API 문서·i18n(ko/en/ja) 동기
53 lines
1.6 KiB
PHP
53 lines
1.6 KiB
PHP
<?php
|
|
|
|
namespace Modules\Sirsoft\Ecommerce\Exceptions;
|
|
|
|
use RuntimeException;
|
|
|
|
/**
|
|
* 리뷰 작성 불가 예외
|
|
*
|
|
* 리뷰 작성 자격 검증(canWrite)에 실패한 상태에서 리뷰 생성을 시도할 때 발생합니다.
|
|
* 컨트롤러의 기존 catch (\RuntimeException) 흐름을 유지하기 위해 RuntimeException 을 상속합니다.
|
|
*/
|
|
class ReviewNotWritableException extends RuntimeException
|
|
{
|
|
/**
|
|
* @param string $reason 작성 불가 사유 식별자 (예: already_written, deadline_passed)
|
|
*/
|
|
public function __construct(
|
|
private string $reason
|
|
) {
|
|
parent::__construct(
|
|
__('sirsoft-ecommerce::messages.reviews.cannot_write', ['reason' => $reason])
|
|
);
|
|
}
|
|
|
|
/**
|
|
* 작성 불가 사유 식별자 반환
|
|
*
|
|
* @return string 사유 식별자
|
|
*/
|
|
public function getReason(): string
|
|
{
|
|
return $this->reason;
|
|
}
|
|
|
|
/**
|
|
* 작성 불가 사유의 번역 라벨을 반환합니다.
|
|
*
|
|
* 사유 식별자를 그대로 :reason 치환자에 실으면 최종 사용자 화면에 원시
|
|
* 식별자(already_written 등)가 노출된다. 라벨 키가 없는 미지의 사유는
|
|
* 식별자를 그대로 반환한다 (라벨 미정의가 표시 자체를 깨면 안 된다).
|
|
*
|
|
* @return string 번역된 사유 라벨
|
|
*/
|
|
public function getReasonLabel(): string
|
|
{
|
|
$key = 'sirsoft-ecommerce::messages.reviews.reasons.'.$this->reason;
|
|
$label = __($key);
|
|
|
|
return $label === $key ? $this->reason : $label;
|
|
}
|
|
}
|