Reputation:
how can I check, if current user is in usergroup called for example "Friends" (title) in Joomla 3?
$user = JUser::getInstance($result->id);
$groups = $user->getAuthorisedGroups(); // just IDs, not title
Thanks.
Upvotes: 0
Views: 1392
Reputation:
$user = JUser::getInstance($result->id);
$AllGroups = $user->get('groups');
$groupNames = array();
$userid = $user->get('id'); // logged in user id
$groups = JAccess::getGroupsByUser($userid);
$groupid_list = '(' . implode(',', $groups) . ')';
foreach ($AllGroups as $groupId) {
$query = $db->getQuery(true);
$query->select('id, title');
$query->from('#__usergroups');
$query->where('id IN ' . $groupid_list);
$db->setQuery($query);
$rows = $db->loadRowList();
$grouplist = '';
foreach ($rows as $group) {
if ($groupId == $group[0]) { // checking the logged in user group
$grouplist = $group[1];
}
}
array_push($groupNames, $grouplist);
}
$query = $db->getQuery(true)
->select('*')
->from('#__myTable');
if (in_array("Friends", $groupNames)) {
// User is in group "Friends"
}
Upvotes: 0
Reputation: 2798
Check this code, I hope it will help you.
$AllGroups = $user->get('groups');
// getting all the groups
foreach($AllGroups as $groupId) {
$user = JFactory::getUser(); // getting user data
$db = JFactory::getDBO();
$userid = $user->get('id'); // logged in user id
$groups = JAccess::getGroupsByUser($userid);
$groupid_list = '(' . implode(',', $groups) . ')';
$query = $db->getQuery(true);
$query->select('id, title');
$query->from('#__usergroups');
$query->where('id IN ' .$groupid_list);
$db->setQuery($query);
$rows = $db->loadRowList();
$grouplist = '';
foreach($rows as $group)
{
if ($groupId == $group[0]) { // checking the logged in user group
$grouplist = $group[1];
}
}
var_dump($grouplist); // it will give you the usergroup name
}
Upvotes: 1