Rule
in package
このクラスは、バージョンアップ時に「特別な更新処理」を行うためのクラスです。
注意点:
- アップデート処理の実行時には、新しいバージョンで追加されたクラスやメソッドは、まだ読み込まれていないため利用できません。
- そのため、このクラスでは 「オンラインアップデート機能」が追加された v2.8.0 から利用できる機能でのみ実装してください。
例 DB::next() は利用できません。v3.2.0 で追加されたため。
Table of Contents
Properties
- $fromVersion : string
- $toVersion : string
Methods
- pickLatestLastAccessRows() : array<int, array<string, mixed>>
- last_access の行一覧からユーザーごとに最新の1行を選ぶ
- update() : mixed
- 例外的なアップデートを実行
- addGroupConfig() : mixed
- フィールドグループのコンフィグを追加
- addNavigationPublish() : mixed
- navigation_publish = on を追加
- convertPrimaryKeyToSingleId() : void
- 指定テーブルの PRIMARY KEY を ID カラム単体へ張り替える(冪等・重複ガード付き)。
- filterArray() : array<string|int, mixed>
- 配列を再帰的にフィルタリング
- fixLastAccessPrimaryKey() : void
- last_access テーブルの PRIMARY KEY を復元
- safeLog() : void
- Logger ファサードを防御的に呼び出す。
- update140() : mixed
- v1.4.0以前からのアップデート コンフィグ画面用のconfigフィールドグループを追加
- update142() : mixed
- v1.4.2以前からのアップデート Api_Yahoo_* の名前変更対応
- update150() : mixed
- v1.5.0以前からのアップデート navigation_publish = on を追加
- update2100() : mixed
- v2.10.0以前からのアップデート workflowを
- update3150() : void
- v3.1.50以前からのアップデート フィールドにタイプのカラムを追加 メディアフィールドの検索用インデックスのため
- update320() : void
- v3.2.0以前からのアップデート - カスタムユニットのフィールドデータをcolumnテーブルからフィールドテーブルに移動 - column_align カラムに存在する非表示を acms_column, acms_column_rev テーブルの column_status カラムのデータとして扱えるようにアップデート時にデータコンバートを行う
- update321() : void
- v3.1.55以前からのアップデート
- update3218() : void
- v3.2.18以前からのアップデート エントリーインポートのバグにより壊れたカスタムユニットのメディアフィールドの値を正しい値に修正する
- update3225() : void
- v3.2.25以前からのアップデート
- updateCustomUnitData() : void
- v3.2.0以前からのアップデート カスタムユニットのフィールドデータをcolumnテーブルからフィールドテーブルに移動
- updateUnitAlignToStatus() : void
- v3.2.0以前からのアップデート column_align カラムに存在する非表示を acms_column, acms_column_rev テーブルの column_status カラムのデータとして扱えるようにアップデート時にデータコンバートを行う 配置は center に変更する
Properties
$fromVersion
protected
string
$fromVersion
$toVersion
protected
string
$toVersion
Methods
pickLatestLastAccessRows()
last_access の行一覧からユーザーごとに最新の1行を選ぶ
public
static pickLatestLastAccessRows(array<int, array<string, mixed>> $rows) : array<int, array<string, mixed>>
Parameters
- $rows : array<int, array<string, mixed>>
Return values
array<int, array<string, mixed>>update()
例外的なアップデートを実行
public
update(string $fromVersion, string $toVersion) : mixed
Parameters
- $fromVersion : string
- $toVersion : string
addGroupConfig()
フィールドグループのコンフィグを追加
protected
addGroupConfig(string $group, array<string|int, mixed> $vals, null|int $bid[, null|int $rid = null ][, null|int $mid = null ]) : mixed
Parameters
- $group : string
- $vals : array<string|int, mixed>
- $bid : null|int
- $rid : null|int = null
- $mid : null|int = null
addNavigationPublish()
navigation_publish = on を追加
protected
addNavigationPublish(int $bid[, null|int $rid = null ][, null|int $mid = null ]) : mixed
Parameters
- $bid : int
- $rid : null|int = null
- $mid : null|int = null
convertPrimaryKeyToSingleId()
指定テーブルの PRIMARY KEY を ID カラム単体へ張り替える(冪等・重複ガード付き)。
private
convertPrimaryKeyToSingleId(PrimaryKey $primaryKey, string $table, string $idColumn) : void
すでに ID カラム単体になっていれば何もしない。重複 ID が残っているテーブルは、 PRIMARY KEY 追加が失敗してアップグレードを止めてしまわないよう、スキップして警告ログを残す。
Parameters
- $primaryKey : PrimaryKey
- $table : string
-
プレフィックス無しのテーブル名
- $idColumn : string
-
ID カラム名
filterArray()
配列を再帰的にフィルタリング
private
filterArray(array<string|int, mixed> $data) : array<string|int, mixed>
Parameters
- $data : array<string|int, mixed>
Return values
array<string|int, mixed>fixLastAccessPrimaryKey()
last_access テーブルの PRIMARY KEY を復元
private
fixLastAccessPrimaryKey() : void
last_access への書き込みは INSERT ... ON DUPLICATE KEY UPDATE で行われており、 「1ユーザー1行」の維持を PRIMARY KEY (last_access_uid) に依存している。 PRIMARY KEY を失った環境では POST リクエストごとに同一ユーザーの行が増え続け、 last_access を結合するユーザー一覧に同一ユーザーが重複表示される。 重複行をユーザーごとに最新の1行へ整理したうえで PRIMARY KEY を張り直す。
safeLog()
Logger ファサードを防御的に呼び出す。
private
safeLog(string $level, string $message[, array<string, mixed> $context = [] ]) : void
アップデート処理はアップグレード元(旧バージョン)のアプリ文脈で実行されることがあり、 後発で追加された Logger サービスがコンテナに未登録の場合がある。ログ出力の失敗が アップグレード自体を止めないよう、クラス存在確認と例外捕捉で保護する。
Parameters
- $level : string
-
'warning' または 'info'
- $message : string
- $context : array<string, mixed> = []
update140()
v1.4.0以前からのアップデート コンフィグ画面用のconfigフィールドグループを追加
private
update140() : mixed
update142()
v1.4.2以前からのアップデート Api_Yahoo_* の名前変更対応
private
update142() : mixed
update150()
v1.5.0以前からのアップデート navigation_publish = on を追加
private
update150() : mixed
update2100()
v2.10.0以前からのアップデート workflowを
private
update2100() : mixed
update3150()
v3.1.50以前からのアップデート フィールドにタイプのカラムを追加 メディアフィールドの検索用インデックスのため
private
update3150() : void
update320()
v3.2.0以前からのアップデート - カスタムユニットのフィールドデータをcolumnテーブルからフィールドテーブルに移動 - column_align カラムに存在する非表示を acms_column, acms_column_rev テーブルの column_status カラムのデータとして扱えるようにアップデート時にデータコンバートを行う
private
update320() : void
update321()
v3.1.55以前からのアップデート
private
update321() : void
監査ログの秘匿化項目をマスク化
update3218()
v3.2.18以前からのアップデート エントリーインポートのバグにより壊れたカスタムユニットのメディアフィールドの値を正しい値に修正する
private
update3218() : void
update3225()
v3.2.25以前からのアップデート
private
update3225() : void
シーケンスで採番するテーブルのうち、ID カラム単体の一意制約を持たないテーブルの PRIMARY KEY を「ID カラム単体」へ張り替える。これにより、移設時のシーケンス未同期などで 同一 ID が重複採番される事故を DB レベルで防止する。
旧来の複合キーは db.index.yaml の定義に従って別インデックスとして自動追加されるため、 本処理は updateIndexs() では実行できない PRIMARY KEY の張り替えのみを担当する。 schedule は 1 件が年月ごとに複数行を持つ仕様のため対象外。
updateCustomUnitData()
v3.2.0以前からのアップデート カスタムユニットのフィールドデータをcolumnテーブルからフィールドテーブルに移動
private
updateCustomUnitData() : void
updateUnitAlignToStatus()
v3.2.0以前からのアップデート column_align カラムに存在する非表示を acms_column, acms_column_rev テーブルの column_status カラムのデータとして扱えるようにアップデート時にデータコンバートを行う 配置は center に変更する
private
updateUnitAlignToStatus() : void