Backup\Model\Files::zip PHP Méthode

zip() protected méthode

Generate zip archive
protected zip ( array $sources, string $destination ) : boolean
$sources array Array of folders
$destination string Zip file name
Résultat boolean
    protected function zip(array $sources, $destination)
    {
        $zip = new ZipArchive();
        if (!$zip->open($destination, ZIPARCHIVE::CREATE)) {
            return false;
        }
        foreach ($sources as $source) {
            $source = str_replace('\\', '/', realpath($source));
            if (is_dir($source) === true) {
                $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST);
                $directoryName = dirname($source);
                foreach ($files as $file) {
                    $file = str_replace('\\', '/', $file);
                    // Ignore "." and ".." folders
                    if (in_array(substr($file, strrpos($file, '/') + 1), array('.', '..'))) {
                        continue;
                    }
                    $file = realpath($file);
                    if (is_dir($file) === true) {
                        $zip->addEmptyDir(str_replace($directoryName . '/', '', $file . '/'));
                    } elseif (is_file($file) === true) {
                        $zip->addFromString(str_replace($directoryName . '/', '', $file), file_get_contents($file));
                    }
                }
            }
        }
        return $zip->close();
    }