$strreports = get_string('courseStandard1', 'block_report_module'); $PAGE->set_title($strreports); $PAGE->set_heading($strreports); $PAGE->navbar->add(get_string('reportModuleTitle', 'block_report_module')); $PAGE->navbar->add($strreports); echo $OUTPUT->header(); echo $OUTPUT->heading(get_string('courseStandardStoreDisplay', 'block_report_module')); $courseID = optional_param('courseID', 0, PARAM_INT); if (!($course = $DB->get_record('course', array('id' => $courseID)))) { error(get_string('selectRightCourseName1', 'block_report_module')); } $context = get_context_instance(CONTEXT_COURSE, $course->id); if (!has_capability('moodle/grade:viewall', $context)) { error(get_string('NoModifyCourseStandardAuth', 'block_report_module')); } $courseAction = getCourseActionItem($courseID); $courseStandardArray = array(); $courseStandardArray['course'] = array(); $courseStandardArray['course']['timeCheck'] = optional_param('courseTimeCheck', 0, PARAM_INT); $courseStandardArray['course']['time'] = optional_param('courseTime', 0, PARAM_NUMBER); $courseStandardArray['course']['scoreCheck'] = optional_param('courseScoreCheck', 0, PARAM_INT); $courseStandardArray['course']['score'] = optional_param('courseScore', 0, PARAM_NUMBER); foreach ($courseAction as $courseActionOne) { $courseStandardArray[$courseActionOne->id] = array(); $courseStandardArray[$courseActionOne->id]['timeCheck'] = optional_param('actionTimeCheck' . $courseActionOne->id, 0, PARAM_INT); $courseStandardArray[$courseActionOne->id]['time'] = optional_param('actionTime' . $courseActionOne->id, 0, PARAM_NUMBER); $courseStandardArray[$courseActionOne->id]['scoreCheck'] = optional_param('actionScoreCheck' . $courseActionOne->id, 0, PARAM_INT); $courseStandardArray[$courseActionOne->id]['score'] = optional_param('actionScore' . $courseActionOne->id, 0, PARAM_NUMBER); } $courseStandardString = serialize($courseStandardArray); if (!($reportmodule = $DB->get_record('reportmodule', array('courseid' => $courseID)))) {
function produceSimpleCourseUserArray($userID, $courseID, $courseUserLogData, &$userPass) { //relating function produceUserCourseLog //use produceUserCourseLog's return as input $courseUserLogData global $DB; if (!($user = $DB->get_record('user', array('id' => $userID)))) { return false; //error('不正確的學員名稱!'); } if (!($courseusers = get_course_students($courseID))) { return false; //error('這門課程目前沒有學生參加!'); } if (!($courseActionItem = getCourseActionItem($courseID))) { return false; //error('課程未有活動!'); } if (!($courseStandardArray = getReportModuleConfig($courseID))) { return false; //error('課程尚未設定!'); } //compare time or score //compare course action course if ($courseStandardArray['course']['timeCheck']) { //compare time $courseTime = calculateInteTime($courseUserLogData); $courseTimeStandard = $courseStandardArray['course']['time'] ? $courseStandardArray['course']['time'] : "0"; $courseTimePass = $courseTime >= $courseTimeStandard ? true : false; //compare score $courseScorePass = true; } else { //compare time $courseTimePass = true; //compare score $courseScorePass = true; } //include course action data $courseUserArray = array(); //$courseUserArray['course' or 'modID']['timeCheck' or 'score' ...] $courseUserArray['course'] = array('timePass' => $courseTimePass, 'scorePass' => $courseScorePass); //user pass array edit if (!($courseUserArray['course']['timePass'] and $courseUserArray['course']['scorePass'])) { return false; } //compare action item foreach ($courseActionItem as $courseActionItemOne) { //switch action item if (!($courseActionItemOne = courseActionItemCheck($courseActionItemOne))) { //if not need action item break the count break; } //setup action time switch ($courseActionItemOne->itemmodule) { case 'lesson': //單元課程 //compare mod time action mod id if ($courseStandardArray[$courseActionItemOne->id]['timeCheck']) { //compare time $courseActionTime = 0; //setup action time $lessonID = $courseActionItemOne->iteminstance; if ($lessonTime = caculateLessonTime($userID, $courseID, $lessonID)) { $courseActionTime = $lessonTime; } //read action time standard $courseActionTimeStandard = $courseStandardArray[$courseActionItemOne->id]['time'] ? $courseStandardArray[$courseActionItemOne->id]['time'] : "0"; $courseActionTimePass = $courseActionTime >= $courseActionTimeStandard ? true : false; } else { //compare time $courseActionTimePass = true; } //compare mod score action mod id if ($courseStandardArray[$courseActionItemOne->id]['scoreCheck']) { //compare score $courseActionScore = 0; $courseActionScore = getCourseActionScore($courseActionItemOne->id, $userID); $courseActionScore = round($courseActionScore->finalgrade, 2); //read action score standard $courseActionScoreStandard = $courseStandardArray[$courseActionItemOne->id]['score'] ? $courseStandardArray[$courseActionItemOne->id]['score'] : "0"; $courseActionScorePass = $courseActionScore >= $courseActionScoreStandard ? true : false; } else { //compare score $courseActionScorePass = true; } break; case 'assignment': //作業 //compare mod time action mod id if ($courseStandardArray[$courseActionItemOne->id]['timeCheck']) { //compare time $courseActionTimePass = true; } else { //compare time $courseActionTimePass = true; } //compare mod score action mod id if ($courseStandardArray[$courseActionItemOne->id]['scoreCheck']) { //compare score $courseActionScore = 0; $courseActionScore = getCourseActionScore($courseActionItemOne->id, $userID); $courseActionScore = round($courseActionScore->finalgrade, 2); //read action score standard $courseActionScoreStandard = $courseStandardArray[$courseActionItemOne->id]['score'] ? $courseStandardArray[$courseActionItemOne->id]['score'] : "0"; $courseActionScorePass = $courseActionScore >= $courseActionScoreStandard ? true : false; } else { //compare score $courseActionScorePass = true; } break; case 'quiz': //考試 //compare mod time action mod id if ($courseStandardArray[$courseActionItemOne->id]['timeCheck']) { //compare time $courseActionTime = 0; //setup action time $quizID = $courseActionItemOne->iteminstance; if ($quizTime = caculateQuizTime($userID, $courseID, $quizID)) { $courseActionTime = $quizTime; } //read action time standard $courseActionTimeStandard = $courseStandardArray[$courseActionItemOne->id]['time'] ? $courseStandardArray[$courseActionItemOne->id]['time'] : "0"; $courseActionTimePass = $courseActionTime >= $courseActionTimeStandard ? true : false; } else { //compare time $courseActionTimePass = true; } //compare mod score action mod id if ($courseStandardArray[$courseActionItemOne->id]['scoreCheck']) { //compare score $courseActionScore = 0; $courseActionScore = getCourseActionScore($courseActionItemOne->id, $userID); $courseActionScore = round($courseActionScore->finalgrade, 2); //read action score standard $courseActionScoreStandard = $courseStandardArray[$courseActionItemOne->id]['score'] ? $courseStandardArray[$courseActionItemOne->id]['score'] : "0"; $courseActionScorePass = $courseActionScore >= $courseActionScoreStandard ? true : false; } else { //compare score $courseActionScorePass = true; } break; case 'hotpot': //hot potato test //compare mod time action mod id if ($courseStandardArray[$courseActionItemOne->id]['timeCheck']) { //compare time $courseActionTime = 0; //setup action time $hotpotID = $courseActionItemOne->iteminstance; if ($hotpotTime = caculateHotPotTime($userID, $courseID, $hotpotID)) { $courseActionTime = $hotpotTime; } //read action time standard $courseActionTimeStandard = $courseStandardArray[$courseActionItemOne->id]['time'] ? $courseStandardArray[$courseActionItemOne->id]['time'] : "0"; $courseActionTimePass = $courseActionTime >= $courseActionTimeStandard ? true : false; } else { //compare time $courseActionTimePass = true; } //compare mod score action mod id if ($courseStandardArray[$courseActionItemOne->id]['scoreCheck']) { //compare score $courseActionScore = 0; $courseActionScore = getCourseActionScore($courseActionItemOne->id, $userID); $courseActionScore = round($courseActionScore->finalgrade, 2); //read action score standard $courseActionScoreStandard = $courseStandardArray[$courseActionItemOne->id]['score'] ? $courseStandardArray[$courseActionItemOne->id]['score'] : "0"; $courseActionScorePass = $courseActionScore >= $courseActionScoreStandard ? true : false; } else { //compare score $courseActionScorePass = true; } break; case 'scorm': //compare mod time action mod id if ($courseStandardArray[$courseActionItemOne->id]['timeCheck']) { //compare time $courseActionTime = 0; //setup action time $scormID = $courseActionItemOne->iteminstance; if ($scormTime = caculateScormTime($userID, $courseID, $scormID)) { $courseActionTime = $scormTime; } //read action time standard $courseActionTimeStandard = $courseStandardArray[$courseActionItemOne->id]['time'] ? $courseStandardArray[$courseActionItemOne->id]['time'] : "0"; $courseActionTimePass = $courseActionTime >= $courseActionTimeStandard ? true : false; } else { //compare time $courseActionTimePass = true; } //compare mod score action mod id if ($courseStandardArray[$courseActionItemOne->id]['scoreCheck']) { //compare score $courseActionScorePass = true; } else { //compare score $courseActionScorePass = true; } break; } $courseUserArray[$courseActionItemOne->id] = array('timePass' => $courseActionTimePass, 'scorePass' => $courseActionScorePass); //user pass array edit if (!($courseUserArray[$courseActionItemOne->id]['timePass'] and $courseUserArray[$courseActionItemOne->id]['scorePass'])) { return false; } } return true; }
$timeDifferent = getTimeDifferent($dateform); $courseUserLogData = produceUserCourseLog($userID, $courseID, $timeDifferent); $courseUserArray[$courseID] = produceCourseUserArray($userID, $courseID, $courseUserLogData, $userPass); $userPassArray[$courseID] = $userPass; } else { error(get_string('pleaseSelectRightCourseName6', 'block_report_module')); } } } else { $courses = reportmycoursesdata($userID); foreach ($courses as $theCourseID => $theCourseName) { if (get_course_students($theCourseID)) { //!the course no student if ($DB->get_record('reportmodule', array('courseid' => $theCourseID))) { //!the course don't setup stardard if ($courseActionItem = getCourseActionItem($theCourseID)) { //!the course no action $userPass = true; $timeDifferent = getTimeDifferent($dateform); $courseUserLogData = produceUserCourseLog($userID, $theCourseID, $timeDifferent); $courseUserArray[$theCourseID] = produceCourseUserArray($userID, $theCourseID, $courseUserLogData, $userPass); $userPassArray[$theCourseID] = $userPass; } } } } if (!$courseUserArray) { error(get_string('allCourseUnsetup6', 'block_report_module')); } } }
echo $coursePassRate . "%"; } else { echo get_string('pleaseSelectRightCourseName', 'block_report_module'); } } else { $courses = coursesdata($categoryID); $courseUserPassArray = array(); foreach ($courses as $courseID => $courseName) { if ($course = $DB->get_record('course', array('id' => $courseID))) { $tempErrorMessage = false; if (!($courseusers = get_course_students($courseID))) { //echo '這門課程目前沒有學生參加!'; //exit; $tempErrorMessage = true; } if (!($courseActionItem = getCourseActionItem($courseID))) { //echo '課程未有活動!'; //exit; $tempErrorMessage = true; } if (!($courseStandardArray = getReportModuleConfig($courseID))) { //echo '課程尚未設定!'; //exit; $tempErrorMessage = true; } if (!$tempErrorMessage) { $userPassArray = array(); foreach ($courseusers as $theUserID => $theStudentObj) { $courseUserLogData = produceUserCourseLog($theUserID, $courseID); $userPassArray[$theUserID] = produceSimpleCourseUserArray($theUserID, $courseID, $courseUserLogData, $userPass); }