diff options
author | jeroenpraat <jeroenpraat@xs4all.nl> | 2016-08-31 13:17:34 +0200 |
---|---|---|
committer | jeroenpraat <jeroenpraat@xs4all.nl> | 2016-08-31 13:17:34 +0200 |
commit | 38ea71c6c987d54c4029b14043cd6b13bd71f4b1 (patch) | |
tree | 50ee7e93df6aaae56fa8926de1e854cf8e44c128 /Zotlabs/Lib | |
parent | 37ad734cead89df63edd75a4c3c3a4fb5b4847bc (diff) | |
parent | e9462ba14529b7172ba5a21e7985d24de91faa37 (diff) | |
download | volse-hubzilla-38ea71c6c987d54c4029b14043cd6b13bd71f4b1.tar.gz volse-hubzilla-38ea71c6c987d54c4029b14043cd6b13bd71f4b1.tar.bz2 volse-hubzilla-38ea71c6c987d54c4029b14043cd6b13bd71f4b1.zip |
Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev
Diffstat (limited to 'Zotlabs/Lib')
-rw-r--r-- | Zotlabs/Lib/ExtendedZip.php | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/Zotlabs/Lib/ExtendedZip.php b/Zotlabs/Lib/ExtendedZip.php new file mode 100644 index 000000000..a40110c55 --- /dev/null +++ b/Zotlabs/Lib/ExtendedZip.php @@ -0,0 +1,57 @@ +<?php + +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +namespace Zotlabs\Lib; + +/** + * Description of ExtendedZip + * + * @author andrew + */ +class ExtendedZip extends \ZipArchive { + + // Member function to add a whole file system subtree to the archive + public function addTree($dirname, $localname = '') { + if ($localname) + $this->addEmptyDir($localname); + $this->_addTree($dirname, $localname); + } + + // Internal function, to recurse + protected function _addTree($dirname, $localname) { + $dir = opendir($dirname); + while ($filename = readdir($dir)) { + // Discard . and .. + if ($filename == '.' || $filename == '..') + continue; + + // Proceed according to type + $path = $dirname . '/' . $filename; + $localpath = $localname ? ($localname . '/' . $filename) : $filename; + if (is_dir($path)) { + // Directory: add & recurse + $this->addEmptyDir($localpath); + $this->_addTree($path, $localpath); + } + else if (is_file($path)) { + // File: just add + $this->addFile($path, $localpath); + } + } + closedir($dir); + } + + // Helper function + public static function zipTree($dirname, $zipFilename, $flags = 0, $localname = '') { + $zip = new self(); + $zip->open($zipFilename, $flags); + $zip->addTree($dirname, $localname); + $zip->close(); + } + +} |