framework/utils/CFileHelper.php
public static function copyDirectory($src,$dst,$options=array())
	{
		$fileTypes=array();
		$exclude=array();
		$level=-1;
		extract($options);
		if(!is_dir($dst))
			self::createDirectory($dst,isset($options['newDirMode'])?$options['newDirMode']:null,true);

		self::copyDirectoryRecursive($src,$dst,'',$fileTypes,$exclude,$level,$options);
	}
public static function copyDirectory($src,$dst,$options=array())
	{
		$fileTypes=array();
		$exclude=array();
		$level=-1;
		extract($options);
		if(!is_dir($dst))
			self::createDirectory($dst,isset($options['newDirMode'])?$options['newDirMode']:null,true);

		self::copyDirectoryRecursive($src,$dst,'',$fileTypes,$exclude,$level,$options);
	}
public static function copyDirectory ( $ src , $ dst , $ options = array ( ) ) { $ fileTypes = array ( ) ; $ exclude = array ( ) ; $ level = - 1 ; extract ( $ options ) ; if ( ! is_dir ( $ dst ) ) self :: createDirectory ( $ dst , isset ( $ options [ 'newDirMode' ] ) ? $ options [ 'newDirMode' ] : null , true ) ; self :: copyDirectoryRecursive ( $ src , $ dst , '' , $ fileTypes , $ exclude , $ level , $ options ) ; }
Copies a directory recursively as another.
If the destination directory does not exist, it will be created recursively.
@param string $src the source directory
@param string $dst the destination directory
@param array $options options for directory copy. Valid options are:
<ul>
<li>fileTypes: array, list of file name suffix (without dot). Only files with these suffixes will be copied.</li>
<li>exclude: array, list of directory and file exclusions. Each exclusion can be either a name or a path.
If a file or directory name or path matches the exclusion, it will not be copied. For example, an exclusion of
'.svn' will exclude all files and directories whose name is '.svn'. And an exclusion of '/a/b' will exclude
file or directory '$src/a/b'. Note, that '/' should be used as separator regardless of the value of the DIRECTORY_SEPARATOR constant.
</li>
<li>level: integer, recursion depth, default=-1.
Level -1 means copying all directories and files under the directory;
Level 0 means copying only the files DIRECTLY under the directory;
level N means copying those directories that are within N levels.
</li>
<li>newDirMode - the permission to be set for newly copied directories (defaults to 0777);</li>
<li>newFileMode - the permission to be set for newly copied files (defaults to the current environment setting).</li>
</ul>
Copies a directory recursively as another . If the destination directory does not exist it will be created recursively .