這個頁面:
https://class.aiacademy.tw/enter_logs/dashboard/index.php
需求: 課程學務行政要可以在這頁:
- 看到最近的報到狀態
- 幫未成功報到的人補報到
目前功能,左上角是近期一週內開課的已上課課程

用到的資料表: class_aiacademy_tw 的 class_dates (要到 https://class.aiacademy.tw/enter_logs/admin/set_class_dates.php 加入) 選課那些的要看 class_kind
Dashboard 圈圈顯示的條件
從程式碼可以看出,display_todaybox 的出現分兩層條件:
第一層:整個 todaybox 區塊是否顯示
IS_DEBUG_DASH_BACKEND必須為false(第 32 行的if(!IS_DEBUG_DASH_BACKEND))
第二層:哪些課程會跑進迴圈
- 課程必須出現在
ClassDates::get_opening_classdates(true)的回傳結果中,也就是「開課中」的班別
display_todaybox 呼叫的兩種情況(第 65–69 行):
| 條件 | 顏色 | 備註文字 |
|---|---|---|
$class_dates->dates 字串中包含今日日期($today_date) | 有色彩($ary_color) | 無(正常上課日) |
$class_dates->dates 字串中不包含今日日期 | 灰色 #eee | 「本日非上課日」 |
也就是說,display_todaybox 對所有開課中的班別都會呼叫,差別只在於今天是否是該班的排定上課日,不是上課日只是顯示灰底並附上提示文字。
開課中的定義
核心 SQL 在 get_opening_classdates(第 43 行),判斷邏輯如下:
SELECT *,
SUBSTRING(dates,1,10) sdate,
SUBSTRING(dates,LENGTH(dates)-9) edate
FROM `class_dates`
WHERE
SUBSTRING(dates,1,10) <= '今天日期' -- 開始日已到
AND DATE_ADD(SUBSTRING(dates,LENGTH(dates)-9), INTERVAL 7 DAY) >= '今天日期' -- 結束日+7天後才算結束「開課中」的定義:
class_dates 資料表的 dates 欄位存的是逗號分隔的所有上課日期字串,例如:2026-06-01,2026-06-08,2026-06-15,...,2026-07-20
條件有兩個:
- 第一個日期(
dates前10字元)≤ 今天 → 課程已開始 - 最後一個日期(
dates後10字元)+ 7天 ≥ 今天 → 課程尚未「超過結束後7天」
第二個條件有個 extend_more_days=7 的緩衝,預設讓課程結束後再多顯示 7 天,而非結束當天就消失。這個參數在 student_supplement.php 中根據是否為 staff 會動態傳入不同值(一般學員傳 1,staff 傳 7)。