siteDir.$currentFolder; } // Upload file function uploadFile($name){ // Check files were uploaded if (!$_FILES[$name]['name']) { $this->errors[] = 'Upload error, no files were provided'; return false; } // Check file name $fileName=$_FILES[$name]['name']; if (!$fileName=$this->checkFileName($fileName)){ return false; } // Check file type $fileType=$_FILES[$name]['type']; if (!$this->CheckFileType($fileType)){ return false; } // Check whether file already exists if (!$this->checkFileExs($fileName)){ return false; } // Copy file if (@copy($_FILES[$name]['tmp_name'], $this->folderName."/".$fileName)){ return $fileName; } else{ $this->errors[] = 'Upload error, faild to upload: '.$fileName; return false; } } // Delete file function deleteFile($fileName, $description=''){ if (@unlink($fileName)){ return true; } else{ $this->errors[] = $description; return false; } } // Create folder function createFolder($folder){ // Check name if (!$folder=$this->checkFileName($folder)){ return false; } if (@mkdir($this->folderName."/".$folder, 0755)){ return $folder; } else{ $this->errors[] = "Unable create folder: ".$folder.""; return false; } } // Remove folder function removeFolder($folder){ $dir=opendir($this->folderName."/".$folder); while (($d=readdir($dir))!==false){ if (is_file($this->folderName."/".$folder."/".$d)) { if (!@unlink($this->folderName."/".$folder."/".$d)){ $this->errors[] = 'Error deleting file: '.$d; return false; } } elseif (is_dir($this->folderName."/".$folder."/".$d) && ($d!==".") && ($d!=="..")){ $this->removeFolder($folder."/".$d); } } closedir($dir); if (!@rmdir($this->folderName."/".$folder)){ $this->errors[] = 'Error deleting directory: '.$folder; return false; } return true; } // Copy folder function copyFolder($folder, $copy_folder){ // Create copy_folder if (!@mkdir($this->folderName2."/".$copy_folder, 0755)){ $this->errors[] = "Unable create folder: ".$copy_folder.""; return false; } // Copy files from folder to copy_folder if (!($dir=opendir($this->folderName."/".$folder))){ $this->errors[] = 'Error open folder: '.$folder; return false; } while (($d=readdir($dir))!==false){ if (is_file($this->folderName."/".$folder."/".$d)) { if (!@copy($this->folderName."/".$folder."/".$d, $this->folderName2."/".$copy_folder."/".$d)){ $this->errors[] = 'Error copying file: '.$d; return false; } } elseif (is_dir($this->folderName."/".$folder."/".$d) && ($d!==".") && ($d!=="..")){ $this->copyFolder($folder."/".$d, $copy_folder."/".$d); } } closedir($dir); return true; } // Check permission to write in folder function writeableFolder($folder){ $dir=opendir($this->folderName."/".$folder); while (($d=readdir($dir))!==false){ if (is_file($this->folderName."/".$folder."/".$d)) { continue; } elseif (is_dir($this->folderName."/".$folder."/".$d) && ($d!==".") && ($d!=="..")){ $this->writeableFolder($folder."/".$d); } } closedir($dir); if (!is_writeable($this->folderName."/".$folder)){ $this->errors[] = "Folder: ".$folder." is not writeable"; return false; } return true; } // Check file name function checkFileName($fileName, $description = ''){ // Remove illegal characters $fileName = str_replace(' ', '_', $fileName); $fileName = str_replace('%20', '_', $fileName); $fileName = preg_replace("/[^a-zA-Z0-9._]/i", "", $fileName); if (strstr($fileName,'..')){ $this->errors[] = $description; return false; } return $fileName; } // Check whether file already exists function checkFileExs($fileName){ if (file_exists($this->folderName.$fileName)) { $this->errors[] = "File: ".$fileName." already exists"; return false; } return true; } // Check file type function CheckFileType($fileType, $description = ''){ if (strlen($this->allowedTypes) > 0){ // Put types into an array $allowedTypes = explode(' ',$this->allowedTypes); // Check whether type is in array if (!in_array($fileType, $allowedTypes)){ $this->errors[] = $description; return false; } } return true; } // Return the extension of the given file function getExtension($filename){ return strrchr($filename, "."); } } ?>