一覧表示で超過した期限日を赤く表示する
出典: SugarForum.jp
標準モジュールのTasksやCallsのように、設定された期限日が過ぎていたら赤く表示したい、というケースがあります。その場合、Beanクラスの、get_list_view_data() をオーバーライドします。
function get_list_view_data(){
global $timedate;
$fields = $this->get_list_view_array();
if (isset($fields['DEAD_LINE'])){
$today = date($timedate->dbDayFormat, time());
$deadline = $timedate->to_db_date($fields['DEAD_LINE']);
if ($today >= $deadline)
$fields['DEAD_LINE'] = '<span class="overdueTask">'.$fields['DEAD_LINE'].'</span>';
}
return $fields;
}
$timedate はSugarで日時を扱うためのTimeDateクラスのインスタンスです。get_list_view_array() で、デフォルトの配列を受け取ります。この例では、DEAD_LINE(締切)フィールドが存在するかチェックし、今日($today)と締切($deadline)の比較をします。超過している場合は、<span class="overdueTask"> を付加します。CSSのoverdueTaskクラスは赤色に設定されています。(使用中のテーマに依存します)
$timedate->dbDayFormat
このクラス変数は、DBの日付表現を示します。MySQLであれば「Y-m-d」です。
$timedate->to_db_date($str)
この関数は、受け取った文字列(日付表現)を、DBの日付表現に変換します。