プロジェクト

全般

プロフィール

Bug(バグ) #2882

完了

opValidatorDate で「年」に 0 を入力した場合に空値として認識される

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

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

0%

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

説明

現象

opValidatorDate を使用しているフォーム(コミュニティイベントの作成画面など)で、日付を入力する項目の「年」に 0 を入力すると空値として扱われる。

  • コミュニティイベントの作成画面の場合、「募集期日」の「年」に 0 と入力された状態(「月」「日」は入力しない)で送信しても「正しくありません。」と表示されずにイベントの作成が完了する。

原因

lib/validator/opValidatorDate.class.php の 100 行目付近

    // if one date value is empty, all others must be empty too
    $empties =
      (!isset($value['year']) || !$value['year'] ? 1 : 0) +
      (!isset($value['month']) || !$value['month'] ? 1 : 0) +
      (!isset($value['day']) || !$value['day'] ? 1 : 0);

この判定で、「年」($value['year']) に "0" が入力されると !isset($value['year']) || !$value['year']true となり空値と判定されることが原因。

参照: PHP: PHP 型の比較表 - Manual

修正内容

修正内容を記入


関連するチケット 4 (2件未完了2件完了)

関連している OpenPNE 3 - Bug(バグ) #3270: sfValidatorDateで「年」に 0 を入力した場合に空値として認識されるNew(新規)2012-12-05

操作
関連している OpenPNE 3 - Backport(バックポート) #3281: opValidatorDate で「年」に 0 を入力した場合に空値として認識されるFixed(完了)Yuya Watanabe2012-12-17

操作
関連している OpenPNE 3 - Backport(バックポート) #3288: opValidatorDate で「年」に 0 を入力した場合に空値として認識されるFixed(完了)Yuya Watanabe2012-03-13

操作
関連している OpenPNE 3 - Bug(バグ) #3291: opValidatorDate がタイムゾーンを考慮していない可能性がある.New(新規)2013-01-10

操作

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