NC3.2.1.1の移行でわかったこと

投稿日時: 2018/12/09 EddyK

エディ・ケイ ささきです。お世話になります。

最近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の使用方法を存じておりません。そのうち勉強し参加できるようにしたいと思います。

ご確認のほど、よろしくお願いいたします。

Re: NC3.2.1.1の移行でわかったこと

投稿日時: 2018/12/10 osws 牟田口 満

エディ・ケイ ささきさん

 

情報提供ありがとうございました。

オープンソース・ワークショップの牟田口です。

一部のみ返信します。

 

> また、新着情報のプラグイン指定について3.2になってから登録できない状態となっています。

 

issueにあげて対応しました。

https://github.com/NetCommons3/NetCommons3/issues/1393

 

とりあえずここまで。

 

エディ・ケイ ささきです。お世話になります。

最近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の使用方法を存じておりません。そのうち勉強し参加できるようにしたいと思います。

ご確認のほど、よろしくお願いいたします。

Re3: NC3.2.1.1の移行でわかったこと

投稿日時: 2018/12/10 osws 牟田口 満

ささきさん

 

牟田口です。

 

> githubを使えたらいいのですが、未だ理解出来ていません。すみません。

いえいえ、この掲示板に情報頂けるだけでも、大変助かってます。

 

> ご対応、よろしくお願いいたします。

はいにっこり

 

牟田口さん

ささきです。いつもご対応ありがとうございます。

githubを使えたらいいのですが、未だ理解出来ていません。すみません。

ご対応、よろしくお願いいたします。

Re: NC3.2.1.1の移行でわかったこと

投稿日時: 2018/12/15 EddyK

エディ・ケイ ささきです。お世話になります。

以下の件、ご確認のほどお願いいたします。

画面で新着表示するプラグインを指定できますが、以下の修正では正しいリクエストかをチェックすることができなくなっています。

開発ツールを使用し指定したプラグインのvalue値を変更しリクエストしてもエラーとなりません。

修正前のものは、リクエストエラーとなり正しい動作と思われます。

本当に開発担当者でもないので、このチェックの目的が何なのかを理解していないかもしれませんが、今一度ご確認のほど、よろしくお願いいたします。

本当にお忙しいのは理解しておりますが、ご検討のほど、よろしくお願いいたします。

 これは既に修正されていましたが、修正箇所が誤っていると思われます。

 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']といった要素がなく、その下のチェックは何も処理されないとものとなっています。

Re2: NC3.2.1.1の移行でわかったこと【修正方法?】

投稿日時: 2018/12/15 EddyK

エディ・ケイ ささきです。お世話になります。

修正方法ですが、自分なりの記述なので、もっと良い方法があると思うのですが、

/app/Plugin/Nc2ToNc3/Model/Nc2ToNc3Topic.php の 86行目のforeachの前に

$Plugin = array();
$key = array('key'=>'announcements');
array_push($Plugin, $key);
$key = array('key'=>'bbses');
array_push($Plugin, $key);
$key = array('key'=>'blogs');
array_push($Plugin, $key);
$key = array('key'=>'cabinets');
array_push($Plugin, $key);
$key = array('key'=>'calendars');
array_push($Plugin, $key);
$key = array('key'=>'circular_notices');
array_push($Plugin, $key);
$key = array('key'=>'faqs');
array_push($Plugin, $key);
$key = array('key'=>'links');
array_push($Plugin, $key);
$key = array('key'=>'multidatabases');
array_push($Plugin, $key);
$key = array('key'=>'questionnaires');
array_push($Plugin, $key);
$key = array('key'=>'quizzes');
array_push($Plugin, $key);
$key = array('key'=>'registrations');
array_push($Plugin, $key);
$key = array('key'=>'reservations');
array_push($Plugin, $key);
$key = array('key'=>'tasks');
array_push($Plugin, $key);
$key = array('key'=>'videos');
array_push($Plugin, $key);
$key = array('key'=>'rss_readers');
array_push($Plugin, $key);

を追加し、94行目あたりに89行目で作られた$dataに[’Plugin’]として

$data['Plugin'] = $Plugin;

要素を追加してやればよいと思います。

本当に記述方法はもっと良い方法があると思うのですが、お許しください。

ご確認のほど、よろしくお願いいたします。