aboutsummaryrefslogtreecommitdiffstats
path: root/Zotlabs/Lib
diff options
context:
space:
mode:
authorjeroenpraat <jeroenpraat@xs4all.nl>2016-08-31 13:17:34 +0200
committerjeroenpraat <jeroenpraat@xs4all.nl>2016-08-31 13:17:34 +0200
commit38ea71c6c987d54c4029b14043cd6b13bd71f4b1 (patch)
tree50ee7e93df6aaae56fa8926de1e854cf8e44c128 /Zotlabs/Lib
parent37ad734cead89df63edd75a4c3c3a4fb5b4847bc (diff)
parente9462ba14529b7172ba5a21e7985d24de91faa37 (diff)
downloadvolse-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.php57
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();
+ }
+
+}