Joomla-Benutzergruppenmitglieder (andere User) des angemeldeten Users auslesen (Für CSV-Export aufbereiten)
$user = JFactory::getUser();
// User ist angemeldet?
if (!$user->guest)
{
// ENTWEDER Array aller Gruppen des angemeldeten Users:
$groupId = $user->groups;
// ODER Array der Wunsch-Gruppen selber definieren (hartkodiert):
#$groupId = array(15, 12, 8, 6);
$db = JFactory::getDbo();
$query = $db->getQuery(true);
// ENTWEDER die gewünschten Felder der Tabelle #__users im Array einzeln definieren:
// Aus Sicherheitsgründen zu bevorzugen.
// Weiterer Vorteil: Man kann Sortierung vordefinieren.
$query->select($db->qn(array(
'a.name',
'a.id',
'a.email',
'a.username',
)));
// ODER obere select-Zeilen deaktivieren und ALLE FELDER der Tabelle #__users:
#$query->select('a.*');
$query->from($db->qn('#__users', 'a'));
$query->join('LEFT',
$db->qn('#__user_usergroup_map', 'map') . ' ON ' .
$db->qn('map.user_id') . ' = ' . $db->qn('a.id')
);
$query->where($db->qn('map.group_id') . ' IN (' . implode(',', $groupId) . ')');
// Angemeldeten User ausschließen:
$query->where($db->qn('a.id') . ' != ' . $user->id);
#echo 'DEBUG $query: '.print_r((string )$query, true);exit;
$db->setQuery($query);
$users = $db->loadAssocList('id');
#echo 'DEBUG $users: '.print_r($users,true);exit;
$csvZeilen = array();
// Ich persönlich bevorzuge Tab-getrennt ($fieldSeparator = "\t"),
// da Usernamen Semikolons enthalten können.
$fieldSeparator = ';';
foreach ($users as $user)
{
$csvZeilen[] = implode($fieldSeparator, $user);
}
$csvContent = implode("\n", $csvZeilen);
#echo 'DEBUG $csvContent: '.print_r($csvContent, true);exit;
}