1<?php
2/**
3 * Controller for table privileges
4 */
5
6declare(strict_types=1);
7
8namespace PhpMyAdmin\Controllers\Table;
9
10use PhpMyAdmin\DatabaseInterface;
11use PhpMyAdmin\Response;
12use PhpMyAdmin\Server\Privileges;
13use PhpMyAdmin\Template;
14use PhpMyAdmin\Util;
15
16/**
17 * Controller for table privileges
18 */
19class PrivilegesController extends AbstractController
20{
21    /** @var Privileges */
22    private $privileges;
23
24    /** @var DatabaseInterface */
25    private $dbi;
26
27    /**
28     * @param Response          $response
29     * @param string            $db       Database name
30     * @param string            $table    Table name
31     * @param DatabaseInterface $dbi
32     */
33    public function __construct($response, Template $template, $db, $table, Privileges $privileges, $dbi)
34    {
35        parent::__construct($response, $template, $db, $table);
36        $this->privileges = $privileges;
37        $this->dbi = $dbi;
38    }
39
40    /**
41     * @param array $params Request parameters
42     */
43    public function index(array $params): string
44    {
45        global $cfg, $text_dir, $PMA_Theme;
46
47        $scriptName = Util::getScriptNameForOption(
48            $cfg['DefaultTabTable'],
49            'table'
50        );
51
52        $privileges = [];
53        if ($this->dbi->isSuperUser()) {
54            $privileges = $this->privileges->getAllPrivileges(
55                $params['checkprivsdb'],
56                $params['checkprivstable']
57            );
58        }
59
60        return $this->template->render('table/privileges/index', [
61            'db' => $params['checkprivsdb'],
62            'table' => $params['checkprivstable'],
63            'is_superuser' => $this->dbi->isSuperUser(),
64            'table_url' => $scriptName,
65            'theme_image_path' => $PMA_Theme->getImgPath(),
66            'text_dir' => $text_dir,
67            'is_createuser' => $this->dbi->isCreateUser(),
68            'is_grantuser' => $this->dbi->isGrantUser(),
69            'privileges' => $privileges,
70        ]);
71    }
72}
73