Merge branch 'feature/adminSplitBan' of https://github.com/Dliix66/CS2-SimpleAdmin into pr/105

This commit is contained in:
Dawid Bepierszcz
2024-04-30 14:07:58 +02:00

View File

@@ -1,33 +1,36 @@
INSERT INTO sa_admins_flags (admin_id, flag) INSERT INTO sa_admins_flags (admin_id, flag)
WITH RECURSIVE numbers AS (
SELECT 1 AS n
UNION ALL
SELECT n + 1 FROM numbers
WHERE n < (SELECT MAX(CHAR_LENGTH(flags) - CHAR_LENGTH(REPLACE(flags, ',', '')) + 1) FROM sa_admins)
)
SELECT SELECT
min_admins.admin_id, min_admins.admin_id,
TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(sa_admins.flags, ',', numbers.n), ',', -1)) AS flag TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(sa_admins.flags, ',', numbers.n), ',', -1)) AS flag
FROM numbers FROM (
INNER JOIN (
SELECT MIN(id) AS admin_id, player_steamid, server_id SELECT MIN(id) AS admin_id, player_steamid, server_id
FROM sa_admins FROM sa_admins
WHERE player_steamid != 'Console' WHERE player_steamid != 'Console'
GROUP BY player_steamid, server_id GROUP BY player_steamid, server_id
) AS min_admins ON 1=1 ) AS min_admins
INNER JOIN sa_admins ON CHAR_LENGTH(sa_admins.flags) - CHAR_LENGTH(REPLACE(sa_admins.flags, ',', '')) >= numbers.n - 1 JOIN sa_admins ON min_admins.player_steamid = sa_admins.player_steamid
AND min_admins.player_steamid = sa_admins.player_steamid JOIN (
AND (min_admins.server_id = sa_admins.server_id OR (min_admins.server_id IS NULL AND sa_admins.server_id IS NULL)) SELECT 1 AS n UNION ALL
SELECT 2 UNION ALL
UNION SELECT 3 UNION ALL
SELECT 4 UNION ALL
SELECT SELECT 5 UNION ALL
(SELECT MAX(id) + 1 FROM sa_admins WHERE server_id IS NULL) AS admin_id, SELECT 6 UNION ALL
TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(sa_admins.flags, ',', numbers.n), ',', -1)) AS flag SELECT 7 UNION ALL
FROM numbers SELECT 8 UNION ALL
INNER JOIN sa_admins ON CHAR_LENGTH(sa_admins.flags) - CHAR_LENGTH(REPLACE(sa_admins.flags, ',', '')) >= numbers.n - 1 SELECT 9 UNION ALL
AND sa_admins.server_id IS NULL SELECT 10 UNION ALL
WHERE sa_admins.player_steamid != 'Console' SELECT 11 UNION ALL
AND EXISTS ( SELECT 12 UNION ALL
SELECT 1 FROM sa_admins WHERE id = (SELECT MAX(id) + 1 FROM sa_admins WHERE server_id IS NULL) SELECT 13 UNION ALL
); SELECT 14 UNION ALL
SELECT 15 UNION ALL
SELECT 16 UNION ALL
SELECT 17 UNION ALL
SELECT 18 UNION ALL
SELECT 19 UNION ALL
SELECT 20
) AS numbers
ON CHAR_LENGTH(sa_admins.flags) - CHAR_LENGTH(REPLACE(sa_admins.flags, ',', '')) >= numbers.n - 1
AND (min_admins.server_id = sa_admins.server_id OR (min_admins.server_id IS NULL AND sa_admins.server_id IS NULL))
WHERE sa_admins.id IS NOT NULL;