TYPO3 Extension: Frontend Benutzer einer bestimmten Gruppe ermitteln

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…

Über Stefan

Polyglot Clean Code Developer

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax