プロジェクト

全般

プロフィール

Backport(バックポート) #3281

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

Chiharu Nakajima11年以上前に追加. 約11年前に更新.

ステータス:
Fixed(完了)
優先度:
Normal(通常)
担当者:
対象バージョン:
開始日:
2012-12-17
期日:
進捗率:

100%


説明

現象

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

修正内容

修正内容を記入


関連するチケット

関連している OpenPNE 3 - Bug(バグ) #2882: opValidatorDate で「年」に 0 を入力した場合に空値として認識される Won't fix(対応せず) 2012-03-13

関係しているリビジョン

リビジョン 8c2d6632 (差分)
Yuya Watanabe約11年前に追加

(refs #3281, BP from #2882) add sfValidatorDateTest +42 case

about test case
empty values: ('', false, array(), new SimpleXmlElement('<hoge />'))
not empty values: (0, '0', 0.0)

required:         (true, false)
date array: (Yms, YmsH)

リビジョン dc518fa1 (差分)
Yuya Watanabe約11年前に追加

(refs #3281, BP from #2882) fixed not to evaluate empty array in preg_match

リビジョン cfb16e16 (差分)
Yuya Watanabe約11年前に追加

(refs #3281, BP from #2882) fixed not to be empty for zero number or string

リビジョン cef6c1fa (差分)
Yuya Watanabe約11年前に追加

(fixes #3281, BP from #2882) fixed not to be empty day values for zero number or string

履歴

#1 Yuya Watanabe約11年前に更新

  • ステータスNew(新規) から Accepted(着手) に変更
  • 担当者Yuya Watanabe にセット

#2 Yuya Watanabe約11年前に更新

  • ステータスAccepted(着手) から Pending Review(レビュー待ち) に変更
  • 進捗率0 から 50 に変更

更新履歴 cef6c1fa249022fc2415fc5aa05fbb9bb971b5ee で適用されました。

#3 Kousuke Ebihara約11年前に更新

  • ステータスPending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
  • 進捗率50 から 70 に変更

#4 Mutsumi Imamura約11年前に更新

  • ステータスPending Testing(テスト待ち) から Fixed(完了) に変更
  • 進捗率70 から 100 に変更

動作確認OKです。

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