Project

General

Profile

Bug(バグ) #3344

opActivityQueryBuilder で特定のメソッドで配列を引き数に渡した場合にエラーが発生する

Added by Yuya Watanabe over 6 years ago.

Status:
New(新規)
Priority:
Normal(通常)
Assignee:
-
Target version:
-
Start date:
2013-05-07
Due date:
% Done:

0%

3.6 で発生するか:
Unknown (未調査)
3.8 で発生するか:
Unknown (未調査)

Description

概要

opActivityQueryBuilder で特定のメソッドで配列を引き数に渡した場合にエラーが発生する.

例えば下記のようなコードが考えられる. setViewerId() または includeMEmber() で配列を渡す場合となる.下記コードは両方共配列を指定している.

$builder = opActivityQueryBuilder::create();
$builder->setViewerId(array('1', '2'));
$builder->includeMember(array('1', '2'));
$builder->buildQuery()->execute();

エラー

SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens

この引き数の指定が想定されているかどうかは考慮していないため,この使い方が正しくない場合はコメントでその旨を示すか,コードから引き数が想定できる実装に変更することが望ましい.

原因

下記のように buildMemberQuery() の第二引数の $memberId は配列であることが許容されているように記述されているが,実際にここに配列を追加できるパターンでは 211 行目の $viewerId および $id が配列である必要があり,ここで配列を渡した場合にエラーが発生する.

lib/util/opActivityQueryBuilder.class.php
175   protected function buildMemberQuery($query, $memberId = null, $publicFlag = ActivityDataTable::PUBLIC_FLAG_SNS)
176   {
177     if (is_array($memberId))
178     {
179       $query->andWhereIn('a.member_id', $memberId);
180     }
lib/util/opActivityQueryBuilder.class.php
211         $relation = Doctrine::getTable('MemberRelationship')->retrieveByFromAndTo($this->viewerId, $id);

Related issues

Related to OpenPNE 3 - Bug(バグ) #3273: activity/search.json?member_id=? で特定メンバーのアクティビティを取得すると500エラーとなる Fixed(完了) 2012-12-06

Also available in: Atom PDF