]> git.mjollnir.org Git - moodle.git/commitdiff
Now an email is sent to the admin when some course backup is excecuted.
authorstronk7 <stronk7>
Mon, 15 Dec 2003 00:54:16 +0000 (00:54 +0000)
committerstronk7 <stronk7>
Mon, 15 Dec 2003 00:54:16 +0000 (00:54 +0000)
TODO:
   - View logs
   - Language strings

backup/STATUS.txt
backup/backup_scheduled.php
backup/version.php

index 372158860185e043ee4ade33a28e705851a32795..fc733699de5390831f663e90a7448ab08d4454ab 100644 (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
index da783f27a7f5832792d9b24942b32326ca51f3a3..50ea51b9748fb48ffb5fa93211b7da40d4f7627e 100644 (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);
     }
 
index 03e20cecf95109a763930f0d4ee2ff52180ea31f..6cce5584647bdbc99a15bb225c372b6e2e2e0486 100644 (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