Bug(バグ) #3453
管理画面で「Web 全体への年齢公開許可設定」を「メンバーの設定を許可しない」に設定しても新規登録時には選択できてしまう
0%
Description
Overview (現象)¶
管理画面で「Web 全体への年齢公開許可設定」を「メンバーの設定を許可しない」に設定している状態であっても、新規登録時のプロフィール入力画面では年齢の公開範囲に「Web全体に公開」の選択肢が表示され選択できてしまう。
Causes (原因)¶
管理画面の「Web 全体への年齢公開許可設定」で設定された値は、MemberConfigPublicFlagForm::__construct()
で使用されている。
ここでは「Web 全体への年齢公開許可設定」が「メンバーの設定を許可しない」にセットされていた場合、「年齢の公開範囲」の選択肢から「Web 全体に公開」を除去している。
source:lib/form/MemberConfigForm/MemberConfigPublicFlagForm.class.php@20d13f4#L31:
if (!opConfig::get('is_allow_web_public_flag_age'))
{
$widget = $this->widgetSchema['age_public_flag'];
$choices = $widget->getOption('choices');
unset($choices[4]);
$widget->setOption('choices', $choices);
$this->validatorSchema['age_public_flag']->setOption('choices', array_keys($choices));
}
しかし、 新規登録時 のフォームでは MemberConfigPublicFlagForm などの MemberConfigForm 派生クラスは使用されず MemberConfigForm のインスタンスが直接使用されるため、MemberConfigPublicFlagForm::__construct()
が呼ばれることはない。
そのため、「Web 全体への年齢公開許可設定」の設定値を考慮することなく MemberConfigForm::generateConfigWidgets()
によってウィジェットが追加される。
Way to fix (修正内容)¶
「Web 全体に公開」の選択肢の除去を MemberConfigForm::setMemberConfigSettings()
メソッドに移動する。
このメソッドは、新規登録画面 (MemberConfigForm インスタンスが使われる) および設定変更画面 (MemberConfigForm 派生クラスのインスタンスが使われる) で共通して使用されるため、これらの画面による選択肢の差異が生じなくなる。
Related issues
History
#1 Updated by Mutsumi Imamura almost 11 years ago
- 3.6 で発生するか changed from Unknown (未調査) to Yes (はい)
- 3.8 で発生するか changed from Unknown (未調査) to Yes (はい)
#2 Updated by Akihiro KOBAYASHI about 10 years ago
- Assignee set to Akihiro KOBAYASHI
#3 Updated by Akihiro KOBAYASHI about 10 years ago
- Related to Bug(バグ) #3130: 管理画面「Web 全体への年齢公開許可設定」および「メンバーのプロフィールページ公開範囲設定」のデフォルト値を変更しても設定に反映されない added
#4 Updated by Akihiro KOBAYASHI almost 10 years ago
新規登録時だけでなく、登録完了後の「公開範囲設定」においても設定が反映されていない(管理画面で「Web 全体への年齢公開許可設定」を「メンバーの設定を許可しない」に設定しても、新規登録後「公開範囲設定」で年齢公開許可設定をユーザーが行う事ができる)ことが判明しました
そちらに関してはlib/form/MemberConfigForm/MemberConfigPublicFlagForm.class.php内
if (!opConfig::get('is_allow_web_public_flag_age'))
{
$widget = $this->widgetSchema['age_public_flag'];
$choices = $widget->getOption('choices');
unset($choices[4]);
$widget->setOption('choices', $choices);
$this->validatorSchema['age_public_flag']->setOption('choices', array_keys($choices));
}
を変更し、unsetを付け加える事で対処します
#5 Updated by Akihiro KOBAYASHI almost 10 years ago
- Subject changed from 管理画面で「Web 全体への年齢公開許可設定」を「メンバーの設定を許可しない」に設定しても新規登録時には選択できてしまう to 管理画面で「Web 全体への年齢公開許可設定」を「メンバーの設定を許可しない」に設定しても新規登録時及び新規登録後で選択できてしまう
#6 Updated by Akihiro KOBAYASHI almost 10 years ago
新規登録時には管理者設定により、is_allow_web_public_flag_ageの値が0になったと同時に、lib/config/config/member_config.yml内のage_public_flag:IsRegistの値をfalseに変えることで対応します
#7 Updated by Akihiro KOBAYASHI almost 10 years ago
- Status changed from New(新規) to Accepted(着手)
#8 Updated by Akihiro KOBAYASHI almost 10 years ago
- Status changed from Accepted(着手) to Pending Review(レビュー待ち)
- % Done changed from 0 to 50
プルリクエスト: https://github.com/openpne/OpenPNE3/pull/230
lib/form/MemberConfigForm/MemberConfigPublicFlagForm.class.php内
unset(...)によってmember/configで設定変更可能な部分を防ぐ
lib/form/doctrine/MemberConfigForm.class.php内
if($value['Name'] == "age_public_flag" && !opConfig::get('is_allow_web_public_flag_age')){
$value['IsRegist'] = false;
}
の追加によって新規登録時に表示されないようにする
#9 Updated by kaoru n over 9 years ago
- Assignee deleted (
Akihiro KOBAYASHI)
#11 Updated by Shinichi Urabe almost 8 years ago
- Status changed from Pending Review(レビュー待ち) to Rejected(差し戻し)
管理画面で「Web 全体への年齢公開許可設定」を「メンバーの設定を許可しない」の設定としては、管理画面にも説明があるように
「メンバーが年齢を Web 全体に公開できるようにするかどうかを設定します」という意味で有り、公開範囲自体選択させない今回の修正内容は本チケットの本文にある指摘や、管理画面の説明に沿っていないです。
新規登録画面において、年齢の公開範囲に「Web全体に公開」の選択肢が表示され選択できてしまう という問題についての対応をお願いします
#12 Updated by Shinichi Urabe almost 8 years ago
尚、修正しましたら、本文に「修正内容」「原因」の記載をお願いします
#14 Updated by Youichi Kimura over 7 years ago
- Subject changed from 管理画面で「Web 全体への年齢公開許可設定」を「メンバーの設定を許可しない」に設定しても新規登録時及び新規登録後で選択できてしまう to 管理画面で「Web 全体への年齢公開許可設定」を「メンバーの設定を許可しない」に設定しても新規登録時には選択できてしまう
- Description updated (diff)
#3453-11 での指摘の通り、この問題は新規登録時のフォームでのみ生じるものであるため、それに合わせてタイトルおよび原因について記載します。
#15 Updated by Youichi Kimura over 7 years ago
- Description updated (diff)
- Status changed from Rejected(差し戻し) to Pending Review(レビュー待ち)
下記 Pull Request にて修正しました
https://github.com/openpne/OpenPNE3/pull/447
#16 Updated by Shinichi Urabe over 7 years ago
- Status changed from Pending Review(レビュー待ち) to Pending Testing(テスト待ち)
- % Done changed from 50 to 70
#17 Updated by kaoru n over 7 years ago
- Status changed from Pending Testing(テスト待ち) to Won't fix(対応せず)
- Target version changed from OpenPNE 3.9.0-old to OpenPNE 3.9.0
- % Done changed from 70 to 0
OpenPNE 3.8.23 にて対応済みであったため、対応せずとします。