Ignore:
Timestamp:
10/29/06 23:53:06 (13 years ago)
Author:
ray
Message:

see Ticket #874

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/plugins/ImageManager/Classes/Files.php

    r588 r604  
    1111define('FILE_ERROR_DST_DIR_FAILED', 102); 
    1212define('FILE_COPY_OK', 103); 
     13define('FILE_ERROR_DST_DIR_EXIST', 104); 
    1314 
    1415/** 
     
    264265 
    265266        } 
    266  
     267         
     268        function rename ($oldPath,$newPath) 
     269        { 
     270                if(!(is_dir($oldPath) || is_file($oldPath))) 
     271                        return FILE_ERROR_NO_SOURCE; 
     272                 
     273                if (file_exists($newPath)) 
     274                        return FILE_ERROR_DST_DIR_EXIST; 
     275 
     276                $ret = rename($oldPath, $newPath); 
     277                if (!$ret) 
     278                        return FILE_ERROR_COPY_FAILED; 
     279                else return FILE_COPY_OK; 
     280        } 
     281         
     282                /** 
     283         * copy a directory and all subdirectories and files (recursive) 
     284         * @author SBoisvert at Don'tSpamMe dot Bryxal dot ca (adapted from php.net) 
     285         * @author Raimund Meyer 
     286         * @param string base path 
     287         * @param string source directory 
     288         * @param string destination directory 
     289         * @param bool   overwrite existing files 
     290         *   
     291         * @return mixed bool true on pass, number on fail 
     292         */ 
     293        function copyDir($basePath, $source, $dest, $overwrite = false) 
     294        { 
     295                if(!is_dir($basePath . $dest)) 
     296                { 
     297                        if (!@mkdir($basePath . $dest)) return FILE_ERROR_DST_DIR_FAILED;        
     298                } 
     299                if($handle = opendir($basePath . $source)) 
     300                {        // if the folder exploration is sucsessful, continue 
     301                        while( ($file = readdir($handle)) !== false) 
     302                        { // as long as storing the next file to $file is successful, continue 
     303                                if($file != '.' && $file != '..') 
     304                                { 
     305                                        $path = $source . '/' . $file; 
     306                                        if(is_file($basePath . $path)) 
     307                                        { 
     308                                                /*if(!is_file($basePath . $dest . '/' . $file) || $overwrite) 
     309                                                { 
     310                                                        if(!@copy($basePath . $path, $basePath . $dest . '/' . $file)) 
     311                                                        { 
     312                                                          return FILE_ERROR_COPY_FAILED; 
     313                                                        } 
     314                                                }*/ 
     315                                                Files::copyFile($basePath . $path, $basePath . $dest . '/', $file, true); 
     316                                        }  
     317                                        elseif(is_dir($basePath . $path)) 
     318                                        { 
     319                                                if(!is_dir($basePath . $dest . '/' . $file)) 
     320                                                { 
     321                                                        mkdir($basePath . $dest . '/' . $file); // make subdirectory before subdirectory is copied 
     322                                                        Files::copyDir($basePath, $path, $dest . '/' . $file, $overwrite); //recurse! 
     323                                                } 
     324                                        } 
     325                                } 
     326                        } 
     327                        closedir($handle); 
     328                } 
     329                return true; 
     330        } 
    267331} 
    268332 
Note: See TracChangeset for help on using the changeset viewer.