} $table2->data[] = array("{$scrom_name} : " . $scorm->name); $sql = "SELECT COUNT(*) as count \n FROM {$CFG->prefix}scorm_scoes sss\n \tWHERE sss.scorm = {$scormfull->threshold}\n\t\tAND sss.scormtype = 'sco'"; $sco_count = 0; $get_countarray = $DB->get_records_sql($sql); foreach ($get_countarray as $value) { $sco_count = $value->count; } $user_grades_array = get_quiz_grades($quiz->id); $get_user = usersdata($course->id, $perpage * $page, $perpage); $usercount = count(usersdata($course->id)); foreach ($get_user as $key => $value) { $getvalue = 0; $sql = "SELECT st.id,st.userid,st.scormid,st.scoid,st.attempt,st.element,st.value,st.timemodified\n FROM {$CFG->prefix}scorm_scoes_track st\n WHERE st.scormid ={$scormfull->threshold} and ( value='completed' or value='suspend') and st.userid={$key} group by st.scoid"; $getqudata = $DB->get_records_sql($sql); $calculation_results = calculateInteTime(integrate_log($scormfull, $key)); if (!empty($getqudata)) { $getvalue = round(count($getqudata) / $sco_count, 2); } $setjudg = get_string('starnopass', 'scormfull'); if ($getvalue >= (int) $scormfull->thresholdvalue / 100) { $setjudg = get_string('strpass', 'scormfull'); $setjudg = !$scormfull->report_add ? get_string('strpass', 'scormfull') : ($calculation_results >= $scormfull->report_value ? get_string('strpass', 'scormfull') : get_string('starnopass', 'scormfull')); } $table->data[] = array("<a href=\"{$CFG->wwwroot}/user/view.php?id={$key}&course={$course->id}\">" . "{$value}</a><br />", $setjudg, !empty($user_grades_array[$key]) ? $user_grades_array[$key]->grade : $not_been_exam, !empty($user_grades_array[$key]) ? $user_grades_array[$key]->grade >= $scormfull->quid_score ? get_string('strpass', 'scormfull') : get_string('starnopass', 'scormfull') : "-"); } $table2->data[] = array("{$connected_exam} : " . $quiz->name); $table2->data[] = array("{$Thresholdvalue} : " . $scormfull->thresholdvalue . "%"); $report_data; if (!$scormfull->report_add) { $report_data = get_string('Not_joined_the_settings', 'scormfull');
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; }
function getJudg($coursedata, $userdata, $quiz_id) { global $CFG, $DB; $sql = "SELECT * FROM {$CFG->prefix}scormfull WHERE course={$coursedata->id} AND quid= {$quiz_id}"; $scormfull = $DB->get_records_sql($sql); if (empty($scormfull)) { return; } foreach ($scormfull as $value) { $scormfull = $value; } if (!$scormfull->threshold) { if (!($scormdata = $DB->get_records("scorm", array("course" => $coursedata->id)))) { error("The scorm with id {$cm->instance} corresponding to this scormfull {$id} is missing"); } $sql = "SELECT count(*) as allcount FROM {$CFG->prefix}scorm_scoes ss ,{$CFG->prefix}scorm sc WHERE ss.scorm=sc.id And sc.course={$coursedata->id} AND ss.scormtype = 'sco'"; $all_count = $DB->get_records_sql($sql); foreach ($all_count as $value) { $all_count = $value->allcount; } $sum = 0; $calculation_results_sum = 0; foreach ($scormdata as $value) { $sql = "SELECT st.id,st.userid,st.scormid,st.scoid,st.attempt,st.element,st.value,st.timemodified\n FROM {$CFG->prefix}scorm_scoes_track st\n WHERE st.scormid ={$value->id} and (value='completed' or value='suspend') and st.userid={$userdata->id} group by st.scoid"; $getcount = $DB->get_records_sql($sql); if (!empty($getcount)) { $sum = $sum + count($getcount); } if ($scormfull->report_add) { $calculation_results = calculateInteTime(integrate_log($scormfull, $userdata->id, $value->id)); $calculation_results_sum = $calculation_results_sum + $calculation_results; } } $getvalue = round($sum / $all_count, 2); if ($getvalue < (int) $scormfull->thresholdvalue / 100) { redirect("{$CFG->wwwroot}/mod/scormfull/user.php?n={$quiz_id}"); } if ($scormfull->report_add) { if ($calculation_results_sum >= $scormfull->report_value) { } else { redirect("{$CFG->wwwroot}/mod/scormfull/user.php?n={$quiz_id}"); } } } else { if (!($scorm = $DB->get_record("scorm", array("id" => $scormfull->threshold)))) { error("The scorm with id {$cm->instance} corresponding to this scormfull {$scormfull->threshold} is missing"); } $sql = "SELECT COUNT(*) as count \n FROM {$CFG->prefix}scorm_scoes sss\n WHERE sss.scorm = {$scormfull->threshold}\n AND sss.scormtype = 'sco'"; $sco_count = 0; $get_countarray = $DB->get_records_sql($sql); foreach ($get_countarray as $value) { $sco_count = $value->count; } $sql = "SELECT st.id,st.userid,st.scormid,st.scoid,st.attempt,st.element,st.value,st.timemodified\n FROM {$CFG->prefix}scorm_scoes_track st\n WHERE st.scormid ={$scormfull->threshold} and (value='completed' or value='suspend') and st.userid={$userdata->id} group by st.scoid"; $getqudata = $DB->get_records_sql($sql); $getvalue = round(count($getqudata) / $sco_count, 2); if ($getvalue < (int) $scormfull->thresholdvalue / 100) { redirect("{$CFG->wwwroot}/mod/scormfull/user.php?n={$quiz_id}"); } if ($scormfull->report_add) { $calculation_results = calculateInteTime(integrate_log($scormfull, $userdata->id)); if ($calculation_results > $scormfull->report_value) { } else { redirect("{$CFG->wwwroot}/mod/scormfull/user.php?n={$quiz_id}"); } } } }
$table2->data[] = array("{$Thresholdvalue} : " . $scormfull->thresholdvalue . "%"); } else { if (!($scorm = $DB->get_record("scorm", array("id" => $scormfull->threshold)))) { error("The scorm with id {$cm->instance} corresponding to this scormfull {$scormfull->threshold} is missing"); } $table2->data[] = array("{$scrom_name} : " . $scorm->name); $sql = "SELECT COUNT(*) as count \n FROM {$CFG->prefix}scorm_scoes sss\n \tWHERE sss.scorm = {$scormfull->threshold}\n\t\tAND sss.scormtype = 'sco'"; $sco_count = 0; $get_countarray = $DB->get_records_sql($sql); foreach ($get_countarray as $value) { $sco_count = $value->count; } $sql = "SELECT st.id,st.userid,st.scormid,st.scoid,st.attempt,st.element,st.value,st.timemodified\n FROM {$CFG->prefix}scorm_scoes_track st\n WHERE st.scormid ={$scormfull->threshold} and (value='completed' or value='suspend') and st.userid={$USER->id} group by st.scoid"; $getqudata = $DB->get_records_sql($sql); $user_grades_array = get_quiz_grades($quiz->id); $calculation_results = calculateInteTime(integrate_log($scormfull, $USER->id)); if (!empty($getqudata)) { $getvalue = round(count($getqudata) / $sco_count, 2); } if ($getvalue >= 1) { $getvalue = 1; } $setjudg = get_string('starnopass', 'scormfull'); $threshold_judg = get_string('starnopass', 'scormfull'); if ($getvalue >= (int) $scormfull->thresholdvalue / 100) { $setjudg = get_string('strpass', 'scormfull'); $threshold_judg = !$scormfull->report_add ? get_string('strpass', 'scormfull') : ($calculation_results >= $scormfull->report_value ? get_string('strpass', 'scormfull') : get_string('starnopass', 'scormfull')); } // $table->data[] = array (($USER->lastname.$USER->firstname),$setjudg,(($getvalue*100)."%")); $table->data[] = array("<a href=\"{$CFG->wwwroot}/user/view.php?id={$USER->id}&course={$course->id}\">" . "{$USER->lastname}{$USER->firstname}</a><br />", $setjudg, $getvalue * 100 . "%", $calculation_results, !$scormfull->report_add ? "-" : ($calculation_results >= $scormfull->report_value ? get_string('strpass', 'scormfull') : get_string('starnopass', 'scormfull'))); $table3->data[] = array("<a href=\"{$CFG->wwwroot}/user/view.php?id={$USER->id}&course={$course->id}\">" . "{$USER->lastname}{$USER->firstname}</a><br />", $threshold_judg, !empty($user_grades_array[$USER->id]) ? $user_grades_array[$USER->id]->grade : $not_been_exam, !empty($user_grades_array[$USER->id]) ? $user_grades_array[$USER->id]->grade >= $scormfull->quid_score ? get_string('strpass', 'scormfull') : get_string('starnopass', 'scormfull') : "-");