BrowseForeignersController.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php
  2. declare(strict_types=1);
  3. namespace PhpMyAdmin\Controllers;
  4. use PhpMyAdmin\BrowseForeigners;
  5. use PhpMyAdmin\Relation;
  6. use PhpMyAdmin\Response;
  7. use PhpMyAdmin\Template;
  8. /**
  9. * Display selection for relational field values
  10. */
  11. class BrowseForeignersController extends AbstractController
  12. {
  13. /** @var BrowseForeigners */
  14. private $browseForeigners;
  15. /** @var Relation */
  16. private $relation;
  17. /**
  18. * @param Response $response
  19. * @param BrowseForeigners $browseForeigners
  20. * @param Relation $relation
  21. */
  22. public function __construct($response, Template $template, $browseForeigners, $relation)
  23. {
  24. parent::__construct($response, $template);
  25. $this->browseForeigners = $browseForeigners;
  26. $this->relation = $relation;
  27. }
  28. public function index(): void
  29. {
  30. $params = [
  31. 'db' => $_POST['db'] ?? null,
  32. 'table' => $_POST['table'] ?? null,
  33. 'field' => $_POST['field'] ?? null,
  34. 'fieldkey' => $_POST['fieldkey'] ?? null,
  35. 'data' => $_POST['data'] ?? null,
  36. 'foreign_showAll' => $_POST['foreign_showAll'] ?? null,
  37. 'foreign_filter' => $_POST['foreign_filter'] ?? null,
  38. ];
  39. if (! isset($params['db'], $params['table'], $params['field'])) {
  40. return;
  41. }
  42. $this->response->getFooter()->setMinimal();
  43. $header = $this->response->getHeader();
  44. $header->disableMenuAndConsole();
  45. $header->setBodyId('body_browse_foreigners');
  46. $foreigners = $this->relation->getForeigners(
  47. $params['db'],
  48. $params['table']
  49. );
  50. $foreignLimit = $this->browseForeigners->getForeignLimit(
  51. $params['foreign_showAll']
  52. );
  53. $foreignData = $this->relation->getForeignData(
  54. $foreigners,
  55. $params['field'],
  56. true,
  57. $params['foreign_filter'] ?? '',
  58. $foreignLimit ?? null,
  59. true
  60. );
  61. $this->response->addHTML($this->browseForeigners->getHtmlForRelationalFieldSelection(
  62. $params['db'],
  63. $params['table'],
  64. $params['field'],
  65. $foreignData,
  66. $params['fieldkey'] ?? '',
  67. $params['data'] ?? ''
  68. ));
  69. }
  70. }