|
|
|
@ -351,13 +351,22 @@ class Tracking |
|
|
|
|
/** |
|
|
|
|
* Gets the score average from all tests in a course by student |
|
|
|
|
* |
|
|
|
|
* @param mixed Student(s) id |
|
|
|
|
* @param string Course code |
|
|
|
|
* @param int Exercise id (optional), filtered by exercise |
|
|
|
|
* @param int Session id (optional), if param $session_id is null it'll return results including sessions, 0 = session is not filtered |
|
|
|
|
* @return string value (number %) Which represents a round integer about the score average. |
|
|
|
|
* @param $student_id |
|
|
|
|
* @param $course_code |
|
|
|
|
* @param int $exercise_id |
|
|
|
|
* @param null $session_id |
|
|
|
|
* @param int $active_filter 2 for consider all tests |
|
|
|
|
* 1 for active <> -1 |
|
|
|
|
* 0 for active <> 0 |
|
|
|
|
* @param int $into_lp 1 for all exercises |
|
|
|
|
* 0 for whitout LP |
|
|
|
|
* @internal param \Student $mixed id |
|
|
|
|
* @internal param \Course $string code |
|
|
|
|
* @internal param \Exercise $int id (optional), filtered by exercise |
|
|
|
|
* @internal param \Session $int id (optional), if param $session_id is null it'll return results including sessions, 0 = session is not filtered |
|
|
|
|
* @return string value (number %) Which represents a round integer about the score average. |
|
|
|
|
*/ |
|
|
|
|
public static function get_avg_student_exercise_score($student_id, $course_code, $exercise_id = 0, $session_id = null) { |
|
|
|
|
public static function get_avg_student_exercise_score($student_id, $course_code, $exercise_id = 0, $session_id = null, $active_filter = 1, $into_lp = 0) { |
|
|
|
|
$course_info = api_get_course_info($course_code); |
|
|
|
|
|
|
|
|
|
if (!empty($course_info)) { |
|
|
|
@ -378,8 +387,23 @@ class Tracking |
|
|
|
|
$session_id = intval($session_id); |
|
|
|
|
$condition_session = " AND session_id = $session_id "; |
|
|
|
|
} |
|
|
|
|
if ($active_filter == 1) { |
|
|
|
|
$condition_active = 'AND active <> -1'; |
|
|
|
|
} elseif ($active_filter == 0) { |
|
|
|
|
$condition_active = 'AND active <> 0'; |
|
|
|
|
} else { |
|
|
|
|
$condition_active = ''; |
|
|
|
|
} |
|
|
|
|
$condition_into_lp = ''; |
|
|
|
|
$select_lp_id = ''; |
|
|
|
|
if ($into_lp == 0) { |
|
|
|
|
$condition_into_lp = 'AND orig_lp_id = 0 AND orig_lp_item_id = 0'; |
|
|
|
|
} else { |
|
|
|
|
$select_lp_id = ', orig_lp_id as lp_id '; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$sql = "SELECT count(id) FROM $tbl_course_quiz |
|
|
|
|
WHERE c_id = {$course_info['real_id']} AND active <> -1 $condition_quiz "; |
|
|
|
|
WHERE c_id = {$course_info['real_id']} $condition_active $condition_quiz "; |
|
|
|
|
$count_quiz = Database::fetch_row(Database::query($sql)); |
|
|
|
|
|
|
|
|
|
if (!empty($count_quiz[0]) && !empty($student_id)) { |
|
|
|
@ -392,7 +416,7 @@ class Tracking |
|
|
|
|
|
|
|
|
|
if (empty($exercise_id)) { |
|
|
|
|
$sql = "SELECT id FROM $tbl_course_quiz |
|
|
|
|
WHERE c_id = {$course_info['real_id']} AND active <> -1 $condition_quiz"; |
|
|
|
|
WHERE c_id = {$course_info['real_id']} $condition_active $condition_quiz"; |
|
|
|
|
$result = Database::query($sql); |
|
|
|
|
$exercise_list = array(); |
|
|
|
|
$exercise_id = null; |
|
|
|
@ -409,17 +433,19 @@ class Tracking |
|
|
|
|
$count_quiz = Database::fetch_row(Database::query($sql)); |
|
|
|
|
|
|
|
|
|
$sql = "SELECT SUM(exe_result/exe_weighting*100) as avg_score, COUNT(*) as num_attempts |
|
|
|
|
$select_lp_id |
|
|
|
|
FROM $tbl_stats_exercise |
|
|
|
|
WHERE exe_exo_id IN ('".$exercise_id."') |
|
|
|
|
$condition_user AND |
|
|
|
|
status = '' AND |
|
|
|
|
exe_cours_id = '$course_code' |
|
|
|
|
$condition_session |
|
|
|
|
$condition_into_lp |
|
|
|
|
ORDER BY exe_date DESC"; |
|
|
|
|
|
|
|
|
|
$res = Database::query($sql); |
|
|
|
|
$row = Database::fetch_array($res); |
|
|
|
|
$quiz_avg_score = 0; |
|
|
|
|
$quiz_avg_score = null; |
|
|
|
|
|
|
|
|
|
if (!empty($row['avg_score'])) { |
|
|
|
|
$quiz_avg_score = round($row['avg_score'],2); |
|
|
|
@ -431,7 +457,26 @@ class Tracking |
|
|
|
|
if (is_array($student_id)) { |
|
|
|
|
$quiz_avg_score = round($quiz_avg_score / count($student_id), 2); |
|
|
|
|
} |
|
|
|
|
return $quiz_avg_score; |
|
|
|
|
if ($into_lp == 0) { |
|
|
|
|
return $quiz_avg_score; |
|
|
|
|
} else { |
|
|
|
|
if (!empty($row['lp_id'])) { |
|
|
|
|
$tbl_lp = Database::get_course_table(TABLE_LP_MAIN); |
|
|
|
|
$tbl_course = Database::get_main_table(TABLE_MAIN_COURSE); |
|
|
|
|
$sql = "SELECT lp.name FROM $tbl_lp as lp, $tbl_course as c WHERE |
|
|
|
|
c.code = '$course_code' AND |
|
|
|
|
lp.id = ".$row['lp_id']." AND |
|
|
|
|
lp.c_id = c.id |
|
|
|
|
LIMIT 1; |
|
|
|
|
"; |
|
|
|
|
$result = Database::query($sql); |
|
|
|
|
$row_lp = Database::fetch_row($result); |
|
|
|
|
$lp_name = $row_lp[0]; |
|
|
|
|
return array($quiz_avg_score, $lp_name); |
|
|
|
|
} else { |
|
|
|
|
return array($quiz_avg_score, null); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return null; |
|
|
|
|