phpmyadmin/src/Controllers/Database/Structure/CopyTableWithPrefixController.php
Kamil Tekiela 81853e877b Create TableMover class
Signed-off-by: Kamil Tekiela <tekiela246@gmail.com>
2024-04-22 21:52:40 +02:00

55 lines
1.5 KiB
PHP

<?php
declare(strict_types=1);
namespace PhpMyAdmin\Controllers\Database\Structure;
use PhpMyAdmin\Controllers\Database\StructureController;
use PhpMyAdmin\Controllers\InvocableController;
use PhpMyAdmin\Current;
use PhpMyAdmin\Http\Response;
use PhpMyAdmin\Http\ServerRequest;
use PhpMyAdmin\Message;
use PhpMyAdmin\Table\TableMover;
use function mb_strlen;
use function mb_substr;
final class CopyTableWithPrefixController implements InvocableController
{
public function __construct(private readonly StructureController $structureController)
{
}
public function __invoke(ServerRequest $request): Response|null
{
/** @var string[] $selected */
$selected = $request->getParsedBodyParam('selected', []);
$fromPrefix = $request->getParsedBodyParam('from_prefix');
$toPrefix = $request->getParsedBodyParam('to_prefix');
$dropIfExists = $request->getParsedBodyParam('drop_if_exists') === 'true';
foreach ($selected as $selectedValue) {
$newTableName = $toPrefix . mb_substr($selectedValue, mb_strlen((string) $fromPrefix));
TableMover::moveCopy(
Current::$database,
$selectedValue,
Current::$database,
$newTableName,
'data',
false,
'one_table',
$dropIfExists,
);
}
$GLOBALS['message'] = Message::success();
($this->structureController)($request);
return null;
}
}