共用引入檔:inc.php
對應程式: dashboard/inc.php
業務功能
Dashboard 的核心初始化檔案,負責權限控管、全域常數/變數定義、以及 Dashboard 專用的共用函式庫。所有 Dashboard 頁面都必須 require_once 此檔案。
主要內容
1. 權限控管
- 引入
enter_logs/inc.php(間接引入wp-config.php、WordPress core) - 定義頁面存取設定
$ARY_PAGE_ACCESS_CONFIG:列舉所有 Dashboard 頁面,全部設為PAGE_ACCESS_CONFIG_VALUE_FOR_ALL_STAFF(已登入即可存取) - 檢查當前頁面是否在設定中,未設定則
die()
2. 常數與全域變數
| 變數/常數 | 值 | 說明 |
|---|---|---|
IS_DEBUG_DASH_BACKEND | isset($_GET['a']) | URL 帶 ?a 可啟用除錯模式 |
$ABSENT_TOP_N | 50 | 缺席排行榜顯示前 N 名 |
$MAX_HOUR_IN_ONE_DAY | 7.5 | 每日上課時數上限 |
$RELAX_HOUR_IN_ONE_DAY | 1 | 每日休息時數(計算時扣除) |
$CLASS_CHECKBOX_HTML | HTML 模板 | ClassPicker Checkbox 項目模板 |
$CLASS_RADIO_HTML | HTML 模板 | ClassPicker Radio 項目模板 |
$sql_tmpl_global | SQL 模板 | 出席統計查詢的共用 SQL 模板 |
3. 定義的 Functions
| Function | 說明 |
|---|---|
calc_log_datetimes_total_seconds($ary, $max, $map) | 計算刷卡記錄的總上課秒數,依日分組,單日上限為自訂時數 |
get_request_ip_location_city() | 透過 ipinfo.io API 取得使用者 IP 的所在城市 |
get_request_kind_area() | 依城市名判斷地區代碼(北/竹/中/南) |
is_kind_inside_area($kind_name, $area) | 判斷班別名稱是否屬於指定地區 |
get_latest_kind_id_by_kind_area($area, $xlass) | 取得指定地區最新的班別 ID |
render_student_rank($kind_id) | 產生缺席學員排行榜完整 HTML(含分頁、表格) |
display_autocomplete_searchkind_input($part, $conf) | 產生班級關鍵字搜尋的 input + autocomplete JS |
display_todaybox($kind_id, $color, $total, $label, ...) | 產生當日出席甜甜圈圖的 HTML + C3.js 初始化 |
display_classpicker_modal($classname, $modal_title) | 產生班別篩選 Modal 的 HTML |
引入鏈
dashboard/inc.php
└─ enter_logs/inc.php
└─ wp-config.php(WordPress 設定、共用 helpers)
└─ enter_logs/classes/ClassDates.php