1
0
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:
Ne-Lexa 2017-11-15 16:24:14 +03:00
parent f29fed2753
commit a1da1f0069
2 changed files with 57 additions and 3 deletions

View File

@ -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.
*/

View 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();
}
}