Create ImportFormat enum

Signed-off-by: Kamil Tekiela <tekiela246@gmail.com>
This commit is contained in:
Kamil Tekiela 2024-03-14 18:27:42 +01:00
parent 5bfceae710
commit 8c513212b8
4 changed files with 45 additions and 20 deletions

View File

@ -2592,7 +2592,7 @@ parameters:
-
message: "#^Cannot access offset 'message' on mixed\\.$#"
count: 7
count: 6
path: src/Controllers/Import/ImportController.php
-

View File

@ -8648,6 +8648,11 @@
<code><![CDATA[string[]]]></code>
</PossiblyUnusedReturnValue>
</file>
<file src="src/Plugins/Import/ImportFormat.php">
<PossiblyUnusedMethod>
<code><![CDATA[getClassName]]></code>
</PossiblyUnusedMethod>
</file>
<file src="src/Plugins/Import/ImportLdi.php">
<DeprecatedMethod>
<code><![CDATA[Config::getInstance()]]></code>

View File

@ -20,8 +20,7 @@ use PhpMyAdmin\Import\Import;
use PhpMyAdmin\Import\ImportSettings;
use PhpMyAdmin\Message;
use PhpMyAdmin\ParseAnalyze;
use PhpMyAdmin\Plugins;
use PhpMyAdmin\Plugins\ImportPlugin;
use PhpMyAdmin\Plugins\Import\ImportFormat;
use PhpMyAdmin\ResponseRenderer;
use PhpMyAdmin\Sql;
use PhpMyAdmin\Template;
@ -29,10 +28,10 @@ use PhpMyAdmin\Url;
use PhpMyAdmin\Util;
use PhpMyAdmin\Utils\ForeignKey;
use Throwable;
use Webmozart\Assert\Assert;
use function __;
use function _ngettext;
use function in_array;
use function ini_get;
use function ini_parse_quantity;
use function ini_set;
@ -187,7 +186,9 @@ final class ImportController extends AbstractController
$this->response->addJSON('console_message_id', $consoleMessageId);
}
if (! in_array($format, ['csv', 'ldi', 'mediawiki', 'ods', 'shp', 'sql', 'xml'], true)) {
Assert::string($format);
$importFormat = ImportFormat::tryFrom($format);
if ($importFormat === null) {
$this->response->setRequestStatus(false);
$this->response->addHTML(Message::error(__('Incorrect format parameter'))->getDisplay());
@ -482,21 +483,8 @@ final class ImportController extends AbstractController
$queriesToBeExecuted = [];
if (! $GLOBALS['error']) {
/** @var ImportPlugin $importPlugin */
$importPlugin = Plugins::getPlugin('import', $format, ImportSettings::$importType);
if ($importPlugin == null) {
$GLOBALS['message'] = Message::error(
__('Could not load import plugins, please check your installation!'),
);
$_SESSION['Import_message']['message'] = $GLOBALS['message']->getDisplay();
$this->response->setRequestStatus(false);
$this->response->addJSON('message', $GLOBALS['message']->getDisplay());
$this->response->addHTML($GLOBALS['message']->getDisplay());
return;
}
$GLOBALS['plugin_param'] = ImportSettings::$importType;
$importPlugin = new ($importFormat->getClassName());
// Do the real import
$defaultFkCheck = ForeignKey::handleDisableCheckInit();

View File

@ -0,0 +1,32 @@
<?php
declare(strict_types=1);
namespace PhpMyAdmin\Plugins\Import;
use PhpMyAdmin\Plugins\ImportPlugin;
enum ImportFormat: string
{
case Csv = 'csv';
case Ldi = 'ldi';
case Mediawiki = 'mediawiki';
case Ods = 'ods';
case Shp = 'shp';
case Sql = 'sql';
case Xml = 'xml';
/** @return class-string<ImportPlugin> */
public function getClassName(): string
{
return match ($this) {
ImportFormat::Csv => ImportCsv::class,
ImportFormat::Ldi => ImportLdi::class,
ImportFormat::Mediawiki => ImportMediawiki::class,
ImportFormat::Ods => ImportOds::class,
ImportFormat::Shp => ImportShp::class,
ImportFormat::Sql => ImportSql::class,
ImportFormat::Xml => ImportXml::class,
};
}
}