這個頁面:

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

條件有兩個:

  1. 第一個日期(dates 前10字元)≤ 今天 → 課程已開始
  2. 最後一個日期(dates 後10字元)+ 7天 ≥ 今天 → 課程尚未「超過結束後7天」

第二個條件有個 extend_more_days=7 的緩衝,預設讓課程結束後再多顯示 7 天,而非結束當天就消失。這個參數在 student_supplement.php 中根據是否為 staff 會動態傳入不同值(一般學員傳 1,staff 傳 7)。