# actionGetTeacherTimetable
D:\wamp\www\ketang.test\weike\protected\modules\xingke\controllers\TimetableController.php
1. 查找該老師的課表記錄(根據當前教師用戶的班級和科目查找)
```
$criteria = new CDbCriteria();
$criteria->addInCondition('t.fdClassID', $classIDs);
$criteria->addInCondition('t.fdSubjectID', $subjectIDs);
$res2 = TimetableService::factory()->getAttributesByObject(teaTimetable::model()->findAll($criteria));
```

2. 組裝數組
```
$arr = [];
$week = TimeFormatUtils::get_week($start ? floor($start / 1000) : time(), 'Y-m-d');
for ($i = 1; $i <= 7; $i++) {
$arr[$i]['weekID'] = $i;
$arr[$i]['date'] = $week[$i - 1]['date'];
$weekText = $week[$i - 1]['week'];
$arr[$i]['week'] = $weekText;
}
```

3. 遍歷課表記錄,組裝每節課的信息到組裝數組
```
foreach ($res2 as $item) {
$temp = [];
$weekID = $item['fdWeekID'];
$classIndex = $item['fdClassIndex'];
$classID = $item['fdClassID'];
$subjectID = $item['fdSubjectID'];
$date = $arr[$weekID]['date']; //日期,如3-11
$dateFullName = date('Y-m-d', strtotime($date)); // 完成日期,如2019-03-11
// 檢查是否是調課 ['type' => 1 和誰調換 2 被誰調換 3 和空白課調換]
$adjust = TimetableService::factory()->getIsAdjustTimetable($termID, $classID, $dateFullName, $classIndex, $subjectID);
// 課表信息:節次
$temp['classIndex'] = $classIndex;
if ($adjust) {
...
} else {
// 課表信息:科目信息
$temp['subject']['id'] = $subjectID;
$temp['subject']['title'] = Yii::app()->params['SUBJECT_ARR'][$subjectID];
$temp['subject']['isAdjust'] = 0; // 不是調課
// 課表信息:資源信息
$temp['resource'] = TimetableService::factory()->getAllTypesResourcesStatus($termID, $classID, $dateFullName, $classIndex);
}
// 課表信息:班級信息
$temp['class']['id'] = $classID;
$class = wkeClass::model()->findByPk($classID);
$temp['class']['title'] = $class->fdName;
$temp['class']['gradeID'] = $class->fdGradeID;
// 空白課調課情況
if ($adjust['type'] == 3) {
...
}
// 非空白課程調換
if (in_array($adjust['type'], [1, 2]) && !$isAdjust) {
if ($adjust['type'] == 2) {
$weekID = TimeFormatUtils::get_week_id($adjust['data']->fdDate);
$classIndex = $adjust['data']->fdClassIndex;
$temp['classIndex'] = $classIndex;
$temp['subject']['id'] = $adjust['data']->fdSourceSubjectID;
$temp['subject']['title'] = Yii::app()->params['SUBJECT_ARR'][$adjust['data']->fdSourceSubjectID];
$temp['subject']['isAdjust'] = 1; // 是調課*/
$dateFullName = $adjust['data']->fdDate;
} elseif ($adjust['type'] == 1) {
$weekID = TimeFormatUtils::get_week_id($adjust['data']->fdSourceDate);
$classIndex = $adjust['data']->fdSourceClassIndex;
$temp['classIndex'] = $classIndex;
$temp['subject']['id'] = $adjust['data']->fdSubjectID;
$temp['subject']['title'] = Yii::app()->params['SUBJECT_ARR'][$adjust['data']->fdSubjectID];
$temp['subject']['isAdjust'] = 1; // 是調課*/
$dateFullName = $adjust['data']->fdSourceDate;
}
// 調課后,資源訪問
$temp['resource'] = TimetableService::factory()->getAllTypesResourcesStatus($termID, $classID, $dateFullName, $classIndex);
}
$arr[$weekID]['class'][$classIndex] = $temp;
}
```

課表組裝到數組后:

4. 按節次排序,修改數組索引
```
ksort($arr); // 一維數組按照主鍵排序
foreach ($arr as $k => $v) {
$temp = $v['class'];
$temp && ksort($temp);
$arr[$k]['class'] = $temp; // 二維數組按照主鍵排序
}
// 去除 index主鍵
foreach ($arr as $k => $v) {
$temp = [];
$temp['weekID'] = $v['weekID'];
$temp['date'] = $v['date'];
$temp['week'] = $v['week'];
$temp['class'] = $v['class'] ? array_values($v['class']) : null;
krsort($temp);
$arr[$k] = $temp;
}
```

- 說明
- 開發任務
- 星課-真光
- 課表
- Excel Down
- 調課
- 課表修改
- 課表代碼分析
- 課堂
- 課堂:應用商店通信管理協議
- 教師賬號強制綁定手機或郵箱
- 強制綁定手機和修改密碼的規則
- 學堂
- 課程學習:討論功能
- 后臺:課程討論管理
- 課程直播接口
- 學習統計功能(舊版)
- 學習統計功能(新版)
- 同步課程統計功能
- 同步課程編輯-新增視頻
- 第三方接口
- 學科網
- 安徽第三方
- 大賽
- 管控系統
- 日志管理
- 設備日志
- 平板接口
- 渝教
- 教學總結
- 空白目錄
- Yii 1.1
- 學堂架構
- Yii 1.1一些方法的解讀
- MVCS結構
- 基礎使用語法
- 創建1個新模塊
- 關聯模型
- CDbCriteria
- 學生-課堂記錄
- 學生端頁面展示
- 教師端頁面展示
- 編輯課程文檔
- SQL
- 課堂項目運行入口
- 上傳資源示意圖
- 行為
- PHPStorm
- 源碼閱讀
- 會診答卷頁面
- 考點練習
- 資源首頁
- 同步課程
- 同步課程:章節信息
- 升學復習
- 統計圖-范例
- 模塊
- 非法詞
- 服務層
- MongoDB類
- 學堂作答記錄從Mongo新集合獲取數據
- MongoYii
- 錯題集
- 小技巧
- 完善資料
- 郵件發送
- K12
- JSpang視頻課程
- MongoDB
- 創業
- 項目
- 包包