]>
Commit | Line | Data |
---|---|---|
8d5a112f D |
1 | <?php |
2 | ||
3 | namespace UnrealIRCd; | |
4 | ||
5 | use Exception; | |
65d96dd6 | 6 | use stdClass; |
8d5a112f | 7 | |
78796043 | 8 | class ServerBan |
8d5a112f D |
9 | { |
10 | ||
11 | public Connection $connection; | |
12 | ||
7c7017a2 | 13 | public function __construct(Connection $conn) |
8d5a112f | 14 | { |
7c7017a2 | 15 | $this->connection = $conn; |
8d5a112f D |
16 | } |
17 | ||
18 | /** | |
7951221f D |
19 | * Add a ban. |
20 | * | |
8d5a112f | 21 | * @param string $user |
9ef4c6af | 22 | * @return stdClass |
8d5a112f D |
23 | * @throws Exception |
24 | */ | |
92f8fc2f | 25 | public function add(string $name, string $type, string $duration, string $reason): stdClass |
8d5a112f | 26 | { |
a18591f9 | 27 | return $this->connection->query('server_ban.add', [ |
92f8fc2f BM |
28 | 'name' => $name, |
29 | 'type' => $type, | |
30 | 'reason' => $reason, | |
31 | 'duration_string' => $duration ?? '1d', | |
8d5a112f | 32 | ]); |
8d5a112f D |
33 | } |
34 | ||
35 | /** | |
7951221f D |
36 | * Delete a ban. |
37 | * | |
92f8fc2f | 38 | * @param string $name |
9ef4c6af | 39 | * @return stdClass |
8d5a112f D |
40 | * @throws Exception |
41 | */ | |
92f8fc2f | 42 | public function delete(string $name, string $type): stdClass |
8d5a112f | 43 | { |
a18591f9 | 44 | return $this->connection->query('server_ban.del', [ |
92f8fc2f BM |
45 | 'name' => $name, |
46 | 'type' => $type, | |
8d5a112f | 47 | ]); |
8d5a112f D |
48 | } |
49 | ||
50 | /** | |
7951221f D |
51 | * Return a list of all bans. |
52 | * | |
53 | * @return stdClass | |
8d5a112f D |
54 | * @throws Exception |
55 | */ | |
7c7017a2 | 56 | public function getAll(): stdClass |
8d5a112f D |
57 | { |
58 | $response = $this->connection->query('server_ban.list'); | |
59 | ||
60 | if (!is_bool($response)) { | |
61 | return $response; | |
62 | } | |
63 | ||
64 | throw new Exception('Invalid JSON Response from UnrealIRCd RPC.'); | |
65 | } | |
66 | ||
67 | /** | |
7c7017a2 | 68 | * Get a specific ban. |
7951221f | 69 | * |
8d5a112f | 70 | * @param array $params |
7951221f | 71 | * @return stdClass |
8d5a112f D |
72 | * @throws Exception |
73 | */ | |
7c7017a2 | 74 | public function get(array $params): stdClass |
8d5a112f D |
75 | { |
76 | $response = $this->connection->query('server_ban.get', [ | |
77 | 'name' => $params['name'], | |
78 | 'type' => $params['type'] | |
79 | ]); | |
80 | ||
81 | if (!is_bool($response)) { | |
82 | return $response; | |
83 | } | |
84 | ||
85 | throw new Exception('Invalid JSON Response from UnrealIRCd RPC.'); | |
86 | } | |
87 | } |