#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 )
■現象
スケジュールの登録、変更時に開始時刻と終了時刻を明記しなかった場合、「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 13 years ago by
Keywords: | 再現待ち removed |
---|
comment:2 Changed 13 years ago by
Summary: | 予定時刻 → スケジュールに開始時刻と終了時刻を明記しなかった場合、「00時00分」になってしまう |
---|
comment:3 Changed 12 years ago by
Owner: | changed from nobody to nakasone |
---|---|
Status: | new → assigned |
やります。
comment:4 Changed 12 years ago by
Description: | modified (diff) |
---|---|
Keywords: | 確認中 added |
comment:5 Changed 12 years ago by
Keywords: | OpenPNE2.10.10 OpenPNE2.13.2 added |
---|---|
Milestone: | → OpenPNE2.12.4 |
comment:6 Changed 12 years ago by
Keywords: | テスト待ち added; 確認中 removed |
---|
comment:7 follow-up: 9 Changed 12 years ago by
Keywords: | 差し戻し added; テスト待ち removed |
---|
--時15分や10時--分など、片方が--になっている場合、BIZモードの予定追加と同じように--を00として扱うべきではないでしょうか?
現在では、片方が--になっている場合は不正として扱われ、以下のエラーメッセージが表示されて予定を登録することができません。
- 開始時刻が正しくありません
- 終了時刻が正しくありません
comment:8 Changed 12 years ago by
追加の不具合を報告します
version
- 2.12.3
- 2.10.9
- 2.13.2
再現手順
- スケジュール作成画面(pc_page_h_schedule_add)を開く
- 必須項目を適当に選択してスケジュール確認画面(pc_page_h_schedule_add_confirm)に遷移する
- 必須項目を適当に選択してスケジュール確認画面(pc_page_h_schedule_add_confirm)で「start_minute」と「end_hour」を空にして「完了」ボタンを謳歌する
- --時--分~--時--分の予定が作成される
※予定編集も同様の現象を再現できます
日記作成など他の機能では、確認画面で項目の不備を発見した場合、作成を完了させず、作成フォームに遷移してエラーメッセージを表示させます。
スケジュールもこれと同じようにスケジュール確認画面(pc_page_h_schedule_add_confirm)で項目の不備を発見した場合はスケジュール作成画面(pc_page_h_schedule_add)にリダイレクトしてエラーメッセージを表示するべきだと思います。
comment:9 follow-up: 10 Changed 12 years ago by
Keywords: | テスト待ち added; 差し戻し removed |
---|
comment:7, comment:8 の指摘事項の双方とも、対応するべきであるとは思えません。
-- は未入力を表す項目であるため、
- comment:7 : --時15分という表記は時刻として成立しないので、エラーとするのは自然でしょう。むしろ BIZ において -- を 00 として扱ってしまうのが不自然であると言えると思います
- comment:8 : スケジュール登録は日記のタイトルなどと違い未入力(=「--」)を許すため、確認画面で入力値を操作して時刻を未入力にした状態で登録できるのは正しい挙動であるかと思います(確認画面で10時を12時に変更した状態で登録できてしまうのと同様です)
以上、ご確認ください。
comment:10 follow-up: 11 Changed 12 years ago by
Keywords: | 差し戻し added; テスト待ち removed |
---|
Replying to ebihara:
- comment:7 : --時15分という表記は時刻として成立しないので、エラーとするのは自然でしょう。むしろ BIZ において -- を 00 として扱ってしまうのが不自然であると言えると思います
納得しました。ではこれは問題ないとします。
- comment:8 : スケジュール登録は日記のタイトルなどと違い未入力(=「--」)を許すため、確認画面で入力値を操作して時刻を未入力にした状態で登録できるのは正しい挙動であるかと思います(確認画面で10時を12時に変更した状態で登録できてしまうのと同様です)
この報告は「時・分どちらかが空欄の場合」なので comment:7 と一致します。 comment:7 が自然なのであれば、こちらは不具合として扱うべきではないでしょうか。
comment:11 Changed 12 years ago by
comment:12 Changed 12 years ago by
Keywords: | 確認中 added; 差し戻し removed |
---|
comment:13 follow-up: 14 Changed 12 years ago by
Keywords: | 差し戻し added; 確認中 removed |
---|
handleError() がないため、OPENPNE_DEBUGGINGが0の場合メンテナンス中の画面が表示されてしまいますが、これは意図的なものでしょうか。
comment:14 Changed 12 years ago by
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
Keywords: | テスト待ち added; 確認中 removed |
---|
comment:16 Changed 12 years ago by
Keywords: | テスト待ち removed |
---|---|
Resolution: | → fixed |
Status: | assigned → closed |
確認しました。問題ありません。
comment:17 Changed 12 years ago by
Description: | modified (diff) |
---|
以下のような確認を行ったところ再現できました。
■確認ブラウザ
■確認バージョン
■手順