smrealms /
smr
We could not synchronize checks via GitHub's checks API since Scrutinizer's GitHub App is not installed for this repository.
| 1 | <?php declare(strict_types=1); |
||
| 2 | |||
| 3 | namespace Smr; |
||
| 4 | |||
| 5 | use Smr\Pages\Admin\AccountEditSearch; |
||
| 6 | use Smr\Pages\Admin\AdminMessageSendSelect; |
||
| 7 | use Smr\Pages\Admin\AdminPermissionManage; |
||
| 8 | use Smr\Pages\Admin\AlbumApprove; |
||
| 9 | use Smr\Pages\Admin\AlbumModerateSelect; |
||
| 10 | use Smr\Pages\Admin\AnnouncementCreate; |
||
| 11 | use Smr\Pages\Admin\AnonBankViewSelect; |
||
| 12 | use Smr\Pages\Admin\Changelog; |
||
| 13 | use Smr\Pages\Admin\CheatingShipCheck; |
||
| 14 | use Smr\Pages\Admin\CombatSimulator; |
||
| 15 | use Smr\Pages\Admin\DatabaseCleanup; |
||
| 16 | use Smr\Pages\Admin\EditLocations; |
||
| 17 | use Smr\Pages\Admin\EnableGame; |
||
| 18 | use Smr\Pages\Admin\FormOpen; |
||
| 19 | use Smr\Pages\Admin\GameDelete; |
||
| 20 | use Smr\Pages\Admin\IpView; |
||
| 21 | use Smr\Pages\Admin\LogConsole; |
||
| 22 | use Smr\Pages\Admin\ManageDraftLeaders; |
||
| 23 | use Smr\Pages\Admin\ManagePostEditors; |
||
| 24 | use Smr\Pages\Admin\MessageBoxView; |
||
| 25 | use Smr\Pages\Admin\NewsletterSend; |
||
| 26 | use Smr\Pages\Admin\NpcManage; |
||
| 27 | use Smr\Pages\Admin\ReportedMessageView; |
||
| 28 | use Smr\Pages\Admin\ServerStatus; |
||
| 29 | use Smr\Pages\Admin\UniGen\CreateGame; |
||
| 30 | use Smr\Pages\Admin\VoteCreate; |
||
| 31 | use Smr\Pages\Admin\WordFilter; |
||
| 32 | |||
| 33 | class AdminPermissions { |
||
| 34 | |||
| 35 | // The array keys must not be changed because they are referred to |
||
| 36 | // in the `account_has_permission` database table. |
||
| 37 | // Info is [Permission Name, Page to Link, Category]. |
||
| 38 | private const PERMISSION_TABLE = [ |
||
| 39 | 1 => ['Manage Admin Permissions', AdminPermissionManage::class, 3], |
||
| 40 | 2 => ['Database Cleanup', DatabaseCleanup::class, 3], |
||
| 41 | 3 => ['Server Open/Close', ServerStatus::class, 3], |
||
| 42 | 4 => ['Delete Game', GameDelete::class, 5], |
||
| 43 | 5 => ['Create Announcement', AnnouncementCreate::class, 3], |
||
| 44 | 6 => ['Send Message', AdminMessageSendSelect::class, 3], |
||
| 45 | 7 => ['View Reported Messages', ReportedMessageView::class, 1], |
||
| 46 | 8 => ['Edit Account', AccountEditSearch::class, 1], |
||
| 47 | 9 => ['Multi Tools', IpView::class, 1], |
||
| 48 | 12 => ['Cheating Ship Check', CheatingShipCheck::class, 1], |
||
| 49 | 16 => ['Log Console', LogConsole::class, 1], |
||
| 50 | 17 => ['Send Newsletter', NewsletterSend::class, 3], |
||
| 51 | 18 => ['Form Access', FormOpen::class, 3], |
||
| 52 | 19 => ['Approve Photo Album', AlbumApprove::class, 2], |
||
| 53 | 20 => ['Moderate Photo Album', AlbumModerateSelect::class, 2], |
||
| 54 | 21 => ['Manage ChangeLog', Changelog::class, 3], |
||
| 55 | 22 => ['Anon Account View', AnonBankViewSelect::class, 1], |
||
| 56 | 23 => ['Word Filter', WordFilter::class, 1], |
||
| 57 | 24 => ['Combat Simulator', CombatSimulator::class, 4], |
||
| 58 | 25 => ['Edit Locations', EditLocations::class, 4], |
||
| 59 | 26 => ['View Message Boxes', MessageBoxView::class, 1], |
||
| 60 | 27 => ['Can Moderate Feature Requests', null, 2], |
||
| 61 | 28 => ['Can Edit Alliance Descriptions', null, 1], |
||
| 62 | 30 => ['Universe Generator', CreateGame::class, 5], |
||
| 63 | 31 => ['Create Vote', VoteCreate::class, 3], |
||
| 64 | 32 => ['Can Edit Enabled Games', null, 5], |
||
| 65 | 33 => ['Enable Games', EnableGame::class, 5], |
||
| 66 | 34 => ['Manage Galactic Post Editors', ManagePostEditors::class, 5], |
||
| 67 | 35 => ['Manage Draft Leaders', ManageDraftLeaders::class, 5], |
||
| 68 | 36 => ['Display Admin Tag', null, 2], |
||
| 69 | 37 => ['Manage NPCs', NpcManage::class, 5], |
||
| 70 | ]; |
||
| 71 | |||
| 72 | private const PERMISSION_CATEGORIES = [ |
||
| 73 | 1 => 'Monitor Players', |
||
| 74 | 2 => 'Community Services', |
||
| 75 | 3 => 'Administrative', |
||
| 76 | 4 => 'Miscellaneous', |
||
| 77 | 5 => 'Manage Games', |
||
| 78 | ]; |
||
| 79 | |||
| 80 | /** |
||
| 81 | * Returns the info for the admin permission with the given ID. |
||
| 82 | * |
||
| 83 | * @return array{string, ?class-string<\Smr\Page\Page>, int} |
||
|
0 ignored issues
–
show
Documentation
Bug
introduced
by
Loading history...
|
|||
| 84 | */ |
||
| 85 | public static function getPermissionInfo(int $permissionID): array { |
||
| 86 | return self::PERMISSION_TABLE[$permissionID]; |
||
| 87 | } |
||
| 88 | |||
| 89 | /** |
||
| 90 | * Returns a list of all permissions with ID keys and name values, |
||
| 91 | * grouped by the category ID of the permission. |
||
| 92 | * |
||
| 93 | * @return array<int, array<int, string>> |
||
| 94 | */ |
||
| 95 | public static function getPermissionsByCategory(): array { |
||
| 96 | $result = []; |
||
| 97 | foreach (self::PERMISSION_TABLE as $permissionID => $info) { |
||
| 98 | $categoryID = $info[2]; |
||
| 99 | $result[$categoryID][$permissionID] = $info[0]; |
||
| 100 | } |
||
| 101 | return $result; |
||
| 102 | } |
||
| 103 | |||
| 104 | public static function getCategoryName(int $categoryID): string { |
||
| 105 | return self::PERMISSION_CATEGORIES[$categoryID]; |
||
| 106 | } |
||
| 107 | |||
| 108 | } |
||
| 109 |