Translated using Weblate (Portuguese)
[phpmyadmin.git] / src / ShowGrants.php
blob393adef49c6845c57f6713449ee22ec2aa04ce3e
1 <?php
3 declare(strict_types=1);
5 namespace PhpMyAdmin;
7 use function mb_strpos;
8 use function mb_substr;
10 final class ShowGrants
12 public readonly string $grants;
13 public readonly string $tableName;
14 public readonly string $dbName;
15 private int $tableNameEndOffset;
16 private int $tableNameStartOffset;
17 private int $dbNameOffset;
19 public function __construct(string $showGrants)
21 $this->dbNameOffset = (int) mb_strpos($showGrants, ' ON ') + 4;
22 $this->tableNameEndOffset = (int) mb_strpos($showGrants, ' TO ');
23 $this->tableNameStartOffset = $this->getTableNameStartOffset($showGrants);
24 $this->grants = $this->getShowGrantsString($showGrants);
25 $this->tableName = $this->getGrantsTableName($showGrants);
26 $this->dbName = $this->getGrantsDbName($showGrants);
29 private function getTableNameStartOffset(string $showGrants): int
31 $tableNameStartOffset = mb_strpos($showGrants, '`.', $this->dbNameOffset);
33 if (
34 $tableNameStartOffset !== false
35 && $tableNameStartOffset !== 0
36 && $tableNameStartOffset < $this->tableNameEndOffset
37 ) {
38 return $tableNameStartOffset + 1;
41 return (int) mb_strpos($showGrants, '.', $this->dbNameOffset);
44 private function getShowGrantsString(string $showGrants): string
46 return mb_substr($showGrants, 6, (int) mb_strpos($showGrants, ' ON ') - 6);
49 private function getGrantsTableName(string $showGrants): string
51 $showGrantsTableName = mb_substr(
52 $showGrants,
53 $this->tableNameStartOffset + 1,
54 $this->tableNameEndOffset - $this->tableNameStartOffset - 1,
57 return Util::unQuote($showGrantsTableName, '`');
60 private function getGrantsDbName(string $showGrants): string
62 $showGrantsDbName = mb_substr(
63 $showGrants,
64 $this->dbNameOffset,
65 $this->tableNameStartOffset - $this->dbNameOffset,
68 return Util::unQuote($showGrantsDbName, '`');