diff --git a/libraries/classes/MultSubmits.php b/libraries/classes/MultSubmits.php index 1e3cc41ad9..5b775f2fbb 100644 --- a/libraries/classes/MultSubmits.php +++ b/libraries/classes/MultSubmits.php @@ -22,6 +22,9 @@ use function preg_replace; */ class MultSubmits { + /** @var DatabaseInterface */ + private $dbi; + /** @var Transformations */ private $transformations; @@ -34,13 +37,25 @@ class MultSubmits /** @var Template */ private $template; - public function __construct() - { - $this->transformations = new Transformations(); - $relation = new Relation($GLOBALS['dbi']); - $this->relationCleanup = new RelationCleanup($GLOBALS['dbi'], $relation); - $this->operations = new Operations($GLOBALS['dbi'], $relation); - $this->template = new Template(); + /** + * @param DatabaseInterface $dbi DatabaseInterface instance. + * @param Template $template Template instance. + * @param Transformations $transformations Transformations instance. + * @param RelationCleanup $relationCleanup RelationCleanup instance. + * @param Operations $operations Operations instance. + */ + public function __construct( + $dbi, + Template $template, + Transformations $transformations, + RelationCleanup $relationCleanup, + Operations $operations + ) { + $this->dbi = $dbi; + $this->template = $template; + $this->transformations = $transformations; + $this->relationCleanup = $relationCleanup; + $this->operations = $operations; } /** @@ -353,9 +368,9 @@ class MultSubmits if ($runParts && ! $copyTable) { $sqlQuery .= $aQuery . ';' . "\n"; if ($queryType != 'drop_db') { - $GLOBALS['dbi']->selectDb($db); + $this->dbi->selectDb($db); } - $result = $GLOBALS['dbi']->query($aQuery); + $result = $this->dbi->query($aQuery); if ($queryType == 'drop_db') { $this->transformations->clear($selected[$i]); diff --git a/libraries/mult_submits.inc.php b/libraries/mult_submits.inc.php index 849f1eca49..0c7151381e 100644 --- a/libraries/mult_submits.inc.php +++ b/libraries/mult_submits.inc.php @@ -40,9 +40,14 @@ $table_type = $_POST['table_type'] ?? $table_type ?? null; $to_prefix = $_POST['to_prefix'] ?? $to_prefix ?? null; $url_query = $_POST['url_query'] ?? $url_query ?? null; -$response = Response::getInstance(); -$multSubmits = new MultSubmits(); -$template = new Template(); +/** @var Response $response */ +$response = $containerBuilder->get('response'); + +/** @var Template $template */ +$template = $containerBuilder->get('template'); + +/** @var MultSubmits $multSubmits */ +$multSubmits = $containerBuilder->get('mult_submits'); $action = $action ?? ''; diff --git a/libraries/services.php b/libraries/services.php index d7cf332785..911c6807f1 100644 --- a/libraries/services.php +++ b/libraries/services.php @@ -125,6 +125,18 @@ return [ '@service_container', ], ], + 'mult_submits' => + [ + 'class' => \PhpMyAdmin\MultSubmits::class, + 'arguments' => + [ + 'dbi' => '@dbi', + 'template' => '@template', + 'transformations' => '@transformations', + 'relationCleanup' => '@relation_cleanup', + 'operations' => '@operations', + ], + ], 'navigation' => [ 'class' => PhpMyAdmin\Navigation\Navigation::class, diff --git a/test/classes/MultSubmitsTest.php b/test/classes/MultSubmitsTest.php index 7b14fd0a63..ba468d33d4 100644 --- a/test/classes/MultSubmitsTest.php +++ b/test/classes/MultSubmitsTest.php @@ -7,6 +7,11 @@ declare(strict_types=1); namespace PhpMyAdmin\Tests; use PhpMyAdmin\MultSubmits; +use PhpMyAdmin\Operations; +use PhpMyAdmin\Relation; +use PhpMyAdmin\RelationCleanup; +use PhpMyAdmin\Template; +use PhpMyAdmin\Transformations; use PhpMyAdmin\Url; use PHPUnit\Framework\TestCase; @@ -65,7 +70,14 @@ class MultSubmitsTest extends TestCase $GLOBALS['dbi'] = $dbi; - $this->multSubmits = new MultSubmits(); + $relation = new Relation($GLOBALS['dbi']); + $this->multSubmits = new MultSubmits( + $GLOBALS['dbi'], + new Template(), + new Transformations(), + new RelationCleanup($GLOBALS['dbi'], $relation), + new Operations($GLOBALS['dbi'], $relation) + ); } /**