Import
in package
コンフィグセット単体のインポート処理。フォーム/モジュールのインポートと同様に専用クラスとして用意する。
config_set には form_code のような自然キーが無いため、既存セットとの同一性判定はできない。 そのため常に新規の config_set として作成する(既存セットへの上書きは行わない)。
config_set_scope は常に 'local' へ強制する。取り込み元が 'global' のままだと、 インポート先のブログツリー全体に意図せず影響するため。
config_value がメディアIDを参照する既知のキー(ImportTrait と同じ一覧)は、インポート先 ブログに対応するメディアが存在するとは限らず、単純な持ち込みは誤った参照を生む可能性があるため、 値をクリアして警告として記録する(安全側のデフォルト。CMS-7831)。
カテゴリーIDを参照するキーは、Export が category_id を安定した自然キーである category_code に変換してエクスポートしているため、インポート先ブログ内で同じ category_code を 持つカテゴリーを探し、一意に見つかればその category_id へ解決する(ブログを跨いだ移動でも カテゴリー参照を維持できる)。該当が無い・複数該当して一意に決まらない場合は、従来と同様に 値をクリアして警告として記録する。
ルール別上書き設定(config_rule_id が設定されている config 行)は Export が エクスポート対象外にしているため、このクラスが受け取る YAML にはそもそも含まれない。 rule_id はブログ間で値の互換性が無く、かつ rule_name にも一意性の保証が無い (同名の別ルールを複数作成できる)ため、ルール名による自動突合は意図しないルールへの 誤った紐付けを招く可能性がある。ルールの表示条件自体もインポート先で同じ意味を持つとは 限らないため、ルール別上書きの移送は行わない(CMS-7831)。
認可(config_set 管理権限)と CSRF はハンドラ側の責務とする。
Table of Contents
Constants
- CATEGORY_ID_CONFIG_KEYS = ['entry_edit_category_default', 'entry_edit_category_filter', 'entry_edit_sub_category_filter', 'static_page_cid', 'static_archive_cid']
- カテゴリーIDを値として保持する config キー。
- MEDIA_ID_CONFIG_KEYS = ['media_banner_mid', 'navigation_media']
- メディアIDを値として保持する config キー。
Properties
- $clearedKeys : array<int, string>
- $repository : RepositoryInterface
Methods
- __construct() : mixed
- getClearedKeys() : array<int, string>
- インポート時にクリアされた(安全側で値を捨てた)config_key の一覧を取得する
- run() : int
- コンフィグセットを YAML(パース済み配列)からインポートし、config_set_id を返す
- extractConfigSetRecord() : array<string, mixed>
- insertConfigRow() : void
- replaceConfigSet() : int
- 既存のコンフィグセットを置き換える準備をする(meta更新 + 既存configの全削除)。 対象が存在しない、$blogId と異なるブログに属する、または config_set_type が インポートするYAMLと異なる場合は例外を投げる(type の異なるセットへの誤った上書きを防ぐ)。
- resolveCategoryConfigValue() : string
- カテゴリー参照キーの config_value(Export が変換した category_code、またはコード変換に 失敗して残った旧 category_id)を、インポート先ブログの category_id へ解決する。 解決できなければクリアして警告として記録する(安全側のデフォルト)。
Constants
CATEGORY_ID_CONFIG_KEYS
カテゴリーIDを値として保持する config キー。
private
array<string|int, string>
CATEGORY_ID_CONFIG_KEYS
= ['entry_edit_category_default', 'entry_edit_category_filter', 'entry_edit_sub_category_filter', 'static_page_cid', 'static_archive_cid']
MEDIA_ID_CONFIG_KEYS
メディアIDを値として保持する config キー。
private
array<string|int, string>
MEDIA_ID_CONFIG_KEYS
= ['media_banner_mid', 'navigation_media']
Properties
$clearedKeys
private
array<int, string>
$clearedKeys
= []
$repository
private
RepositoryInterface
$repository
Methods
__construct()
public
__construct([RepositoryInterface|null $repository = null ]) : mixed
Parameters
- $repository : RepositoryInterface|null = null
getClearedKeys()
インポート時にクリアされた(安全側で値を捨てた)config_key の一覧を取得する
public
getClearedKeys() : array<int, string>
Return values
array<int, string>run()
コンフィグセットを YAML(パース済み配列)からインポートし、config_set_id を返す
public
run(int $blogId, array<string, mixed> $yaml[, int|null $replaceConfigSetId = null ]) : int
$replaceConfigSetId を指定すると、新規作成の代わりに既存のコンフィグセットを置き換える (名前・説明を更新し、属する config を全削除してから再投入する)。置き換え対象の config_set_type / config_set_scope は変更しない。対象が存在しない、または $blogId と異なるブログに属する場合は例外を投げる(CMS-7831 追加要件)。
Parameters
- $blogId : int
- $yaml : array<string, mixed>
- $replaceConfigSetId : int|null = null
-
指定すると新規作成せずこのIDのセットを置き換える
Tags
Return values
int —作成または置き換えた config_set_id
extractConfigSetRecord()
private
extractConfigSetRecord(array<string, mixed> $yaml) : array<string, mixed>
Parameters
- $yaml : array<string, mixed>
Return values
array<string, mixed>insertConfigRow()
private
insertConfigRow(int $newSetId, int $blogId, array<string, mixed> $record) : void
Parameters
- $newSetId : int
- $blogId : int
- $record : array<string, mixed>
replaceConfigSet()
既存のコンフィグセットを置き換える準備をする(meta更新 + 既存configの全削除)。 対象が存在しない、$blogId と異なるブログに属する、または config_set_type が インポートするYAMLと異なる場合は例外を投げる(type の異なるセットへの誤った上書きを防ぐ)。
private
replaceConfigSet(int $replaceConfigSetId, int $blogId, array{config_set_name: string, config_set_description: string} $meta, string|null $configSetType) : int
Parameters
- $replaceConfigSetId : int
- $blogId : int
- $meta : array{config_set_name: string, config_set_description: string}
- $configSetType : string|null
Return values
intresolveCategoryConfigValue()
カテゴリー参照キーの config_value(Export が変換した category_code、またはコード変換に 失敗して残った旧 category_id)を、インポート先ブログの category_id へ解決する。 解決できなければクリアして警告として記録する(安全側のデフォルト)。
private
resolveCategoryConfigValue(int $blogId, string $key, string $categoryCode) : string
Parameters
- $blogId : int
- $key : string
- $categoryCode : string