diff --git a/main/inc/lib/main_api.lib.php b/main/inc/lib/main_api.lib.php index 572688004f..4e22658369 100644 --- a/main/inc/lib/main_api.lib.php +++ b/main/inc/lib/main_api.lib.php @@ -1904,4 +1904,48 @@ function api_time_to_hms($seconds) } + +/** + * function adapted from a php.net comment + * copy recursively a folder + * @param the source folder + * @param the dest folder + * @param an array of excluded file_name (without extension) + * @param copied_files the returned array of copied files + */ + +function copyr($source, $dest, $exclude=array(), $copied_files=array()) +{ + // Simple copy for a file + if (is_file($source)) { + $path_infos = pathinfo($source); + if(!in_array($path_infos['filename'], $exclude)) + copy($source, $dest); + return; + } + + + // Make destination directory + if (!is_dir($dest)) { + mkdir($dest); + } + + // Loop through the folder + $dir = dir($source); + while (false !== $entry = $dir->read()) { + // Skip pointers + if ($entry == '.' || $entry == '..') { + continue; + } + + // Deep copy directories + if ($dest !== "$source/$entry") { + $zip_files = copyr("$source/$entry", "$dest/$entry", $exclude, $copied_files); + } + } + // Clean up + $dir->close(); + return $zip_files; +} + ?> \ No newline at end of file