v7.0.0-beta.2 release
This commit is contained in:
1 parent
6595fd0eb5
commit
fa8eba7a0d
1165 files changed
+107118
-762127
No files matched your search
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
namespace App\Extension\Traits;
|
||||
|
||||
/**
|
||||
* 레이아웃 콘텐츠의 정규화된 해시/크기를 계산하는 공통 로직.
|
||||
*
|
||||
* template_layouts 테이블의 original_content_hash / original_content_size
|
||||
* 컬럼에 기록되는 값이며, 확장 업데이트 시 사용자 수정 여부 판단에 사용됩니다.
|
||||
*
|
||||
* Module/Plugin/Template 매니저에서 공용으로 사용합니다.
|
||||
*/
|
||||
trait ComputesLayoutContentHash
|
||||
{
|
||||
/**
|
||||
* 레이아웃 콘텐츠의 정규화된 SHA-256 해시를 계산합니다.
|
||||
*
|
||||
* @param array|string $content 배열 또는 JSON 문자열
|
||||
*/
|
||||
protected function computeContentHash(array|string $content): string
|
||||
{
|
||||
return hash('sha256', $this->normalizeContent($content));
|
||||
}
|
||||
|
||||
/**
|
||||
* 레이아웃 콘텐츠의 정규화된 바이트 크기를 계산합니다.
|
||||
*
|
||||
* @param array|string $content 배열 또는 JSON 문자열
|
||||
*/
|
||||
protected function computeContentSize(array|string $content): int
|
||||
{
|
||||
return strlen($this->normalizeContent($content));
|
||||
}
|
||||
|
||||
/**
|
||||
* 콘텐츠를 정규화된 JSON 문자열로 변환합니다.
|
||||
*
|
||||
* @param array|string $content 배열 또는 JSON 문자열
|
||||
*/
|
||||
protected function normalizeContent(array|string $content): string
|
||||
{
|
||||
return is_string($content)
|
||||
? json_encode(json_decode($content, true), JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES)
|
||||
: json_encode($content, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user