Backport(バックポート) #3216
Yuya Watanabe さんが11年以上前に更新
h3. 概要 管理画面「Web 全体への年齢公開許可設定」および「メンバーのプロフィールページ公開範囲設定」のデフォルト値を変更しても設定に反映されない. 全体への年齢公開許可設定」のデフォルト値を変更しても設定に反映されない. 具体的には下記ファイルの 173 行目および 160 行目 を変更しても 行目を変更しても pc_frontend 側で設定が反映されていない. lib/config/config/sns_config.yml <pre> lib/config/config/sns_config.yml 166 is_allow_web_public_flag_age: 167 Name: "is_allow_web_public_flag_age" 168 Caption: "Web 全体への年齢公開許可設定" 169 Help: "メンバーが年齢を Web 全体に公開できるようにするかどうかを設定します" 170 FormType: "radio" 171 ValueType: "text" 172 IsRequired: true 173 Default: 0 174 Choices: 175 0: "メンバーの設定を許可しない" 176 1: "メンバーの設定を許可する" </pre> <pre> lib/config/config/sns_config.yml 153 is_allow_config_public_flag_profile_page: 154 Name: "is_allow_config_public_flag_profile_page" 155 Caption: "メンバーのプロフィールページ公開範囲設定" 156 Help: "メンバーがプロフィールページの公開範囲を変更できるようにするどうかを設定します" 157 FormType: "radio" 158 ValueType: "text" 159 IsRequired: true 160 Default: 1 161 Choices: 162 0: "メンバーの設定を許可する" 163 1: "メンバーの設定を許可しない(全員に公開)" 164 4: "メンバーの設定を許可しない(Web全体に公開)" </pre> h3. 確認バージョン OpenPNE 3.8.0 OpenPNE 3.6.4 h3. 原因 年齢を得るメソッドで設定ファイルが考慮されていない. lib/model/doctrine/Member.class.php <pre> 56 public function getAge($viewableCheck = false, $myMemberId = null) 57 { ... 82 if (ProfileTable::PUBLIC_FLAG_WEB == $publicFlag && Doctrine::getTable('SnsConfig')->get('is_allow_web_public_flag_age')) 83 { 84 return $age; 85 } </pre> h3. 修正案 デフォルト値を考慮した実装に変更する. <pre> diff --git a/lib/model/doctrine/Member.class.php b/lib/model/doctrine/Member.class.php index 5dd0d1a..b1a7d5f 100644 --- a/lib/model/doctrine/Member.class.php +++ b/lib/model/doctrine/Member.class.php @@ -79,7 +79,7 @@ class Member extends BaseMember implements opAccessControlRecordInterface return $age; } - if (ProfileTable::PUBLIC_FLAG_WEB == $publicFlag && Doctrine::getTable('SnsConfig')->get('is_allow_web_public_flag_age')) + if (ProfileTable::PUBLIC_FLAG_WEB == $publicFlag && opConfig::get('is_allow_web_public_flag_age')) { return $age; } </pre> <pre> diff --git a/lib/form/MemberConfigForm/MemberConfigPublicFlagForm.class.php b/lib/form/MemberConfigForm/MemberConfigPublicFlagForm.class.php index 69fd9d9..9047bae 100644 --- a/lib/form/MemberConfigForm/MemberConfigPublicFlagForm.class.php +++ b/lib/form/MemberConfigForm/MemberConfigPublicFlagForm.class.php @@ -23,12 +23,12 @@ class MemberConfigPublicFlagForm extends MemberConfigForm { parent::__construct($member, $options, $CSRFSecret); - if (Doctrine::getTable('SnsConfig')->get('is_allow_config_public_flag_profile_page')) + if (opConfig::get('is_allow_config_public_flag_profile_page')) { unset($this['profile_page_public_flag']); } - if (!Doctrine::getTable('SnsConfig')->get('is_allow_web_public_flag_age')) + if (!opConfig::get('is_allow_web_public_flag_age')) { $widget = $this->widgetSchema['age_public_flag']; </pre> <pre> diff --git a/lib/model/doctrine/MemberTable.class.php b/lib/model/doctrine/MemberTable.class.php index 8ad8a28..0c995a9 100644 --- a/lib/model/doctrine/MemberTable.class.php +++ b/lib/model/doctrine/MemberTable.class.php @@ -116,9 +116,9 @@ class MemberTable extends opAccessControlDoctrineTable ->allow('self', $resource, 'edit') ->deny('blocked'); - if (Doctrine::getTable('SnsConfig')->get('is_allow_config_public_flag_profile_page')) + if (opConfig::get('is_allow_config_public_flag_profile_page')) { - $config = Doctrine::getTable('SnsConfig')->get('is_allow_config_public_flag_profile_page'); + $config = opConfig::get('is_allow_config_public_flag_profile_page'); } elseif ($resource) { </pre>