]> git.mjollnir.org Git - moodle.git/commitdiff
User files and course files are saved selectively to backup directory
authorstronk7 <stronk7>
Sun, 11 May 2003 00:14:11 +0000 (00:14 +0000)
committerstronk7 <stronk7>
Sun, 11 May 2003 00:14:11 +0000 (00:14 +0000)
backup/backup_execute.html
backup/lib.php

index 621197e0951cd3fc50966ec88b10645ec8a9a889..13338152b1ce3902f67c63fc1a0d713242bd5801 100644 (file)
     //Now, if selected, copy user files
     if ($status) {
         if ($preferences->backup_user_files) {
-            echo "<li>Copying user files (not yet)";
-
+            echo "<li>Copying user files";
+            $status = backup_copy_user_files ($preferences);
         }
     }
 
     //Now, if selected, copy course files
     if ($status) {
         if ($preferences->backup_course_files) {
-            echo "<li>Copying course files (not yet)";
-
+            echo "<li>Copying course files";
+            $status = backup_copy_course_files ($preferences);
         }
     }
 
index 8b3bb4af2ba7da7f09fbec852b39501fc4b2485c..9bec3629c30f182c91510255d139dfafdfe8d7fd 100644 (file)
         return $status;
     }
 
+    //Function to check and create the "user_files" dir to
+    //save all the user files we need from "users" dir
+    function check_and_create_user_files_dir($backup_unique_code) {
+        global $CFG;
+
+            $status = check_dir_exists($CFG->dataroot."/temp/backup/".$backup_unique_code."/user_files",true);
+
+        return $status;
+    }
+
+    //Function to check and create the "course_files" dir to
+    //save all the course files we need from "CFG->datadir/course" dir
+    function check_and_create_course_files_dir($backup_unique_code) {
+
+        global $CFG;
+
+            $status = check_dir_exists($CFG->dataroot."/temp/backup/".$backup_unique_code."/course_files",true);
+
+        return $status;
+    }
+
     //Function to delete all the directory contents recursively
     //Copied from admin/delete.php
     function delete_dir_contents ($rootdir) {
         
     }
 
+    //This function copies all the needed files under the "users" directory to the "user_files"
+    //directory under temp/backup
+    function backup_copy_user_files ($preferences) {
+
+        global $CFG;
+
+        $status = true;
+
+        //First we check to "user_files" exists and create it as necessary
+        //in temp/backup/$backup_code  dir
+        $status = check_and_create_user_files_dir($preferences->backup_unique_code);
+        //Now iterate over directories under "users" to check if that user must be 
+        //copied to backup
+        
+        $rootdir = $CFG->dataroot."/users";
+        //Check if directory exists
+        if (is_dir($rootdir)) {
+            $list = list_directories ($rootdir);
+            if ($list) {
+                //Iterate
+                foreach ($list as $dir) {
+                    //Look for dir like username in backup_ids
+                    $data = get_record ("backup_ids","backup_code",$preferences->backup_unique_code,
+                                                     "table_name","user", 
+                                                     "old_id",$dir);
+                    //If exists, copy it
+                    if ($data) {
+                        $status = backup_copy_file($rootdir."/".$dir,
+                                       $CFG->dataroot."/temp/backup/".$preferences->backup_unique_code."/user_files/".$dir);
+                    }
+                }
+            }
+        }
+        return $status;
+    }
+
+    //This function copies all the course files under the course directory (except the moddata
+    //directory to the "course_files" directory under temp/backup
+    function backup_copy_course_files ($preferences) {
+
+        global $CFG;
+
+        $status = true;
+
+        //First we check to "course_files" exists and create it as necessary
+        //in temp/backup/$backup_code  dir
+        $status = check_and_create_course_files_dir($preferences->backup_unique_code);
+
+        //Now iterate over files and directories except $CFG->moddata to be
+        //copied to backup
+
+        $rootdir = $CFG->dataroot."/".$preferences->backup_course;
+        //Check if directory exists
+        if (is_dir($rootdir)) {
+            $list = list_directories_and_files ($rootdir);
+            if ($list) {
+                //Iterate
+                foreach ($list as $dir) {
+                    if ($dir !== $CFG->moddata) {
+                        $status = backup_copy_file($rootdir."/".$dir,
+                                       $CFG->dataroot."/temp/backup/".$preferences->backup_unique_code."/course_files/".$dir);
+                    }
+                }
+            }
+        }
+        return $status;
+    }
+
+    //This function return the names of all directories under a give directory
+    //Not recursive
+    function list_directories ($rootdir) {
+  
+        $dir = opendir($rootdir);
+        while ($file=readdir($dir)) {
+            if ($file=="." || $file=="..") {
+                continue;
+            }
+            if (is_dir($rootdir."/".$file)) {
+                $results[$file] = $file;
+            }
+        }
+        closedir($dir);  
+        return $results;       
+    }
+
+    //This function return the names of all directories and files under a give directory
+    //Not recursive
+    function list_directories_and_files ($rootdir) {
+        $dir = opendir($rootdir);
+        while ($file=readdir($dir)) {
+            if ($file=="." || $file=="..") {
+                continue;
+            }
+            $results[$file] = $file;
+        }
+        closedir($dir); 
+        return $results;
+    }
+
     // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     //This functions are used to copy any file or directory ($from_file)