PowerCMS Xのオブジェクトのリビジョンの作成と差し替えに関する公式ドキュメントの補完
なんか今までぼんやりとしか把握してなかったので、調べる。
はじめに
リビジョン機能については、公式には次の通りある。
リビジョン機能は、オブジェクトの保存時にデータを複製してバックアップ、もしくは明示的に修正版を作成する機能です。
その他、前述の公式ドキュメントに機能の詳細があるが、ここでは公式では言及されてない部分、特にリビジョン作成および差し替えを行った際の、CMSのDB上での関連するデータの構成や変化を見てみる。
リビジョンの種類
次の種類がある。
自動保存
オブジェクトの編集画面などから保存を行った際に、自動で作成されるバックアップ的な役割のもの。
※具体的にどういう保存の動作が対象かは前述公式に記載がある。
リビジョン
オブジェクトの内容を差し替える目的で作成されるもの。
オブジェクトの編集画面の「リビジョンとして保存」ボタン押下で作成できる。
自動リビジョン作成時に保存されるデータの内容
オブジェクトの編集画面よりの保存時は、対象のオブジェクトの編集画面の初期状態(=画面を開いたばかりで編集する前の状態)の入力内容が、リビジョンとして保存される。
※他の動作での自動リビジョン作成時においても、保存されるデータの内容は上述と同様と思われるが、試せてない:p
リビジョンは何処にどう保存されるのか
黒い画面から対象CMSのあるマシンにログインして、呪いの呪文を打ち込んで確認したところ、次のような結果を得た。
なお今回は、entry(=記事)モデルの既存オブジェクト(以降、記事A)に対して、リビジョンを登録した上で確認している。
mysql> select entry_id,entry_title,entry_status,entry_rev_type,entry_rev_changed,entry_rev_object_id from mt_entry where entry_workspace_id=1;
+----------+----------------------+--------------+----------------+--------------------+---------------------+ | entry_id | entry_title | entry_status | entry_rev_type | entry_rev_changed | entry_rev_object_id | +----------+----------------------+--------------+----------------+--------------------+---------------------+ | 2 | [記事A] | 4 | 0 | | 0 | | 4 | [記事Aの自動保存#1] | 0 | 1 | text, block_edit | 2 | | 5 | [記事Aの自動保存#2] | 0 | 1 | text | 2 | | 7 | [記事Aのリビジョン#M]| 0 | 2 | | 2 | | 8 | [記事Aのリビジョン#N]| 0 | 2 | | 2 | +----------+----------------------+--------------+----------------+--------------------+---------------------+
記事Aのリビジョンは、mt_entryテーブルに記事Aと同様に登録されている。
リビジョンの場合、entry_status(=ステータス)は0である事が分かる。
※なお、記事が下書きの場合も0なので、ここでリビジョンか否かの判断は出来ない。
entry_rev_typeの値の種類は次のように解釈できる。
- 1 -> 自動保存
- 2 -> リビジョン
entry_rev_changed では、どのカラムに対して入力内容の変更があったかが示されている。
entry_rev_object_id は、リビジョンがどのオブジェクトIDに対してのものかを示している。
あと前述のテーブルには出さなかったが、entry_rev_diffというカラムがあり、これは更新前とのdiff差分がテキスト形式で格納されている。この内容は、CMS管理画面のリビジョンの一覧よりも確認できる。
差し替え(リビジョンのマスタへの適用)時の動作
リビジョンの編集画面下端の「マスタに適用」ボタン押下で、リビジョンの内容でマスタ(=元の記事)の内容が上書きされる。
またこの時、マスタのオブジェクトIDは保持される。
更に差し替えで利用したリビジョンのオブジェクトの内容は、マスタに適用される前の元記事の内容となり、リビジョンの種類も「自動保存」に代わる。
関連するタグ
関連するタグは現在ありません。