MDL-34589 quiz report graphs: PHP5.4 issue with unset($array[$float]).

Thanks to Matthew Davidson for diagnosing the problem.
This commit is contained in:
Tim Hunt
2012-07-26 19:00:15 +01:00
parent dd9274c4fc
commit d87c8d7ffd
2 changed files with 10 additions and 3 deletions
+3 -1
View File
@@ -90,7 +90,9 @@ while ($bands > 20 || $bands <= 10) {
}
}
$bands = ceil($bands);
// See MDL-34589. Using doubles as array keys causes problems in PHP 5.4,
// hence the explicit cast to int.
$bands = (int) ceil($bands);
$bandwidth = $quiz->grade / $bands;
$bandlabels = array();
for ($i = 1; $i <= $bands; $i++) {
+7 -2
View File
@@ -190,6 +190,11 @@ function quiz_report_qm_filter_select($quiz, $quizattemptsalias = 'quiza') {
*/
function quiz_report_grade_bands($bandwidth, $bands, $quizid, $userids = array()) {
global $DB;
if (!is_int($bands)) {
debugging('$bands passed to quiz_report_grade_bands must be an integer. (' .
gettype($bands) . ' passed.)', DEBUG_DEVELOPER);
$bands = (int) $bands;
}
if ($userids) {
list($usql, $params) = $DB->get_in_or_equal($userids, SQL_PARAMS_NAMED, 'u');
@@ -218,8 +223,8 @@ ORDER BY
$data = $DB->get_records_sql_menu($sql, $params);
//need to create array elements with values 0 at indexes where there is no element
$data = $data + array_fill(0, $bands+1, 0);
// We need to create array elements with values 0 at indexes where there is no element.
$data = $data + array_fill(0, $bands + 1, 0);
ksort($data);
//place the maximum (prefect grade) into the last band i.e. make last