diff --git a/lib/file-control-xhr.php b/lib/file-control-xhr.php index 7f8bcd7..27274f8 100644 --- a/lib/file-control-xhr.php +++ b/lib/file-control-xhr.php @@ -256,9 +256,291 @@ if (!$error && $_GET['action']=="save") { } }; +// ========== +// NEW FOLDER +// ========== +if (!$error && $_GET['action']=="newFolder") { + if (!$demoMode && is_writable($docRoot.$fileLoc)) { + mkdir($file, octdec($ICEcoder['newDirPerms'])); + // Reload file manager + $doNext = 'top.ICEcoder.selectedFiles=[];top.ICEcoder.updateFileManagerList(\'add\',\''.$fileLoc.'\',\''.$fileName.'\',false,false,false,\'folder\');'; + $finalAction = "newFolder"; + // Run our custom processes + include_once("../processes/on-new-dir.php"); + } else { + $doNext = "top.ICEcoder.message('".$t['Sorry, cannot create...']."\\n".$fileLoc."');"; + $finalAction = "nothing"; + } + $doNext .= 'top.ICEcoder.serverMessage();top.ICEcoder.serverQueue("del",0);'; +}; +// ================ +// MOVE FILE/FOLDER +// ================ +if (!$error && $_GET['action']=="move") { + $moved=false; + $doNext = ""; + $srcDir = $docRoot.$iceRoot.str_replace("|","/",strClean($_GET['oldFileName'])); + $tgtDir = $docRoot.$fileLoc."/".$fileName; + if ($srcDir != $tgtDir && $fileLoc != "") { + if (!$demoMode && is_writable($srcDir)) { + if(rename($srcDir,$tgtDir)) { + // Reload file manager + $fileOrFolder = is_dir($docRoot.$fileLoc."/".$fileName) ? "folder" : "file"; + $doNext .= 'top.ICEcoder.selectedFiles=[];top.ICEcoder.updateFileManagerList(\'move\',\''.$fileLoc.'\',\''.$fileName.'\',\'\',\''.str_replace($iceRoot,"",strClean($_GET['oldFileName'])).'\',false,\''.$fileOrFolder.'\');'; + $finalAction = "move"; + $moved=true; + // Run our custom processes + include_once("../processes/on-file-dir-move.php"); + } + } + if (!$moved) { + $doNext .= "top.ICEcoder.message('".$t['Sorry, cannot move']."\\n".str_replace("|","/",strClean($_GET['oldFileName']))."\\n\\n".$t['Maybe public write...']."');"; + $finalAction = "nothing"; + } + } else { + $finalAction = "nothing"; + } + $doNext .= 'top.ICEcoder.serverMessage();top.ICEcoder.serverQueue("del",0);'; +}; + +// ================== +// RENAME FILE/FOLDER +// ================== + +if (!$error && $_GET['action']=="rename") { + $renamed=false; + if (!$demoMode && is_writable($docRoot.$iceRoot.str_replace("|","/",strClean($_GET['oldFileName'])))) { + if(rename($docRoot.$iceRoot.str_replace("|","/",strClean($_GET['oldFileName'])),$docRoot.$fileLoc."/".$fileName)) { + // Reload file manager + $doNext = 'top.ICEcoder.selectedFiles=[];top.ICEcoder.updateFileManagerList(\'rename\',\''.$fileLoc.'\',\''.$fileName.'\',\'\',\''.str_replace($iceRoot,"",strClean($_GET['oldFileName'])).'\');'; + $finalAction = "rename"; + $renamed=true; + // Run our custom processes + include_once("../processes/on-file-dir-rename.php"); + } + } + if (!$renamed) { + $doNext = "top.ICEcoder.message('".$t['Sorry, cannot rename']."\\n".strClean($_GET['oldFileName'])."\\n\\n".$t['Maybe public write...']."');"; + } + $doNext .= 'top.ICEcoder.serverMessage();top.ICEcoder.serverQueue("del",0);'; +}; + +// ================= +// PASTE FILE/FOLDER +// ================= + +if (!$error && $_GET['action']=="paste") { + $source = $file; + $dest = str_replace("//","/",$docRoot.$iceRoot.strClean(str_replace("|","/",$_GET['location']))."/".basename($source)); + if (!$demoMode && is_writable(dirname($dest))) { + if (is_dir($source)) { + $fileOrFolder = "folder"; + if (!is_dir($dest)) { + mkdir($dest, octdec($ICEcoder['newDirPerms'])); + } else { + for ($i=2; $i<1000000000; $i++) { + if (!is_dir($dest." (".$i.")")) { + $dest = $dest." (".$i.")"; + mkdir($dest, octdec($ICEcoder['newDirPerms'])); + $i=1000000000; + } + } + } + foreach ($iterator = new RecursiveIteratorIterator( + new RecursiveDirectoryIterator($source, RecursiveDirectoryIterator::SKIP_DOTS), + RecursiveIteratorIterator::SELF_FIRST) as $item + ) { + if ($item->isDir()) { + mkdir($dest.DIRECTORY_SEPARATOR.$iterator->getSubPathName(), octdec($ICEcoder['newDirPerms'])); + } else { + copy($item, $dest.DIRECTORY_SEPARATOR.$iterator->getSubPathName()); + } + } + } else { + $fileOrFolder = "file"; + if (!file_exists($dest)) { + copy($source, $dest); + } else { + for ($i=2; $i<1000000000; $i++) { + if (!file_exists($dest." (".$i.")")) { + $dest = $dest." (".$i.")"; + copy($source, $dest); + $i=1000000000; + } + } + } + } + // Reload file manager + $doNext = 'top.ICEcoder.updateFileManagerList(\'add\',\''.strClean(str_replace("|","/",$_GET['location'])).'\',\''.basename($dest).'\',false,false,false,\''.$fileOrFolder.'\');'; + $finalAction = "pasteFile"; + // Run our custom processes + include_once("../processes/on-file-dir-paste.php"); + } else { + $doNext = "top.ICEcoder.message('".$t['Sorry, cannot copy']." \\n".str_replace($docRoot,"",$source)."\\n ".$t['into']." \\n".str_replace($docRoot,"",$dest)."');"; + $finalAction = "nothing"; + } + $doNext .= 'top.ICEcoder.serverMessage();top.ICEcoder.serverQueue("del",0);'; +}; + +// ============== +// UPLOAD FILE(S) +// ============== + +if (!$error && $_GET['action']=="upload") { + if (!$demoMode) { + $doNext = ""; + class fileUploader { + public function __construct($uploads) { + global $docRoot,$iceRoot,$doNext; + $uploadDir=$docRoot.$iceRoot.str_replace("..","",str_replace("|","/",strClean($_POST['folder'])."/")); + foreach($uploads as $current) { + $this->uploadFile=$uploadDir.$current->name; + $fileName = $current->name; + if ($this->upload($current,$this->uploadFile)) { + $doNext .= 'top.ICEcoder.updateFileManagerList(\'add\',top.ICEcoder.selectedFiles[top.ICEcoder.selectedFiles.length-1].replace(/\|/g,\'/\'),\''.str_replace("'","\'",$fileName).'\',false,false,true,\'file\'); top.ICEcoder.serverMessage("'.$t['Uploaded file(s) OK'].'");setTimeout(function(){top.ICEcoder.serverMessage();},2000);'; + $finalAction = "upload"; + } else { + $doNext .= "top.ICEcoder.message('".$t['Sorry, cannot upload']." \\n".$fileName."\\n ".$t['into']." \\n'+top.ICEcoder.selectedFiles[top.ICEcoder.selectedFiles.length-1].replace(/\|/g,'/'));"; + $finalAction = "nothing"; + } + } + } + + public function upload($current,$uploadFile){ + if(move_uploaded_file($current->tmp_name,$uploadFile)){ + return true; + } + } + } + + function getDetails($fileArr) { + foreach($fileArr['name'] as $keyee => $info) { + $uploads[$keyee]->name=$fileArr['name'][$keyee]; + $uploads[$keyee]->type=$fileArr['type'][$keyee]; + $uploads[$keyee]->tmp_name=$fileArr['tmp_name'][$keyee]; + $uploads[$keyee]->error=$fileArr['error'][$keyee]; + } + return $uploads; + } + + if($_FILES['filesInput']){ + $uploads = getDetails($_FILES['filesInput']); + $fileUploader=new fileUploader($uploads); + } + // Run our custom processes + include_once("../processes/on-file-upload.php"); + } else { + $doNext .= "top.ICEcoder.message('".$t['Sorry, cannot upload...']."');"; + $finalAction = "nothing"; + } + + $doNext .= "top.ICEcoder.hideFileMenu();top.document.getElementById('fileInput').value='';top.ICEcoder.showHide('hide',top.document.getElementById('loadingMask'));"; + + echo ""; +}; + +// ======================== +// DELETE FILE(S)/FOLDER(S) +// ======================== + +if (!$error && $_GET['action']=="delete") { + $doNext = ""; + $filesArray = explode(";",$file); // May contain more than one file here + for ($i=0;$i","",str_replace("&","&",$remoteFile)).' - + + ","",str_replace("&","&",$remoteFile)).'