Bug(バグ) #1757
message と message_send_list のレコードの登録順が異なっている場合にメッセージが閲覧できない
開始日:
2010-11-04
期日:
進捗率:
100%
3.6 で発生するか:
Yes
[QA]バグ通知済:
はい
3.8 で発生するか:
Unknown (未調査)
説明
不具合の理由¶
- 以下テンプレートのリンク生成関数で、パラメータにmessege_idを渡すところにsend_message_idが渡されている
- plugins/opMessagePlugin/apps/mobile_frontend/modules/message/templates/_receiveListRecord.php
- 誤
<?php echo sprintf('%s (%s)', link_to(op_truncate($message->getSubject(), 28), '@readReceiveMessage?id='. $message->getId()), ($message->getSendFrom()->getId()) ? $message->getSendFrom()->getName() : '' ); ?>
- 正
<?php echo sprintf('%s (%s)', link_to(op_truncate($message->getSubject(), 28), '@readReceiveMessage?id='. $message->getMessageId()), ($message->getSendFrom()->getId()) ? $message->getSendFrom()->getName() : ''); ?>
- 生成されるリンクに誤りがあったが、全レコードで不具合にならない理由は、messege_id と send_message_id は基本的に同じ値である為、エラーとなっていない
- メッセージ作成処理が重なった、もしくはDBが高負荷などの理由で、message と message_send_list のレコードの登録順が異なっている場合(messege_id と send_message_id が異なっている場合)にidがずれ、エラーとなる。
- 誤
- plugins/opMessagePlugin/apps/mobile_frontend/modules/message/templates/_receiveListRecord.php
修正パッチ¶
Index: plugins/opMessagePlugin/apps/mobile_frontend/modules/message/templates/_receiveListRecord.php =================================================================== --- plugins/opMessagePlugin/apps/mobile_frontend/modules/message/templates/_receiveListRecord.php +++ plugins/opMessagePlugin/apps/mobile_frontend/modules/message/templates/_receiveListRecord.php @@ -7,6 +7,6 @@ <font color="#FF0000">(<?php echo __('Unopened') ?>)</font> <?php endif; ?><br> <?php echo sprintf('%s (%s)', - link_to(op_truncate($message->getSubject(), 28), '@readReceiveMessage?id='. $message->getId()), + link_to(op_truncate($message->getSubject(), 28), '@readReceiveMessage?id='. $message->getMessageId()), ($message->getSendFrom()->getId()) ? $message->getSendFrom()->getName() : '' ); ?>
※原因は異なりますが(携帯版、PC版両方で)
messageのidとmessage_send_listのidが異なる状態で
ゴミ箱に捨てた受信メッセージを閲覧しようとするとエラーが発生する
関連するチケット
関係しているリビジョン
fixed invalid reference id (refs #1757)
履歴
#2 Kousuke Ebihara が13年以上前に更新
- 担当者 を削除 (
Kousuke Ebihara)
#3 Kousuke Ebihara が13年以上前に更新
- 優先度 を Urgent(急いで) から High(高め) に変更
#4 Kousuke Ebihara が13年以上前に更新
- 優先度 を High(高め) から Urgent(急いで) に変更
#5 Kousuke Ebihara が13年以上前に更新
- [QA]バグ通知済 を いいえ にセット
#6 Kousuke Ebihara が13年以上前に更新
- [QA]バグ通知済 を いいえ から はい に変更
#7 Shingo Yamada がほぼ13年前に更新
- 担当者 を Maki Takahashi にセット
#8 Maki Takahashi がほぼ13年前に更新
- ステータス を New(新規) から Accepted(着手) に変更
#9 Maki Takahashi がほぼ13年前に更新
- ステータス を Accepted(着手) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
https://github.com/martini2002jp/opMessagePlugin/commit/591abf509a8da914aa5ba09b77915237d1f45cbe にて修正いたしました。
報告いただいたモバイル版での受信メッセージの確認の他、ゴミ箱に捨てられた受信メッセージの表示でも同様の現象が起きていました(PC/モバイル両方)。
messageのidとmessage_send_listのidが異なる状態で、
受信、送信、下書き、ゴミ箱(送信⇒ゴミ/受信⇒ゴミ)のそれぞれのメッセージ閲覧が正常にできることを
モバイル、PC版それぞれで確認いたしました。
レビューよろしくお願いいたします。
#10 Shingo Yamada がほぼ13年前に更新
- 対象バージョン を 0.9.1 から 0.9.2 に変更
#11 Naoya Tozuka がほぼ13年前に更新
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更
修正点確認しました。ロジック的にもコーディング規約的にも問題ありませんのでレビューOKとします。
【メモ】(SendMessageDataクラスだけでなく)MessageSendListクラスのオブジェクトも $message という名前の変数に格納する実装は変数名からオブジェクトの種類が類推しにくいため、将来的にバグの温床となりえます。機会がありましたらリファクタリングしてみて下さい。
#12 Yuma Sakata が12年以上前に更新
テストOKです。
#13 Yuma Sakata が12年以上前に更新
- ステータス を Pending Testing(テスト待ち) から Fixed(完了) に変更
- 進捗率 を 70 から 100 に変更