Project

General

Profile

Bug(バグ) #3270

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

Added by kaoru n almost 8 years ago. Updated 8 months ago.

Status:
New(新規)
Priority:
Normal(通常)
Assignee:
-
Target version:
Start date:
2012-12-05
Due date:
% Done:

0%

3.6 で発生するか:
Yes (はい)
3.8 で発生するか:
Yes (はい)

Description

https://redmine.openpne.jp/issues/2882の修正時に発見

現象

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

原因

入力チェックに使用しているクラスsfValidatorDate内で入力値のEmptyチェックを行っています(sfValidatorDateクラスのisEmptyメソッド)が、与えられた引数がarrayの場合に「array_filter」という関数を使用しています。
この関数は(http://php.net/manual/ja/function.array-filter.phpより)

コールバック関数が与えられなかった場合、 input のエントリの中で FALSE と等しいもの (boolean への変換 を参照ください) がすべて削除されます。 

ということで、年に入力された0がfalse扱いされ削除されます。
その後Emptyチェックを行うため、年に0のみが入力された場合、Emptyと判定され必須項目ではないためエラーチェックに引っかかりません。

修正内容

sfValidatorDateでなく、opValidatorDateを使用するようにする。
但し、#2882の修正が必要。


Related issues

Related to OpenPNE 3 - Bug(バグ) #2882: opValidatorDate で「年」に 0 を入力した場合に空値として認識される Won't fix(対応せず) 2012-03-13
Related to OpenPNE 3 - Backport(バックポート) #3287: sfValidatorDateで「年」に 0 を入力した場合に空値として認識される New(新規) 2012-12-05
Related to OpenPNE 3 - Backport(バックポート) #3282: sfValidatorDateで「年」に 0 を入力した場合に空値として認識される New(新規) 2012-12-17

History

#1 Updated by Chiharu Nakajima almost 8 years ago

  • Target version set to OpenPNE 3.8.4

#2 Updated by Mutsumi Imamura almost 8 years ago

  • Target version changed from OpenPNE 3.8.4 to OpenPNE 3.9.0-old

#3 Updated by Mutsumi Imamura almost 8 years ago

  • Assignee set to Yuya Watanabe

#4 Updated by Yuya Watanabe over 7 years ago

https://redmine.openpne.jp/issues/2882#note-12 でも書きましたが sfValidatorDate と opValidatorDate の違いを大雑把に表すと下記 2 点があります.既存の sfValidatorDate を用いている場合に下記違いが影響を与える場合はそのまま opValidatorDate を用いることができないため, opValidatorDate を用いられるように opValidatorDate の外側部分を改修するか, isEmpty 相当のもののみを入れ替えた別クラスを用いる必要があります.

sfValidatorDate と opValidatorDate の違い
  • opValidaterDate は入力にタイムスタンプを許容しない
  • opValidaterDate は empty_value に DateTime を用いる必要がある

#5 Updated by Yuya Watanabe over 7 years ago

  • Assignee deleted (Yuya Watanabe)

一旦担当を手放します.

#6 Updated by kaoru n over 3 years ago

  • Target version changed from OpenPNE 3.9.0-old to OpenPNE 3.9.0

#7 Updated by isao sano over 3 years ago

再現を確認しました。

#8 Updated by kaoru n 8 months ago

  • Target version changed from OpenPNE 3.9.0 to OpenPNE 3.10.x

Also available in: Atom PDF