function folder_copy($src, $dst, $recurse = true) { $dir = opendir($src); if (!empty($dir)) { @mkdir($dst); while (false !== ($file = readdir($dir))) { if ($file != '.' and $file != '..') { if (is_dir($src . '/' . $file)) { if ($recurse) { folder_copy($src . '/' . $file, $dst . '/' . $file); } } else { copy($src . '/' . $file, $dst . '/' . $file); } } } closedir($dir); } }
/** * Copy a folder */ function folder_copy($src, $dest, $force = 0) { $mainframe =& JFactory::getApplication(); // Initialize variables jimport('joomla.client.helper'); $ftpOptions = JClientHelper::getCredentials('ftp'); // Eliminate trailing directory separators, if any $src = rtrim($src, DS); $dest = rtrim($dest, DS); if (!JFolder::exists($src)) { return 0; } $succes = 1; // Make sure the destination exists if (!JFolder::exists($dest) && !folder_create($dest)) { $folder = str_replace(JPATH_ROOT, '', $dest); $mainframe->enqueueMessage(JText::_('NNI_FAILED_TO_CREATE_DIRECTORY') . ': ' . $folder, 'error error_folders'); $succes = 0; } if (!($dh = @opendir($src))) { return 0; } $folders = array(); $files = array(); while (($file = readdir($dh)) !== false) { if ($file != '.' && $file != '..') { $file_src = $src . DS . $file; switch (filetype($file_src)) { case 'dir': $folders[] = $file; break; case 'file': $files[] = $file; break; } } } sort($folders); sort($files); $curr_folder = array_pop(explode(DS, $src)); // Walk through the directory recursing into folders foreach ($folders as $folder) { $folder_src = $src . DS . $folder; $folder_dest = $dest . DS . $folder; if (!($curr_folder == 'language' && !JFolder::exists($folder_dest))) { if (!folder_copy($folder_src, $folder_dest, $force)) { $succes = 0; } } } if ($ftpOptions['enabled'] == 1) { // Connect the FTP client jimport('joomla.client.ftp'); $ftp =& JFTP::getInstance($ftpOptions['host'], $ftpOptions['port'], null, $ftpOptions['user'], $ftpOptions['pass']); // Walk through the directory copying files foreach ($files as $file) { $file_src = $src . DS . $file; $file_dest = $dest . DS . $file; // Translate path for the FTP account $file_dest = JPath::clean(str_replace(JPATH_ROOT, $ftpOptions['root'], $file_dest), '/'); if ($force || !JFile::exists($file_dest)) { if (!$ftp->store($file_src, $file_dest)) { $file_path = str_replace($ftpOptions['root'], '', $file_dest); $mainframe->enqueueMessage(JText::_('NNI_ERROR_SAVING_FILE') . ': ' . $file_path, 'error error_files'); $succes = 0; } } } } else { foreach ($files as $file) { $file_src = $src . DS . $file; $file_dest = $dest . DS . $file; if ($force || !JFile::exists($file_dest)) { if (!@copy($file_src, $file_dest)) { $file_path = str_replace(JPATH_ROOT, '', $file_dest); $mainframe->enqueueMessage(JText::_('NNI_ERROR_SAVING_FILE') . ': ' . $file_path, 'error error_files'); $succes = 0; } } } } return $succes; }
function folder_copy($src, $dst) { $dir = opendir($src); @mkdir($dst); while (false !== ($file = readdir($dir))) { if ($file != '.' && $file != '..') { if (is_dir($src . '/' . $file)) { folder_copy($src . '/' . $file, $dst . '/' . $file); } else { copy($src . '/' . $file, $dst . '/' . $file); } } } closedir($dir); }