aboutsummaryrefslogtreecommitdiff
path: root/srcs/phpmyadmin/libraries/classes/Controllers/BrowseForeignersController.php
blob: 24441cd85ff012c9c5a4338125a5554c41395aef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
 * Holds the PhpMyAdmin\Controllers\BrowseForeignersController
 *
 * @package PhpMyAdmin\Controllers
 */
declare(strict_types=1);

namespace PhpMyAdmin\Controllers;

use PhpMyAdmin\BrowseForeigners;
use PhpMyAdmin\DatabaseInterface;
use PhpMyAdmin\Relation;
use PhpMyAdmin\Response;
use PhpMyAdmin\Template;

/**
 * Display selection for relational field values
 *
 * @package PhpMyAdmin\Controllers
 */
class BrowseForeignersController extends AbstractController
{
    /**
     * @var BrowseForeigners
     */
    private $browseForeigners;

    /**
     * @var Relation
     */
    private $relation;

    /**
     * BrowseForeignersController constructor.
     *
     * @param Response          $response         Response instance
     * @param DatabaseInterface $dbi              DatabaseInterface instance
     * @param Template          $template         Template object
     * @param BrowseForeigners  $browseForeigners BrowseForeigners instance
     * @param Relation          $relation         Relation instance
     */
    public function __construct($response, $dbi, Template $template, $browseForeigners, $relation)
    {
        parent::__construct($response, $dbi, $template);
        $this->browseForeigners = $browseForeigners;
        $this->relation = $relation;
    }

    /**
     * @param array $params Request parameters
     * @return string HTML
     */
    public function index(array $params): string
    {
        $foreigners = $this->relation->getForeigners(
            $params['db'],
            $params['table']
        );
        $foreignLimit = $this->browseForeigners->getForeignLimit(
            $params['foreign_showAll']
        );
        $foreignData = $this->relation->getForeignData(
            $foreigners,
            $params['field'],
            true,
            $params['foreign_filter'] ?? '',
            $foreignLimit ?? null,
            true
        );

        return $this->browseForeigners->getHtmlForRelationalFieldSelection(
            $params['db'],
            $params['table'],
            $params['field'],
            $foreignData,
            $params['fieldkey'] ?? '',
            $params['data'] ?? ''
        );
    }
}