]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-11669, adding a new export setting (for xml atm), so that we can choose to export...
authortoyomoyo <toyomoyo>
Tue, 9 Oct 2007 08:51:49 +0000 (08:51 +0000)
committertoyomoyo <toyomoyo>
Tue, 9 Oct 2007 08:51:49 +0000 (08:51 +0000)
grade/export/grade_export_form.php
grade/export/lib.php
grade/export/xml/export.php
grade/export/xml/grade_export_xml.php
grade/export/xml/index.php
lang/en_utf8/grades.php

index c1b994b68059c0d7004b5318bd16ecaef0c0eed7..81db6c9a27f04e7dd267bd822e6a2cd60f441929 100755 (executable)
@@ -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');
index 28504de2996ed5bba979401b212e819f7dbc0c50..a580b80089de4d005ca7a460f3f95e456b587437 100755 (executable)
@@ -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 "<td>$user->firstname</td><td>$user->lastname</td><td>$user->idnumber</td><td>$user->institution</td><td>$user->department</td><td>$user->email</td>";
             foreach ($this->columns as $itemid=>$unused) {
                 $gradetxt = $this->format_grade($userdata->grades[$itemid]);
-                echo "<td>$gradetxt</td>";
-
+                
+                // 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 '<td>'.get_string('unchangedgrade', 'grade').'</td>';
+                } else {
+                    echo "<td>$gradetxt</td>";
+                }
+                
                 if ($this->export_feedback) {
                     echo '<td>'.$this->format_feedback($userdata->feedbacks[$itemid]).'</td>';
                 }
@@ -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
index 04416c86f3a6aff7e27b0df232aa884c774d00f9..a9270efa23337c876efe7a0a298f69d9495c38ed 100755 (executable)
@@ -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();
 
 ?>
index b94eb5537c6f68e475ffffc83fa076a9702072a1..384c5c5a42bc6a3ea96e4d1d96ff1e7d7680c71f 100755 (executable)
@@ -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<result>\n");
 
                 if ($export_tracking) {
-                    $status = $geub->track($grade);
                     fwrite($handle,  "\t\t<state>$status</state>\n");
                 }
 
index 483e64ad50d2bbc6eb2bf23c126111752b1c7556..f5cc4ea32a79763e6b36c34e06e1e8357d7d2096 100755 (executable)
@@ -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();
index 8229bb8a8006417da770a734894ee3f1c89d5405..025a285577adfe67a48f6542069b3caa5a7d4dc4 100644 (file)
@@ -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';