insertActivity('yuan', '1', null, null, null, 0, false, null, true, null); * // 設定延後 * $db->setDelay(40, -12); * * // 查詢'yuan'的所有活動 * $data = $db->queryAllActivityByUserId('yuan'); * echo '
';print_r($data);echo ''; * * @author Yuan Chiu
'; print_r($targetInfo); echo ''; * * * @param int $td 學習活動ID * @return array 活動資料陣列,格式為: * array( 'activity_id' => <活動流水編號>, * 'user_id' => <使用者ID>, * 'theme_id' => <主題ID>, * 'start_time' => <開始學習時間>, * 'end_time' => <結束學習時間>, * 'learn_time' => <學習所需時間(分)>, * 'delay' => <延誤結束時間(分)>, * 'time_force' => <時間到時是否強制中止學習>, * 'learnStyle_mode' => <學習導引模式>, * 'learnStyle_force' => <拒絕前往非推薦的學習點>, * 'material_mode' => <教材模式> * ); * @param int $id 活動編號 */ public function queryActivity($id) { $queryResultAll = $this->queryActivityByWhere("`SaID`=".$this->connDB->quote($id)); // 如果有查到一筆以上 if( count($queryResultAll) >= 1 ) { return $queryResultAll[0]; } // 若都沒查到的話 else { return null; } } /** * 查詢所有活動資料 * * @return array 學習活動資料陣列,格式為: * * array( * array( * 'activity_id' => <活動流水編號>, * 'user_id' => <使用者ID>, * 'theme_id' => <主題ID>, * 'start_time' => <開始學習時間>, * 'end_time' => <結束學習時間>, * 'learn_time' => <學習所需時間(分)>, * 'delay' => <延誤結束時間(分)>, * 'time_force' => <時間到時是否強制中止學習>, * 'learnStyle_mode' => <學習導引模式>, * 'learnStyle_force' => <拒絕前往非推薦的學習點>, * 'material_mode' => <教材模式> * ) * ); * */ public function queryAllActivity() { return $this->queryActivityByWhere("1"); } /** * 查詢此使用者所有活動資料 * * @param int $user_id 使用者ID * @return array 學習活動資料陣列,格式為: * * array( * array( * 'activity_id' => <活動流水編號>, * 'user_id' => <使用者ID>, * 'theme_id' => <主題ID>, * 'start_time' => <開始學習時間>, * 'end_time' => <結束學習時間>, * 'delay' => <延誤結束時間(分)>, * 'learnStyle_mode' => <學習導引模式>, * 'learnStyle_force' => <拒絕前往非推薦的學習點>, * 'material_mode' => <教材模式> * ) * ); * */ public function queryAllActivityByUserId($user_id) { return $this->queryActivityByWhere( "`UID`=".$this->connDB->quote($user_id)); } /** * 設定結束時間 * * 只要一設定,就代表學習活動結束了 * @param int $activity_id 活動編號 * @param string $endTime 時間 */ public function setEndTime($activity_id, $endTime) { $sqlString = "UPDATE ".$this->table('StudyActivity'). " SET `EndTime` = :value". " WHERE `SaID` = :id"; $query = $this->connDB->prepare($sqlString); $query->bindParam(':id', $activity_id); $query->bindParam(':value', $endTime); $query->execute(); } /** * 設定立即結束 * * 只要一設定,就代表學習活動結束了 * @param int $activity_id 活動編號 */ public function setEndTimeNow($activity_id) { $sqlString = "UPDATE ".$this->table('StudyActivity'). " SET `EndTime` = NOW()". " WHERE `SaID` = :id"; $query = $this->connDB->prepare($sqlString); $query->bindParam(':id', $activity_id); $query->execute(); } /** * 設定延後時間 * * 只要一設定,就代表學習活動結束了 * @param int $activity_id 活動編號 * @param int $delay 延後時間(分) */ public function setDelay($activity_id, $delay) { $sqlString = "UPDATE ".$this->table('StudyActivity'). " SET `Delay` = :value". " WHERE `SaID` = :id"; $query = $this->connDB->prepare($sqlString); $query->bindParam(':id', $activity_id); $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(); } }