a-blog cms PHP API Reference

Helper
in package

Table of Contents

Properties

$cacheField  : AdapterInterface
$deleteField  : Field
extract()後の削除フィールドを一時保存
$Get  : Field
$Post  : Field
$Q  : Field
$appSalt  : string|null
アプリの固定ソルト
$currentSalt  : string|null
現在のソルト
$isForceV1Build  : bool
強制的にV1ビルドを行うかどうかのフラグ
$isV2Module  : bool
V2モジュールかどうか判定用のフラグ
$managedDomainsCache  : array<string|int, string>|null
管理ドメインリスト(キャッシュ)
$mediaDeliveryUrl  : string
メディアの配信URL
$mimeTypeValidator  : MimeTypeValidator
MIMEタイプ検証クラス
$previousSalt  : string|null
1つ前のソルト

Methods

__construct()  : mixed
Constructor
addCsrfToken()  : string
CSRFトークンをFromに付与
addSecurityHeader()  : mixed
セキュリティヘッダー
backgroundRedirect()  : mixed
すぐにリダイレクトし、同一プロセスのバックグラウンドで処理を実行
camelize()  : string
checkCsrfToken()  : bool
CSRFトークンのチェック
clientCacheHeader()  : void
セキュリティヘッダーを追加
convertAssetUrlsToAbsolute()  : string
HTML内のアセット参照(画像・動画・スタイルシート等)を絶対URLに変換する。
convertRelativeUrlToAbsolute()  : string
単一の相対URLを絶対URL(フルURL)に変換する
createCsrfToken()  : string
CSRFトークンを生成
csrfTokenExists()  : bool
CSRFトークンの存在チェック
decrypt()  : string
deleteField()  : void
カスタムフィールドの削除
deleteFieldCache()  : mixed
カスタムフィールドキャッシュの削除
download()  : never
ファイルダウンロード
encrypt()  : string
exceptionArray()  : array<string|int, string|int>
例外情報を連想配列に変換
extract()  : Field_Validation
POSTデータからデータの抜き出し
fixAliasPath()  : string
管理画面でテンプレート直で書かれているパスを、エイリアスを含んだURLに修正
flushCache()  : mixed
genPass()  : string
パスワードジェネレータ
getAppSalt()  : string
アプリの固定ソルトを取得
getCurrentSalt()  : string
現在のソルトを取得
getDeleteField()  : Field
extract()後の削除フィールドを取得
getEncryptIv()  : string
getHttpHeader()  : string
ToDo: リファクタリング
getInheritedThemes()  : array<string|int, string>
指定されたテーマの継承テーマ・システムテーマすべてのテーマの配列を取得
getJsModules()  : array<string|int, mixed>
getMailTxt()  : string
メールテンプレートの解決
getMailTxtFromTxt()  : string
getPreviousSalt()  : string
1つ前のソルトを取得
getTagsFromString()  : array<string|int, string>
タグの配列化
getUriObject()  : Field
URIオブジェクトの取得
isAuthorizedAjaxRequest()  : bool
許可されたajaxアクセスか判定(どのようなtpl指定であっても許可する)
isForceV1Build()  : bool
強制的にV1ビルドを行うか判定
isLocalPrivateStorage()  : bool
プライベートストレージの設定がローカルかどうか
isLocalPublicStorage()  : bool
パブリックストレージの設定がローカルかどうか
isManagedDomain()  : bool
指定されたドメインが管理ドメインかどうかを判定
isSafeUrl()  : bool
a-blog cms で管理しているドメインのURLかチェックする
isV2Module()  : bool
V2モジュールとして実行中か判定
loadBlogFulltext()  : string
ブログのフルテキストを取得
loadCategoryFulltext()  : string
カテゴリのフルテキストを取得
loadEntryFulltext()  : string
エントリーのフルテキストを取得
loadField()  : Field
ブログID, カテゴリーID, エントリーID,ユーザーIDの いずれか指定されたカスタムフィールドをFieldオブジェクトで返す
loadUserFulltext()  : string
ユーザーのフルテキストを取得
logLockPost()  : mixed
mailConfig()  : mixed
メール設定の取得
parseMarkdown()  : string
マークダウン文字列を解析する
replaceDeliveryUrl()  : string
メディアの配信先URLを書き換え
replaceDeliveryUrlAll()  : string
メディアの配信先URLを書き換え(全て)
resolveUrl()  : string
V2モジュール、V2APIビルド時に、URLを絶対URLに変換 それ以外はそのままのURLを返す
responseJson()  : mixed
saveCache()  : mixed
saveField()  : bool
カスタムフィールドの保存
saveFulltext()  : void
フルテキストの保存
setAppSalt()  : void
アプリ全体で使用するSaltを更新・設定
setCurrentSalt()  : void
現在のソルトを設定
setForceV1Build()  : void
強制的にV1ビルドを行うか設定
setPreviousSalt()  : void
1つ前のソルトを設定
setSafeHeadersWithoutCache()  : void
キャッシュ無効で安全なレスポンスヘッダーを組み立てます。
setV2Module()  : void
V2モジュールとして実行中か設定
toAbsoluteUrl()  : string
URL を完全な absolute URL(scheme + host + path)に変換する。
toRootRelativeUrl()  : string
URL を root-relative URL(`/path` 形式、scheme/host を含まない)に変換する。
uploadAssetDirectory()  : void
ローカルのディレクトリをS3などのリモートストレージにアップロード
validateFileUpload()  : void
ファイルアップロードを検証
validateLockPost()  : bool
getManagedDomains()  : array<string|int, string>
管理ドメインのリストを取得(キャッシュあり)
isUrlFromManagedDomain()  : bool
指定URLが管理ドメインからのものかどうかを判定
collectMarkedFieldFiles()  : array<int, array{path: string, type: "image"|"file"}>
Field のメタ情報 'removeOld' に積まれた削除予約を収集する。
collectOrphanedFieldPaths()  : array<int, array{path: string, type: "image"|"file"}>
グループフィールド行削除で孤児化する @path のリストを収集する。
deletePhysicalFieldFile()  : void
カスタムフィールド image/file 型のファイルを物理削除する。
extractOrigin()  : string
URI から origin(scheme + host + port)を抽出する。
getEncryptKey()  : string
暗号化キーを取得
isAbsoluteUri()  : bool
URL が "absolute URI" として自己解決可能かを判定する。
isReferencedByField()  : bool
指定パスが field / field_rev テーブルのいずれかのレコードで使われているか判定する。
markFieldFileForRemoval()  : void
削除チェック・差し替え時に旧ファイルを saveField() 後に物理削除するよう Field にマーキングする。
removeUnreferencedFieldFiles()  : void
削除候補パスのうち、field / field_rev テーブルのどこからも参照されていないものを物理削除する。
resolveAgainstBase()  : string
resolveSrcset()  : string
`srcset` 属性値内の各 URL を base URL に対して解決する。

Properties

$deleteField

extract()後の削除フィールドを一時保存

protected Field $deleteField

$appSalt

アプリの固定ソルト

private string|null $appSalt = null

$currentSalt

現在のソルト

private string|null $currentSalt = null

$isForceV1Build

強制的にV1ビルドを行うかどうかのフラグ

private bool $isForceV1Build = false

$isV2Module

V2モジュールかどうか判定用のフラグ

private bool $isV2Module = false

$managedDomainsCache

管理ドメインリスト(キャッシュ)

private array<string|int, string>|null $managedDomainsCache = null

$mediaDeliveryUrl

メディアの配信URL

private string $mediaDeliveryUrl = ''

$previousSalt

1つ前のソルト

private string|null $previousSalt = null

Methods

__construct()

Constructor

public __construct() : mixed

addCsrfToken()

CSRFトークンをFromに付与

public addCsrfToken(string $tpl) : string
Parameters
$tpl : string
Return values
string

addSecurityHeader()

セキュリティヘッダー

public addSecurityHeader() : mixed

backgroundRedirect()

すぐにリダイレクトし、同一プロセスのバックグラウンドで処理を実行

public backgroundRedirect(string $url) : mixed
Parameters
$url : string

camelize()

public camelize(mixed $str) : string
Parameters
$str : mixed
Return values
string

checkCsrfToken()

CSRFトークンのチェック

public checkCsrfToken(string $token) : bool
Parameters
$token : string
Return values
bool

clientCacheHeader()

セキュリティヘッダーを追加

public clientCacheHeader([bool $noCache = false ]) : void
Parameters
$noCache : bool = false

convertAssetUrlsToAbsolute()

HTML内のアセット参照(画像・動画・スタイルシート等)を絶対URLに変換する。

public convertAssetUrlsToAbsolute(string $html, string $baseUrl) : string

APIビルド/V2モジュールなどヘッドレス出力向けの正規化。クロスドメインで配信 される API レスポンスでは、フロント(Next.js 等)が別ドメインから取得する都合上、 画像・動画等は CMS ドメインの絶対URLになっている必要がある。

リンク(/)は意図的に一切変換しない。これはフロント側のルーター (Next.js の <Link> など)の解釈に任せるため、および <a href="section/"> の ようなドキュメント相対が CMS のサブパスを引きずって /blog/section/ のように 出力されるのを避けるため。

Parameters
$html : string
$baseUrl : string
Return values
string

convertRelativeUrlToAbsolute()

単一の相対URLを絶対URL(フルURL)に変換する

public convertRelativeUrlToAbsolute(string $url, string $baseUrl) : string
  • 空文字、http(s)://、プロトコル相対 (//)、data: 始まりの URL はそのまま返す
  • / 始まりのルート相対パスは baseUrl のスキーム + ホスト (+ ポート) を前置する
  • それ以外の相対パスは baseUrl 全体を前置する
Parameters
$url : string
$baseUrl : string
Return values
string

createCsrfToken()

CSRFトークンを生成

public createCsrfToken() : string
Return values
string

csrfTokenExists()

CSRFトークンの存在チェック

public csrfTokenExists() : bool
Return values
bool

decrypt()

public decrypt(string $cipherText, string $iv) : string
Parameters
$cipherText : string
$iv : string
Tags
throws
LengthException

IVの長さが不正な場合、または暗号文の長さがブロックサイズの倍数でない場合

Return values
string

deleteField()

カスタムフィールドの削除

public deleteField("bid"|"uid"|"cid"|"mid"|"eid"|"unit_id" $type, ($type is "unit_id" ? string : int) $id[, int|null $rvid = null ][, int|null $blogId = null ]) : void
Parameters
$type : "bid"|"uid"|"cid"|"mid"|"eid"|"unit_id"
$id : ($type is "unit_id" ? string : int)
$rvid : int|null = null
$blogId : int|null = null

deleteFieldCache()

カスタムフィールドキャッシュの削除

public deleteFieldCache("bid"|"uid"|"cid"|"mid"|"eid"|"unit_id" $type, ($type is "unit_id" ? string : int) $id[, int|null $rvid = null ]) : mixed
Parameters
$type : "bid"|"uid"|"cid"|"mid"|"eid"|"unit_id"
$id : ($type is "unit_id" ? string : int)
$rvid : int|null = null

download()

ファイルダウンロード

public download(string $path, string $fileName[, string|false $extension = false ][, bool $remove = false ][, Filesystem $storage = null ]) : never
Parameters
$path : string
$fileName : string
$extension : string|false = false

// 指定すると、Content-Disposition: inline になります。

$remove : bool = false
$storage : Filesystem = null
Return values
never

encrypt()

public encrypt(string $string, string $iv) : string
Parameters
$string : string
$iv : string
Return values
string

exceptionArray()

例外情報を連想配列に変換

public exceptionArray(Throwable $th[, array<string|int, mixed> $add = [] ]) : array<string|int, string|int>
Parameters
$th : Throwable
$add : array<string|int, mixed> = []
Return values
array<string|int, string|int>

extract()

POSTデータからデータの抜き出し

public extract([string $scp = 'field' ][, ACMS_Validator|null $V = null ][, Field|null $deleteField = null ]) : Field_Validation

image/file カスタムフィールドで旧ファイルを消す操作(削除チェック・差し替え)があった場合、 物理削除は即時には行わず Field のメタ情報 'removeOld' に記録する。 実際の物理削除はバリデーション通過後に呼ばれる saveField() 内で参照チェック (field / field_rev の両テーブルを検索)の上で行う。 よって旧ファイルを残すべきかどうか(新バージョン保存・作業領域のみの保存)は 呼び出し元が判定する必要はなく、参照チェックが自動的に判断する。

Parameters
$scp : string = 'field'
$V : ACMS_Validator|null = null
$deleteField : Field|null = null
Return values
Field_Validation

fixAliasPath()

管理画面でテンプレート直で書かれているパスを、エイリアスを含んだURLに修正

public fixAliasPath(string $txt) : string
Parameters
$txt : string
Return values
string

flushCache()

public flushCache() : mixed

genPass()

パスワードジェネレータ

public genPass(int $len) : string
Parameters
$len : int

パスワードの長さ

Return values
string

getAppSalt()

アプリの固定ソルトを取得

public getAppSalt() : string
Return values
string

getCurrentSalt()

現在のソルトを取得

public getCurrentSalt() : string
Return values
string

getDeleteField()

extract()後の削除フィールドを取得

public getDeleteField() : Field
Return values
Field

getEncryptIv()

public getEncryptIv() : string
Return values
string

getHttpHeader()

ToDo: リファクタリング

public getHttpHeader(string $name) : string
Parameters
$name : string
Return values
string

getInheritedThemes()

指定されたテーマの継承テーマ・システムテーマすべてのテーマの配列を取得

public getInheritedThemes(string $theme) : array<string|int, string>
Parameters
$theme : string
Return values
array<string|int, string>

getJsModules()

public getJsModules() : array<string|int, mixed>
Return values
array<string|int, mixed>

getMailTxt()

メールテンプレートの解決

public getMailTxt(string $path, Field $field[, string|null $charset = null ]) : string
Parameters
$path : string
$field : Field
$charset : string|null = null
Return values
string

getMailTxtFromTxt()

public getMailTxtFromTxt(string $txt, Field $field) : string
Parameters
$txt : string
$field : Field
Return values
string

getPreviousSalt()

1つ前のソルトを取得

public getPreviousSalt() : string
Return values
string

getTagsFromString()

タグの配列化

public getTagsFromString(mixed $string[, bool $checkReserved = true ]) : array<string|int, string>
Parameters
$string : mixed
$checkReserved : bool = true
Return values
array<string|int, string>

getUriObject()

URIオブジェクトの取得

public getUriObject(Field $Post) : Field
Parameters
$Post : Field
Return values
Field

isAuthorizedAjaxRequest()

許可されたajaxアクセスか判定(どのようなtpl指定であっても許可する)

public isAuthorizedAjaxRequest([int $level = 1 ]) : bool

level-0: チェックをしない level-1: RefererとAjaxリクエスト判定 level-2: CSRFトークンチェック

Parameters
$level : int = 1
Return values
bool

isForceV1Build()

強制的にV1ビルドを行うか判定

public isForceV1Build() : bool
Return values
bool

isLocalPrivateStorage()

プライベートストレージの設定がローカルかどうか

public isLocalPrivateStorage() : bool
Return values
bool

isLocalPublicStorage()

パブリックストレージの設定がローカルかどうか

public isLocalPublicStorage() : bool
Return values
bool

isManagedDomain()

指定されたドメインが管理ドメインかどうかを判定

public isManagedDomain(string $domain[, array<string|int, string> $additionalDomains = [] ]) : bool
Parameters
$domain : string

チェックするドメイン

$additionalDomains : array<string|int, string> = []

追加で許可するドメインのリスト

Return values
bool

isSafeUrl()

a-blog cms で管理しているドメインのURLかチェックする

public isSafeUrl(string $url) : bool
Parameters
$url : string
Return values
bool

isV2Module()

V2モジュールとして実行中か判定

public isV2Module() : bool
Return values
bool

loadBlogFulltext()

ブログのフルテキストを取得

public loadBlogFulltext(int $bid) : string
Parameters
$bid : int
Return values
string

loadCategoryFulltext()

カテゴリのフルテキストを取得

public loadCategoryFulltext(int $cid) : string
Parameters
$cid : int
Return values
string

loadEntryFulltext()

エントリーのフルテキストを取得

public loadEntryFulltext(int $eid) : string
Parameters
$eid : int
Return values
string

loadField()

ブログID, カテゴリーID, エントリーID,ユーザーIDの いずれか指定されたカスタムフィールドをFieldオブジェクトで返す

public loadField([null|int $bid = null ][, null|int $uid = null ][, null|int $cid = null ][, null|int $mid = null ][, null|int $eid = null ][, null|string $unitId = null ][, null|int $rvid = null ][, bool $rewrite = false ]) : Field
Parameters
$bid : null|int = null
$uid : null|int = null
$cid : null|int = null
$mid : null|int = null
$eid : null|int = null
$unitId : null|string = null
$rvid : null|int = null
$rewrite : bool = false
Return values
Field

loadUserFulltext()

ユーザーのフルテキストを取得

public loadUserFulltext(int $uid) : string
Parameters
$uid : int
Return values
string

logLockPost()

public logLockPost(string $lockKey) : mixed
Parameters
$lockKey : string

mailConfig()

メール設定の取得

public mailConfig([array{smtp-host?: string, smtp-port?: string, smtp-user?: string, smtp-pass?: string, smtp-verify-peer?: string, mail_from?: string, sendmail_path?: string, additional_headers?: string, smtp-google?: string, smtp-google-user?: string} $argConfig = [] ]) : mixed
Parameters
$argConfig : array{smtp-host?: string, smtp-port?: string, smtp-user?: string, smtp-pass?: string, smtp-verify-peer?: string, mail_from?: string, sendmail_path?: string, additional_headers?: string, smtp-google?: string, smtp-google-user?: string} = []

parseMarkdown()

マークダウン文字列を解析する

public parseMarkdown(string $txt) : string
Parameters
$txt : string
Return values
string

replaceDeliveryUrl()

メディアの配信先URLを書き換え

public replaceDeliveryUrl(string $url) : string
Parameters
$url : string
Return values
string

replaceDeliveryUrlAll()

メディアの配信先URLを書き換え(全て)

public replaceDeliveryUrlAll(string $html) : string
Parameters
$html : string
Return values
string

resolveUrl()

V2モジュール、V2APIビルド時に、URLを絶対URLに変換 それ以外はそのままのURLを返す

public resolveUrl(string $path[, string $offset = '' ]) : string
Parameters
$path : string
$offset : string = ''
Return values
string

responseJson()

public responseJson(mixed $data) : mixed
Parameters
$data : mixed

saveCache()

public saveCache(string $chid, string $contents, string $mime) : mixed
Parameters
$chid : string
$contents : string
$mime : string

saveField()

カスタムフィールドの保存

public saveField("bid"|"uid"|"cid"|"mid"|"eid"|"unit_id" $type, ($type is "unit_id" ? string : int) $id[, Field|null $field = null ][, Field|null $deleteField = null ][, int|null $rvid = null ][, int $targetBid = BID ]) : bool
Parameters
$type : "bid"|"uid"|"cid"|"mid"|"eid"|"unit_id"
$id : ($type is "unit_id" ? string : int)
$field : Field|null = null
$deleteField : Field|null = null
$rvid : int|null = null
$targetBid : int = BID
Return values
bool

saveFulltext()

フルテキストの保存

public saveFulltext(string $type, int $id[, string|null $fulltext = null ][, int $targetBid = BID ]) : void
Parameters
$type : string

フルテキストのタイプ

$id : int
$fulltext : string|null = null
$targetBid : int = BID

setAppSalt()

アプリ全体で使用するSaltを更新・設定

public setAppSalt() : void

setCurrentSalt()

現在のソルトを設定

public setCurrentSalt(string $salt) : void
Parameters
$salt : string

setForceV1Build()

強制的にV1ビルドを行うか設定

public setForceV1Build(bool $isForceV1Build) : void
Parameters
$isForceV1Build : bool

setPreviousSalt()

1つ前のソルトを設定

public setPreviousSalt(string $salt) : void
Parameters
$salt : string

setSafeHeadersWithoutCache()

キャッシュ無効で安全なレスポンスヘッダーを組み立てます。

public setSafeHeadersWithoutCache([int $code = 200 ][, string $mime = 'text/html' ]) : void
Parameters
$code : int = 200
$mime : string = 'text/html'

setV2Module()

V2モジュールとして実行中か設定

public setV2Module(bool $isV2Module) : void
Parameters
$isV2Module : bool

toAbsoluteUrl()

URL を完全な absolute URL(scheme + host + path)に変換する。

public toAbsoluteUrl(string $path[, string $offset = '' ][, string|null $baseUrl = null ]) : string

グローバル状態に依存しない pure 関数($baseUrl を省略した場合のみ BASE_URL を読む)。

  • 既に scheme 付き / protocol-relative の場合はそのまま返す。
  • ルート相対 /foo は base の origin(scheme + host + port)と結合する。 base のサブパス(/site/)は無視される。
  • ドキュメント相対 foo は base 全体(origin + path)と結合する。
Parameters
$path : string

入力パス

$offset : string = ''

URL の前置オフセット(DIR_OFFSET 相当)

$baseUrl : string|null = null

解決の基準とする base URL。null の場合は BASE_URL を使用

Return values
string

toRootRelativeUrl()

URL を root-relative URL(`/path` 形式、scheme/host を含まない)に変換する。

public toRootRelativeUrl(string $path[, string $offset = '' ][, string|null $baseUrl = null ]) : string

V1 / V2 の HTML テンプレート出力で「ブラウザが現在のホストで解決する」前提の URL を生成するときに使う。グローバル状態に依存しない pure 関数($baseUrl を 省略した場合のみ BASE_URL を読む)。

  • 既に scheme 付き / protocol-relative の場合はそのまま返す。
  • ルート相対 /foo はそのまま返す(既に root-relative なので変換不要)。
  • ドキュメント相対 foo は base の path+query 部分のみと結合する。
Parameters
$path : string

入力パス

$offset : string = ''

URL の前置オフセット(DIR_OFFSET 相当)

$baseUrl : string|null = null

解決の基準とする base URL。null の場合は BASE_URL を使用

Return values
string

uploadAssetDirectory()

ローカルのディレクトリをS3などのリモートストレージにアップロード

public uploadAssetDirectory(string $from, string $to, bool $isPublic) : void
Parameters
$from : string
$to : string
$isPublic : bool

validateFileUpload()

ファイルアップロードを検証

public validateFileUpload(string $name) : void
Parameters
$name : string
Tags
throws
RuntimeException

validateLockPost()

public validateLockPost(string $lockKey[, int $trialTime = 5 ][, int $trialNumber = 5 ][, int $lockTime = 15 ][, bool $remoteAddr = true ]) : bool
Parameters
$lockKey : string
$trialTime : int = 5

試行時間

$trialNumber : int = 5

試行回数

$lockTime : int = 15

ロックタイム

$remoteAddr : bool = true

接続元IPアドレスをチェックするかどうか

Return values
bool

getManagedDomains()

管理ドメインのリストを取得(キャッシュあり)

protected getManagedDomains([array<string|int, string> $additionalDomains = [] ]) : array<string|int, string>
Parameters
$additionalDomains : array<string|int, string> = []

追加で許可するドメインのリスト

Return values
array<string|int, string>

isUrlFromManagedDomain()

指定URLが管理ドメインからのものかどうかを判定

protected isUrlFromManagedDomain(string $url) : bool
Parameters
$url : string
Return values
bool

collectMarkedFieldFiles()

Field のメタ情報 'removeOld' に積まれた削除予約を収集する。

private collectMarkedFieldFiles(Field|null $field) : array<int, array{path: string, type: "image"|"file"}>

extract() 内で markFieldFileForRemoval() によって積まれた削除候補を removeUnreferencedFieldFiles() と同じ形式のリストに変換して返す。

Parameters
$field : Field|null
Return values
array<int, array{path: string, type: "image"|"file"}>

collectOrphanedFieldPaths()

グループフィールド行削除で孤児化する @path のリストを収集する。

private collectOrphanedFieldPaths(string $tableName, string $type, int|string $id, Field|null $field[, int|null $rvid = null ]) : array<int, array{path: string, type: "image"|"file"}>

saveField() の DB DELETE 前に呼び出す。DB に残っている @path 値のうち、 今回保存しようとしている Field に含まれていないものを「削除された行」とみなし、 パスと image/file の種別をペアで返す。

実際の物理削除は DELETE → INSERT 完了後に removeUnreferencedFieldFiles() で行う。

Parameters
$tableName : string

'field' | 'field_rev'

$type : string

'bid'|'uid'|'cid'|'mid'|'eid'|'unit_id'

$id : int|string
$field : Field|null

保存しようとしている新 Field

$rvid : int|null = null

リビジョンID(field_rev テーブルの場合のみ使用)

Return values
array<int, array{path: string, type: "image"|"file"}>

削除候補パスのリスト

deletePhysicalFieldFile()

カスタムフィールド image/file 型のファイルを物理削除する。

private deletePhysicalFieldFile(string $relPath, "image"|"file" $type) : void
Parameters
$relPath : string

archives ディレクトリからの相対パス

$type : "image"|"file"

extractOrigin()

URI から origin(scheme + host + port)を抽出する。

private extractOrigin(Uri|null $uri) : string
Parameters
$uri : Uri|null
Return values
string

getEncryptKey()

暗号化キーを取得

private getEncryptKey() : string
Return values
string

isAbsoluteUri()

URL が "absolute URI" として自己解決可能かを判定する。

private isAbsoluteUri(string $url) : bool

以下のいずれかなら true:

  • scheme 付き URI(http(s):, mailto:, tel:, data:, blob:, javascript:, ftp: など)
  • protocol-relative(//host/...

/foo foo ../foo #anchor ?q=1 '' のような base に対して 解決が必要な参照 は false。「ルート相対 /foo も解決済み扱いにしたい」 のような V1 互換の判定が必要な場合は、呼び出し側で str_starts_with($path, '/') を別途チェックする。

Parameters
$url : string
Return values
bool

isReferencedByField()

指定パスが field / field_rev テーブルのいずれかのレコードで使われているか判定する。

private isReferencedByField(string $path) : bool
Parameters
$path : string

検査するファイルパス(相対パス)

Return values
bool

いずれかのレコードが参照していれば true

markFieldFileForRemoval()

削除チェック・差し替え時に旧ファイルを saveField() 後に物理削除するよう Field にマーキングする。

private markFieldFileForRemoval(Field $field, string $fieldKey, string $relPath, "image"|"file" $type) : void

extract() 内では即時削除せず、saveField() の DB 書き込み完了後に removeMarkedFieldFiles() で参照チェックを通してから削除する。

Parameters
$field : Field

extract 中の Field

$fieldKey : string

image/file フィールドの key(例: 'photo')

$relPath : string

archives ディレクトリからの相対パス

$type : "image"|"file"

removeUnreferencedFieldFiles()

削除候補パスのうち、field / field_rev テーブルのどこからも参照されていないものを物理削除する。

private removeUnreferencedFieldFiles(array<int, array{path: string, type: "image"|"file"}> $candidates) : void

saveField() の DELETE → INSERT 完了後に呼び出す。 DB 更新後なので自分自身の除外条件は不要。

Parameters
$candidates : array<int, array{path: string, type: "image"|"file"}>

collectOrphanedFieldPaths() と collectMarkedFieldFiles() をマージした候補リスト

resolveAgainstBase()

private resolveAgainstBase(string $url, string $baseUrl) : string
Parameters
$url : string
$baseUrl : string
Return values
string

resolveSrcset()

`srcset` 属性値内の各 URL を base URL に対して解決する。

private resolveSrcset(string $srcset, string $baseUrl) : string

HTML Living Standard §4.8.4.3.2 "parse a srcset attribute" のアルゴリズムに準拠する。 URL は「ASCII whitespace でない連続」として読み取り、カンマでは分割しないため、 データURL内のカンマも誤分割されずに URL の一部として扱われる。

Parameters
$srcset : string

srcset 属性値(例: "/a.jpg 1x, /b.jpg 2x")

$baseUrl : string

解決の基準となる URL

Return values
string

各 URL を解決した srcset 文字列


        
On this page

Search results