From 7ce5df86202093c84c5f8ebb24b0539e66261aa7 Mon Sep 17 00:00:00 2001 From: "Andrew Davis (andyjdavis)" Date: Tue, 21 Jun 2011 11:13:34 +0800 Subject: [PATCH 1/2] MDL-27920 gradebook: export was always excluding course totals and xml export was failing --- grade/export/lib.php | 2 +- grade/export/xml/grade_export_xml.php | 2 +- grade/export/xml/index.php | 7 ++++++- grade/export/xml/lang/en/gradeexport_xml.php | 1 + grade/lib.php | 11 +++++------ 5 files changed, 14 insertions(+), 9 deletions(-) diff --git a/grade/export/lib.php b/grade/export/lib.php index 32f2e27b44d..b71a7b30c09 100644 --- a/grade/export/lib.php +++ b/grade/export/lib.php @@ -230,7 +230,7 @@ abstract class grade_export { } $user = $userdata->user; if ($require_user_idnumber and empty($user->idnumber)) { - // some exports require user idnumber + // some exports require user idnumber so we can match up students when importing the data continue; } diff --git a/grade/export/xml/grade_export_xml.php b/grade/export/xml/grade_export_xml.php index 1f65df45e9a..a978b0dbe20 100644 --- a/grade/export/xml/grade_export_xml.php +++ b/grade/export/xml/grade_export_xml.php @@ -58,7 +58,7 @@ class grade_export_xml extends grade_export { $user = $userdata->user; if (empty($user->idnumber)) { - //id number must exist + //id number must exist otherwise we cant match up students when importing continue; } diff --git a/grade/export/xml/index.php b/grade/export/xml/index.php index cef6e6f496c..8b139536cb3 100644 --- a/grade/export/xml/index.php +++ b/grade/export/xml/index.php @@ -39,6 +39,7 @@ if (!empty($CFG->gradepublishing)) { $CFG->gradepublishing = has_capability('gradeexport/xml:publish', $context); } +//'idnumberrequired'=>true excludes grade items that dont have an ID to use during import $mform = new grade_export_form(null, array('idnumberrequired'=>true, 'publishing'=>true, 'updategradesonly'=>true)); $groupmode = groups_get_course_groupmode($course); // Groups are being used @@ -56,7 +57,11 @@ if ($data = $mform->get_data()) { // print the grades on screen for feedbacks $export->process_form($data); $export->print_continue(); - $export->display_preview(true); + + $require_user_idnumber = true; //skip users without idnumber as they cannot be identified when importing + $export->display_preview($require_user_idnumber); + echo $OUTPUT->container(get_string('useridnumberwarning','gradeexport_xml'), 'useridnumberwarning mdl-align'); + echo $OUTPUT->footer(); exit; } diff --git a/grade/export/xml/lang/en/gradeexport_xml.php b/grade/export/xml/lang/en/gradeexport_xml.php index 7cb8dbc6e8f..0cba69e75f3 100644 --- a/grade/export/xml/lang/en/gradeexport_xml.php +++ b/grade/export/xml/lang/en/gradeexport_xml.php @@ -26,3 +26,4 @@ $string['pluginname'] = 'XML file'; $string['xml:publish'] = 'Publish XML grade export'; $string['xml:view'] = 'Use XML grade export'; +$string['useridnumberwarning'] = 'User\'s without an ID number are excluded from the XML export as they cannot be imported'; \ No newline at end of file diff --git a/grade/lib.php b/grade/lib.php index e04dccfdc46..6e58452a8d8 100644 --- a/grade/lib.php +++ b/grade/lib.php @@ -235,7 +235,6 @@ class graded_users_iterator { $result->user = $user; $result->grades = $grades; $result->feedbacks = $feedbacks; - return $result; } @@ -271,7 +270,7 @@ class graded_users_iterator { /** * _pop * - * @return void + * @return object current grade object */ function _pop() { global $DB; @@ -280,11 +279,11 @@ class graded_users_iterator { return null; // no grades present } - if ($this->grades_rs->next()) { - return null; // no more grades - } + $current = $this->grades_rs->current(); - return $this->grades_rs->current(); + $this->grades_rs->next(); + + return $current; } else { return array_pop($this->gradestack); } From 8de7c8a7ff157e5bbbe5d1de8683400ebafe9908 Mon Sep 17 00:00:00 2001 From: "Andrew Davis (andyjdavis)" Date: Thu, 23 Jun 2011 15:58:44 +0800 Subject: [PATCH 2/2] MDL-27920 gradebook: fixes following integration review --- grade/export/xml/index.php | 3 +-- grade/lib.php | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/grade/export/xml/index.php b/grade/export/xml/index.php index 8b139536cb3..bc4d9251375 100644 --- a/grade/export/xml/index.php +++ b/grade/export/xml/index.php @@ -58,8 +58,7 @@ if ($data = $mform->get_data()) { $export->process_form($data); $export->print_continue(); - $require_user_idnumber = true; //skip users without idnumber as they cannot be identified when importing - $export->display_preview($require_user_idnumber); + $export->display_preview(true); //true == skip users without idnumber as they cannot be identified when importing echo $OUTPUT->container(get_string('useridnumberwarning','gradeexport_xml'), 'useridnumberwarning mdl-align'); echo $OUTPUT->footer(); diff --git a/grade/lib.php b/grade/lib.php index 6e58452a8d8..392eed0d356 100644 --- a/grade/lib.php +++ b/grade/lib.php @@ -275,7 +275,7 @@ class graded_users_iterator { function _pop() { global $DB; if (empty($this->gradestack)) { - if (!$this->grades_rs) { + if (empty($this->grades_rs) || !$this->grades_rs->valid()) { return null; // no grades present }