エディ・ケイ ささきです。お世話になります。
最近NC3.2.1.1の移行で正しく動作しないといったことを調べていて分かったことをお伝えします。
この情報で開発者さんでの確認・検証にてNC3.2の安定を期待したいと考えます。
(すみません。開発当事者でないのでこの修正が正しいものか判断できないものですがわたしの環境下で正しく機能したのでお知らせいたします)
NC2からのNC3への移行時
1.お知らせ情報の移行で止まる
これは、お知らせ情報で新着Pluginの情報を作成する際、不要なデータをつけてしまっています。
app/Plugin/Nc2ToNc3/ModelのNc2ToNc3Announcement.php
109~111行目の$dataにTopicという要素はいりません。
画面から登録した際、$dataの中にTopicといった要素がないことを確認し、当該行をコメントアウトすることにより移行も問題なく完了します。(お知らせ情報の新着情報も移行できていることを確認できています)
2.登録フォームの移行で止まる
これも先のお知らせ情報と同様$dataの中にTopicといった要素をつけてしまっています。
これは app/Plugin/Nc2ToNc3/Model/BehaviorのNc2ToNc3RegistrationBehavior.php
159~161行目で$data['Topic']をつけています。
確認方法は画面からの登録と移行とでdataの中を確認しています。
また登録フォームの新着情報もできています。
3.新着情報の移行で止まる
これは既に修正されていましたが、修正箇所が誤っていると思われます。
app/Plugin/Topics/ModelのTopicFramesPlugin.php ですが
69~71行目の
$check = isset($data['TopicFramesPlugin']['plugin_key'])
? $data['TopicFramesPlugin']['plugin_key']
: [];
を
$check = isset($data['TopicFrameSetting']['plugin_key'])
? $data['TopicFrameSetting']['plugin_key']
: [];
に修正されていますが、そもそも$data['TopicFrameSetting']['plugin_key']といった要素がなく、その下のチェックは何も処理されないとものとなっています。
ここの修正はわたしもどのように記載すればよいかわかりませんが、
62~67行目で$data['Plugin']['key']を$pluginKeys[]に作れば良いことはわかっています。
画面でプラグイン指定をした場合、$dataの中に存在します。
(中身は指定できる16個のPluginの名前です)
それが移行時のdataにないことが落ちる原因ですので多分app/Plugin/Nc2ToNc3/Model/Behaviorの
Nc2ToNc3TopicBehavior.phpで作成するのではと考えます。
わたしはTopicFramesPlugin.phpの指定されたプラグインの存在チェックそのものをコメント化しています。
この3点ご確認いただき正しければ修正のほど、よろしくお願いいたします。
また、新着情報のプラグイン指定について3.2になってから登録できない状態となっています。
これについては、
app/Plugin/Topics/ModelのTopicFramesPlugin.phpの
169~173行目
// foreach ($data[$this->alias] as $frame) {
// if (isset($frame['plugin_key'])) {
// $pluginKeys[] = $frame['plugin_key'];
// }
// }
を
foreach ($data[$this->alias]['plugin_key'] as $plugin_key) {
$pluginKeys[] = $plugin_key;
}
にすれば登録可能となります。
本来、Githubに参加しこれを投稿すればよいかもしれませんが、恥ずかしながら未だGithubの使用方法を存じておりません。そのうち勉強し参加できるようにしたいと思います。
ご確認のほど、よろしくお願いいたします。