mirror of
https://github.com/Ne-Lexa/php-zip.git
synced 2025-03-21 06:59:40 +01:00
Added an event that runs before the archive is saved or output.
This commit is contained in:
parent
f29fed2753
commit
a1da1f0069
@ -610,7 +610,8 @@ class ZipFile implements ZipFileInterface
|
||||
\Iterator $iterator,
|
||||
$localPath = '/',
|
||||
$compressionMethod = null
|
||||
) {
|
||||
)
|
||||
{
|
||||
$localPath = (string)$localPath;
|
||||
if (null !== $localPath && 0 !== strlen($localPath)) {
|
||||
$localPath = rtrim($localPath, '/');
|
||||
@ -694,7 +695,8 @@ class ZipFile implements ZipFileInterface
|
||||
$localPath = '/',
|
||||
$recursive = true,
|
||||
$compressionMethod = null
|
||||
) {
|
||||
)
|
||||
{
|
||||
$inputDir = (string)$inputDir;
|
||||
if (null === $inputDir || 0 === strlen($inputDir)) {
|
||||
throw new InvalidArgumentException('Input dir empty');
|
||||
@ -789,7 +791,8 @@ class ZipFile implements ZipFileInterface
|
||||
$localPath = "/",
|
||||
$recursive = true,
|
||||
$compressionMethod = null
|
||||
) {
|
||||
)
|
||||
{
|
||||
$regexPattern = (string)$regexPattern;
|
||||
if (empty($regexPattern)) {
|
||||
throw new InvalidArgumentException("regex pattern empty");
|
||||
@ -1311,6 +1314,8 @@ class ZipFile implements ZipFileInterface
|
||||
*/
|
||||
protected function writeZipToStream($handle)
|
||||
{
|
||||
$this->onBeforeSave();
|
||||
|
||||
$output = new ZipOutputStream($handle, $this->zipModel);
|
||||
$output->writeZip();
|
||||
}
|
||||
@ -1332,6 +1337,13 @@ class ZipFile implements ZipFileInterface
|
||||
return $content;
|
||||
}
|
||||
|
||||
/**
|
||||
* Event before save or output.
|
||||
*/
|
||||
protected function onBeforeSave()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Close zip archive and release input stream.
|
||||
*/
|
||||
|
42
tests/PhpZip/ZipEventTest.php
Normal file
42
tests/PhpZip/ZipEventTest.php
Normal file
@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
namespace PhpZip;
|
||||
|
||||
class ZipFileExtended extends ZipFile
|
||||
{
|
||||
protected function onBeforeSave()
|
||||
{
|
||||
parent::onBeforeSave();
|
||||
$this->setZipAlign(4);
|
||||
$this->deleteFromRegex('~^META\-INF/~i');
|
||||
}
|
||||
}
|
||||
|
||||
class ZipEventTest extends ZipTestCase
|
||||
{
|
||||
public function testBeforeSave()
|
||||
{
|
||||
$zipFile = new ZipFileExtended();
|
||||
$zipFile->openFile(__DIR__ . '/resources/test.apk');
|
||||
self::assertTrue(isset($zipFile['META-INF/MANIFEST.MF']));
|
||||
self::assertTrue(isset($zipFile['META-INF/CERT.SF']));
|
||||
self::assertTrue(isset($zipFile['META-INF/CERT.RSA']));
|
||||
$zipFile->saveAsFile($this->outputFilename);
|
||||
self::assertFalse(isset($zipFile['META-INF/MANIFEST.MF']));
|
||||
self::assertFalse(isset($zipFile['META-INF/CERT.SF']));
|
||||
self::assertFalse(isset($zipFile['META-INF/CERT.RSA']));
|
||||
$zipFile->close();
|
||||
|
||||
self::assertCorrectZipArchive($this->outputFilename);
|
||||
$result = self::doZipAlignVerify($this->outputFilename);
|
||||
if (null !== $result) {
|
||||
self::assertTrue($result);
|
||||
}
|
||||
|
||||
$zipFile->openFile($this->outputFilename);
|
||||
self::assertFalse(isset($zipFile['META-INF/MANIFEST.MF']));
|
||||
self::assertFalse(isset($zipFile['META-INF/CERT.SF']));
|
||||
self::assertFalse(isset($zipFile['META-INF/CERT.RSA']));
|
||||
$zipFile->close();
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user