@@ -3795,27 +3795,56 @@ public static function get_exercises_to_be_taken($course_code, $session_id)
3795
3795
* @param int $exercise_id
3796
3796
* @param string $course_code
3797
3797
* @param int $session_id
3798
+ * @param bool $onlyStudent Filter only enrolled students
3798
3799
*
3799
3800
* @return array
3800
3801
*/
3801
3802
public static function get_student_stats_by_question (
3802
3803
$ question_id ,
3803
3804
$ exercise_id ,
3804
3805
$ course_code ,
3805
- $ session_id
3806
+ $ session_id ,
3807
+ $ onlyStudent = false
3806
3808
) {
3807
3809
$ track_exercises = Database::get_main_table (TABLE_STATISTIC_TRACK_E_EXERCISES );
3808
3810
$ track_attempt = Database::get_main_table (TABLE_STATISTIC_TRACK_E_ATTEMPT );
3811
+ $ courseUser = Database::get_main_table (TABLE_MAIN_COURSE_USER );
3809
3812
3810
3813
$ question_id = (int ) $ question_id ;
3811
3814
$ exercise_id = (int ) $ exercise_id ;
3812
3815
$ course_code = Database::escape_string ($ course_code );
3813
3816
$ session_id = (int ) $ session_id ;
3814
3817
$ courseId = api_get_course_int_id ($ course_code );
3815
3818
3819
+ if (empty ($ session_id )) {
3820
+ $ courseCondition = "
3821
+ INNER JOIN $ courseUser c
3822
+ ON (
3823
+ e.exe_user_id = c.user_id AND
3824
+ e.c_id = c.c_id AND
3825
+ c.status = " .STUDENT ."
3826
+ AND relation_type <> 2
3827
+ )
3828
+ " ;
3829
+ } else {
3830
+ $ courseCondition = "
3831
+ INNER JOIN $ courseUser c
3832
+ ON (
3833
+ e.exe_user_id = c.user_id AND
3834
+ e.c_id = c.c_id AND
3835
+ c.status = 0
3836
+ )
3837
+ " ;
3838
+ }
3839
+
3816
3840
$ sql = "SELECT MAX(marks) as max, MIN(marks) as min, AVG(marks) as average
3817
3841
FROM $ track_exercises e
3818
- INNER JOIN $ track_attempt a
3842
+ " ;
3843
+ if ($ onlyStudent == true ) {
3844
+ $ sql .= $ courseCondition ;
3845
+ }
3846
+ $ sql .= "
3847
+ INNER JOIN $ track_attempt a
3819
3848
ON (
3820
3849
a.exe_id = e.exe_id AND
3821
3850
e.c_id = a.c_id AND
@@ -3826,7 +3855,7 @@ public static function get_student_stats_by_question(
3826
3855
a.c_id = $ courseId AND
3827
3856
e.session_id = $ session_id AND
3828
3857
question_id = $ question_id AND
3829
- status = ''
3858
+ e. status = ''
3830
3859
LIMIT 1 " ;
3831
3860
$ result = Database::query ($ sql );
3832
3861
$ return = [];
0 commit comments