Hallo zusammen,
Mittels
<?php
$gruppen = $TSFE->fe_user->groupData['uid'];
?>
erhält man ja bekanntlich alle UID's der zugewiesenen Gruppen des eingeloggten Users (inklusive Verbindung mit Untergruppen etc.) als Array zurück.
Soweit so gut, doch nun möchte ich jedoch diese Gruppeninformationen nicht nur vom eingeloggten User sondern von irgend einem anderen Benutzer. Gibt es da eine Typo3 Funktion oder Klasse um an diese Gruppen zu kommen (nicht nur Feld usergroup, sondern inkl. untergruppen Verbindungen etc.)?
Danke für eure Antworten.
Hier ein Beispiel aus powermail_frontend wie man fe_users und fe_groups per SQL select verknüpfen kann:
'fe_users.uid fe_users_uid, fe_groups.uid fe_groups_uid',
'tx_powermail_mails, fe_users, fe_groups, sys_refindex',
$where_clause = 'sys_refindex.tablename = "fe_users" AND sys_refindex.ref_table = "fe_groups" AND fe_users.uid = sys_refindex.recuid AND fe_groups.uid = sys_refindex.ref_uid AND fe_users.uid = tx_powermail_mails.feuser AND tx_powermail_mails.uid = '.intval($uid),
$groupBy = '',
$orderBy = '',
$limit = 1000
einpraegsam.net schrieb
Hier ein Beispiel aus powermail_frontend wie man fe_users und fe_groups per SQL select verknüpfen kann:
Danke für deine Antwort, hat leider nicht so funktioniert wie es sollte. Es wurden nur die unter dem FE-User direkt zugewiesenen Gruppen ausgegeben. Indirekt verknüpfte Gruppen (Untergruppen innerhalb einer Gruppe) wurden nicht ausgegeben. Folgenden Befehl habe ich verwendet:
<?php
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery (
'fe_groups.uid fe_groups_uid',
'fe_users, fe_groups, sys_refindex',
$where_clause = 'sys_refindex.tablename = "fe_users" AND sys_refindex.ref_table = "fe_groups" AND fe_users.uid = sys_refindex.recuid AND fe_groups.uid = sys_refindex.ref_uid AND fe_users.uid = '.intval($this->eUser),
$groupBy = '',
$orderBy = '',
$limit = 1000
);
$groupRows = array();
if ($res) {
while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
array_push($groupRows, $row['fe_groups_uid']);
}
}
$groupData = implode(',', $groupRows);
?>
Folgende Lösung funktioniert mal mit einer Ebene subgroup dabei...
<?
$sql = "select fg3.uid
from (select fg.uid,
fg.subgroup
from fe_users fu
left join fe_groups fg
on find_in_set(fg.uid, fu.usergroup) and !fg.deleted and !fg.hidden
where fu.uid = ".intval($this->eUser).") fg2
left join fe_groups fg3
on fg3.uid = fg2.uid or find_in_set(fg3.uid, fg2.subgroup) and !fg3.deleted and !fg3.hidden
group by fg3.uid";
$res = $GLOBALS['TYPO3_DB']->sql_query($sql);
$groupRows = array();
if ($res) {
while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
array_push($groupRows, $row['uid']);
}
}
$groupData = implode(',', $groupRows);
?>
Das reicht mal für's erste, doch ist diese Lösung nicht wirklich sauber! am liebsten wäre mir etwas rekursives! Oder eben mittels einer bereits existirenden Klass oder Funktion von Typo3. Hat da jemand eine Idee?