• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 270
  • Last Modified:

copy folder A and its contents to another folder B

i have a snippet of code that i need some help with.  i want to copy folder A "core" and all its contents to folder B "<customer_name>".

so far my functions just copy files.  it doesnt copy any subfolder files.

/public_html/xxx/cms/core/  <----------------- folder A is core.  core contains 3 txt files and a sub folder called "includes" with 4 txt files .

/<customer_name>/public/xxx/  <-------------------- folder B is <customer_name> - the param i pass into my SetupCustomer function.

basically im copying everything inside core to a folder outside the public_html

see code below:
function CopyCoreFiles($current_directory,$template_directory,$customer_directory)
{
	$dots = array('.', '..');
	$files = array_diff(scandir($template_directory), $dots);
			
	foreach($files as $file) 
	{
		chdir($template_directory);
 
		$myfile = file_get_contents($file);
		
		chdir($current_directory);	
		
		chdir($customer_directory);
		
		file_put_contents($file,$myfile);	
		
		chdir($current_directory);
	}
		
	$files = array_diff(scandir($customer_directory), $dots);
		
	if(count($files) > 0)
	{
		unset($files,$file,$dots,$myfile,$customer_directory,$template_directory,$current_directory);
			
		return 1;
	}
	else
	{
		unset($files,$file,$dots,$myfile,$customer_directory,$template_directory,$current_directory);
			
		return 0;
	}
}
 
function SetupCustomer($customer_name)
{
	$current_directory = '';
		
	if(is_dir($customer_name))
	{			
		$this->DeleteFolderAndFiles($customer_name.'/');
	
		rmdir($customer_name);
	}	
		
	mkdir($customer_name);
		
	$current_directory = getcwd();
		
	if($this->CopyCoreFiles($current_directory,'cms/core/',$customer_name) == 1)
	{	
		unset($current_directory,$customer_name,$handle,$file,$current_directory);
			
		return true;
	}
	else
	{
		unset($current_directory,$customer_name,$handle,$file,$current_directory);
			
		return false;
	}
}
 
SetupCustomer('pegasus');

Open in new window

0
ellandrd
Asked:
ellandrd
  • 2
1 Solution
 
dereshCommented:
you need to extend your function to include "includes" folder like this:
function CopyCoreFiles($current_directory,$template_directory,$customer_directory)
{
        $dots = array('.', '..');
        $files = array_diff(scandir($template_directory), $dots);
                        
        foreach($files as $file) 
        {
                chdir($template_directory);
                $myfile = file_get_contents($file);
                chdir($current_directory);      
                chdir($customer_directory);
                file_put_contents($file,$myfile);       
                chdir($current_directory);
        }
 
        mkdir($customer_directory."/includes");
 
        $dots = array('.', '..');
        $files = array_diff(scandir($template_directory."/includes"), $dots);
                        
        foreach($files as $file) 
        {
                chdir($template_directory);
                $myfile = file_get_contents($file);
                chdir($current_directory);      
                chdir($customer_directory."/includes");
                file_put_contents($file,$myfile);       
                chdir($current_directory);
        }
 
                
        $files = array_diff(scandir($customer_directory), $dots);
                
        if(count($files) > 0)
        {
                unset($files,$file,$dots,$myfile,$customer_directory,$template_directory,$current_directory);
                        
                return 1;
        }
        else
        {
                unset($files,$file,$dots,$myfile,$customer_directory,$template_directory,$current_directory);
                        
                return 0;
        }

Open in new window

0
 
ellandrdAuthor Commented:
Hi

Looking at your code without testing it yet, will it copy all files inside core and its sub folder includes?
0
 
dereshCommented:
yes, it will. but you should do additional checks to be 100% sure, as i don't do any checkings ( if includes folder exists etc..)
0

Featured Post

Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now