3 declare(strict_types
=1);
5 namespace PhpMyAdmin\Controllers
;
7 use PhpMyAdmin\BrowseForeigners
;
8 use PhpMyAdmin\ConfigStorage\Relation
;
9 use PhpMyAdmin\Http\ServerRequest
;
10 use PhpMyAdmin\ResponseRenderer
;
11 use PhpMyAdmin\Template
;
14 * Display selection for relational field values
16 class BrowseForeignersController
extends AbstractController
18 public function __construct(
19 ResponseRenderer
$response,
21 private BrowseForeigners
$browseForeigners,
22 private Relation
$relation,
24 parent
::__construct($response, $template);
27 public function __invoke(ServerRequest
$request): void
29 /** @var string|null $database */
30 $database = $request->getParsedBodyParam('db');
31 /** @var string|null $table */
32 $table = $request->getParsedBodyParam('table');
33 /** @var string|null $field */
34 $field = $request->getParsedBodyParam('field');
35 /** @var string $fieldKey */
36 $fieldKey = $request->getParsedBodyParam('fieldkey', '');
37 /** @var string $data */
38 $data = $request->getParsedBodyParam('data', '');
39 /** @var string|null $foreignShowAll */
40 $foreignShowAll = $request->getParsedBodyParam('foreign_showAll');
41 /** @var string $foreignFilter */
42 $foreignFilter = $request->getParsedBodyParam('foreign_filter', '');
44 if (! isset($database, $table, $field)) {
48 $this->response
->setMinimalFooter();
49 $header = $this->response
->getHeader();
50 $header->disableMenuAndConsole();
51 $header->setBodyId('body_browse_foreigners');
53 $foreigners = $this->relation
->getForeigners($database, $table);
54 $foreignLimit = $this->browseForeigners
->getForeignLimit($foreignShowAll);
55 $foreignData = $this->relation
->getForeignData(
64 $this->response
->addHTML($this->browseForeigners
->getHtmlForRelationalFieldSelection(