示例#1
0
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);
    }
}
示例#2
0
/**
 * 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;
}
示例#3
0
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);
}