### Eclipse Workspace Patch 1.0
#P 18stable
Index: backup/backup_execute.html
===================================================================
RCS file: /cvsroot/moodle/moodle/backup/backup_execute.html,v
retrieving revision 1.47
diff -u -r1.47 backup_execute.html
--- backup/backup_execute.html	20 Jan 2007 09:29:19 -0000	1.47
+++ backup/backup_execute.html	31 Dec 2007 02:26:36 -0000
@@ -202,6 +202,14 @@
                 notify("An error occurred while backing up gradebook");
             }
         }
+        
+        // Print gradebook graded events info
+        if ($status) {
+            echo "<li>".get_string("writinggbpv2eventsinfo").'</li>';
+            if (!$status = backup_grades_events_info($backup_file,$preferences)) {
+                notify("An error occurred while backing up the GBPv2 events");
+            }
+        }
 
         //Module info, this unique function makes all the work!!
         //db export and module fileis copy
Index: backup/backuplib.php
===================================================================
RCS file: /cvsroot/moodle/moodle/backup/backuplib.php,v
retrieving revision 1.135.2.7
diff -u -r1.135.2.7 backuplib.php
--- backup/backuplib.php	2 Nov 2007 13:01:02 -0000	1.135.2.7
+++ backup/backuplib.php	31 Dec 2007 02:26:36 -0000
@@ -1438,6 +1438,7 @@
             }
             //End grade_categories tag
             $status = fwrite ($bf,end_tag("GRADE_CATEGORIES",3,true));
+            
         }
         //Gradebook footer
         $status = fwrite ($bf,end_tag("GRADEBOOK",2,true));
@@ -2339,4 +2340,64 @@
         }   
         fwrite ($bf, end_tag("ROLES_ASSIGNMENTS", $startlevel, true));     
     }
-?>
+    
+function backup_grades_events_info($bf,$preferences) { //used to backup grade_events and grade_events_grades data
+
+        global $CFG;
+
+        $status = true;
+
+        //Output grade_item (only for modules included in backup)
+        $grade_events = get_records_sql("SELECT * FROM {$CFG->prefix}grade_events WHERE course = $preferences->backup_course ");
+        if ($grade_events) {
+            fwrite ($bf,start_tag("GRADE_EVENTS",2,true));
+            foreach ($grade_events as $grade_event) { //first process and backup the grade_events
+                fwrite ($bf,start_tag("GRADE_EVENT",3,true));
+                fwrite ($bf,full_tag("ID",4,false, $grade_event->id));
+                fwrite ($bf,full_tag("COURSE",4,false, $grade_event->course));
+                fwrite ($bf,full_tag("NAME",4,false, $grade_event->name));
+                fwrite ($bf,full_tag("DESCRIPTION",4,false, $grade_event->description));
+                fwrite ($bf,full_tag("GRADE",4,false, $grade_event->grade));
+                fwrite ($bf,full_tag("TIMEMODIFIED",4,false, $grade_event->timemodified));
+                fwrite ($bf,end_tag("GRADE_EVENT",3,true));
+            }
+            fwrite ($bf,end_tag("GRADE_EVENTS",2,true));
+            
+            fwrite ($bf,start_tag("GRADE_EVENTS_GRADES",2,true));
+            foreach ($grade_events as $grade_event) { //now process and backup the grade_events_grades
+                //Get modulename
+                // $rec_module = get_record("modules", "id", $grade_item->modid); //there is not module since this is a GBPv2 grade event
+                //If it exists and it's included in backup
+                $gbpv2_event_grades=''; // (re)initialize this variable for each grade event
+                
+                if ($status & true ) { // $preferences->mods[$rec_module->name]->backup == 1)  // check preferences - if user data is selected then backup graded events grades
+                    //Set the name and add it
+                    $grade_event->module_name = 'grade'; //this may not be needed if we treat the graded events as the special case they are 
+                
+                    $gbpv2_event_grades = get_records_sql("SELECT * FROM {$CFG->prefix}grade_events_grades WHERE event = $grade_event->id ");
+                
+                    if ($gbpv2_event_grades) { //if there are any grades for the current gbpv2 event
+                    
+                        foreach ($gbpv2_event_grades as $gbpv2_event_grade) {
+                            fwrite ($bf,start_tag("GRADE_EVENT_GRADE",3,true));
+                            fwrite($bf,full_tag("EVENT", 4, false, $grade_event->id)); 
+                            fwrite ($bf,full_tag("USERID",4,false,$gbpv2_event_grade->userid));
+                            fwrite ($bf,full_tag("GRADE",4,false,$gbpv2_event_grade->grade));
+                            fwrite ($bf,full_tag("TEACHER",4,false,$gbpv2_event_grade->teacher));
+                            fwrite ($bf,full_tag("TIMEMARKED",4,false,$gbpv2_event_grade->timemarked));
+                            fwrite($bf,end_tag("GRADE_EVENT_GRADE", 3, true));
+                        }
+                    
+                    }
+                    
+                } else {
+                    debugging("skipping GBPv2 grade events<br />");
+                }
+            }
+        $status = fwrite($bf, end_tag("GRADE_EVENTS_GRADES",2, true));
+        }
+        
+        return $status;
+    }
+    
+?>
\ No newline at end of file

