a-blog cms PHP API Reference

Repository
in package
uses UnitRepositoryTrait, UnitMultiLangTrait

Tags
phpstan-type

ValidatedRequest array{ id: non-empty-string, type: string, parentId: non-empty-string|null, align: string, anker: string, group: string, status: string, }[]

Table of Contents

Properties

$unitRegistory  : Registry
ユニットレジストリ

Methods

__construct()  : mixed
コンストラクタ
countUnitsTrait()  : int
指定したエントリーのユニット数をカウント
create()  : Model|null
追加時のユニットを作成
createDefault()  : Model|null
初期表示のユニットを作成
duplicateRevisionUnits()  : void
リビジョンユニットを複製して別リビジョンに複製
duplicateUnit()  : Model
指定したユニットを同エントリー内に複製 階層構造には対応しておらず、親ユニットのIDを指定すると例外が発生します
duplicateUnits()  : UnitCollection
指定したエントリーのユニットを複製
eagerLoadCustomUnitFields()  : void
カスタムユニットのカスタムフィールドをEagerLoad
eagerLoadPrimaryImageUnits()  : Model>, media: array}
メイン画像ユニットをEagerLoad
eagerLoadUnits()  : array<int<1, max>, UnitCollection>
ユニットデータをEagerLoad
explodeUnitDataTrait()  : array<string|int, mixed>
ユニットのデータを分割する
extractUnits()  : UnitCollection, range: int|null}
POSTデータからユニットを抽出
formatMultiLangUnitDataTrait()  : mixed
ユニットのデータを多言語ユニットを考慮して整形する
formatOrderWithInsertionTrait()  : void
指定した順番以降のユニット並び番号を更新する
formatOrderWithRemovalTrait()  : void
指定した順番以降のユニット並び番号を更新する
getRevisionIds()  : array<string|int, int>
指定したエントリーのユニットに存在するリビジョンIDを取得
getUnitBySortTrait()  : array<string|int, mixed>|null
指定したエントリーとソート番号のユニットを取得
getUnitSearchText()  : string
ユニットの検索テキストを取得
implodeUnitDataTrait()  : string
ユニットのデータを結合する
insertUnits()  : UnitCollection
ユニットを挿入
loadDefaultUnit()  : UnitCollection
初期表示ユニットをロード
loadModel()  : Model|null
ユニットモデルをDBデータから生成
loadModels()  : UnitCollection
ユニットモデル(配列)をDBデータから生成
loadUnit()  : Model|null
指定したユニットIDのモデルをロード
loadUnitFromDBTrait()  : null|array<string|int, mixed>
ユニットをロード
loadUnits()  : UnitCollection
指定したエントリーからユニットをロード
loadUnitsFromDBTrait()  : array<string|int, mixed>
データベースからエントリーのユニットをロード
makeModel()  : null|Model
ユニットモデルを作成
removeMultiLangUnitDelimiterTrait()  : string
多言語ユニット用のデリミタを削除する
removeUnit()  : Model
1ユニット削除 階層構造には対応しておらず、親ユニットのIDを指定すると例外が発生します
removeUnits()  : UnitCollection
全ユニットを削除
removeUnitsTrait()  : void
全ユニットを削除
removeUnitsWithReferenceCheck()  : UnitCollection
ユニットを DB から削除し、参照チェック経由で孤児ファイルのみ物理削除する。
removeUnitTrait()  : void
1ユニットの削除 階層構造には対応していないので、親ユニットのIDを指定しても削除されません
saveAllUnits()  : UnitCollection
ユニットを保存
saveAssets()  : void
ユニットのアセットを保存
saveRevisionUnits()  : UnitCollection
リビジョンユニットを保存
updateUnits()  : UnitCollection
ユニットを更新
handleMultipleUnitsTrait()  : array<string|int, Model>
保存時に1つのユニットから複数ユニットに増加できるユニットの処理 多言語ユニットの場合はマルチアップロード非対応
collectOrphanedFilePaths()  : array<string, Model|AssetProvider>
新コレクションから消える既存 AssetProvider ユニットのファイルパスを収集する(DELETE前に呼ぶ)。
formatEagerLoadUnits()  : array<string|int, mixed>
ユニットをEagerLoad
isReferencedByUnit()  : bool
指定パスが column / column_rev テーブルのいずれかで使われているか判定する。
removeUnreferencedUnitFiles()  : void
参照チェック済みの孤児ファイルを物理削除する(INSERT後に呼ぶ)。
validateRequest()  : ValidatedRequest
リクエスト内のユニットデータをバリデーション

Properties

Methods

countUnitsTrait()

指定したエントリーのユニット数をカウント

public countUnitsTrait(int<1, max> $eid) : int
Parameters
$eid : int<1, max>
Return values
int

create()

追加時のユニットを作成

public create(string $type, string $addType[, int $configIndex = 0 ]) : Model|null
Parameters
$type : string
$addType : string
$configIndex : int = 0
Return values
Model|null

createDefault()

初期表示のユニットを作成

public createDefault(string $type[, int $configIndex = 0 ]) : Model|null
Parameters
$type : string
$configIndex : int = 0
Return values
Model|null

duplicateRevisionUnits()

リビジョンユニットを複製して別リビジョンに複製

public duplicateRevisionUnits(int $eid, int $sourceRvid, int $targetRvid) : void
Parameters
$eid : int
$sourceRvid : int
$targetRvid : int

duplicateUnit()

指定したユニットを同エントリー内に複製 階層構造には対応しておらず、親ユニットのIDを指定すると例外が発生します

public duplicateUnit(non-empty-string $unitId, int $eid[, int|null $rvid = null ]) : Model
Parameters
$unitId : non-empty-string
$eid : int
$rvid : int|null = null
Return values
Model

duplicateUnits()

指定したエントリーのユニットを複製

public duplicateUnits(int $eid, int $newEid[, int|null $rvid = null ][, int|null $newRvid = null ]) : UnitCollection
Parameters
$eid : int
$newEid : int
$rvid : int|null = null
$newRvid : int|null = null
Return values
UnitCollection

eagerLoadCustomUnitFields()

カスタムユニットのカスタムフィールドをEagerLoad

public eagerLoadCustomUnitFields(UnitCollection $collection) : void
Parameters
$collection : UnitCollection

eagerLoadPrimaryImageUnits()

メイン画像ユニットをEagerLoad

public eagerLoadPrimaryImageUnits(array<string|int, mixed> $entries) : Model>, media: array}
Parameters
$entries : array<string|int, mixed>
Return values
Model>, media: array}

eagerLoadUnits()

ユニットデータをEagerLoad

public eagerLoadUnits(array<string|int, int> $entryIds) : array<int<1, max>, UnitCollection>
Parameters
$entryIds : array<string|int, int>
Return values
array<int<1, max>, UnitCollection>

explodeUnitDataTrait()

ユニットのデータを分割する

public explodeUnitDataTrait(mixed $data) : array<string|int, mixed>

多言語ユニットは非推奨です。新規ユニットは多言語対応していません。

Parameters
$data : mixed
Return values
array<string|int, mixed>

extractUnits()

POSTデータからユニットを抽出

public extractUnits([int|null $range = null ][, non-empty-string|null $primaryImageUnitId = null ]) : UnitCollection, range: int|null}
Parameters
$range : int|null = null
$primaryImageUnitId : non-empty-string|null = null
Return values
UnitCollection, range: int|null}

formatMultiLangUnitDataTrait()

ユニットのデータを多言語ユニットを考慮して整形する

public formatMultiLangUnitDataTrait(mixed $data[, array<string|int, mixed> &$vars = [] ][, string $name = '' ]) : mixed

多言語ユニットは非推奨です。新規ユニットは多言語対応していません。

Parameters
$data : mixed
$vars : array<string|int, mixed> = []
$name : string = ''

formatOrderWithInsertionTrait()

指定した順番以降のユニット並び番号を更新する

public formatOrderWithInsertionTrait(array{sort: positive-int, parentId: non-empty-string|null} $position, int $eid[, int|null $rvid = null ][, int $length = 1 ]) : void

新規カラム挿入に伴い、指定位置($position['sort'])を含む「以降の」カラムを後方にずらす。

  • >= を使用することで、挿入位置に既に存在するカラムも含めて後方に移動する。
  • これにより、挿入位置に確実に空きスペースを作成できる。
Parameters
$position : array{sort: positive-int, parentId: non-empty-string|null}
$eid : int
$rvid : int|null = null
$length : int = 1

formatOrderWithRemovalTrait()

指定した順番以降のユニット並び番号を更新する

public formatOrderWithRemovalTrait(array{sort: positive-int, parentId: non-empty-string|null} $position, int $eid[, int|null $rvid = null ][, int $length = 1 ]) : void

ユニット削除に伴い、指定位置($position['sort'])を含む「以降の」カラムを前方にずらす。

  • > を使用することで、削除位置に既に存在するカラムも含めて前方に移動する。
Parameters
$position : array{sort: positive-int, parentId: non-empty-string|null}
$eid : int
$rvid : int|null = null
$length : int = 1

getRevisionIds()

指定したエントリーのユニットに存在するリビジョンIDを取得

public getRevisionIds(int $eid) : array<string|int, int>
Parameters
$eid : int
Return values
array<string|int, int>

getUnitBySortTrait()

指定したエントリーとソート番号のユニットを取得

public getUnitBySortTrait(int<1, max> $eid, int $sort) : array<string|int, mixed>|null
Parameters
$eid : int<1, max>
$sort : int
Return values
array<string|int, mixed>|null

getUnitSearchText()

ユニットの検索テキストを取得

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

implodeUnitDataTrait()

ユニットのデータを結合する

public implodeUnitDataTrait(array<string|int, string>|string $data) : string

多言語ユニットは非推奨です。新規ユニットは多言語対応していません。

Parameters
$data : array<string|int, string>|string
Return values
string

insertUnits()

ユニットを挿入

public insertUnits(UnitCollection $collection, array{sort: positive-int, parentId: non-empty-string|null} $position, int $eid, int $bid) : UnitCollection

既存のユニットを保持したまま、新しいユニットを挿入します。

Parameters
$collection : UnitCollection

追加するユニットのコレクション

$position : array{sort: positive-int, parentId: non-empty-string|null}

挿入位置

$eid : int

エントリーID

$bid : int

ブログID

Tags
throws
LogicException

親ユニットのIDが不正な場合

Return values
UnitCollection

挿入したユニットのコレクション

loadModel()

ユニットモデルをDBデータから生成

public loadModel(array<string|int, mixed> $unit) : Model|null
Parameters
$unit : array<string|int, mixed>
Return values
Model|null

loadModels()

ユニットモデル(配列)をDBデータから生成

public loadModels(array<string|int, mixed> $units) : UnitCollection
Parameters
$units : array<string|int, mixed>
Return values
UnitCollection

loadUnit()

指定したユニットIDのモデルをロード

public loadUnit(non-empty-string $utid) : Model|null
Parameters
$utid : non-empty-string
Return values
Model|null

loadUnitFromDBTrait()

ユニットをロード

public loadUnitFromDBTrait(non-empty-string $unitId) : null|array<string|int, mixed>
Parameters
$unitId : non-empty-string
Return values
null|array<string|int, mixed>

loadUnits()

指定したエントリーからユニットをロード

public loadUnits(int $eid[, int|null $rvid = null ][, int|null $range = null ][, array{setPrimaryImage?: bool} $options = [] ]) : UnitCollection
Parameters
$eid : int
$rvid : int|null = null
$range : int|null = null
$options : array{setPrimaryImage?: bool} = []
Return values
UnitCollection

loadUnitsFromDBTrait()

データベースからエントリーのユニットをロード

public loadUnitsFromDBTrait(int $eid[, int|null $rvid = null ][, int|null $range = null ]) : array<string|int, mixed>
Parameters
$eid : int
$rvid : int|null = null
$range : int|null = null
Return values
array<string|int, mixed>

makeModel()

ユニットモデルを作成

public makeModel(string $type) : null|Model
Parameters
$type : string
Return values
null|Model

removeMultiLangUnitDelimiterTrait()

多言語ユニット用のデリミタを削除する

public removeMultiLangUnitDelimiterTrait(string $text) : string

多言語ユニットは非推奨です。新規ユニットは多言語対応していません。

Parameters
$text : string
Return values
string

removeUnit()

1ユニット削除 階層構造には対応しておらず、親ユニットのIDを指定すると例外が発生します

public removeUnit(non-empty-string $unitId[, int|null $rvid = null ][, bool $withAssets = true ]) : Model
Parameters
$unitId : non-empty-string
$rvid : int|null = null
$withAssets : bool = true
Return values
Model

removeUnits()

全ユニットを削除

public removeUnits(int $eid[, int|null $rvid = null ][, bool $withAssets = true ]) : UnitCollection
Parameters
$eid : int
$rvid : int|null = null
$withAssets : bool = true
Return values
UnitCollection

removeUnitsTrait()

全ユニットを削除

public removeUnitsTrait(int $eid[, int|null $rvid = null ]) : void
Parameters
$eid : int
$rvid : int|null = null

removeUnitsWithReferenceCheck()

ユニットを DB から削除し、参照チェック経由で孤児ファイルのみ物理削除する。

public removeUnitsWithReferenceCheck(int $eid[, int|null $rvid = null ]) : UnitCollection

承認完了時の changeRevision のように、メイン column を消して column_rev を メインに昇格する用途を想定。削除前にメインのユニットが参照していたファイルパスを 収集し、DB から削除した後、column / column_rev のいずれからも参照されなくなった ファイルだけを物理削除する。

column_rev に同じパスがあればファイルは残る(昇格後もパスを使い続けるため)。

Parameters
$eid : int

エントリーID

$rvid : int|null = null

リビジョンID(null でメイン column が対象)

Return values
UnitCollection

削除したユニットのコレクション

removeUnitTrait()

1ユニットの削除 階層構造には対応していないので、親ユニットのIDを指定しても削除されません

public removeUnitTrait(non-empty-string $unitId[, int|null $rvid = null ]) : void
Parameters
$unitId : non-empty-string
$rvid : int|null = null

saveAllUnits()

ユニットを保存

public saveAllUnits(UnitCollection $collection, int $eid, int $bid[, int|null $rvid = null ]) : UnitCollection

エントリーの全ユニットを更新します。既存のユニットは一旦削除され、 新しいユニットで置き換えられます。

保存前後でファイルパスが消える(行削除・差し替え)AssetProvider ユニットの 物理ファイルは、column / column_rev 両テーブルの参照チェックを経て どこからも参照されていない場合にのみ物理削除します。 これにより「作業領域のみ更新」「新バージョン保存」でメイン側が参照するファイルを 誤って削除することを自動的に防げます。

Parameters
$collection : UnitCollection

保存するユニットのコレクション

$eid : int

エントリーID

$bid : int

ブログID

$rvid : int|null = null

リビジョンID(リビジョンモードの場合のみ使用)

Tags
throws
LogicException

親ユニットのIDが不正な場合

Return values
UnitCollection

保存したユニットのコレクション

saveRevisionUnits()

リビジョンユニットを保存

public saveRevisionUnits(UnitCollection $collection, int $eid, int $bid[, int|null $rvid = null ]) : UnitCollection
Parameters
$collection : UnitCollection
$eid : int
$bid : int
$rvid : int|null = null
Return values
UnitCollection

保存したユニットのコレクション

updateUnits()

ユニットを更新

public updateUnits(UnitCollection $collection, int $eid, int $bid) : UnitCollection
Parameters
$collection : UnitCollection

更新するユニットのコレクション

$eid : int

エントリーID

$bid : int

ブログID

Return values
UnitCollection

更新したユニットのコレクション

handleMultipleUnitsTrait()

保存時に1つのユニットから複数ユニットに増加できるユニットの処理 多言語ユニットの場合はマルチアップロード非対応

protected handleMultipleUnitsTrait(Model $model) : array<string|int, Model>
Parameters
$model : Model
Return values
array<string|int, Model>

元のユニットを含んでいます

collectOrphanedFilePaths()

新コレクションから消える既存 AssetProvider ユニットのファイルパスを収集する(DELETE前に呼ぶ)。

private collectOrphanedFilePaths(UnitCollection $newCollection, int $eid, int|null $rvid) : array<string, Model|AssetProvider>

行削除だけでなく、同じユニットIDでファイルが差し替えられたケースや、 削除チェックにより空文字化されたケースも「古いパスが新コレクションに存在しない」として拾う。

Parameters
$newCollection : UnitCollection

保存対象の新しいユニットコレクション

$eid : int

エントリーID

$rvid : int|null

リビジョンID

Return values
array<string, Model|AssetProvider>

古いパス => そのパスを持っていたユニット

formatEagerLoadUnits()

ユニットをEagerLoad

private formatEagerLoadUnits(array<string|int, mixed> $unitsData, callable $reduce, mixed $initData) : array<string|int, mixed>
Parameters
$unitsData : array<string|int, mixed>
$reduce : callable
$initData : mixed
Return values
array<string|int, mixed>

{unit: Model[], media: []}

isReferencedByUnit()

指定パスが column / column_rev テーブルのいずれかで使われているか判定する。

private isReferencedByUnit(string $path) : bool

LIKE 検索である理由: 多言語ユニットでは複数のファイルパスが :acms_unit_delimiter: 区切りで 1 カラム(column_field_2)に詰め込まれる仕様のため、等価比較ではヒットしない。 UnitMultiLangTrait::implodeUnitDataTrait() / explodeUnitDataTrait() を参照。

副作用として以下のリスクがある:

  • インデックスが効かずフルテーブルスキャンになる(参照チェックは保存の度に走るので テーブル肥大時のパフォーマンスに影響しうる)。
  • 他のパスの部分文字列として誤マッチする可能性(例: "a.jpg" が "banana.jpg" に ヒット)。現行は uniqueString() ベースの 64 文字ハッシュパスのため実用上の 衝突はほぼないが、rawfilename 設定で任意ファイル名を許容する運用では発生しうる。 誤マッチは「削除されるべきファイルが残る」側に倒れるので安全寄り。

将来の改善方針:

  • 多言語ユニットのサポートを終了できれば等価比較に統一可能。
  • 暫定対応するなら LIKE で粗く絞り込んだ上で explodeUnitDataTrait() による PHP 側の厳密判定にフォールバックする方式が候補(案3)。
Parameters
$path : string

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

Return values
bool

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

removeUnreferencedUnitFiles()

参照チェック済みの孤児ファイルを物理削除する(INSERT後に呼ぶ)。

private removeUnreferencedUnitFiles(array<string, Model|AssetProvider$orphanedPaths) : void
Parameters
$orphanedPaths : array<string, Model|AssetProvider>

collectOrphanedFilePaths の戻り値

validateRequest()

リクエスト内のユニットデータをバリデーション

private validateRequest(array<string|int, mixed> $request) : ValidatedRequest
Parameters
$request : array<string|int, mixed>
Return values
ValidatedRequest

        
On this page

Search results