From d11804030faa3b6e4dc47d10fe085e56be6e1d5f Mon Sep 17 00:00:00 2001 From: Yuan Chiu Date: Tue, 28 Oct 2014 14:17:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E4=B8=8A=E6=99=82=E9=96=93=E5=B7=B2?= =?UTF-8?q?=E9=81=8E=E6=98=AF=E5=90=A6=E5=BC=B7=E5=88=B6=E7=B5=90=E6=9D=9F?= =?UTF-8?q?=E5=AD=B8=E7=BF=92=E9=81=B8=E9=A0=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- htdocs/lib/Database/DBStudyActivity.php | 34 +++++++++++++++++------ htdocs/lib/Study/StudyActivity.php | 23 +++++++++++++++ htdocs/lib/Study/StudyActivityManager.php | 25 +++++++++++++---- 3 files changed, 68 insertions(+), 14 deletions(-) diff --git a/htdocs/lib/Database/DBStudyActivity.php b/htdocs/lib/Database/DBStudyActivity.php index 4694455..18701c2 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, true, null); + * $db->insertActivity('yuan', '1', null, null, null, 0, null, null, true, null); * // 設定延後 * $db->setDelay(40, -12); * @@ -49,13 +49,15 @@ class DBStudyActivity extends Database { * @param string $endTime 結束學習時間 * @param int $learnTime 學習所需時間(分) * @param int $delay 延誤結束時間(分) + * @param bool $timeForce 時間到時是否強制中止學習 * @param int $learnStyle 學習導引模式 * @param bool $learnStyle_force 拒絕前往非推薦的學習點 * @param string $materialMode 教材模式 * @since 2.0.0 */ public function insertActivity($userId, $themeId, $startTime, $endTime, - $learnTime, $delay, $learnStyle, $learnStyle_force, $materialMode) + $learnTime, $delay, $timeForce, + $learnStyle, $learnStyle_force, $materialMode) { // 自動填入未填的時間 @@ -103,10 +105,10 @@ class DBStudyActivity extends Database { // 寫入學習活動資料 $sqlString = "INSERT INTO `".$this->table('StudyActivity'). "` (`UID`, `ThID`, - `StartTime`, `EndTime`, `LearnTime`, `Delay`, + `StartTime`, `EndTime`, `LearnTime`, `Delay`, `TimeForce`, `LMode`, `LModeForce`, `MMode`) VALUES ( :uid , :thid , - ".$to_startTime.", ".$to_endTime.", ".$to_learnTime." , :delay , + ".$to_startTime.", ".$to_endTime.", ".$to_learnTime." , :delay , :timeforce , ".$to_learnStyle.", :lstyle_force , ".$to_materialMode.")"; @@ -115,6 +117,7 @@ class DBStudyActivity extends Database { $query->bindParam(":uid", $userId); $query->bindParam(":thid", $themeId); $query->bindParam(":delay", $delay); + $query->bindParam(":timeforce", $timeForce); $query->bindParam(":lstyle_force", $learnStyle_force); $query->execute(); @@ -122,9 +125,9 @@ class DBStudyActivity extends Database { $sqlString = "SELECT LAST_INSERT_ID()"; $query = $this->connDB->query($sqlString); $queryResult = $query->fetch(); + $resultId = $queryResult[0]; - if(isset($cId)) return $cId; - return $queryResult[0]; + return $resultId; } /** @@ -150,7 +153,8 @@ class DBStudyActivity extends Database { public function queryActivityByWhere($where) { $sqlString = "SELECT `SaID`, `UID`, `ThID`, ". - "`StartTime`, `EndTime`, `LearnTime`, `Delay`, ". + "`StartTime`, `EndTime`, ". + "`LearnTime`, `Delay`, `TimeForce`, ". "`LMode`, `LModeForce`, `MMode` ". "FROM `".$this->table('StudyActivity')."` AS Act ". //"LEFT JOIN `".$this->table('Area')."` AS Area ". @@ -167,6 +171,16 @@ class DBStudyActivity extends Database { $result = array(); foreach($queryResultAll as $key => $thisResult) { + if($thisResult['TimeForce'] != '0') { + $output_time_force = true; + } + else { $output_time_force = false; } + + if($thisResult['LModeForce'] != '0') { + $output_learnStyleForce = true; + } + else { $output_learnStyleForce = false; } + array_push($result, array( 'activity_id' => $thisResult['SaID'], 'user_id' => $thisResult['UID'], @@ -175,8 +189,9 @@ class DBStudyActivity extends Database { 'end_time' => $thisResult['EndTime'], 'learn_time' => $thisResult['LearnTime'], 'delay' => $thisResult['Delay'], + 'time_force' => $output_time_force, 'learnStyle_mode' => $thisResult['LMode'], - 'learnStyle_force' => $thisResult['LModeForce'], + 'learnStyle_force' => $output_learnStyleForce, 'material_mode' => $thisResult['MMode']) ); } @@ -214,6 +229,7 @@ class DBStudyActivity extends Database { * 'end_time' => <結束學習時間>, * 'learn_time' => <學習所需時間(分)>, * 'delay' => <延誤結束時間(分)>, + * 'time_force' => <時間到時是否強制中止學習>, * 'learnStyle_mode' => <學習導引模式>, * 'learnStyle_force' => <拒絕前往非推薦的學習點>, * 'material_mode' => <教材模式> @@ -247,7 +263,9 @@ class DBStudyActivity extends Database { * 'theme_id' => <主題ID>, * 'start_time' => <開始學習時間>, * 'end_time' => <結束學習時間>, + * 'learn_time' => <學習所需時間(分)>, * 'delay' => <延誤結束時間(分)>, + * 'time_force' => <時間到時是否強制中止學習>, * 'learnStyle_mode' => <學習導引模式>, * 'learnStyle_force' => <拒絕前往非推薦的學習點>, * 'material_mode' => <教材模式> diff --git a/htdocs/lib/Study/StudyActivity.php b/htdocs/lib/Study/StudyActivity.php index 393e371..692a30a 100644 --- a/htdocs/lib/Study/StudyActivity.php +++ b/htdocs/lib/Study/StudyActivity.php @@ -202,6 +202,19 @@ class StudyActivity { return $this->queryResultArray['learn_time']; } + /** + * 取得這次可實際學習時間(包含延時) + * + * @return int 可實際學習時間(分) + * @since 2.0.0 + */ + public function getRealLearnTimeWith() { + + $learnTime = $this->queryResultArray['learn_time']; + $delay = $this->queryResultArray['delay']; + return $learnTime + $delay; + } + /** * 取得這次學習還剩下多少學習時間 * @@ -262,6 +275,16 @@ class StudyActivity { $this->getQuery(); } + /** + * 在這次學習時間已過,是否強制結束學習 + * + * @return bool 是否在這次學習時間已過而強制結束學習 + * @since 2.0.0 + */ + public function isForceLearnTime() { + return $this->queryResultArray['time_force']; + } + // ------------------------------------------------------------------------ /** diff --git a/htdocs/lib/Study/StudyActivityManager.php b/htdocs/lib/Study/StudyActivityManager.php index 1538452..94f09e5 100644 --- a/htdocs/lib/Study/StudyActivityManager.php +++ b/htdocs/lib/Study/StudyActivityManager.php @@ -4,7 +4,7 @@ */ namespace UElearning\Study; -//require_once UELEARNING_LIB_ROOT.'/Database/DBTarget.php'; +require_once UELEARNING_LIB_ROOT.'/Database/DBTarget.php'; //require_once UELEARNING_LIB_ROOT.'/Target/Exception.php'; use UElearning\Database; use UElearning\Exception; @@ -25,18 +25,30 @@ class StudyActivityManager { * * @param string $userId 使用者ID * @param string $themeId 主題ID - * @param string $startTime 開始學習時間 * @param int $learnTime 所需學習時間(分) + * @param bool $timeForce 時間到時是否強制中止學習 * @param int $learnStyle 將推薦幾個學習點 * @param bool $learnStyle_force 是否拒絕前往非推薦的學習點 * @param string $materialMode 教材風格 * @return int 本次學習活動的流水編號 * @since 2.0.0 */ - public function startActivity( $userId, $themeId, $startTime, - $learnTime, $learnStyle, $learnStyle_force, $materialMode ) + public function startActivity( $userId, $themeId, $learnTime, $timeForce, + $learnStyle, $learnStyle_force, $materialMode ) { - //return $this->queryResultArray['name']; + + // TODO: 使用者存不存在 + + // TODO: 標的存不存在 + + // TODO: 教材是否存在 + + // 存入資料庫 + $db = new Database\DBStudyActivity(); + $resultId = $db->insertActivity($userId, $themeId, null, null, + $learnTime, 0, $timeForce, $learnStyle, $learnStyle_force, $materialMode); + + return $resultId; } /** @@ -47,6 +59,7 @@ class StudyActivityManager { * @param string $startTime 預約開始時間 * @param string $expiredTime 預約過期時間 * @param int $learnTime 所需學習時間(分) + * @param bool $timeForce 學習時間已過是否強制中止學習 * @param int $learnStyle 將推薦幾個學習點 * @param bool $learnStyle_force 是否拒絕前往非推薦的學習點 * @param string $materialMode 教材風格 @@ -55,7 +68,7 @@ class StudyActivityManager { * @since 2.0.0 */ public function createWiilActivity($userId, $themeId, $startTime, $expiredTime, - $learnTime, $learnStyle, $learnStyle_force, $materialMode, $lock) + $learnTime, $timeForce, $learnStyle, $learnStyle_force, $materialMode, $lock) { }