function copy_files() { $this->dlog('ENTER ns_cloner::copy_files'); $num_files = ns_recursive_dir_copy($this->source_upload_dir, $this->target_upload_dir, 0); $this->report[__('Files/directories copied', 'ns-cloner')] = $num_files; $this->dlog('Copied: <b>' . $num_files . '</b> folders and files!'); $this->dlog('From: <b>' . $this->source_upload_dir . '</b>'); $this->dlog('To: <b>' . $this->target_upload_dir . '</b>'); }
/** * Copy directories and files recursively and return number of copies executed * Skip directories called 'sites' to avoid copying all sites storage in WP > 3.5 * @return int number of files copied */ function ns_recursive_dir_copy($src, $dst, $num = 0) { $num = $num + 1; if (is_dir($src)) { if (!file_exists($dst)) { mkdir($dst); } $files = scandir($src); foreach ($files as $file) { if ($file != "." && $file != ".." && $file != 'sites') { $num = ns_recursive_dir_copy("{$src}/{$file}", "{$dst}/{$file}", $num); } } } elseif (file_exists($src)) { copy($src, $dst); } return $num; }