Bug(バグ) #578
受信しているはずのメッセージが受信メッセージに表示されない。
開始日:
2010-02-05
期日:
進捗率:
100%
3.6 で発生するか:
Unknown (未調査)
[QA]バグ通知済:
いいえ
3.8 で発生するか:
Unknown (未調査)
説明
以下の個所で is_send が true の場合に表示するようにしていますが、正しい動作になっていません。
plugins/opMessagePlugin/lib/model/doctrine/PluginMessageSendListTable.class.php 28 ->andWhere('message_id IN (SELECT id FROM SendMessageData WHERE is_send = ?)', true);
以下のように修正するのが良いのではないかと思います。
->andWhere('SendMessageData.is_send = ?', true);
関係しているリビジョン
メッセージidが一致していない場合に受信箱にメッセージが表示されない問題を修正 (fixes #578)
履歴
#1 Shinichi Urabe が約14年前に更新
高橋さんに確認しました。
Doctrine化されている9系のバグについては弊社側で責任をもって対応していくとの方針で確認しましたので対応をお願いします。
to 長澤さん
#2 Masato Nagasawa が約14年前に更新
上記の修正ではJOINしていまうため修正方針を変更します。
そもそも表示できなくなる原因は、サブクエリの取得で明示的にテーブル名を指定してないのが原因でした。
以下が発行されるSQLです。
SELECT COUNT(*) AS num_results FROM (SELECT m.id FROM message_send_list m WHERE m.member_id = '1' AND m.is_deleted = 0 AND m.message_id IN (SELECT m.id AS m__id FROM message m2 WHERE (m2.is_send = 1)) GROUP BY m.id) dctrn_count_query
この SQL では SELECT で返される id が常に messe_send_list の id になってしまいます。
修正後のコード:
->andWhere('message_id IN (SELECT m2.id FROM SendMessageData m2 WHERE m2.is_send = ?)', true);
#3 Masato Nagasawa が約14年前に更新
- 進捗率 を 0 から 50 に変更
以下のリビジョンで修正しました。
http://trac.openpne.jp/changeset/13340
#4 Shinichi Urabe が約14年前に更新
- プロジェクト を OpenPNE3 Plugins から opMessagePlugin に変更
#5 Shinichi Urabe が約14年前に更新
- ステータス を New(新規) から Pending Review(レビュー待ち) に変更
- 担当者 を Masato Nagasawa にセット
#7 Shinichi Urabe が約14年前に更新
- 対象バージョン を 0.9.0.3 にセット
#8 Masato Nagasawa が約14年前に更新
- ステータス を Pending Testing(テスト待ち) から Pending Review(レビュー待ち) に変更
更新履歴r13340で適用されました。
#9 Shinichi Urabe が約14年前に更新
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
#10 Hiroki Mogi が約14年前に更新
- ステータス を Pending Testing(テスト待ち) から Fixed(完了) に変更
- 進捗率 を 50 から 100 に変更
テストを実施しました。問題ありませんでした。