count_records ('message');
$reads = $DB->count_records ('message_read');
$contacts= $DB->count_records ('message_contacts');
if ($unreads || $reads || $contacts) {
$counter = 0;
/// message open tag
fwrite ($bf,start_tag("MESSAGES",2,true));
if ($unreads) {
$rs_unreads = $DB->get_recordset('message');
/// Iterate over every unread
foreach ($rs_unreads as $unread) {
/// start message
fwrite($bf, start_tag("MESSAGE",3,true));
fwrite ($bf,full_tag("ID",4,false,$unread->id));
fwrite ($bf,full_tag("STATUS",4,false,"UNREAD"));
fwrite ($bf,full_tag("USERIDFROM",4,false,$unread->useridfrom));
fwrite ($bf,full_tag("USERIDTO",4,false,$unread->useridto));
fwrite ($bf,full_tag("MESSAGE",4,false,$unread->message));
fwrite ($bf,full_tag("FORMAT",4,false,$unread->format));
fwrite ($bf,full_tag("TIMECREATED",4,false,$unread->timecreated));
fwrite ($bf,full_tag("MESSAGETYPE",4,false,$unread->messagetype));
/// end message
fwrite ($bf,end_tag("MESSAGE",3,true));
/// Do some output
$counter++;
if ($counter % 20 == 0) {
echo ".";
if ($counter % 400 == 0) {
echo "
";
}
backup_flush(300);
}
}
$rs_unreads->close();
}
if ($reads) {
$rs_reads = $DB->get_recordset('message_read');
/// Iterate over every unread
foreach ($rs_reads as $read) {
/// start message
fwrite($bf, start_tag("MESSAGE",3,true));
fwrite ($bf,full_tag("ID",4,false,$read->id));
fwrite ($bf,full_tag("STATUS",4,false,"READ"));
fwrite ($bf,full_tag("USERIDFROM",4,false,$read->useridfrom));
fwrite ($bf,full_tag("USERIDTO",4,false,$read->useridto));
fwrite ($bf,full_tag("MESSAGE",4,false,$read->message));
fwrite ($bf,full_tag("FORMAT",4,false,$read->format));
fwrite ($bf,full_tag("TIMECREATED",4,false,$read->timecreated));
fwrite ($bf,full_tag("MESSAGETYPE",4,false,$read->messagetype));
fwrite ($bf,full_tag("TIMEREAD",4,false,$read->timeread));
fwrite ($bf,full_tag("MAILED",4,false,$read->mailed));
/// end message
fwrite ($bf,end_tag("MESSAGE",3,true));
/// Do some output
$counter++;
if ($counter % 20 == 0) {
echo ".";
if ($counter % 400 == 0) {
echo "
";
}
backup_flush(300);
}
}
$rs_reads->close();
}
if ($contacts) {
fwrite($bf, start_tag("CONTACTS",3,true));
$rs_contacts = $DB->get_recordset('message_contacts');
/// Iterate over every contact
foreach ($rs_contacts as $contact) {
/// start contact
fwrite($bf, start_tag("CONTACT",4,true));
fwrite ($bf,full_tag("ID",5,false,$contact->id));
fwrite ($bf,full_tag("USERID",5,false,$contact->userid));
fwrite ($bf,full_tag("CONTACTID",5,false,$contact->contactid));
fwrite ($bf,full_tag("BLOCKED",5,false,$contact->blocked));
/// end contact
fwrite ($bf,end_tag("CONTACT",4,true));
/// Do some output
$counter++;
if ($counter % 20 == 0) {
echo ".";
if ($counter % 400 == 0) {
echo "
";
}
backup_flush(300);
}
}
$rs_contacts->close();
fwrite($bf, end_tag("CONTACTS",3,true));
}
/// messages close tag
$status = fwrite ($bf,end_tag("MESSAGES",2,true));
}
return $status;
}
//Print blogs info (post table, module=blog, course=0)
function backup_blogs($bf, $preferences) {
global $CFG, $DB;
$status = true;
/// Check we have something to backup
$siteblogs = $DB->count_records('post', array('module'=>'blog', 'courseid'=>0));
if ($siteblogs) {
$counter = 0;
/// blogs open tag
fwrite ($bf, start_tag("BLOGS",2,true));
if ($siteblogs) {
$rs_blogs = $DB->get_records('post', array('module'=>'blog', 'courseid'=>0));
/// Iterate over every blog
foreach ($rs_blogs as $blog) {
backup_blog($bf, $blog->id, 3);
/// Do some output
$counter++;
if ($counter % 20 == 0) {
echo ".";
if ($counter % 400 == 0) {
echo "
";
}
backup_flush(300);
}
}
$rs_blogs-close();
}
/// blogs close tag
$status = fwrite($bf, end_tag("BLOGS",2,true));
}
return $status;
}
function backup_blog($bf, $blogid, $level) {
global $DB;
$blog = $DB->get_record('post', array('module'=>'blog', 'id'=>$blogid));
/// start blog
fwrite($bf, start_tag("BLOG",$level,true));
/// blog body
fwrite ($bf,full_tag("ID",$level+1,false,$blog->id));
fwrite ($bf,full_tag("MODULE",$level+1,false,$blog->module));
fwrite ($bf,full_tag("USERID",$level+1,false,$blog->userid));
fwrite ($bf,full_tag("COURSEID",$level+1,false,$blog->courseid));
fwrite ($bf,full_tag("GROUPID",$level+1,false,$blog->groupid));
fwrite ($bf,full_tag("MODULEID",$level+1,false,$blog->moduleid));
fwrite ($bf,full_tag("COURSEMODULEID",$level+1,false,$blog->coursemoduleid));
fwrite ($bf,full_tag("SUBJECT",$level+1,false,$blog->subject));
fwrite ($bf,full_tag("SUMMARY",$level+1,false,$blog->summary));
fwrite ($bf,full_tag("CONTENT",$level+1,false,$blog->content));
fwrite ($bf,full_tag("UNIQUEHASH",$level+1,false,$blog->uniquehash));
fwrite ($bf,full_tag("RATING",$level+1,false,$blog->rating));
fwrite ($bf,full_tag("FORMAT",$level+1,false,$blog->format));
fwrite ($bf,full_tag("ATTACHMENT",$level+1,false,$blog->attachment));
fwrite ($bf,full_tag("PUBLISHSTATE",$level+1,false,$blog->publishstate));
fwrite ($bf,full_tag("LASTMODIFIED",$level+1,false,$blog->lastmodified));
fwrite ($bf,full_tag("CREATED",$level+1,false,$blog->created));
fwrite ($bf,full_tag("USERMODIFIED",$level+1,false,$blog->usermodified));
/// Blog tags
/// Check if we have blog tags to backup
if (!empty($CFG->usetags)) {
if ($tags = tag_get_tags('post', $blog->id)) { //This return them ordered by default
/// Start BLOG_TAGS tag
fwrite ($bf,start_tag("BLOG_TAGS",$level+1,true));
/// Write blog tags fields
foreach ($tags as $tag) {
fwrite ($bf,start_tag("BLOG_TAG",$level+2,true));
fwrite ($bf,full_tag("NAME",$level+3,false,$tag->name));
fwrite ($bf,full_tag("RAWNAME",$level+3,false,$tag->rawname));
fwrite ($bf,end_tag("BLOG_TAG",$level+2,true));
}
/// End BLOG_TAGS tag
fwrite ($bf,end_tag("BLOG_TAGS",$level+1,true));
}
}
/// end blog
fwrite($bf, end_tag("BLOG",$level,true));
}
//Prints course's format data (any data the format might want to save).
function backup_format_data ($bf,$preferences) {
global $CFG, $DB;
// Check course format
if(!($format = $DB->get_field('course','format', array('id'=>$preferences->backup_course)))) {
return false;
}
// Write appropriate tag. Note that we always put this tag there even if
// blank, it makes parsing easier
fwrite ($bf,start_tag("FORMATDATA",2,true));
$file=$CFG->dirroot."/course/format/$format/backuplib.php";
if(file_exists($file)) {
// If the file is there, the function must be or it's an error.
require_once($file);
$function=$format.'_backup_format_data';
if(!function_exists($function)) {
return false;
}
if(!$function($bf,$preferences)) {
return false;
}
}
// This last return just checks the file writing has been ok (ish)
return fwrite ($bf,end_tag("FORMATDATA",2,true));
}
function backup_gradebook_categories_history_info($bf, $preferences) {
global $CFG, $DB;
$status = true;
// find all grade categories history
if ($chs = $DB->get_records('grade_categories_history', array('courseid'=>$preferences->backup_course))) {
fwrite ($bf,start_tag("GRADE_CATEGORIES_HISTORIES",3,true));
foreach ($chs as $ch) {
fwrite ($bf,start_tag("GRADE_CATEGORIES_HISTORY",4,true));
fwrite ($bf,full_tag("ID",5,false,$ch->id));
fwrite ($bf,full_tag("ACTION",5,false,$ch->action));
fwrite ($bf,full_tag("OLDID",5,false,$ch->oldid));
fwrite ($bf,full_tag("SOURCE",5,false,$ch->source));
fwrite ($bf,full_tag("TIMEMODIFIED",5,false,$ch->timemodified));
fwrite ($bf,full_tag("LOGGEDUSER",5,false,$ch->loggeduser));
fwrite ($bf,full_tag("PARENT",5,false,$ch->parent));
fwrite ($bf,full_tag("DEPTH",5,false,$ch->depth));
fwrite ($bf,full_tag("PATH",5,false,$ch->path));
fwrite ($bf,full_tag("FULLNAME",5,false,$ch->fullname));
fwrite ($bf,full_tag("AGGRETGATION",5,false,$ch->aggregation));
fwrite ($bf,full_tag("KEEPHIGH",5,false,$ch->keephigh));
fwrite ($bf,full_tag("DROPLOW",5,false,$ch->droplow));
fwrite ($bf,full_tag("AGGREGATEONLYGRADED",5,false,$ch->aggregateonlygraded));
fwrite ($bf,full_tag("AGGREGATEOUTCOMES",5,false,$ch->aggregateoutcomes));
fwrite ($bf,full_tag("AGGREGATESUBCATS",5,false,$ch->aggregatesubcats));
fwrite ($bf,end_tag("GRADE_CATEGORIES_HISTORY",4,true));
}
$status = fwrite ($bf,end_tag("GRADE_CATEGORIES_HISTORIES",3,true));
}
return $status;
}
function backup_gradebook_grades_history_info($bf, $preferences) {
global $CFG, $DB;
$status = true;
// find all grade categories history
if ($chs = $DB->get_records_sql("SELECT ggh.*
FROM {grade_grades_history} ggh
JOIN {grade_item} gi ON gi.id = ggh.itemid
WHERE gi.courseid = ?", array($preferences->backup_course))) {
fwrite ($bf,start_tag("GRADE_GRADES_HISTORIES",3,true));
foreach ($chs as $ch) {
/// Grades are only sent to backup if the user is one target user
if (backup_getid($preferences->backup_unique_code, 'user', $ch->userid)) {
fwrite ($bf,start_tag("GRADE_GRADES_HISTORY",4,true));
fwrite ($bf,full_tag("ID",5,false,$ch->id));
fwrite ($bf,full_tag("ACTION",5,false,$ch->action));
fwrite ($bf,full_tag("OLDID",5,false,$ch->oldid));
fwrite ($bf,full_tag("SOURCE",5,false,$ch->source));
fwrite ($bf,full_tag("TIMEMODIFIED",5,false,$ch->timemodified));
fwrite ($bf,full_tag("LOGGEDUSER",5,false,$ch->loggeduser));
fwrite ($bf,full_tag("ITEMID",5,false,$ch->itemid));
fwrite ($bf,full_tag("USERID",5,false,$ch->userid));
fwrite ($bf,full_tag("RAWGRADE",5,false,$ch->rawgrade));
fwrite ($bf,full_tag("RAWGRADEMAX",5,false,$ch->rawgrademax));
fwrite ($bf,full_tag("RAWGRADEMIN",5,false,$ch->rawgrademin));
fwrite ($bf,full_tag("RAWSCALEID",5,false,$ch->rawscaleid));
fwrite ($bf,full_tag("USERMODIFIED",5,false,$ch->usermodified));
fwrite ($bf,full_tag("FINALGRADE",5,false,$ch->finalgrade));
fwrite ($bf,full_tag("HIDDEN",5,false,$ch->hidden));
fwrite ($bf,full_tag("LOCKED",5,false,$ch->locked));
fwrite ($bf,full_tag("LOCKTIME",5,false,$ch->locktime));
fwrite ($bf,full_tag("EXPORTED",5,false,$ch->exported));
fwrite ($bf,full_tag("OVERRIDDEN",5,false,$ch->overridden));
fwrite ($bf,full_tag("EXCLUDED",5,false,$ch->excluded));
fwrite ($bf,full_tag("FEEDBACK",5,false,$ch->feedback));
fwrite ($bf,full_tag("FEEDBACKFORMAT",5,false,$ch->feedbackformat));
fwrite ($bf,full_tag("INFORMATION",5,false,$ch->information));
fwrite ($bf,full_tag("INFORMATIONFORMAT",5,false,$ch->informationformat));
fwrite ($bf,end_tag("GRADE_GRADES_HISTORY",4,true));
}
}
$status = fwrite ($bf,end_tag("GRADE_GRADES_HISTORIES",3,true));
}
return $status;
}
function backup_gradebook_items_history_info($bf, $preferences) {
global $CFG, $DB;
$status = true;
// find all grade categories history
if ($chs = $DB->get_records('grade_items_history', array('courseid'=>$preferences->backup_course))) {
fwrite ($bf,start_tag("GRADE_ITEM_HISTORIES",3,true));
foreach ($chs as $ch) {
fwrite ($bf,start_tag("GRADE_ITEM_HISTORY",4,true));
fwrite ($bf,full_tag("ID",5,false,$ch->id));
fwrite ($bf,full_tag("ACTION",5,false,$ch->action));
fwrite ($bf,full_tag("OLDID",5,false,$ch->oldid));
fwrite ($bf,full_tag("SOURCE",5,false,$ch->source));
fwrite ($bf,full_tag("TIMEMODIFIED",5,false,$ch->timemodified));
fwrite ($bf,full_tag("LOGGEDUSER",5,false,$ch->loggeduser));
fwrite ($bf,full_tag("CATEGORYID",5,false,$ch->categoryid));
fwrite ($bf,full_tag("ITEMNAME",5,false,$ch->itemname));
fwrite ($bf,full_tag("ITEMTYPE",5,false,$ch->itemtype));
fwrite ($bf,full_tag("ITEMMODULE",5,false,$ch->itemmodule));
fwrite ($bf,full_tag("ITEMINSTANCE",5,false,$ch->iteminstance));
fwrite ($bf,full_tag("ITEMNUMBER",5,false,$ch->itemnumber));
fwrite ($bf,full_tag("ITEMINFO",5,false,$ch->iteminfo));
fwrite ($bf,full_tag("IDNUMBER",5,false,$ch->idnumber));
fwrite ($bf,full_tag("CALCULATION",5,false,$ch->calculation));
fwrite ($bf,full_tag("GRADETYPE",5,false,$ch->gradetype));
fwrite ($bf,full_tag("GRADEMAX",5,false,$ch->grademax));
fwrite ($bf,full_tag("GRADEMIN",5,false,$ch->grademin));
fwrite ($bf,full_tag("SCALEID",5,false,$ch->scaleid));
fwrite ($bf,full_tag("OUTCOMEID",5,false,$ch->outcomeid));
fwrite ($bf,full_tag("GRADEPASS",5,false,$ch->gradepass));
fwrite ($bf,full_tag("MULTFACTOR",5,false,$ch->multfactor));
fwrite ($bf,full_tag("PLUSFACTOR",5,false,$ch->plusfactor));
fwrite ($bf,full_tag("AGGREGATIONCOEF",5,false,$ch->aggregationcoef));
fwrite ($bf,full_tag("SORTORDER",5,false,$ch->sortorder));
//fwrite ($bf,full_tag("DISPLAY",7,false,$ch->display));
//fwrite ($bf,full_tag("DECIMALS",7,false,$ch->decimals));
fwrite ($bf,full_tag("HIDDEN",5,false,$ch->hidden));
fwrite ($bf,full_tag("LOCKED",5,false,$ch->locked));
fwrite ($bf,full_tag("LOCKTIME",5,false,$ch->locktime));
fwrite ($bf,full_tag("NEEDSUPDATE",5,false,$ch->needsupdate));
fwrite ($bf,end_tag("GRADE_ITEM_HISTORY",4,true));
}
$status = fwrite ($bf,end_tag("GRADE_ITEM_HISTORIES",3,true));
}
return $status;
}
function backup_gradebook_outcomes_history($bf, $preferences) {
global $CFG, $DB;
$status = true;
// find all grade categories history
if ($chs = $DB->get_records('grade_outcomes_history', array('courseid'=>$preferences->backup_course))) {
fwrite ($bf,start_tag("GRADE_OUTCOME_HISTORIES",3,true));
foreach ($chs as $ch) {
fwrite ($bf,start_tag("GRADE_OUTCOME_HISTORY",4,true));
fwrite ($bf,full_tag("ID",5,false,$ch->id));
fwrite ($bf,full_tag("OLDID",5,false,$ch->oldid));
fwrite ($bf,full_tag("ACTION",5,false,$ch->action));
fwrite ($bf,full_tag("SOURCE",5,false,$ch->source));
fwrite ($bf,full_tag("TIMEMODIFIED",5,false,$ch->timemodified));
fwrite ($bf,full_tag("LOGGEDUSER",5,false,$ch->loggeduser));
fwrite ($bf,full_tag("SHORTNAME",5,false,$ch->shortname));
fwrite ($bf,full_tag("FULLNAME",5,false,$ch->fullname));
fwrite ($bf,full_tag("SCALEID",5,false,$ch->scaleid));
fwrite ($bf,full_tag("DESCRIPTION",5,false,$ch->description));
fwrite ($bf,end_tag("GRADE_OUTCOME_HISTORY",4,true));
}
$status = fwrite ($bf,end_tag("GRADE_OUTCOME_HISTORIES",3,true));
}
return $status;
}
//Backup events info (course events)
function backup_events_info($bf,$preferences) {
global $CFG, $DB;
$status = true;
//Counter, points to current record
$counter = 0;
//Get events (course events)
$events = $DB->get_records("event", array("courseid"=>$preferences->backup_course, 'instance'=>0),"id");
//Pring events header
if ($events) {
//Pring events header
fwrite ($bf,start_tag("EVENTS",2,true));
//Iterate
foreach ($events as $event) {
//Begin event tag
fwrite ($bf,start_tag("EVENT",3,true));
//Output event tag
fwrite ($bf,full_tag("ID",4,false,$event->id));
fwrite ($bf,full_tag("NAME",4,false,$event->name));
fwrite ($bf,full_tag("DESCRIPTION",4,false,$event->description));
fwrite ($bf,full_tag("FORMAT",4,false,$event->format));
fwrite ($bf,full_tag("GROUPID",4,false,$event->groupid));
fwrite ($bf,full_tag("USERID",4,false,$event->userid));
fwrite ($bf,full_tag("REPEATID",4,false,$event->repeatid));
fwrite ($bf,full_tag("EVENTTYPE",4,false,$event->eventtype));
fwrite ($bf,full_tag("MODULENAME",4,false,$event->modulename));
fwrite ($bf,full_tag("TIMESTART",4,false,$event->timestart));
fwrite ($bf,full_tag("TIMEDURATION",4,false,$event->timeduration));
fwrite ($bf,full_tag("VISIBLE",4,false,$event->visible));
fwrite ($bf,full_tag("TIMEMODIFIED",4,false,$event->timemodified));
//End event tag
fwrite ($bf,end_tag("EVENT",3,true));
}
//End events tag
$status = fwrite ($bf,end_tag("EVENTS",2,true));
}
return $status;
}