Bug(バグ) #375
コミュニティに全く参加していない場合に最新情報の取得で全コミュニティを対象としてしまう
開始日:
2009-12-21
期日:
進捗率:
100%
3.6 で発生するか:
Unknown (未調査)
[QA]バグ通知済:
いいえ
3.8 で発生するか:
Unknown (未調査)
opCommunityTopicPlugin 絞込条件:
説明
コミュニティに全く参加していない場合に
トピック/イベントの最新情報の取得で全コミュニティを対象にしてしまうため、
ホーム画面の表示に時間がかかっています。
Doctrine::getTable('Community')->getIdsByMemberId($memberId);
このメソッドはメンバーが参加しているコミュニティを返しますが、
参加数が0であった場合にarray()を返すようになっています。
->whereIn('community_id', $communityIds)
その配列で whereIn を行っているので、
配列の要素数が0であった場合に全コミュニティを対象としてしまっています。
Community::getIdsByMemberId メソッドを使用している個所は以下の通りです。
lib/model/doctrine/PluginCommunityEventTable.class.php 52: $communityIds = Doctrine::getTable('Community')->getIdsByMemberId($memberId); 67: $communityIds = Doctrine::getTable('Community')->getIdsByMemberId($memberId); lib/model/doctrine/PluginCommunityTopicTable.class.php 52: $communityIds = Doctrine::getTable('Community')->getIdsByMemberId($memberId); 101: $communityIds = Doctrine::getTable('Community')->getIdsByMemberId($memberId);対象個所:
- コミュニティ最新書き込み
- コミュニティ最新イベント
対処としては、配列の要素数が0であった場合に配列に0を挿入する事で回避できると思います。
関係しているリビジョン
fixed some methods that uses CommunityTable::getIdsByMemberId() for adding dummy condition for empty IN clause (fixes #375)
履歴
#1 Kousuke Ebihara がほぼ14年前に更新
- 対象バージョン を 0.9.7 にセット
#2 Kousuke Ebihara がほぼ14年前に更新
- ステータス を New(新規) から Accepted(着手) に変更
- 担当者 を Kousuke Ebihara にセット
#3 Kousuke Ebihara がほぼ14年前に更新
- ステータス を Accepted(着手) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
更新履歴 r13492 で適用されました。
#4 Kousuke Ebihara がほぼ14年前に更新
- ステータス を Pending Review(レビュー待ち) から Fixed(完了) に変更
- 進捗率 を 50 から 100 に変更