From dd3b9b39580309dec8681efd73246582651c28e8 Mon Sep 17 00:00:00 2001 From: Yuan Chiu Date: Tue, 28 Oct 2014 16:55:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AD=B8=E7=BF=92=E6=B4=BB=E5=8B=95=E9=A1=9E?= =?UTF-8?q?=E5=88=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- htdocs/lib/Database/DBStudyActivity.php | 110 +++++++++++++++++++++- htdocs/lib/Study/Study.php | 0 htdocs/lib/Study/StudyActivity.php | 13 ++- htdocs/lib/Study/StudyActivityManager.php | 4 +- htdocs/lib/User/ClassGroupAdmin.php | 11 ++- 5 files changed, 130 insertions(+), 8 deletions(-) create mode 100644 htdocs/lib/Study/Study.php diff --git a/htdocs/lib/Database/DBStudyActivity.php b/htdocs/lib/Database/DBStudyActivity.php index 18701c2..c1262c4 100644 --- a/htdocs/lib/Database/DBStudyActivity.php +++ b/htdocs/lib/Database/DBStudyActivity.php @@ -25,7 +25,7 @@ require_once UELEARNING_LIB_ROOT.'/Database/Exception.php'; * * $db = new Database\DBStudyActivity(); * // 現在開始一個活動 - * $db->insertActivity('yuan', '1', null, null, null, 0, null, null, true, null); + * $db->insertActivity('yuan', '1', null, null, null, 0, false, null, true, null); * // 設定延後 * $db->setDelay(40, -12); * @@ -132,7 +132,7 @@ class DBStudyActivity extends Database { /** * 移除一場活動 - * @param string $uId 使用者名稱 + * @param int $id 活動編號 * @since 2.0.0 */ public function deleteActivity($id) { @@ -356,4 +356,110 @@ class DBStudyActivity extends Database { $query->bindParam(':value', $delay); $query->execute(); } + + // ======================================================================== + + /** + * 預約一個活動 + * + * @param string $userId 使用者ID + * @param string $themeId 主題ID + * @param string $startTime 開始生效時間 + * @param string $expiredTime 過期時間 + * @param int $learnTime 學習所需時間(分) + * @param bool $timeForce 時間到時是否強制中止學習 + * @param int $learnStyle 學習導引模式 + * @param bool $learnStyle_force 拒絕前往非推薦的學習點 + * @param string $materialMode 教材模式 + * @param string $isLock 是否鎖定不讓學生更改 + * @since 2.0.0 + */ + public function insertWillActivity($userId, $themeId, $startTime, $expiredTime, + $learnTime, $timeForce, + $learnStyle, $learnStyle_force, $materialMode, $isLock) + { + + // 自動填入未填的時間 + if(isset($startTime)) + $to_startTime = $this->connDB->quote($startTime); + else $to_startTime = "NOW()"; + + if(isset($expiredTime)) + $to_expiredTime = $this->connDB->quote($expiredTime); + else $to_expiredTime = "NULL"; + + // 未填入學習時間,將會自動取得主題學習時間 + if(isset($learnTime)) + $to_learnTime = $this->connDB->quote($learnTime); + else $to_learnTime = + "(SELECT `ThLearnTime` FROM `".$this->table('Theme'). + "` WHERE `ThID` = ".$this->connDB->quote($themeId).")"; + + // 未填入學習風格,將會取用使用者偏好的風格,若帳號未設定,將取用系統預設的學習風格 + $queryResult = array(); + if(!isset($learnStyle) || !isset($materialMode)) { + $sqlSUser = "SELECT `LMode`, `MMode` ". + "FROM `".$this->table('User')."` ". + "WHERE `UID`=".$this->connDB->quote($userId); + + $query = $this->connDB->prepare($sqlSUser); + $query->execute(); + + $queryResult = $query->fetch(); + } + if(isset($learnStyle)) + $to_learnStyle = $this->connDB->quote($learnStyle); + else if(isset($queryResult['LMode'])) + $to_learnStyle = $queryResult['LMode']; + else + $to_learnStyle = LMODE; + + if(isset($materialMode)) + $to_materialMode = $this->connDB->quote($materialMode); + else if(isset($queryResult['MMode'])) + $to_materialMode = "'".$queryResult['MMode']."'"; + else + $to_materialMode = "'".MMODE."'"; + + // 寫入學習活動資料 + $sqlString = "INSERT INTO `".$this->table('StudyWill'). + "` (`UID`, `ThID`, + `StartTime`, `ExpiredTime`, `LearnTime`, `TimeForce`, + `LMode`, `LModeForce`, `MMode`, `Lock`) + VALUES ( :uid , :thid , + ".$to_startTime.", ".$to_expiredTime.", ".$to_learnTime." , :timeforce , + ".$to_learnStyle.", :lstyle_force , ".$to_materialMode.", :lock )"; + + $query = $this->connDB->prepare($sqlString); + $query->bindParam(":uid", $userId); + $query->bindParam(":thid", $themeId); + $query->bindParam(":timeforce", $timeForce); + $query->bindParam(":lstyle_force", $learnStyle_force); + $query->bindParam(":lock", $isLock); + $query->execute(); + + // 取得剛剛加入的ID + $sqlString = "SELECT LAST_INSERT_ID()"; + $query = $this->connDB->query($sqlString); + $queryResult = $query->fetch(); + $resultId = $queryResult[0]; + + return $resultId; + } + + /** + * 移除一場預約 + * @param int $id 預約編號 + * @since 2.0.0 + */ + public function deleteWillActivity($id) { + + $sqlString = "DELETE FROM ".$this->table('StudyWill'). + " WHERE `SwID` = :id "; + + $query = $this->connDB->prepare($sqlString); + $query->bindParam(":id", $id); + $query->execute(); + } + } \ No newline at end of file diff --git a/htdocs/lib/Study/Study.php b/htdocs/lib/Study/Study.php new file mode 100644 index 0000000..e69de29 diff --git a/htdocs/lib/Study/StudyActivity.php b/htdocs/lib/Study/StudyActivity.php index 692a30a..363b7d5 100644 --- a/htdocs/lib/Study/StudyActivity.php +++ b/htdocs/lib/Study/StudyActivity.php @@ -79,7 +79,9 @@ class StudyActivity { * @since 2.0.0 */ public function finishActivity() { - //return $this->queryResultArray['name']; + + $db = new Database\DBStudyActivity(); + $db->setEndTimeNow($this->id); } /** @@ -89,8 +91,17 @@ class StudyActivity { */ public function cancelActivity() { //return $this->queryResultArray['name']; + // TODO: cancelActivity } + /** + * 此學習階段是否正在學習中 + */ + public function isLearning() { + if(!isset($this->queryResultArray['end_time'])) return true; + else return false; + } + // ======================================================================== /** diff --git a/htdocs/lib/Study/StudyActivityManager.php b/htdocs/lib/Study/StudyActivityManager.php index 94f09e5..cc0e9d6 100644 --- a/htdocs/lib/Study/StudyActivityManager.php +++ b/htdocs/lib/Study/StudyActivityManager.php @@ -4,8 +4,8 @@ */ namespace UElearning\Study; -require_once UELEARNING_LIB_ROOT.'/Database/DBTarget.php'; -//require_once UELEARNING_LIB_ROOT.'/Target/Exception.php'; +require_once UELEARNING_LIB_ROOT.'/Database/DBStudyActivity.php'; +require_once UELEARNING_LIB_ROOT.'/Study/Exception.php'; use UElearning\Database; use UElearning\Exception; diff --git a/htdocs/lib/User/ClassGroupAdmin.php b/htdocs/lib/User/ClassGroupAdmin.php index 26670cc..7e3ba4d 100644 --- a/htdocs/lib/User/ClassGroupAdmin.php +++ b/htdocs/lib/User/ClassGroupAdmin.php @@ -26,6 +26,10 @@ class ClassGroupAdmin { * * 建立班級群組範例: * + * require_once __DIR__.'/../config.php'; + * require_once UELEARNING_LIB_ROOT.'/User/ClassGroupAdmin.php'; + * use UElearning\User; + * * try { * $groupAdmin = new User\ClassGroupAdmin(); * $newId = null; @@ -79,9 +83,10 @@ class ClassGroupAdmin { // 新增一筆使用者資料進資料庫 $db = new Database\DBUser(); $id = $db->insertClassGroup( - $classGroupArray['class_id'], - $classGroupArray['name'], - $classGroupArray['memo'] + array( 'class_id' => $classGroupArray['class_id'], + 'name' => $classGroupArray['name'], + 'memo' => $classGroupArray['memo'] + ) ); // 回傳剛剛新增的ID