ここの情報は古いです。ご理解頂いた上でお取り扱いください。

Opened 12 years ago

Closed 12 years ago

Last modified 11 years ago

#2626 closed defect (fixed)

スケジュールに開始時刻と終了時刻を明記しなかった場合、「00時00分」になってしまう

Reported by: imamura623 Owned by: nakasone
Priority: minor Milestone: OpenPNE2.12.4
Component: 指定しない Version: 2.10.x & 2.12.x & 2.14.x
Keywords: OpenPNE2.10.10 OpenPNE2.13.2 Cc:

Description (last modified by kudo)

■現象

スケジュールの登録、変更時に開始時刻と終了時刻を明記しなかった場合、「00時00分」になってしまう。

■原因

if文の「$input['start_hour'] == 0」で「start_hour」の値が無いときと判断し、「--」も含まれてしまったと考えられる。

■修正内容

スケジュールの登録、変更時に開始時刻と終了時刻を明記しなかった場合、「--時--分」となるように修正する。

■関連情報

元のDescription

http://sns.openpne.jp/?m=pc&a=page_fh_diary&target_c_diary_id=17293より転記

スケジュールを確認していて何気なく気に止まりました。
開始時刻と終了時刻を明記しなかった場合、本来「--時--分」になるべきかと思うのですが、これが「00時00分」になっています。

わりと簡単に直せるものと鷹をくくりつつ、いちおうデータベースを確認してみたその時、驚愕の事実に震えが止まらなくなりました。
c_scheduleテーブルのstart_timeとend_timeには「00:00:00」になっているものと、「NULL」になっているものが、脈略なく存在していたからです。

これはバグではなく祟りに違いない、と震える手を押さえつつも、なんとか科学的に解明できないものかと思い、1件1件の特徴を入念に調べていきました。
明確な特徴を見いだせないまま夜明けを迎えようとしていた頃、なんとなくNULLになっているレコードはbodyが未入力のものが多いことに気づきました。
ただbodyが未入力でも「00:00:00」になっているものもあるので、決め手にはならないと思い、もう諦めようとブラウザのホームに戻ったその瞬間、上空に稲妻が走りました。

スケジュールはホームから追加できる・・・。

自分はカレンダーを見ながら予定を追加することが多いので、これまであまり気に止めなかったホームの「追加」ボタンが、何かを啓示するかのように青白く光って見えました。
webapp/modules/pc/do/の中を確認すると、そこにはh_home_insert_c_schedule.phpと h_schedule_add_insert_c_schedule.phpという、2種類のスケジュールを追加するためのファイルがありました。

早く気づくべきだった・・・。

そう思った頃にはすでに遠くでみそ汁の臭いがほのかに香りはじめていました。

いちおうh_schedule_add_insert_c_schedule.phpと h_schedule_edit_update_c_schedule.phpの「$input['start_hour'] == 0」と「$input['end_hour'] == 0」の部分を「$input['start_hour'] == '00'」と「$input['end_hour'] == '00'」に変更してみました。
あとは運を天に委ねるばかりです。

Change History (17)

comment:1 Changed 12 years ago by nakasone

Keywords: 再現待ち removed

以下のような確認を行ったところ再現できました。

■確認ブラウザ

  • IE6
  • FireFox2

■確認バージョン

  • 2.10.x
  • 2.12.x
  • trunk

■手順

  1. bizモードを使用しない設定にする
  2. ホームから予定を追加
  3. 月間カレンダーから時間を設定せず予定を追加
  4. ホームから追加した予定は--時--分と表示されている
  5. 月間カレンダーから追加した予定は00時00分と表示されている
  6. 月間カレンダーから追加する際、確認画面では--時--分と表示されている

comment:2 Changed 12 years ago by kiwa

Summary: 予定時刻スケジュールに開始時刻と終了時刻を明記しなかった場合、「00時00分」になってしまう

comment:3 Changed 12 years ago by nakasone

Owner: changed from nobody to nakasone
Status: newassigned

やります。

comment:4 Changed 12 years ago by nakasone

Description: modified (diff)
Keywords: 確認中 added

以下のリビジョンで修正しました。ご確認ください。

comment:5 Changed 12 years ago by kiwa

Keywords: OpenPNE2.10.10 OpenPNE2.13.2 added
Milestone: OpenPNE2.12.4

comment:6 Changed 12 years ago by ebihara

Keywords: テスト待ち added; 確認中 removed

comment:7 Changed 12 years ago by kiwa

Keywords: 差し戻し added; テスト待ち removed

--時15分や10時--分など、片方が--になっている場合、BIZモードの予定追加と同じように--を00として扱うべきではないでしょうか?

現在では、片方が--になっている場合は不正として扱われ、以下のエラーメッセージが表示されて予定を登録することができません。

  • 開始時刻が正しくありません
  • 終了時刻が正しくありません

comment:8 Changed 12 years ago by kiwa

追加の不具合を報告します

version

  • 2.12.3
  • 2.10.9
  • 2.13.2

再現手順

  1. スケジュール作成画面(pc_page_h_schedule_add)を開く
  2. 必須項目を適当に選択してスケジュール確認画面(pc_page_h_schedule_add_confirm)に遷移する
  3. 必須項目を適当に選択してスケジュール確認画面(pc_page_h_schedule_add_confirm)で「start_minute」と「end_hour」を空にして「完了」ボタンを謳歌する
  4. --時--分~--時--分の予定が作成される

※予定編集も同様の現象を再現できます


日記作成など他の機能では、確認画面で項目の不備を発見した場合、作成を完了させず、作成フォームに遷移してエラーメッセージを表示させます。
スケジュールもこれと同じようにスケジュール確認画面(pc_page_h_schedule_add_confirm)で項目の不備を発見した場合はスケジュール作成画面(pc_page_h_schedule_add)にリダイレクトしてエラーメッセージを表示するべきだと思います。

comment:9 in reply to:  7 ; Changed 12 years ago by ebihara

Keywords: テスト待ち added; 差し戻し removed

comment:7, comment:8 の指摘事項の双方とも、対応するべきであるとは思えません。

-- は未入力を表す項目であるため、

  • comment:7 : --時15分という表記は時刻として成立しないので、エラーとするのは自然でしょう。むしろ BIZ において -- を 00 として扱ってしまうのが不自然であると言えると思います
  • comment:8 : スケジュール登録は日記のタイトルなどと違い未入力(=「--」)を許すため、確認画面で入力値を操作して時刻を未入力にした状態で登録できるのは正しい挙動であるかと思います(確認画面で10時を12時に変更した状態で登録できてしまうのと同様です)

以上、ご確認ください。

comment:10 in reply to:  9 ; Changed 12 years ago by kiwa

Keywords: 差し戻し added; テスト待ち removed

Replying to ebihara:

  • comment:7 : --時15分という表記は時刻として成立しないので、エラーとするのは自然でしょう。むしろ BIZ において -- を 00 として扱ってしまうのが不自然であると言えると思います

納得しました。ではこれは問題ないとします。

  • comment:8 : スケジュール登録は日記のタイトルなどと違い未入力(=「--」)を許すため、確認画面で入力値を操作して時刻を未入力にした状態で登録できるのは正しい挙動であるかと思います(確認画面で10時を12時に変更した状態で登録できてしまうのと同様です)

この報告は「時・分どちらかが空欄の場合」なので comment:7 と一致します。 comment:7 が自然なのであれば、こちらは不具合として扱うべきではないでしょうか。

comment:11 in reply to:  10 Changed 12 years ago by ebihara

Replying to kiwa:

  • comment:8 : スケジュール登録は日記のタイトルなどと違い未入力(=「--」)を許すため、確認画面で入力値を操作して時刻を未入力にした状態で登録できるのは正しい挙動であるかと思います(確認画面で10時を12時に変更した状態で登録できてしまうのと同様です)

この報告は「時・分どちらかが空欄の場合」なので comment:7 と一致します。 comment:7 が自然なのであれば、こちらは不具合として扱うべきではないでしょうか。

読み違えていました。修正します。

comment:12 Changed 12 years ago by ebihara

Keywords: 確認中 added; 差し戻し removed

以下のリビジョンで修正しました。

comment:13 Changed 12 years ago by ogawa

Keywords: 差し戻し added; 確認中 removed

handleError() がないため、OPENPNE_DEBUGGINGが0の場合メンテナンス中の画面が表示されてしまいますが、これは意図的なものでしょうか。

comment:14 in reply to:  13 Changed 12 years ago by ebihara

Keywords: 確認中 added; 差し戻し removed

Replying to ogawa:

handleError() がないため、OPENPNE_DEBUGGINGが0の場合メンテナンス中の画面が表示されてしまいますが、これは意図的なものでしょうか。

意図的なものです。

pc_do_h_schedule_add_insert_c_schedule の入力値チェックに引っかかるケースは、URL を指定したダイレクトアクセスや確認画面の hidden の値の改ざんなど、通常の利用では考えにくいものに限られるため、この対応でも問題ないと判断しました。

comment:15 Changed 12 years ago by ogawa

Keywords: テスト待ち added; 確認中 removed

comment:16 Changed 12 years ago by kiwa

Keywords: テスト待ち removed
Resolution: fixed
Status: assignedclosed

確認しました。問題ありません。

comment:17 Changed 11 years ago by kudo

Description: modified (diff)
Note: See TracTickets for help on using tickets.