プロジェクト

全般

プロフィール

Bug(バグ) #3453

完了

管理画面で「Web 全体への年齢公開許可設定」を「メンバーの設定を許可しない」に設定しても新規登録時には選択できてしまう

Youichi Kimura さんが約11年前に追加. 7年以上前に更新.

ステータス:
Won't fix(対応せず)
優先度:
Normal(通常)
担当者:
対象バージョン:
開始日:
2013-10-17
期日:
進捗率:

0%

予定工数:
3.6 で発生するか:
Yes (はい)
3.8 で発生するか:
Yes (はい)

説明

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 派生クラスのインスタンスが使われる) で共通して使用されるため、これらの画面による選択肢の差異が生じなくなる。


関連するチケット 3 (0件未完了3件完了)

関連している OpenPNE 3 - Backport(バックポート) #3493: 管理画面で「Web 全体への年齢公開許可設定」を「メンバーの設定を許可しない」に設定しても新規登録時には選択できてしまうFixed(完了)Youichi Kimura2013-10-17

操作
関連している OpenPNE 3 - Backport(バックポート) #3494: 管理画面で「Web 全体への年齢公開許可設定」を「メンバーの設定を許可しない」に設定しても新規登録時には選択できてしまうFixed(完了)Youichi Kimura2013-10-17

操作
関連している OpenPNE 3 - Bug(バグ) #3130: 管理画面「Web 全体への年齢公開許可設定」および「メンバーのプロフィールページ公開範囲設定」のデフォルト値を変更しても設定に反映されないWon't fix(対応せず)Yuya Watanabe2012-07-24

操作

他の形式にエクスポート: Atom PDF