Bug(バグ) #2907
完了OpenPNE2系からのコンバートした環境で生年月日が公開されてしまう場合がある
100%
説明
Overview (現象)¶
OpenPNE2系からのコンバートで「生まれた年」と「誕生日」の管理画面のプロフィール項目の設定値がコンバートで考慮されていないため、
コンバート後の環境で生年月日が公開されてしまう場合がある
この現象はコンバートすることによって「公開範囲設定の可否」が「固定」になるため、
ユーザーがこれらのプロフィールを非公開に設定していても、検索結果に出力されるようになるためです。
(「公開範囲設定の可否」が「固定」で「公開設定デフォルト値」が「web全体に公開」、「全体に公開」のときに
ユーザーの設定値ではなく管理画面での設定値が適用されるのは仕様です。
詳しくはこのチケットを参考にしてください→https://redmine.openpne.jp/issues/1874 )
OpenPNE2では、「生まれた年」と「誕生日」のプロフィールはユーザーによる公開範囲の設定しか無く、管理画面では公開範囲を変更することが出来ないため、3系コンバート後に設定が変わってしまっていることに混乱をするSNS管理者やユーザーも少なくないと思います。
3系にコンバートしても、公開範囲をメンバーに選択させるような設定を維持するようにするのが良いのではないでしょうか。
再現バージョン¶
- OpenPNE3.6.2
再現手順¶
- 2系の時に、「生まれた年」と「誕生日」のプロフィールを非公開にしているユーザーを作成する
- 3系にコンバートする
- 手順1で作成したユーザーの「生まれた年」または「誕生日」で検索する
Causes (原因)¶
バグが発生した原因を記入
Way to fix (修正内容)¶
修正内容を記入
Hidenori Goto さんが12年以上前に更新
問題箇所¶
OpenPNE3を通常インストールした場合、profile/op_preset_birthdayのis_edit_public_flagの初期値が0(固定)となっています。
V2→V3のコンバーターを使う場合、コンバーターによりこの設定値のレコードがINSERTされます。
/data/upgrade/2/opUpgradeFrom2MemberProfileStrategy.class.php setPresetMemberProfiles()メソッド内
$this->conn->execute('INSERT INTO profile (id, name, is_required, is_unique, is_edit_public_flag, default_public_flag, form_type, value_type, is_disp_regist, is_disp_config, is_disp_search, value_regexp, value_min, value_max, sort_order, created_at, updated_at) VALUES (NULL, "op_preset_birthday", 1, 0, 0, 1, "date", "string", 1, 1, 1, NULL, NULL, NULL, 1, NOW(), NOW())');
修正方針¶
コンバーターを使った場合は、OpenPNE2の状況の再現を優先する方針であるとし、op_preset_birthdayのis_edit_public_flagが1になるようにします。
Hidenori Goto さんが12年以上前に更新
- ステータス を Accepted(着手) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
Yuya Watanabe さんが12年以上前に更新
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更
下記コミットを stable-3.6.x ブランチにマージしました.
Yuma Sakata さんが12年以上前に更新
- ステータス を Pending Testing(テスト待ち) から Fixed(完了) に変更
- 進捗率 を 70 から 100 に変更
テストOKです。