Backups\Helper\Backup::backup PHP Метод

backup() публичный Метод

public backup ( $sourcefolder, $target, $ignorecallback = null )
    public function backup($sourcefolder, $target, $ignorecallback = null)
    {
        $sourcefolder = rtrim(str_replace(DIRECTORY_SEPARATOR, '/', $sourcefolder), '/') . '/';
        $target = str_replace(DIRECTORY_SEPARATOR, '/', $target);
        $zip = new \ZipArchive();
        if (!$zip->open($target, \ZIPARCHIVE::CREATE)) {
            return false;
        }
        $files = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($sourcefolder), \RecursiveIteratorIterator::SELF_FIRST);
        foreach ($files as $file) {
            $file = str_replace(DIRECTORY_SEPARATOR, '/', $file);
            // Ignore "." and ".." folders
            if (in_array(substr($file, strrpos($file, '/') + 1), array('.', '..'))) {
                continue;
            }
            if (preg_match('/\\.git/', $file)) {
                continue;
            }
            if (preg_match('/\\.DS_Store/', $file)) {
                continue;
            }
            if ($ignorecallback && $ignorecallback($file) === true) {
                continue;
            }
            $file = realpath($file);
            if (is_dir($file) === true) {
                $zip->addEmptyDir(str_replace($sourcefolder, '', $file . '/'));
            } else {
                if (is_file($file) === true) {
                    $zip->addFromString(str_replace($sourcefolder, '', $file), file_get_contents($file));
                }
            }
        }
        $zip->close();
        return true;
    }
Backup