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} |
|
|
|
|
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
|
|
|
|