Fix PHP error when exporting without php-zip

Fixes #14326 (Export database with zip compression: Class 'ZipArchive'
not found error).

Signed-off-by: Maurício Meneghini Fauth <mauricio@fauth.dev>
This commit is contained in:
Maurício Meneghini Fauth 2020-08-16 21:36:54 -03:00
parent 51b04c9b5c
commit 3b285ddc3a
6 changed files with 17 additions and 11 deletions

View File

@ -54,6 +54,7 @@ phpMyAdmin - ChangeLog
- issue #14644 Use Doctum instead of Sami
- issue #16086 Fix "Browse" headings shift when scrolling
- issue #15328 Fix no message after import of zipped shapefile without php-zip
- issue #14326 Fix PHP error when exporting without php-zip
5.0.2 (2020-03-20)
- issue Fixed deprecation warning "implode(): Passing glue string after array is deprecated." function on export page

View File

@ -217,10 +217,13 @@ if (empty($export_plugin)) {
/**
* valid compression methods
*/
$compression_methods = [
'zip',
'gzip',
];
$compression_methods = [];
if ($GLOBALS['cfg']['ZipDump'] && function_exists('gzcompress')) {
$compression_methods[] = 'zip';
}
if ($GLOBALS['cfg']['GZipDump'] && function_exists('gzencode')) {
$compression_methods[] = 'gzip';
}
/**
* init and variable checking

View File

@ -13,6 +13,7 @@ use PhpMyAdmin\Core;
use PhpMyAdmin\Message;
use PhpMyAdmin\Util;
use PhpMyAdmin\ZipExtension;
use ZipArchive;
/**
* File wrapper class
@ -98,7 +99,7 @@ class File
}
if (extension_loaded('zip')) {
$this->zipExtension = new ZipExtension();
$this->zipExtension = new ZipExtension(new ZipArchive());
}
}

View File

@ -21,6 +21,7 @@ use PhpMyAdmin\Plugins\ImportPlugin;
use PhpMyAdmin\Properties\Plugins\ImportPluginProperties;
use PhpMyAdmin\Sanitize;
use PhpMyAdmin\ZipExtension;
use ZipArchive;
/**
* Handles the import for ESRI Shape files
@ -43,7 +44,7 @@ class ImportShp extends ImportPlugin
parent::__construct();
$this->setProperties();
if (extension_loaded('zip')) {
$this->zipExtension = new ZipExtension();
$this->zipExtension = new ZipExtension(new ZipArchive());
}
}

View File

@ -19,16 +19,16 @@ use ZipArchive;
class ZipExtension
{
/**
* @var ZipArchive
* @var ZipArchive|null
*/
private $zip;
/**
* Constructor
* @param ZipArchive|null $zip A ZipArchive instance.
*/
public function __construct()
public function __construct($zip = null)
{
$this->zip = new ZipArchive();
$this->zip = $zip;
}
/**

View File

@ -29,7 +29,7 @@ class ZipExtensionTest extends PmaTestCase
*/
protected function setUp(): void
{
$this->zipExtension = new ZipExtension();
$this->zipExtension = new ZipExtension(new ZipArchive());
}
/**