From: toyomoyo Date: Tue, 9 Oct 2007 08:51:49 +0000 (+0000) Subject: MDL-11669, adding a new export setting (for xml atm), so that we can choose to export... X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=59a7447a7083d2f979c691ef4a3b1e037120de85;p=moodle.git MDL-11669, adding a new export setting (for xml atm), so that we can choose to export only updated grades --- diff --git a/grade/export/grade_export_form.php b/grade/export/grade_export_form.php index c1b994b680..81db6c9a27 100755 --- a/grade/export/grade_export_form.php +++ b/grade/export/grade_export_form.php @@ -25,6 +25,10 @@ class grade_export_form extends moodleform { $options = array('10'=>10, '20'=>20, '100'=>100, '1000'=>1000, '100000'=>100000); $mform->addElement('select', 'previewrows', get_string('previewrows', 'grades'), $options); + if (!empty($features['updatedgrades'])) { + $mform->addElement('advcheckbox', 'updatedgradesonly', get_string('updatedgradesonly', 'grades')); + } + if (!empty($features['includeseparator'])) { $radio = array(); $radio[] = &MoodleQuickForm::createElement('radio', 'separator', null, get_string('septab', 'grades'), 'tab'); diff --git a/grade/export/lib.php b/grade/export/lib.php index 28504de299..a580b80089 100755 --- a/grade/export/lib.php +++ b/grade/export/lib.php @@ -44,6 +44,7 @@ class grade_export { var $export_feedback; // export feedback var $userkey; // export using private user key + var $updatedgradesonly; // only export updated grades /** * Constructor should set up all the private variables ready to be pulled * @param object $course @@ -53,7 +54,7 @@ class grade_export { * @param boolean $export_letters * @note Exporting as letters will lead to data loss if that exported set it re-imported. */ - function grade_export($course, $groupid=0, $itemlist='', $export_feedback=false, $export_letters=false) { + function grade_export($course, $groupid=0, $itemlist='', $export_feedback=false, $export_letters=false, $updatedgradesonly = false) { $this->course = $course; $this->groupid = $groupid; $this->grade_items = grade_item::fetch_all(array('courseid'=>$this->course->id)); @@ -77,6 +78,7 @@ class grade_export { $this->export_feedback = $export_feedback; $this->userkey = ''; $this->previewrows = false; + $this->updatedgradesonly = $updatedgradesonly; } /** @@ -230,8 +232,18 @@ class grade_export { echo "$user->firstname$user->lastname$user->idnumber$user->institution$user->department$user->email"; foreach ($this->columns as $itemid=>$unused) { $gradetxt = $this->format_grade($userdata->grades[$itemid]); - echo "$gradetxt"; - + + // get the status of this grade, and put it through track to get the status + $g = new grade_export_update_buffer(); + $grade_grade = new grade_grade(array('itemid'=>$itemid, 'userid'=>$user->id)); + $status = $g->track($grade_grade); +echo "status is $status"; + if ($this->updatedgradesonly && ($status == 'nochange' || $status == 'unknown')) { + echo ''.get_string('unchangedgrade', 'grade').''; + } else { + echo "$gradetxt"; + } + if ($this->export_feedback) { echo ''.$this->format_feedback($userdata->feedbacks[$itemid]).''; } @@ -249,11 +261,12 @@ class grade_export { function get_export_params() { $itemids = array_keys($this->columns); - $params = array('id' =>$this->course->id, - 'groupid' =>$this->groupid, - 'itemids' =>implode(',', $itemids), - 'export_letters' =>$this->export_letters, - 'export_feedback'=>$this->export_feedback); + $params = array('id' =>$this->course->id, + 'groupid' =>$this->groupid, + 'itemids' =>implode(',', $itemids), + 'export_letters' =>$this->export_letters, + 'export_feedback' =>$this->export_feedback, + 'updatedgradesonly' =>$this->updatedgradesonly); return $params; } @@ -325,6 +338,7 @@ class grade_export_update_buffer { * @return string $status (unknow, new, regrade, nochange) */ function track($grade_grade) { + if (empty($grade_grade->exported) or empty($grade_grade->timemodified)) { if (is_null($grade_grade->finalgrade)) { // grade does not exist yet diff --git a/grade/export/xml/export.php b/grade/export/xml/export.php index 04416c86f3..a9270efa23 100755 --- a/grade/export/xml/export.php +++ b/grade/export/xml/export.php @@ -32,6 +32,7 @@ $groupid = optional_param('groupid', 0, PARAM_INT); $itemids = required_param('itemids', PARAM_RAW); $export_feedback = optional_param('export_feedback', 0, PARAM_BOOL); $export_letters = optional_param('export_letters', 0, PARAM_BOOL); +$updatedgradesonly = optional_param('updatedgradesonly', false, PARAM_BOOL); if (!$course = get_record('course', 'id', $id)) { print_error('nocourseid'); @@ -45,7 +46,7 @@ require_capability('gradeexport/xml:view', $context); // print all the exported data here -$export = new grade_export_xml($course, $groupid, $itemids, $export_feedback, $export_letters); +$export = new grade_export_xml($course, $groupid, $itemids, $export_feedback, $export_letters, $updatedgradesonly); $export->print_grades(); ?> diff --git a/grade/export/xml/grade_export_xml.php b/grade/export/xml/grade_export_xml.php index b94eb5537c..384c5c5a42 100755 --- a/grade/export/xml/grade_export_xml.php +++ b/grade/export/xml/grade_export_xml.php @@ -27,7 +27,8 @@ require_once($CFG->dirroot.'/grade/export/lib.php'); class grade_export_xml extends grade_export { var $plugin = 'xml'; - + var $updatedgradesonly = false; // default to export ALL grades + /** * To be implemented by child classes * @param boolean $feedback @@ -73,11 +74,18 @@ class grade_export_xml extends grade_export { $grade_item = $this->grade_items[$itemid]; $grade->grade_item =& $grade_item; $gradestr = $grade->finalgrade; // no formating for now + + // MDL-11 + if ($export_tracking) { + $status = $geub->track($grade); + if ($this->updatedgradesonly && ($status == 'nochange' || $status == 'unknown')) { + continue; + } + } fwrite($handle, "\t\n"); if ($export_tracking) { - $status = $geub->track($grade); fwrite($handle, "\t\t$status\n"); } diff --git a/grade/export/xml/index.php b/grade/export/xml/index.php index 483e64ad50..f5cc4ea32a 100755 --- a/grade/export/xml/index.php +++ b/grade/export/xml/index.php @@ -51,12 +51,11 @@ if (!empty($CFG->gradepublishing)) { $CFG->gradepublishing = has_capability('gradeexport/xml:publish', $context); } -$mform = new grade_export_form(null, array('idnumberrequired'=>true, 'publishing' => true)); +$mform = new grade_export_form(null, array('idnumberrequired'=>true, 'publishing' => true, 'updatedgrades' => true)); // process post information if ($data = $mform->get_data()) { - $export = new grade_export_xml($course, groups_get_course_group($course)); - + $export = new grade_export_xml($course, groups_get_course_group($course), $data->updatedgradesonly, false, false, $data->updatedgradesonly); // print the grades on screen for feedbacks $export->process_form($data); $export->print_continue(); diff --git a/lang/en_utf8/grades.php b/lang/en_utf8/grades.php index 8229bb8a80..025a285577 100644 --- a/lang/en_utf8/grades.php +++ b/lang/en_utf8/grades.php @@ -407,7 +407,9 @@ $string['typenone'] = 'None'; $string['typescale'] = 'Scale'; $string['typetext'] = 'Text'; $string['typevalue'] = 'Value'; +$string['updatedgradesonly'] = 'Export new or updated grades only'; $string['uncategorised'] = 'Uncategorised'; +$string['unchangedgrade'] = 'Grade unchanged'; $string['unlock'] = 'Unlock'; $string['unused'] = 'Unused'; $string['uploadgrades'] = 'Upload grades';