Project

General

Profile

Actions

Bug(バグ) #3584

closed

フォームタイプが日付のプロフィール項目の最小値に now を設定し、プロフィールに当日日付を設定するとエラーになる

Added by Hisahsi Ishihara over 10 years ago. Updated almost 2 years ago.

Status:
Fixed(完了)
Priority:
Normal(通常)
Assignee:
Target version:
Start date:
2023-02-07
Due date:
% Done:

100%

Estimated time:
(Total: 0:00 h)
3.6 で発生するか:
Unknown (未調査)
3.8 で発生するか:
Yes (はい)

Description

初めてです
3.8.10を使用。プロフィールに項目追加し、フォームタイプを日付にした時、最小値、最大値のいづれかまたは両方をnowにすると、SNS会員が当日の日付を入れて、送信ボタンを押すとエラーになって、プロフィールを更新できない。3.8.9の時は、エラーにならなかった。


Subtasks 2 (0 open2 closed)

Backport(バックポート) #4580: フォームタイプが日付のプロフィール項目の最小値に now を設定し、プロフィールに当日日付を設定するとエラーになるFixed(完了)kaoru n2023-02-07

Actions
Backport(バックポート) #4581: フォームタイプが日付のプロフィール項目の最小値に now を設定し、プロフィールに当日日付を設定するとエラーになるFixed(完了)kaoru n2023-02-07

Actions
Actions #1

Updated by kaoru n almost 5 years ago

  • Target version set to OpenPNE 3.10.x
Actions #2

Updated by kaoru n almost 2 years ago

  • Status changed from New(新規) to Accepted(着手)
  • Assignee set to kaoru n
  • Target version changed from OpenPNE 3.10.x to OpenPNE 3.11.x
Actions #3

Updated by kaoru n almost 2 years ago

最大値に now を設定し、プロフィール編集で当日日付を入力してもエラーにならない。

Actions #4

Updated by kaoru n almost 2 years ago

https://github.com/openpne/OpenPNE3/blob/master/lib/validator/opValidatorDate.class.php#L54-L70

    if ($this->hasOption('max'))
    {
      $max = new DateTime($this->getOption('max'));
      if ($max && $clean->format('U') > $max->format('U'))
      {
        throw new sfValidatorError($this, 'max', array('max' => $max->format($this->getOption('date_format_range_error'))));
      }
    }

    if ($this->hasOption('min'))
    {
      $min = new DateTime($this->getOption('min'));
      if ($min && $clean->format('U') < $min->format('U'))
      {
        throw new sfValidatorError($this, 'min', array('min' => $min->format($this->getOption('date_format_range_error'))));
      }
    }

$min, $max ともに now を設定した場合、new DateTime() の引数にそのまま now が設定されるため、時刻も比較対象とされる。

例えば now = '2023-02-07 18:18:18' だった場合、プロフィール編集で '2023/02/07' を入力すると入力値は '2023-02-07 00:00:00' として扱われるため、最小値との比較でエラーになる。

Actions #5

Updated by kaoru n almost 2 years ago

  • Status changed from Accepted(着手) to Pending Review(レビュー待ち)
  • % Done changed from 0 to 50

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

Actions #6

Updated by kaoru n almost 2 years ago

  • Subject changed from プロフィール項目を追加し、フォームタイプを日付の時 to フォームタイプが日付のプロフィール項目no
Actions #7

Updated by kaoru n almost 2 years ago

  • Subject changed from フォームタイプが日付のプロフィール項目no to フォームタイプが日付のプロフィール項目の最小値に now を設定し、プロフィールに当日日付を設定するとエラーになる
Actions #8

Updated by Rimpei Ogawa almost 2 years ago

  • Status changed from Pending Review(レビュー待ち) to Rejected(差し戻し)

with_time オプションを設定している際は日付だけでなく時刻の情報も扱う想定になっていて、
max/min オプションについてもこれに沿うのが自然な挙動だと思います。

参考:ユニットテストの with_time オプションの箇所
https://github.com/openpne/OpenPNE3/blob/master/test/unit/validator/opValidatorDateTest.php#L132

OpenPNE本体には with_time オプションを使っている箇所はなかったのですが、
時刻の情報を消して比較するのは with_time がないときだけにする方がよいかなと思いました。

Actions #9

Updated by kaoru n almost 2 years ago

  • Status changed from Rejected(差し戻し) to Pending Review(レビュー待ち)

#3584-8 について修正し、
https://github.com/openpne/OpenPNE3/pull/685
を更新しました

Actions #10

Updated by Rimpei Ogawa almost 2 years ago

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

Updated by isao sano almost 2 years ago

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

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

Actions #12

Updated by kaoru n almost 2 years ago

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

マージしました

Actions

Also available in: Atom PDF