From 99aa14d1ffaa9b61551a50ee36281d56f05b97c1 Mon Sep 17 00:00:00 2001 From: Damyon Wiese Date: Wed, 6 Feb 2013 15:09:02 +0800 Subject: [PATCH] MDL-37883 Assign offline marking: Properly handle french decimal grades when importing worksheet. --- mod/assign/feedback/offline/importgradesform.php | 7 ++++--- mod/assign/feedback/offline/locallib.php | 6 ++++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/mod/assign/feedback/offline/importgradesform.php b/mod/assign/feedback/offline/importgradesform.php index baba18d54f553..9eea55cf1a2a0 100644 --- a/mod/assign/feedback/offline/importgradesform.php +++ b/mod/assign/feedback/offline/importgradesform.php @@ -109,6 +109,8 @@ public function definition() { } else { $grade = ''; } + } else { + $grade = unformat_float($grade); } if ($usergrade && $usergrade->grade == $grade) { @@ -123,10 +125,9 @@ public function definition() { } else if ($assignment->grading_disabled($user->id)) { // Skip grade is locked. $skip = true; - } else if (!is_numeric($gradedesc) && ($assignment->get_instance()->grade) > -1) { - $skip = true; } else if (($assignment->get_instance()->grade > -1) && - (($gradedesc < 0) || ($gradedesc > $assignment->get_instance()->grade))) { + (($grade < 0) || ($grade > $assignment->get_instance()->grade))) { + // Out of range. $skip = true; } diff --git a/mod/assign/feedback/offline/locallib.php b/mod/assign/feedback/offline/locallib.php index e01d7b89245a3..b1fd7b9c03bf5 100644 --- a/mod/assign/feedback/offline/locallib.php +++ b/mod/assign/feedback/offline/locallib.php @@ -131,6 +131,8 @@ public function process_import_grades($draftid, $importid, $ignoremodified) { } else { $record->grade = ''; } + } else { + $record->grade = unformat_float($record->grade); } // Note: Do not count the seconds when comparing modified dates. @@ -149,6 +151,10 @@ public function process_import_grades($draftid, $importid, $ignoremodified) { } else if ($this->assignment->grading_disabled($record->user->id)) { // Skip grade is locked. $skip = true; + } else if (($this->assignment->get_instance()->grade > -1) && + (($record->grade < 0) || ($record->grade > $this->assignment->get_instance()->grade))) { + // Out of range. + $skip = true; } if (!$skip) {