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