PerpetualLicenseCheckpoint
in package
FinalYes
CMS-6328: 買い切り(永続)ライセンスで運用されているドメインでは、 サブスクリプションのアクティベーション通信(mypage への POST)は呼ぶ前から失敗が 確定しており不要、という判定を記録・再利用するための純粋ロジック。
license.php(買い切りライセンス本体)は難読化されて配布されるため、事前に内容だけを 静的解析することはできない。そのため「require せずに先読みして通信要否を決める」のではなく、 既に安全に require された直後(Application::loadLicense() の買い切りフォールバック分岐)の 検証結果を、ファイルの指紋(sha1 ハッシュ値)とセットで記録し、次回以降の通信要否判定に使い回す。
グローバル状態・ファイル I/O には一切触れない(呼び出し側の Application に閉じ、LocalStorage 経由で ファイル操作を行う)。
Table of Contents
Methods
- buildContent() : string
- 記録用ファイルの内容を組み立てる。license.php と異なり define() を使う PHP ソースではなく、 LocalStorage::get() で読んだ文字列をそのまま json_decode() できる単純な JSON にすることで、 グローバル定数の二重定義問題や PHP コードの実行を一切生じさせない。
- hasChanged() : bool
- 前回の記録と比べて書き込みが必要か(内容に変化があるか)を判定する。
- shouldSkipActivation() : bool
- 直近の記録から、今回はアクティベーション通信を省略してよいかを判定する。
Methods
buildContent()
記録用ファイルの内容を組み立てる。license.php と異なり define() を使う PHP ソースではなく、 LocalStorage::get() で読んだ文字列をそのまま json_decode() できる単純な JSON にすることで、 グローバル定数の二重定義問題や PHP コードの実行を一切生じさせない。
public
static buildContent(string $currentLicenseFileHash, bool $authorized) : string
Parameters
- $currentLicenseFileHash : string
- $authorized : bool
Return values
stringhasChanged()
前回の記録と比べて書き込みが必要か(内容に変化があるか)を判定する。
public
static hasChanged(array{hash?: mixed, authorized?: mixed}|null $storedFlag, string $currentLicenseFileHash, bool $authorized) : bool
Parameters
- $storedFlag : array{hash?: mixed, authorized?: mixed}|null
-
前回記録された内容(無ければ null)
- $currentLicenseFileHash : string
- $authorized : bool
Return values
boolshouldSkipActivation()
直近の記録から、今回はアクティベーション通信を省略してよいかを判定する。
public
static shouldSkipActivation(array{hash?: mixed, authorized?: mixed}|null $storedFlag, string $currentLicenseFileHash) : bool
Parameters
- $storedFlag : array{hash?: mixed, authorized?: mixed}|null
-
前回記録された内容(無ければ null)
- $currentLicenseFileHash : string
-
今回の license.php の sha1 ハッシュ値