MakeConsistentController.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <?php
  2. declare(strict_types=1);
  3. namespace PhpMyAdmin\Controllers\Database\Structure\CentralColumns;
  4. use PhpMyAdmin\Controllers\Database\AbstractController;
  5. use PhpMyAdmin\Controllers\Database\StructureController;
  6. use PhpMyAdmin\Database\CentralColumns;
  7. use PhpMyAdmin\DatabaseInterface;
  8. use PhpMyAdmin\Message;
  9. use PhpMyAdmin\ResponseRenderer;
  10. use PhpMyAdmin\Template;
  11. use function __;
  12. final class MakeConsistentController extends AbstractController
  13. {
  14. /** @var DatabaseInterface */
  15. private $dbi;
  16. /** @var StructureController */
  17. private $structureController;
  18. public function __construct(
  19. ResponseRenderer $response,
  20. Template $template,
  21. string $db,
  22. DatabaseInterface $dbi,
  23. StructureController $structureController
  24. ) {
  25. parent::__construct($response, $template, $db);
  26. $this->dbi = $dbi;
  27. $this->structureController = $structureController;
  28. }
  29. public function __invoke(): void
  30. {
  31. global $db, $message;
  32. $selected = $_POST['selected_tbl'] ?? [];
  33. if (empty($selected)) {
  34. $this->response->setRequestStatus(false);
  35. $this->response->addJSON('message', __('No table selected.'));
  36. return;
  37. }
  38. $centralColumns = new CentralColumns($this->dbi);
  39. $error = $centralColumns->makeConsistentWithList($db, $selected);
  40. $message = $error instanceof Message ? $error : Message::success(__('Success!'));
  41. unset($_POST['submit_mult']);
  42. ($this->structureController)();
  43. }
  44. }