Bug(バグ) #3510
opConfig::get() の $default に null 以外を指定すると sns_config.yml のデフォルト値が使用されない
100%
Description
Overview (現象)¶
sns_config.yml には下記のようにデフォルト値を設定する項目があり、例えば opConfig::get('sns_name')
とした場合に sns_config テーブルに該当する値が存在しない場合は 'MySNS'
が返るようになっている。また、sns_config.yml でデフォルト値が定義されていない項目については opConfig::get() の第二引数 $default の値が返る。
general:
sns_name:
Name: "sns_name"
Caption: "SNS名"
FormType: "input"
ValueType: "text"
Default: "MySNS"
IsRequired: true
しかし opConfig::get() の第二引数 $default に null 以外の値を指定すると、sns_config テーブルに存在しない設定項目について sns_config.yml に記述されている Default の値は無視され $default の値が返ってしまう。
Causes (原因)¶
public static function get($name, $default = null)
{
$setting = self::getConfigurationSetting();
$result = null;
$result = Doctrine::getTable('SnsConfig')->get($name, $default);
if (isset($setting[$name]))
{
if (is_null($result))
{
$result = self::getDefaultValue($name);
}
}
return $result;
}
SnsConfigTable::get() の第二引数に $default を指定しているため、sns_config テーブル内に該当するレコードが存在しない場合に is_null($result)
が false となり、$result が sns_config から取得された値なのか区別ができなくなってしまうことが原因。
Way to fix (修正内容)¶
SnsConfigTable::get() の第二引数には null を指定し、最後の return $result;
の箇所で $default を使用するか否かの判定を行う。
Subtasks
Associated revisions
fix opConfig::get() doesn't use `Default' value in sns_config.yml when $default argument is set (fixes #3510)
fix opConfig::get() doesn't use `Default' value in sns_config.yml when $default argument is set (fixes #3510)
(refs #3510) デフォルト値の優先順位についてコメントを追加
History
#1 Updated by Youichi Kimura almost 11 years ago
- Status changed from New(新規) to Accepted(着手)
- Target version set to OpenPNE 3.9.0-old
#2 Updated by Youichi Kimura almost 11 years ago
- Status changed from Accepted(着手) to Pending Review(レビュー待ち)
- % Done changed from 0 to 50
更新履歴 1ee2d377283742abcbdc00ade1243a318031325f で適用されました。
#3 Updated by Youichi Kimura almost 11 years ago
- Description updated (diff)
- Assignee set to Youichi Kimura
#4 Updated by Yuya Watanabe almost 11 years ago
- Status changed from Pending Review(レビュー待ち) to Rejected(差し戻し)
#5 Updated by Chiharu Nakajima almost 10 years ago
- Priority changed from Normal(通常) to Low(低め)
#6 Updated by Chiharu Nakajima almost 10 years ago
このチケットの内容は下記の項目に該当する不具合であるため、一旦優先度を下げます。
・未対応でもユーザーに影響が少ない不具合(回避可能な不具合である等)
#7 Updated by kaoru n over 7 years ago
- Target version changed from OpenPNE 3.9.0-old to OpenPNE 3.9.0
対象バージョン変更のため、修正内容の確認を行います。
#8 Updated by kaoru n over 4 years ago
- Target version changed from OpenPNE 3.9.0 to OpenPNE 3.10.x
#9 Updated by isao sano over 4 years ago
- Copied to Backport(バックポート) #4384: opConfig::get() の $default に null 以外を指定すると sns_config.yml のデフォルト値が使用されない added
#10 Updated by kaoru n about 4 years ago
- Target version changed from OpenPNE 3.10.x to OpenPNE 3.11.x
#11 Updated by kaoru n over 3 years ago
#3510-2 で適用されたコードは、old-master ブランチには含まれているが、
https://github.com/openpne/OpenPNE3/blob/old-master/lib/config/opConfig.class.php#L50-L59
その他のブランチに含まれていない。
https://github.com/openpne/OpenPNE3/blame/master/lib/config/opConfig.class.php#L50-L59
https://github.com/openpne/OpenPNE3/blame/stable-3.10.x/lib/config/opConfig.class.php#L50-L59
https://github.com/openpne/OpenPNE3/blame/stable-3.8.x/lib/config/opConfig.class.php#L50-L59
削除された形跡もないため、おそらく適用されていないままと考えられる。
#12 Updated by kaoru n over 3 years ago
- Status changed from Rejected(差し戻し) to Pending Review(レビュー待ち)
https://github.com/openpne/OpenPNE3/pull/637
にてプルリクエストしました
#13 Updated by Rimpei Ogawa over 3 years ago
- Status changed from Pending Review(レビュー待ち) to Pending Testing(テスト待ち)
- % Done changed from 50 to 70
#14 Updated by isao sano over 3 years ago
- Status changed from Pending Testing(テスト待ち) to Pending Merge(マージ待ち)
- % Done changed from 70 to 80
試験完了しました。
問題ありません。
#15 Updated by kaoru n over 3 years ago
- Status changed from Pending Merge(マージ待ち) to Fixed(完了)
- % Done changed from 80 to 100
マージしました