操作
Backport(バックポート) #3331
完了Bug(バグ) #3273: activity/search.json?member_id=? で特定メンバーのアクティビティを取得すると500エラーとなる
activity/search.json?member_id=? で特定メンバーのアクティビティを取得すると500エラーとなる
開始日:
2012-12-06
期日:
進捗率:
100%
予定工数:
説明
現象¶
MySQL を使用している SNS で、API を使用して http://sns.example.com/api.php/activity/search.json?member_id=1 のように特定メンバーのアクティビティを取得しようとすると Internal Server Error が返ってしまう場合がある。
原因¶
opActivityQueryBuilder::buildMemberQuery() 内で andWhereIn メソッドを使用している。ここで生成されるクエリはサブクエリとして使用されるため #3135 で報告されているように不正なクエリが生成されてしまう。
protected function buildMemberQuery($query, $memberId = null, $publicFlag = ActivityDataTable::PUBLIC_FLAG_SNS)
{
if (is_array($memberId))
{
$query->andWhereIn('a.member_id', $memberId);
}
elseif ($memberId instanceof Doctrine_Query)
{
$query->andWhere('a.member_id IN ('.$memberId->getDql().')');
}
elseif (is_scalar($memberId))
{
$query->andWhere('a.member_id = ?', $memberId);
}
$query->andWhereIn('a.public_flag', $this->table->getViewablePublicFlags($publicFlag));
return $query;
}
修正内容¶
opActivityQueryBuilder::buildMemberQuery() メソッドに #3135 の問題を回避する修正を施す
kaoru n さんが11年以上前に更新
- ステータス を Accepted(着手) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
https://github.com/openpne/OpenPNE3/pull/78
プルリクエストしました。
Yuya Watanabe さんが11年以上前に更新
- ステータス を Pending Review(レビュー待ち) から Rejected(差し戻し) に変更
親チケットを差し戻したので同様の理由により本チケットも差し戻しを行います.
kaoru n さんが5年以上前に更新
- ステータス を Rejected(差し戻し) から Accepted(着手) に変更
- 進捗率 を 50 から 0 に変更
http://redmine.openpne.jp/issues/3273#note-12 に記載の回避のための修正を行うため、
https://github.com/openpne/OpenPNE3/pull/78
は close します。
kaoru n さんが5年以上前に更新
- ステータス を Accepted(着手) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
https://github.com/openpne/OpenPNE3/pull/519
にてプルリクエストを行いました
Rimpei Ogawa さんが5年以上前に更新
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更
レビューOKです。
操作