mirror of
https://github.com/moodle/moodle.git
synced 2025-08-04 00:16:46 +02:00
User files and course files are saved selectively to backup directory
This commit is contained in:
parent
23e3e468aa
commit
667d2f2a86
2 changed files with 127 additions and 4 deletions
|
@ -213,16 +213,16 @@
|
||||||
//Now, if selected, copy user files
|
//Now, if selected, copy user files
|
||||||
if ($status) {
|
if ($status) {
|
||||||
if ($preferences->backup_user_files) {
|
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
|
//Now, if selected, copy course files
|
||||||
if ($status) {
|
if ($status) {
|
||||||
if ($preferences->backup_course_files) {
|
if ($preferences->backup_course_files) {
|
||||||
echo "<li>Copying course files (not yet)";
|
echo "<li>Copying course files";
|
||||||
|
$status = backup_copy_course_files ($preferences);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
123
backup/lib.php
123
backup/lib.php
|
@ -300,6 +300,28 @@
|
||||||
return $status;
|
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
|
//Function to delete all the directory contents recursively
|
||||||
//Copied from admin/delete.php
|
//Copied from admin/delete.php
|
||||||
function delete_dir_contents ($rootdir) {
|
function delete_dir_contents ($rootdir) {
|
||||||
|
@ -862,6 +884,107 @@
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//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)
|
//This functions are used to copy any file or directory ($from_file)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue