Project

General

Profile

Backport(バックポート) #4385

Bug(バグ) #3510: opConfig::get() の $default に null 以外を指定すると sns_config.yml のデフォルト値が使用されない

opConfig::get() の $default に null 以外を指定すると sns_config.yml のデフォルト値が使用されない

Added by isao sano over 3 years ago. Updated over 2 years ago.

Status:
Fixed(完了)
Priority:
Low(低め)
Assignee:
Target version:
Start date:
2013-12-04
Due date:
% Done:

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 を使用するか否かの判定を行う。

Associated revisions

Revision 64c2bf58 (diff)
Added by Youichi Kimura over 2 years ago

fix opConfig::get() doesn't use `Default' value in sns_config.yml when $default argument is set (refs #4385, BP from #3510)

Revision 7c68063b (diff)
Added by kaoru n over 2 years ago

(refs #4385, BP from #3510) デフォルト値の優先順位についてコメントを追加

History

#1 Updated by isao sano over 3 years ago

  • Status changed from Rejected(差し戻し) to New(新規)
  • % Done changed from 50 to 0

#2 Updated by isao sano over 3 years ago

  • Assignee changed from Youichi Kimura to isao sano
  • Target version changed from OpenPNE 3.8.x to OpenPNE 3.8.36

#3 Updated by kaoru n over 3 years ago

  • Target version changed from OpenPNE 3.8.36 to OpenPNE 3.8.x

#4 Updated by kaoru n over 2 years ago

  • Status changed from New(新規) to Pending Review(レビュー待ち)
  • % Done changed from 0 to 50

https://github.com/openpne/OpenPNE3/pull/639
にてプルリクエストしました

#5 Updated by Rimpei Ogawa over 2 years ago

  • Status changed from Pending Review(レビュー待ち) to Pending Testing(テスト待ち)
  • % Done changed from 50 to 70

#6 Updated by kaoru n over 2 years ago

  • Target version changed from OpenPNE 3.8.x to OpenPNE 3.8.40

#7 Updated by isao sano over 2 years ago

  • Status changed from Pending Testing(テスト待ち) to Pending Merge(マージ待ち)
  • % Done changed from 70 to 80

試験完了しました。
問題ありません。

#8 Updated by kaoru n over 2 years ago

  • Status changed from Pending Merge(マージ待ち) to Fixed(完了)
  • % Done changed from 80 to 100

マージしました

Also available in: Atom PDF