From 435e1b3b4bbb43a4afa99ef1c0e751334bb2e037 Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Sun, 25 Nov 2012 16:22:36 +0000 Subject: [PATCH] Now pastes files and folders Also includes, sub folders & files --- lib/file-control.php | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/lib/file-control.php b/lib/file-control.php index 86ef062..7e03819 100644 --- a/lib/file-control.php +++ b/lib/file-control.php @@ -54,13 +54,30 @@ if ($_GET['action']=="newFolder") { // If we're due to paste a new file... if ($_GET['action']=="paste") { - $location = $docRoot.strClean(str_replace("|","/",$_GET['location'])); - if (!$demoMode && is_writable($location)) { - copy($file, $location."/".basename($file)); + $source = $file; + $dest = $docRoot.strClean(str_replace("|","/",$_GET['location']))."/".basename($source); + if (!$demoMode && is_writable(dirname($dest))) { + if (is_dir($source)) { + if (!is_dir($dest)) { + mkdir($dest, 0705); + } + foreach ($iterator = new RecursiveIteratorIterator( + new RecursiveDirectoryIterator($source, RecursiveDirectoryIterator::SKIP_DOTS), + RecursiveIteratorIterator::SELF_FIRST) as $item + ) { + if ($item->isDir()) { + mkdir($dest.DIRECTORY_SEPARATOR.$iterator->getSubPathName(), 0705); + } else { + copy($item, $dest.DIRECTORY_SEPARATOR.$iterator->getSubPathName()); + } + } + } else { + copy($source, $dest); + } // Reload file manager - echo ''; + echo ''; } else { - echo ""; + echo ""; } echo ''; }