ここの情報は古いです。ご理解頂いた上でお取り扱いください。

Opened 13 years ago

Closed 13 years ago

#2411 closed defect (fixed)

管理画面のメンバーリストでポイント0の一部メンバーが絞り込みで表示されない

Reported by: ogawa Owned by: ebihara
Priority: minor Milestone: OpenPNE2.12.3
Component: pne-admin Version: 2.10.x & 2.12.x & 2.14.x
Keywords: OpenPNE2.10.9 OpenPNE2.13.2 Cc:

Description (last modified by ebihara)

■現象

管理画面のメンバーリストでポイント0の一部メンバーが絞り込みで表示されない。

■原因

c_member_profileにPNE_POINTのデータがないメンバーがいるのが原因と考えられる。

■修正内容

c_member_profileにPNE_POINTのデータがないメンバー、PNE_POINT の値が 0 のメンバーを区別せずに絞り込みで表示するように修正する(PNE_POINTのデータがないメンバーのポイントは0であると見なして処理する)。

■関連情報

Change History (18)

comment:1 Changed 13 years ago by ogawa

Version: 2.10.x & 2.11.x2.10.x & 2.12.x & 2.13.x

comment:2 Changed 13 years ago by kiwa

Keywords: OpenPNE2.10.7 OpenPNE2.13.2 added
Milestone: OpenPNE2.10.7OpenPNE2.12.1

comment:3 Changed 13 years ago by kiwa

Keywords: OpenPNE2.10.8 added; OpenPNE2.10.7 removed
Milestone: OpenPNE2.12.1OpenPNE2.12.2

見送ります

comment:4 Changed 13 years ago by masabon

Owner: changed from nobody to masabon
Status: newassigned

comment:5 Changed 13 years ago by masabon

Owner: changed from masabon to nobody
Status: assignednew

修正できませんでした。

c_member_profileを見てみるとポイントの加算されたメンバーしか入っていなかったので、これを更新しているところを探してみたところ、webapp/modules/pc/do/h_regist_prof.phpにあるdb_member_update_c_member_profileで更新しているみたいだったのですが、valueに値が入っていないときはdb_member_insert_c_member_profileを呼び出さないようになっていました。

新規登録時にvalueを0として登録するといいかと思いましたが、今まで使っていたユーザは修正されないので、行き詰まりました。

comment:6 Changed 13 years ago by ebihara

Keywords: OpenPNE2.10.9 added; OpenPNE2.10.8 removed
Milestone: OpenPNE2.12.2OpenPNE2.12.3
Priority: majorminor

comment:7 Changed 13 years ago by ebihara

Description: modified (diff)

comment:8 Changed 13 years ago by ebihara

Owner: changed from nobody to ebihara
Status: newassigned

comment:9 Changed 13 years ago by ebihara

Description: modified (diff)

以下のリビジョンで修正しました。

ポイントが 0 以下のランク以上であるメンバーを絞り込みの対象とした場合に、PNE_POINT のデータがないメンバーを結果に追加するようにして修正しました。

PNE_POINT が存在するメンバーのID一覧を取得し、渡されたIDリストとの差分(array_diff()の結果)を、PNE_POINTのデータがないメンバーであるとし、これを array_merge() で SQL によるIDの絞り込み結果に追加しました。

ご確認ください。

comment:10 Changed 13 years ago by ebihara

Keywords: 確認中 added

comment:11 Changed 13 years ago by ogawa

Keywords: 差し戻し added; 確認中 removed

s_point が 0 以下であっても e_point が 0 未満の場合は、ポイントのないメンバーを含めないようにする必要があります。

comment:12 Changed 13 years ago by ebihara

Keywords: 確認中 added; 差し戻し removed

以下のリビジョンで修正しました。

e_point の値は指定したランクの次のランクの到達ポイントなので、これが 0 を超過している場合にポイントのないメンバーを含めるようにしました。

また、 $is_contain_empty_point_member というフラグは不要だったので、可読性を考慮し廃止しました。

comment:13 Changed 13 years ago by ogawa

Keywords: 差し戻し added; 確認中 removed

db_admin_c_member_id_list4cond_pne_point() 以下の点を確認してください。

  • 最終的に array_intersect() を使うので array_diff() は不要ではないでしょうか
  • SQL内のスペースが2つになっている個所があります(結合の前後に両方スペースが入っている)
  • $point_ids = array_merge(... の下に不要な空行があります

comment:14 Changed 13 years ago by ebihara

Keywords: 確認中 added; 差し戻し removed

comment:13 の指摘事項である、

最終的に array_intersect() を使うので array_diff() は不要ではないでしょうか

についてですが、 array_diff() は絞り込み対象であるメンバーIDの配列とポイントが存在するメンバーIDの配列の差から、ポイントが存在しないメンバーIDの配列を取得するために使用しているので必要です。

不要な空白文字が存在する件については以下のリビジョンで修正しました。

comment:15 Changed 13 years ago by nakasone

Keywords: 差し戻し added; 確認中 removed

以下の現象の確認をお願いします。

version

  • 2.10.8 (r8053時点)
  • 2.12.2 (r8053時点)
  • 2.13.1 (r8053時点)

内容

ポイントが0~指定なし、もしくは0~一番高いランクの場合の絞込みで、ポイントが空のメンバーが該当しない。

comment:16 Changed 13 years ago by ebihara

Keywords: 確認中 added; 差し戻し removed

以下のリビジョンで修正しました。

comment:17 Changed 13 years ago by ogawa

Keywords: テスト待ち added; 確認中 removed

comment:18 Changed 13 years ago by kiwa

Keywords: テスト待ち removed
Resolution: fixed
Status: assignedclosed

確認しました。問題ありません。

Note: See TracTickets for help on using tickets.