Now an email is sent to the admin when some course backup is excecuted.

TODO:
   - View logs
   - Language strings
This commit is contained in:
stronk7
2003-12-15 00:54:16 +00:00
parent f273fa076f
commit d997d2d44e
3 changed files with 81 additions and 10 deletions
+2 -2
View File
@@ -119,8 +119,8 @@ Backup Details:
- Build a configuration inteface..........................DONE
- Create the script.......................................DONE
- Integrate it in cron....................................DONE
- View logs...............................................NOT EXISTS
- Send email..............................................NOT EXISTS
- View logs...............................................IN PROGRESS
- Send email..............................................DONE
- Select manually the desired activities to backup...........NOT EXISTS
- Modify the backup frontend..............................NOT EXISTS
- Modify the backup of course_sections and course_modules.NOT EXISTS
+78 -7
View File
@@ -9,6 +9,8 @@ function schedule_backup_cron() {
$status = true;
$emailpending = false;
//Get now
$now = time();
@@ -61,9 +63,12 @@ function schedule_backup_cron() {
//Now we backup every course with nextstarttime < now
if ($backup_course->nextstarttime > 0 && $backup_course->nextstarttime < $now) {
//Set laststarttime
set_field("backup_courses","laststarttime",time(),"id",$backup_course->courseid);
$starttime = time();
set_field("backup_courses","laststarttime",$starttime,"id",$backup_course->courseid);
//Launch backup
$course_status = schedule_backup_launch_backup($course);
$course_status = schedule_backup_launch_backup($course,$starttime);
//We have to send a email because we have included at least one backup
$emailpending = true;
//Set lastendtime
set_field("backup_courses","lastendtime",time(),"id",$backup_course->courseid);
//Set laststatus
@@ -95,6 +100,27 @@ function schedule_backup_cron() {
delete_records_select("backup_log", "laststarttime < '$loglifetime'");
}
//Send email to admin
if ($emailpending) {
echo " Sending email to admin\n";
$message = "";
//Build the message text (future versions should handle html messages too!!)
$logs = get_records_select ("backup_log","laststarttime >= '$now'","id");
if ($logs) {
$currentcourse = 1;
foreach ($logs as $log) {
if ($currentcourse != $log->courseid) {
$message .= "\n==================================================\n\n";
$currentcourse = $log->courseid;
}
$message .= userdate($log->time,"%T",$admin->timezone)." ".$log->info."\n";
}
}
//Send the message
email_to_user($admin,$admin,get_string("scheduledbackupstatus"),$message);
}
//Everything is finished stop backup_sche_running
backup_set_config("backup_sche_running","0");
@@ -103,25 +129,45 @@ function schedule_backup_cron() {
//This function executes the ENTIRE backup of a course (passed as parameter)
//using all the scheduled backup preferences
function schedule_backup_launch_backup($course) {
function schedule_backup_launch_backup($course,$starttime = 0) {
$preferences = false;
$status = false;
echo " Executing backup\n";
$preferences = schedule_backup_course_configure($course);
schedule_backup_log($starttime,$course->id,"Start backup course $course->fullname");
schedule_backup_log($starttime,$course->id," Phase 1: Checking and counting:");
$preferences = schedule_backup_course_configure($course,$starttime);
if ($preferences) {
$status = schedule_backup_course_execute($preferences);
schedule_backup_log($starttime,$course->id," Phase 2: Executing and copying:");
$status = schedule_backup_course_execute($preferences,$starttime);
}
if ($status && $preferences) {
echo " End backup OK\n";
schedule_backup_log($starttime,$course->id,"End backup course $course->fullname - OK");
} else {
echo " End backup with ERROR\n";
schedule_backup_log($starttime,$course->id,"End backup course $course->fullname - ERROR!!");
}
return $status && $preferences;
}
//This function saves to backup_log all the needed process info
//to use it later. NOTE: If $starttime = 0 no info in saved
function schedule_backup_log($starttime,$courseid,$message) {
if ($starttime) {
$log->courseid = $courseid;
$log->time = time();
$log->laststarttime = $starttime;
$log->info = $message;
insert_record ("backup_log",$log);
}
}
//This function returns the next future GMT time to execute the course based in the
//configuration of the scheduled backups
function schedule_backup_next_execution ($backup_course,$backup_config,$now,$timezone) {
@@ -161,12 +207,14 @@ function schedule_backup_next_execution ($backup_course,$backup_config,$now,$tim
//This function implements all the needed code to prepare a course
//to be in backup (insert temp info into backup temp tables).
function schedule_backup_course_configure($course) {
function schedule_backup_course_configure($course,$starttime = 0) {
global $CFG;
$status = true;
schedule_backup_log($starttime,$course->id," checking parameters");
//Check the required variable
if (empty($course->id)) {
$status = false;
@@ -263,6 +311,7 @@ function schedule_backup_course_configure($course) {
//Calculate the backup string
if ($status) {
schedule_backup_log($starttime,$course->id," calculating backup name");
//Take off some characters in the filename !!
$takeoff = array(" ", ":", "/", "\\", "|");
$backup_name = str_replace($takeoff,"_",strtolower(get_string("backupfilename")));
@@ -289,6 +338,7 @@ function schedule_backup_course_configure($course) {
//Calculate necesary info to backup modules
if ($status) {
schedule_backup_log($starttime,$course->id," calculating modules data");
if ($allmods = get_records("modules") ) {
foreach ($allmods as $mod) {
$modname = $mod->name;
@@ -303,6 +353,7 @@ function schedule_backup_course_configure($course) {
$var = "backup_user_info_".$modname;
//Call the check function to show more info
$modcheckbackup = $modname."_check_backup_mods";
schedule_backup_log($starttime,$course->id," $modname");
$modcheckbackup($course->id,$$var,$backup_unique_code);
}
}
@@ -312,12 +363,14 @@ function schedule_backup_course_configure($course) {
//Now calculate the users
if ($status) {
schedule_backup_log($starttime,$course->id," calculating users");
user_check_backup($course->id,$backup_unique_code,$preferences->backup_users);
}
//Now calculate the logs
if ($status) {
if ($preferences->backup_logs) {
schedule_backup_log($starttime,$course->id," calculating logs");
log_check_backup($course->id);
}
}
@@ -325,6 +378,7 @@ function schedule_backup_course_configure($course) {
//Now calculate the userfiles
if ($status) {
if ($preferences->backup_user_files) {
schedule_backup_log($starttime,$course->id," calculating user files");
user_files_check_backup($course->id,$preferences->backup_unique_code);
}
}
@@ -332,6 +386,7 @@ function schedule_backup_course_configure($course) {
//Now calculate the coursefiles
if ($status) {
if ($preferences->backup_course_files) {
schedule_backup_log($starttime,$course->id," calculating course files");
course_files_check_backup($course->id,$preferences->backup_unique_code);
}
}
@@ -346,7 +401,7 @@ function schedule_backup_course_configure($course) {
//This function implements all the needed code to backup a course
//copying it to the desired destination (default if not specified)
function schedule_backup_course_execute($preferences) {
function schedule_backup_course_execute($preferences,$starttime = 0) {
global $CFG;
@@ -360,9 +415,11 @@ function schedule_backup_course_execute($preferences) {
//Check for temp and backup and backup_unique_code directory
//Create them as needed
schedule_backup_log($starttime,$preferences->backup_course," checking temp structures");
$status = check_and_create_backup_dir($preferences->backup_unique_code);
//Empty dir
if ($status) {
schedule_backup_log($starttime,$preferences->backup_course," cleaning old data");
$status = clear_backup_dir($preferences->backup_unique_code);
}
@@ -373,10 +430,12 @@ function schedule_backup_course_execute($preferences) {
//Create the moodle.xml file
if ($status) {
schedule_backup_log($starttime,$preferences->backup_course," creating backup file");
//Obtain the xml file (create and open) and print prolog information
$backup_file = backup_open_xml($preferences->backup_unique_code);
//Prints general info about backup to file
if ($backup_file) {
schedule_backup_log($starttime,$preferences->backup_course," general info");
$status = backup_general_info($backup_file,$preferences);
} else {
$status = false;
@@ -389,29 +448,34 @@ function schedule_backup_course_execute($preferences) {
//Section info
if ($status) {
schedule_backup_log($starttime,$preferences->backup_course," sections info");
$status = backup_course_sections($backup_file,$preferences);
}
//User info
if ($status) {
schedule_backup_log($starttime,$preferences->backup_course," user info");
$status = backup_user_info($backup_file,$preferences);
}
//If we have selected to backup quizzes, backup categories and
//questions structure (step 1). See notes on mod/quiz/backuplib.php
if ($status and $preferences->mods['quiz']->backup) {
schedule_backup_log($starttime,$preferences->backup_course," categories & questions");
$status = quiz_backup_question_categories($backup_file,$preferences);
}
//Print logs if selected
if ($status) {
if ($preferences->backup_logs) {
schedule_backup_log($starttime,$preferences->backup_course," logs");
$status = backup_log_info($backup_file,$preferences);
}
}
//Print scales info
if ($status) {
schedule_backup_log($starttime,$preferences->backup_course," scales");
$status = backup_scales_info($backup_file,$preferences);
}
@@ -427,11 +491,13 @@ function schedule_backup_course_execute($preferences) {
}
//If we have to backup some module
if ($mods_to_backup) {
schedule_backup_log($starttime,$preferences->backup_course," modules");
//Start modules tag
$status = backup_modules_start ($backup_file,$preferences);
//Iterate over modules and call backup
foreach ($preferences->mods as $module) {
if ($module->backup and $status) {
schedule_backup_log($starttime,$preferences->backup_course," $module->name");
$status = backup_module($backup_file,$preferences,$module->name);
}
}
@@ -454,6 +520,7 @@ function schedule_backup_course_execute($preferences) {
//Now, if selected, copy user files
if ($status) {
if ($preferences->backup_user_files) {
schedule_backup_log($starttime,$preferences->backup_course," copying user files");
$status = backup_copy_user_files ($preferences);
}
}
@@ -461,22 +528,26 @@ function schedule_backup_course_execute($preferences) {
//Now, if selected, copy course files
if ($status) {
if ($preferences->backup_course_files) {
schedule_backup_log($starttime,$preferences->backup_course," copying course files");
$status = backup_copy_course_files ($preferences);
}
}
//Now, zip all the backup directory contents
if ($status) {
schedule_backup_log($starttime,$preferences->backup_course," zipping files");
$status = backup_zip ($preferences);
}
//Now, copy the zip file to course directory
if ($status) {
schedule_backup_log($starttime,$preferences->backup_course," copying backup");
$status = copy_zip_to_course_dir ($preferences);
}
//Now, clean temporary data (db and filesystem)
if ($status) {
schedule_backup_log($starttime,$preferences->backup_course," cleaning temp data");
$status = clean_temp_data ($preferences);
}
+1 -1
View File
@@ -5,6 +5,6 @@
// database (backup_version) to determine whether upgrades should
// be performed (see db/backup_*.php)
$backup_version = 2003121400; // The current version is a date (YYYYMMDDXX)
$backup_version = 2003121500; // The current version is a date (YYYYMMDDXX)
$backup_release = "1.2 development"; // User-friendly version number