このサイトは株式会社オープンソース・ワークショップの旧サイトです。
新サイトを参照していただけますようお願いいたします。
https://opensource-workshop.jp/
お知らせ
NetCommons開発TIPS
NetCommons2 新着情報のバグ
こんにちは。
株式会社オープンソース・ワークショップの永原です。
NetCommons2 新着情報のバグを見つけたので、とりあえずここにメモ。
発現する条件は以下
- 新着情報を配置している。
- 新着情報に日誌を表示している。(他のモジュールでも起こり得そう)
- 日誌をブロック移動した。
この時、移動した日誌ブロックの記事をクリックすると、
"入力値が不正です。不正にアクセスされた可能性があります。"
とエラーになって、表示できないことがあります。
これは、NetCommons2 の新着情報モジュールのバグです。
- ログインしていること。
- ブロック移動前に新着から該当記事にリンクすること。
- この時点で、そのユーザが該当記事を見たという履歴ができる。
- 履歴データはroom_id を持っていない。
- ブロックを移動する。
- 再び新着をクリック。
- 履歴があるかどうかを判定する際、room_id も含めて確認するので、履歴なしと判定。
- 履歴をINSERTしようとするが、データベースのキーはroom_id がないので、重複エラーになる。
ということで、以下のように修正。
webapp/modules/whatsnew/components/Action.class.php
function setRead() { $_user_id = $this->_session->getParameter("_user_id"); if (empty($_user_id)) { return true; } $whatsnew = $this->_request->getParameter("whatsnew"); if (empty($whatsnew)) { return false; } // 新着の既読確認に romm_id が含まれていたので、削除。by nagahara@opensource-workshop.jp // リンク先のブロックをルーム移動した際、エラーになる。 // エラーは、ここで romm_id を含んで既読確認しているのに、既読データのINSERT は romm_id なしで行おうとするため。 $params = array( "whatsnew_id"=>$whatsnew["whatsnew_id"], "user_id" => $_user_id ); /* $params = array( "whatsnew_id"=>$whatsnew["whatsnew_id"], "user_id" => $_user_id, 'room_id' => $whatsnew['room_id'] ); */