Merge branch 'MDL-28282-master' of git://github.com/ankitagarwal/moodle
[moodle.git] / mod / scorm / report / basic / report.php
index 6d2b80a..30fcc78 100644 (file)
@@ -86,7 +86,7 @@ class scorm_basic_report extends scorm_default_report {
                 $nostudents = true;
                 $allowedlist = '';
             } else {
-                $allowedlist = join(',', array_keys($students));
+                $allowedlist = array_keys($students);
             }
         } else {
             // all users who can attempt scoes and who are in the currently selected group
@@ -95,7 +95,7 @@ class scorm_basic_report extends scorm_default_report {
                 $nostudents = true;
                 $groupstudents = array();
             }
-            $allowedlist = join(',', array_keys($groupstudents));
+            $allowedlist = array_keys($groupstudents);
         }
 
         if ( !$nostudents ) {
@@ -271,7 +271,8 @@ class scorm_basic_report extends scorm_default_report {
                 header("Pragma: public");
                 echo implode("\t", $headers)." \n";
             }
-
+            $params = array();
+            list($usql, $params) = $DB->get_in_or_equal($allowedlist, SQL_PARAMS_NAMED);
                             // Construct the SQL
             $select = 'SELECT DISTINCT '.$DB->sql_concat('u.id', '\'#\'', 'COALESCE(st.attempt, 0)').' AS uniqueid, ';
             $select .= 'st.scormid AS scormid, st.attempt AS attempt, ' .
@@ -284,15 +285,15 @@ class scorm_basic_report extends scorm_default_report {
             switch ($attemptsmode) {
                 case SCORM_REPORT_ATTEMPTS_STUDENTS_WITH:
                     // Show only students with attempts
-                    $where = ' WHERE u.id IN (' .$allowedlist. ') AND st.userid IS NOT NULL';
+                    $where = ' WHERE u.id ' .$usql. ' AND st.userid IS NOT NULL';
                     break;
                 case SCORM_REPORT_ATTEMPTS_STUDENTS_WITH_NO:
                     // Show only students without attempts
-                    $where = ' WHERE u.id IN (' .$allowedlist. ') AND st.userid IS NULL';
+                    $where = ' WHERE u.id ' .$usql. ' AND st.userid IS NULL';
                     break;
                 case SCORM_REPORT_ATTEMPTS_ALL_STUDENTS:
                     // Show all students with or without attempts
-                    $where = ' WHERE u.id IN (' .$allowedlist. ') AND (st.userid IS NOT NULL OR st.userid IS NULL)';
+                    $where = ' WHERE u.id ' .$usql. ' AND (st.userid IS NOT NULL OR st.userid IS NULL)';
                     break;
             }
 
@@ -300,7 +301,6 @@ class scorm_basic_report extends scorm_default_report {
             $countsql .= 'COUNT(DISTINCT('.$DB->sql_concat('u.id', '\'#\'', 'st.attempt').')) AS nbattempts, ';
             $countsql .= 'COUNT(DISTINCT(u.id)) AS nbusers ';
             $countsql .= $from.$where;
-            $params = array();
 
             if (!$download) {
                 $sort = $table->get_sql_sort();
@@ -323,7 +323,7 @@ class scorm_basic_report extends scorm_default_report {
                 }
 
                 if (!empty($countsql)) {
-                    $count = $DB->get_record_sql($countsql);
+                    $count = $DB->get_record_sql($countsql, $params);
                     $totalinitials = $count->nbresults;
                     if ($twhere) {
                         $countsql .= ' AND '.$twhere;