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)).'