Definition:
function copy_dir($from, $to, $skip_list = array() {}
Copies a directory from one location to another via the WordPress Filesystem Abstraction.
Assumes that WP_Filesystem() has already been called and setup.
Parameters
- string $from: source directory
- string $to: destination directory
- array $skip_list: a list of files/folders to skip copying
Return values
returns:WP_Error on failure, True on success.
Source code
function copy_dir($from, $to, $skip_list = array() ) { global $wp_filesystem; $dirlist = $wp_filesystem->dirlist($from); $from = trailingslashit($from); $to = trailingslashit($to); $skip_regex = ''; foreach ( (array)$skip_list as $key => $skip_file ) $skip_regex .= preg_quote($skip_file, '!') . '|'; if ( !empty($skip_regex) ) $skip_regex = '!(' . rtrim($skip_regex, '|') . ')$!i'; foreach ( (array) $dirlist as $filename => $fileinfo ) { if ( !empty($skip_regex) ) if ( preg_match($skip_regex, $from . $filename) ) continue; if ( 'f' == $fileinfo['type'] ) { if ( ! $wp_filesystem->copy($from . $filename, $to . $filename, true, FS_CHMOD_FILE) ) { // If copy failed, chmod file to 0644 and try again. $wp_filesystem->chmod($to . $filename, 0644); if ( ! $wp_filesystem->copy($from . $filename, $to . $filename, true, FS_CHMOD_FILE) ) return new WP_Error('copy_failed', __('Could not copy file.'), $to . $filename); } } elseif ( 'd' == $fileinfo['type'] ) { if ( !$wp_filesystem->is_dir($to . $filename) ) { if ( !$wp_filesystem->mkdir($to . $filename, FS_CHMOD_DIR) ) return new WP_Error('mkdir_failed', __('Could not create directory.'), $to . $filename); } $result = copy_dir($from . $filename, $to . $filename, $skip_list); if ( is_wp_error($result) ) return $result; } } return true; }
727
No comments yet... Be the first to leave a reply!