Project

General

Profile

Bug(バグ) #3545

管理画面「プロフィール項目」で、複数選択可能なプロフィール項目のプロフィール選択肢を削除した場合に、ユーザーがプロフィールを変更できなくなる場合がある

Added by Chiharu Nakajima over 8 years ago. Updated over 2 years ago.

Status:
New(新規)
Priority:
Normal(通常)
Assignee:
-
Target version:
Start date:
2014-01-14
Due date:
% Done:

0%

3.6 で発生するか:
Yes (はい)
3.8 で発生するか:
Yes (はい)

Description

管理画面「プロフィール項目」で、複数選択可能なプロフィール項目のプロフィール選択肢を削除した場合に、ユーザーがプロフィールを変更できなくなる場合がある。

発生手順(一例であり、他の手順でも発生する)
1.管理画面からプロフィール項目登録を選択し、フォームタイプを「複数選択」に設定した、任意のプロフィール項目を登録する。
2.プロフィール選択肢一覧で、手順1で登録したプロフィール項目に任意のプロフィール選択肢を登録する。
3.ユーザー画面のプロフィール編集画面から、手順2で登録したプロフィール選択肢を全て選択し、送信ボタンを押す。
4.管理画面で、プロフィール選択肢一覧から、手順2で登録したプロフィール選択肢を全て削除する。
5.ユーザー画面のプロフィール編集画面を表示し、送信ボタンを押す。
→プロフィールの編集が完了せず、白い画面が表示される。

#3294 の修正では、ユーザー画面でのバグは対応できているが、管理画面側でのバグに対応できていない。

備考(バグ修正確認時の注意):
DBの内容を確認しながら試験を実施すること
複数のパターンで試験を実施すること(選択肢の数、削除する選択肢のパターンなど)


Related issues

Related to OpenPNE 3 - Bug(バグ) #3294: 選択肢を持つプロフィール項目を作成し、ユーザーが選択肢を入力後に選択肢IDを削除すると、ユーザーのプロフィールを更新することができなくなる。 Won't fix(対応せず) 2013-01-11

History

#1 Updated by Chiharu Nakajima over 8 years ago

メモ:
現状、管理画面から選択肢を削除すると、DBで以下の様な動作が発生する。

まず、ユーザー画面でプロフィール項目を選択した場合、以下の様なデータが登録される。

mysql> select * from member_profile where profile_id = 13;
+------+-----------+------------+-------------------+-------+----------------+-------------+----------+------+------+-------+---------------------+---------------------+
| id   | member_id | profile_id | profile_option_id | value | value_datetime | public_flag | tree_key | lft  | rgt  | level | created_at          | updated_at          |
+------+-----------+------------+-------------------+-------+----------------+-------------+----------+------+------+-------+---------------------+---------------------+
| 1075 |        45 |         13 |              NULL |       | NULL           |        NULL |     1075 |    1 |   12 |     0 | 2014-01-14 15:57:55 | 2014-01-14 15:57:55 |
| 1076 |        45 |         13 |                23 |       | NULL           |        NULL |     1075 |    2 |    3 |     1 | 2014-01-14 15:57:55 | 2014-01-14 15:57:55 |
| 1077 |        45 |         13 |                24 |       | NULL           |        NULL |     1075 |    4 |    5 |     1 | 2014-01-14 15:57:55 | 2014-01-14 15:57:55 |
| 1078 |        45 |         13 |                25 |       | NULL           |        NULL |     1075 |    6 |    7 |     1 | 2014-01-14 15:57:55 | 2014-01-14 15:57:55 |
| 1079 |        45 |         13 |                26 |       | NULL           |        NULL |     1075 |    8 |    9 |     1 | 2014-01-14 15:57:55 | 2014-01-14 15:57:55 |
| 1080 |        45 |         13 |                27 |       | NULL           |        NULL |     1075 |   10 |   11 |     1 | 2014-01-14 15:57:55 | 2014-01-14 15:57:55 |
+------+-----------+------------+-------------------+-------+----------------+-------------+----------+------+------+-------+---------------------+---------------------+
6 rows in set (0.00 sec)

id:1075のlft~rgtの数値(1~12)の間に、id:1076~1080のlft~rgtの数値(2~11)が並んで入っている状態となる。
これは、profile_id:13のプロフィール項目の、profile_option_id:23~27という選択肢をチェックしているということを表している(レコードが親子関係のようになっている)。
この状態で、profile_option_id:25の選択肢を管理画面で削除すると、以下のようにレコードが削除される(親子関係の子だけが削除される)。

mysql> select * from member_profile where profile_id = 13;
+------+-----------+------------+-------------------+-------+----------------+-------------+----------+------+------+-------+---------------------+---------------------+
| id   | member_id | profile_id | profile_option_id | value | value_datetime | public_flag | tree_key | lft  | rgt  | level | created_at          | updated_at          |
+------+-----------+------------+-------------------+-------+----------------+-------------+----------+------+------+-------+---------------------+---------------------+
| 1075 |        45 |         13 |              NULL |       | NULL           |        NULL |     1075 |    1 |   12 |     0 | 2014-01-14 15:57:55 | 2014-01-14 15:57:55 |
| 1076 |        45 |         13 |                23 |       | NULL           |        NULL |     1075 |    2 |    3 |     1 | 2014-01-14 15:57:55 | 2014-01-14 15:57:55 |
| 1077 |        45 |         13 |                24 |       | NULL           |        NULL |     1075 |    4 |    5 |     1 | 2014-01-14 15:57:55 | 2014-01-14 15:57:55 |
| 1079 |        45 |         13 |                26 |       | NULL           |        NULL |     1075 |    8 |    9 |     1 | 2014-01-14 15:57:55 | 2014-01-14 15:57:55 |
| 1080 |        45 |         13 |                27 |       | NULL           |        NULL |     1075 |   10 |   11 |     1 | 2014-01-14 15:57:55 | 2014-01-14 15:57:55 |
+------+-----------+------------+-------------------+-------+----------------+-------------+----------+------+------+-------+---------------------+---------------------+
5 rows in set (0.00 sec)

この時に、id:1075のlft~rgtの数値(1~12)の間に、抜けが発生していしまう(6~7が存在しない)。

#2 Updated by kaoru n over 5 years ago

  • Target version changed from OpenPNE 3.9.0-old to OpenPNE 3.9.0

#3 Updated by kaoru n over 2 years ago

  • Target version changed from OpenPNE 3.9.0 to OpenPNE 3.10.x

Also available in: Atom PDF