]> git.mjollnir.org Git - moodle.git/commitdiff
Included support to clean /temp/backup automatically and to write
authorstronk7 <stronk7>
Tue, 6 May 2003 22:48:25 +0000 (22:48 +0000)
committerstronk7 <stronk7>
Tue, 6 May 2003 22:48:25 +0000 (22:48 +0000)
the xml file (header and info only)

backup/backup_execute.html
backup/lib.php

index 7fc8005e4fd5b65823d90c8c76306868354d3cd6..ec6bbd4d82b4c8e53619814079ba5d6e73cb8813 100644 (file)
             if (!isset($$var)) {
                 $$var = 1;
             }
+            //Now stores all the mods preferences into an array into preferences
+            $preferences->mods[$modname]->backup = $$var;
+
             //Check include user info
             $var = "backup_user_info_".$modname;
             if (!isset($$var)) {
                 $$var = 1;
             }
+            //Now stores all the mods preferences into an array into preferences
+            $preferences->mods[$modname]->userinfo = $$var; 
+            //And the name of the mod
+            $preferences->mods[$modname]->name = $modname;
         }
     }
 
     if (!isset($backup_users)) {
         $backup_users = 1;
     }
+    $preferences->backup_users = $backup_users;
    
     if (!isset($backup_logs)) {
         $backup_logs = 1;
     }
+    $preferences->backup_logs = $backup_logs;
 
     if (!isset($backup_user_files)) {
         $backup_user_files = 1;
    }
+    $preferences->backup_user_files = $backup_user_files;
 
     if (!isset($backup_course_files)) {
         $backup_course_files = 2;
     }
+    $preferences->backup_course_files = $backup_course_files;
 
     if (!isset($id)) {
         error ("Course not specified");
     }
+    $preferences->backup_course = $id;
 
     if (!isset($backup_name)) {
         error ("Backup name not specified");
     }
+    $preferences->backup_name = $backup_name;
 
     if (!isset($backup_unique_code)) {
         error ("Backup unique code not specified");
     }
+    $preferences->backup_unique_code = $backup_unique_code;
+
+    //Another Info
+    $preferences->moodle_version = $version;
+    $preferences->moodle_release = $release;
+    $preferences->backup_version = $backup_version;
+    $preferences->backup_release = $backup_release;
 
     if ($count == 0) {
         notice("No backupable modules are installed!");
@@ -79,6 +99,9 @@
     //Start the main tr, where all the backup progress is done
     echo "<tr>";
     echo "<td colspan=\"2\">";
+    
+    //Start the main ul
+    echo "<ul>";
 
     //Delete old_entries from backup tables
     echo "<li>Deteting old data";
     if ($status) {
         $status = clear_backup_dir($backup_unique_code);
     }
+
+    //Create the moodle.xml file
+    if ($status) {
+        echo "<li>Creating xml file";
+        //Begin a new list to xml contents
+        echo "<ul>";
+        echo "<li>Writing header";
+        //Obtain the xml file (create and open) and print prolog information
+        $backup_file = backup_open_xml($backup_unique_code);
+        echo "<li>Writing info";
+        //Prints general info about backup to file
+        if ($backup_file) {
+            $status = backup_general_info($backup_file,$preferences);
+        }
+
+    
+        //Close the xml file and xml data
+        if ($backup_file) {
+            $status = backup_close_xml($backup_file);
+        }
+
+        //End xml contents (close ul)
+        echo "</ul>";
+    }
+
     if (!$status) {
         error ("An error has ocurred");
     }
 
+    //Ends th main ul
+    echo "</ul>";
 
     //End the main tr, where all the backup is done
+    echo "</td></tr>";
 
     //End the main table
     echo "</table>";
index 860c990c070996df217ece2eda709819f0f08756..49e6b7c0f2ffb94d5d2ea551a929f4aba84cdcff 100644 (file)
         global $CFG; 
 
         //Change this if you want !!
-        $days = 2;
+        $days = 1;
         //End change this
         $seconds = $days * 24 * 60 * 60;
         $delete_from = time()-$seconds;
             $status = execute_sql("DELETE FROM {$CFG->prefix}backup_files
                                    WHERE backup_code < '$delete_from'",false);
         }
+        //Now, delete old directory (if exists)
+        if ($status) {
+            $status = backup_delete_old_dirs($delete_from);
+        }
         return($status);
     }
 
+    //Function to delete dirs/files into temp/backup directory
+    //older than $delete_from
+    function backup_delete_old_dirs($delete_from) {
+
+        global $CFG;
+
+        $status = true;
+        $list = get_directory_list($CFG->dataroot."/temp/backup", "", false);
+        foreach ($list as $file) {
+            $file_path = $CFG->dataroot."/temp/backup/".$file;
+            $moddate = filemtime($file_path);
+            if ($status and $moddate < $delete_from) {
+                $status = delete_dir_contents($file_path);
+                //There is nothing, delete the directory itself
+                if ($status) {
+                    $status = rmdir($file_path);
+                }
+            }
+        }
+
+        return $status;
+    }
+
     //Function to check if a directory exists
     //and, optionally, create it
     function check_dir_exists($dir,$create=false) {
                 if (filetype($fullfile) == "dir") {
                     delete_dir_contents($fullfile);
                     if (!rmdir($fullfile)) {
-                        $status = false;;
+                        $status = false;
                     }
                 } else {
                     if (!unlink("$fullfile")) {
-                        $status = false;;
+                        $status = false;
                     }
                 }
             }
 
         return $status;
     }
+
+    //Function to create, open and write header of the xml file
+    function backup_open_xml($backup_unique_code) {
+
+        global $CFG;
+        
+        $status = true;
+
+        //Open for writing
+        $file = $CFG->dataroot."/temp/backup/".$backup_unique_code."/moodle.xml";
+        $backup_file = fopen($file,"w");
+        //Writes the header
+        $status = fwrite ($backup_file,"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
+        if ($status) {
+            $status = fwrite ($backup_file,start_tag("MOODLE_BACKUP",0,true));
+        }
+        if ($status) {
+            return $backup_file;
+        } else {
+            return false;
+        }
+    }
+
+    //Close the file
+    function backup_close_xml($backup_file) {
+        $status = fwrite ($backup_file,end_tag("MOODLE_BACKUP",0,true));
+        return fclose($backup_file);
+    }
+
+    //Return the xml start tag 
+    function start_tag($tag,$level=0,$endline=false) {
+        if ($endline) {
+           $endchar = "\n";
+        } else {
+           $endchar = "";
+        }
+        return str_repeat(" ",$level*2)."<".strtoupper($tag).">".$endchar;
+    }
+    
+    //Return the xml end tag 
+    function end_tag($tag,$level=0,$endline=true) {
+        if ($endline) {
+           $endchar = "\n";
+        } else {
+           $endchar = "";
+        }
+        return str_repeat(" ",$level*2)."</".strtoupper($tag).">".$endchar;
+    }
+    
+    //Return the start tag, the contents and the end tag
+    function full_tag($tag,$level=0,$endline=true,$content,$to_utf=true) {
+        $st = start_tag($tag,$level,$endline);
+        $co="";
+        if ($to_utf) {
+            $co = $content;
+        } else {
+            $co = $content;
+        }
+        $et = end_tag($tag,0,true);
+        return $st.$co.$et;
+    }
+
+    //Prints General info about the course
+    //name, moodle_version (internal and release), backup_version, date, info in file...
+    function backup_general_info ($bf,$preferences) {
     
+        global $CFG;
+        
+        fwrite ($bf,start_tag("INFO",1,true));
+
+        //The name of the backup
+        fwrite ($bf,full_tag("NAME",2,false,$preferences->backup_name));
+        //The moodle_version
+        fwrite ($bf,full_tag("MOODLE_VERSION",2,false,$preferences->moodle_version));
+        fwrite ($bf,full_tag("MOODLE_RELEASE",2,false,$preferences->moodle_release));
+        //The backup_version
+        fwrite ($bf,full_tag("BACKUP_VERSION",2,false,$preferences->backup_version));
+        fwrite ($bf,full_tag("BACKUP_RELEASE",2,false,$preferences->backup_release));
+        //The date
+        fwrite ($bf,full_tag("DATE",2,false,$preferences->backup_unique_code));
+        //Te includes tag
+        fwrite ($bf,start_tag("DETAILS",2,true));
+        //Now, go to mod element of preferences to print its status
+        foreach ($preferences->mods as $element) {
+            //Calculate info
+            $included = "false";
+            $userinfo = "false";
+            if ($element->backup) {
+                $included = "true";
+                if ($element->userinfo) {
+                    $userinfo = "true";
+                }
+            }
+            //Prints the mod start
+            fwrite ($bf,start_tag("MOD",3,true));
+            fwrite ($bf,full_tag("NAME",4,false,$element->name));
+            fwrite ($bf,full_tag("INCLUDED",4,false,$included));
+            fwrite ($bf,full_tag("USERINFO",4,false,$userinfo));
+                 
+            //Print the end
+            fwrite ($bf,end_tag("MOD",3,true));
+        }
+        //The user in backup
+        if ($preferences->backup_users == 1) {
+            fwrite ($bf,full_tag("USERS",3,false,"COURSE"));
+        } else {
+            fwrite ($bf,full_tag("USERS",3,false,"ALL"));
+        }
+        //The logs in backup
+        if ($preferences->backup_logs == 1) {
+            fwrite ($bf,full_tag("LOGS",3,false,"true"));
+        } else {
+            fwrite ($bf,full_tag("LOGS",3,false,"false"));
+        }
+        //The user files
+        if ($preferences->backup_user_files == 1) {
+            fwrite ($bf,full_tag("USERFILES",3,false,"true"));
+        } else {
+            fwrite ($bf,full_tag("USERFILES",3,false,"false"));
+        }
+        //The course files
+        if ($preferences->backup_course_files == 1) {
+            fwrite ($bf,full_tag("COURSEFILES",3,false,"true"));
+        } else {
+            fwrite ($bf,full_tag("COURSEFILES",3,false,"false"));
+        }
+
+        fwrite ($bf,end_tag("DETAILS",2,true));
+
+
+        fwrite ($bf,end_tag("INFO",1,true)); 
+    }
 ?>