コード例 #1
0
/**
 * Backup files
 *
 * @param string $source upgrade package directory
 * @param string $dest working directory
 * @param array $result resulting list of backed up files
 * @param string $package package to make backup for
 * @param Logger $log
 * @return boolean true if directory copied correctly, false - otherwise
 */
function fn_uc_backup_files($source, $dest, &$result, $package, $log)
{
    // Simple copy for a file
    if (is_file($source)) {
        $log->write('Backing up: ' . $source, __FILE__, __LINE__);
        return fn_uc_backup_file($source, $dest, $result, $package);
    }
    // Loop through the folder
    if (is_dir($source)) {
        $dir = dir($source);
        while (false !== ($entry = $dir->read())) {
            // Skip pointers
            if ($entry == '.' || $entry == '..') {
                continue;
            }
            $log->write('Backing up: ' . $entry, __FILE__, __LINE__);
            // Deep backup directories
            if ($dest !== $source . '/' . $entry) {
                if (fn_uc_backup_files(rtrim($source, '/') . '/' . $entry, $dest . '/' . $entry, $result, $package, $log) == false) {
                    return false;
                }
            }
        }
        // Clean up
        $dir->close();
        return true;
    } else {
        fn_set_notification('E', __('error'), __('text_uc_incorrect_upgrade_path'));
        return false;
    }
}
コード例 #2
0
/**
 * Backup files
 *
 * @param string $source upgrade package directory
 * @param string $dest working directory
 * @param array $result resulting list of backed up files
 * @param string $package package to make backup for
 * @return boolean true if directory copied correctly, false - otherwise
 */
function fn_uc_backup_files($source, $dest, &$result, $package)
{
    // Simple copy for a file
    if (is_file($source)) {
        return fn_uc_backup_file($source, $dest, $result, $package);
    }
    // Loop through the folder
    if (is_dir($source)) {
        $dir = dir($source);
        while (false !== ($entry = $dir->read())) {
            // Skip pointers
            if ($entry == '.' || $entry == '..') {
                continue;
            }
            // Deep backup directories
            if ($dest !== $source . '/' . $entry) {
                if (fn_uc_backup_files(rtrim($source, '/') . '/' . $entry, $dest . '/' . $entry, $result, $package) == false) {
                    return false;
                }
            }
        }
        // Clean up
        $dir->close();
        return true;
    } else {
        return false;
    }
}