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

Opened 11 years ago

Closed 11 years ago

Last modified 10 years ago

#2856 closed defect (fixed)

コミュニティを退会したメンバーがイベントの参加メンバーに残ってしまう

Reported by: imamura623 Owned by: shingo
Priority: minor Milestone: OpenPNE2.12.4
Component: 指定しない Version: 2.10.x & 2.12.x & 2.14.x
Keywords: OpenPNE2.10.10 OpenPNE2.13.3 Cc:

Description (last modified by kudo)

■現象

コミュニティを退会したメンバーが、そのままイベントの参加メンバーに残ってしまう。

■原因

コミュニティを退会処理実行時、参加イベントメンバー情報(c_event_member)が削除されていない為。

■修正内容

コミュニティを退会処理実行時、参加イベントメンバー情報(c_event_member)を削除するように修正。

■関連情報

元のDescription

http://sns.openpne.jp/?m=pc&a=page_c_topic_detail&target_c_commu_topic_id=3875 より転記

お世話になっております。質問に伺いました。

環境:OpenPNE2.10.2 を利用しています
閲覧:PC、携帯の両方

コミュニティでイベントを立ち上げ、参加者を募集している最中、参加を予定していたメンバーがコミュニティを退会しました。

しかし、「イベント参加者一覧」に名前は残ったままで、コミュニティ管理者・イベント作成者ともに、「メンバーの参加取消」ができません。

この場合、参加予定だった本人がもう一度コミュニティに入り、イベント参加を解除するしか方法はないでしょうか?

Change History (14)

comment:1 Changed 11 years ago by nakasone

Keywords: 再現待ち removed

以下のような確認を行ったところ再現できました。

■確認ブラウザ

  • !FireFox2

■確認バージョン

  • 2.10.x
  • 2.12.x
  • trunk

■手順

  1. 参加しているコミュニティのイベントに参加する
  2. コミュニティを退会
  3. イベントの参加メンバーを確認
  4. 退会したメンバーが参加メンバーに残っている

comment:2 Changed 11 years ago by shingo

Owner: changed from nobody to shingo
Status: newassigned

修正します。

comment:3 Changed 11 years ago by shingo

Keywords: OpenPNE2.10.10 OpenPNE2.13.3 確認中 added
Milestone: OpenPNE2.12.4

以下のリビジョンで修正しました。ご確認ください。

comment:4 Changed 11 years ago by shingo

Description: modified (diff)

comment:5 Changed 11 years ago by ebihara

Keywords: 差し戻し added; 確認中 removed
  • 参加イベントの取得の際にはマスタDBを読むようにするべきでしょう
  • この場合、 db_get_all() よりも db_get_col() を利用した方がいいでしょう
  • PHP においては、特別な事情(変数の展開を文字列内でおこなう必要がある・可読性が著しく低下するなど)がない限り文字列をダブルクオートではなくシングルクオートで囲むことをお勧めします

comment:6 Changed 11 years ago by shingo

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

以下のリビジョンで修正しました。ご確認ください。

comment:7 Changed 11 years ago by ebihara

Keywords: 差し戻し added; 確認中 removed
2722     $c_event_list = db_get_col($sql, $params, 'main');
2723     foreach ($c_event_list as $c_event) {
2724         db_commu_delete_c_event_member($c_event['c_commu_topic_id'], $c_member_id);
2725     }
2726 

これでは、 c_commu_topic_id が2桁以上になった場合に問題が生じます。

$c_event は c_commu_topic_id を格納する文字列です。そのため、 [] でアクセスする必要はありません。

文字列に対して [] でアクセスする場合、キーに数値ではなく文字列を指定すると、常に一文字目が返されます。そのため、 c_commu_topic_id が1桁の場合は正しい値が取得できますが、2桁になると1文字目(10 の場合 1 )が返されるため、問題となります。

参考:http://blog.co3k.org/archives/40

comment:8 Changed 11 years ago by shingo

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

以下のリビジョンで修正しました。ご確認ください。

comment:9 Changed 11 years ago by ebihara

Keywords: 差し戻し added; 確認中 removed
  • db_commu_delete_c_commu_member() では、 $params を c_commu_review の削除処理にて定義しており、以降はそれを使い回しています。そのため、 c_event_member の削除処理において再び定義する必要はありません。この定義を削除するか、もしくはその他のすべての削除処理にて必ず $params を定義し直すように修正してください
  • 以下の $c_event という変数名は適切ではないのではないでしょうか。
    2780	    foreach ($c_event_list as $c_event) { 
    

comment:10 Changed 11 years ago by shingo

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

以下のリビジョンで修正しました。ご確認ください。

comment:11 Changed 11 years ago by ebihara

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

comment:12 Changed 11 years ago by kiwa

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

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

comment:13 Changed 10 years ago by kudo

Description: modified (diff)

comment:14 Changed 10 years ago by kudo

Description: modified (diff)
Note: See TracTickets for help on using tickets.