Wer sich ein bisschen in die Datenbankstruktur von TYPO3 eingearbeitet hat, merkt sehr schnell, wie seltsam die Zuordnung von Benutzern (Frontend sowie Backend) zu ihren Benutzergruppen gelöst ist. Anstatt über eine “vernünftige” M-zu-N-Tabelle, werden die Benutzergruppen den Benutzern über das Feld usergroup in fe_users bzw. be_users zugewiesen. Dieses Feld ist aber nicht ohne Weiteres editierbar (z.B. mit phpMyAdmin) da es nicht als text oder varchar, sondern als tinyblob definiert ist. Dennoch stehen die Benutzergruppen einfach als kommaseparierte Liste da drin (also z.B. “1,5,10”).
Wie kann man nun aber alle Benutzer einer bestimmten Benutzergruppe auslesen? Der SQL-Befehl ist zwar nicht unbedingt schwierig zu verstehen, aber nicht gerade sehr performant. Er beinhaltet nämlich einen Regulären Ausdruck, der auf das Feld usergroup angewendet wird und wie folgt aussieht:
SELECT *
FROM `fe_users`
WHERE usergroup REGEXP (
'(^|,)groupID($|,)'
)
Dabei ist in Zeile 4 natürlich groupID durch die ID der entsprechenden Gruppe zu ersetzen.
Im TYPO3-Forum wird noch die Möglichkeit genannt, die Funktion find_in_set zu verwenden, die es (in meiner Installation) jedoch nicht gab…