summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--system/libraries/Zip.php15
-rw-r--r--user_guide_src/source/changelog.rst6
-rw-r--r--user_guide_src/source/libraries/zip.rst5
3 files changed, 24 insertions, 2 deletions
diff --git a/system/libraries/Zip.php b/system/libraries/Zip.php
index 434229471..5208c9149 100644
--- a/system/libraries/Zip.php
+++ b/system/libraries/Zip.php
@@ -95,6 +95,19 @@ class CI_Zip {
* @var int
*/
public $now;
+
+ /**
+ * The level of compression. 0 to 9, 9 being the highest level of
+ * compression.
+ * @var int
+ */
+ public $compression_level = 6;
+
+ /**
+ * Which encoding to use. One of the ZLIB_ENCODING_* constants.
+ * @var int
+ */
+ public $compression_encoding = ZLIB_ENCODING_DEFLATE;
/**
* Initialize zip compression class
@@ -248,7 +261,7 @@ class CI_Zip {
$uncompressed_size = strlen($data);
$crc32 = crc32($data);
- $gzdata = substr(gzcompress($data), 2, -4);
+ $gzdata = substr(gzcompress($data, $this->compression_level, $this->compression_encoding), 2, -4);
$compressed_size = strlen($gzdata);
$this->zipdata .=
diff --git a/user_guide_src/source/changelog.rst b/user_guide_src/source/changelog.rst
index 39e644e18..08b692168 100644
--- a/user_guide_src/source/changelog.rst
+++ b/user_guide_src/source/changelog.rst
@@ -420,7 +420,11 @@ Release Date: Not Released
- Added method chaining support.
- Added support for setting table class defaults in a config file.
- - :doc:`Zip Library <libraries/zip>` method ``read_file()`` can now also alter the original file path/name while adding files to an archive.
+ - :doc:`Zip Library <libraries/zip>` changes include:
+
+ - Method ``read_file()`` can now also alter the original file path/name while adding files to an archive.
+ - Added support for changing the compression level and encoding used by gzcompress.
+
- :doc:`Trackback Library <libraries/trackback>` method ``receive()`` will now utilize ``iconv()`` if it is available but ``mb_convert_encoding()`` is not.
- Core
diff --git a/user_guide_src/source/libraries/zip.rst b/user_guide_src/source/libraries/zip.rst
index 4ca14086a..a6b98c2ac 100644
--- a/user_guide_src/source/libraries/zip.rst
+++ b/user_guide_src/source/libraries/zip.rst
@@ -88,6 +88,11 @@ Class Reference
The above example will place my_bio.txt inside a folder called personal.
+ You can change the level of compression and encoding that is used by the gzcompress function during compression::
+
+ $this->zip->compression_level = 0; // Disable compression
+ $this->zip->compression_encoding = ZLIB_ENCODING_GZIP;
+
.. method:: add_dir($directory)
:param mixed $directory: Directory name string or an array of multiple directories