デバッグ中の作業メモ

カレンダーのイベントの終了時刻の初期値を23:55にする

 
画像 白井 達也
カレンダーのイベントの終了時刻の初期値を23:55にする
2014年 04月 25日(金曜日) 21:50 - 白井 達也 の投稿 (ID:19527)
 

 これは旧(Shirai184)に関する話.GoogleカレンダーなどにMoodleのカレンダーをiCal形式でエクスポートしたりする際に,”終日”イベントは00:00から始まって23:55で終わるものである.どうかと思うけれどね,この仕様は.

 Moodle2.6だと,期間の終了時刻は,なんとイベントを入力している”いま”(=time())の時刻である.未来の予定を入れるときはどうなるのだ? おいおい,未来のイベントでも終了時刻の初期値は”いま”だ.これはvalidation()で警告が出るから大丈夫,という話ではないと思うぞ?

 そんなこともあるので,開始時刻($event->timestart)の60*60*23+60*55秒後を終了時刻とするのが初期値としては望ましいだろう.なお,新規イベントをnewする際の開始時刻は非情の00:00であるので,結果的に好都合である.

 さて,calendar/event.phpがaction=newやeditで呼び出されるコード.ここで使われる入力用のフォームはcalendar/event_form.phpで定義されている.validation()も.

 $event->duration が0で期間なし,1で終了時刻を指定,2で期間(分)をradioボックスで選択できる.calendar/event.phpの中で$event=new calendar_event($event)する前に勝手に書き換えればそれが初期値になる.

 さて,ここで$event->timestart = $time;の後に,$event->timedurationuntil = $time + 60*60*23+60*55; を追加すると….あ,完成してしまった.

なお,$event->timeduration と$event->timedurationuntilは指定の仕方が違うが,どちらも狙いは同じ.

https://www.suzuka-ct.ac.jp/mech/moodle2/mod/wiki/view.php?pageid=2946