function getBackendGroups($rows, $allgroups) { $adminmappings = array(); if ($rows) { foreach ($rows as $row) { if ($row->location == 'admin') { $adminmappings[] = $row->jgroup; } } } // filter backend roles $keys = JFUHelper::getAdminLoginGroups(); $backendgroups = array(); foreach ($allgroups as $group) { if (in_array($group->value, $keys)) { if (!in_array($group->value, $adminmappings)) { $backendgroups[] = $group; } } else { $group_temp = $group; // we check if one of the parents have the needed rights! while ($group->parent_id != 0) { $parent = $group->parent_id; foreach ($allgroups as $group_parent) { if ($parent == $group_parent->value) { if (in_array($group_parent->value, $keys)) { if (!in_array($group_temp->value, $adminmappings)) { $backendgroups[] = $group_temp; } break 2; } $group = $group_parent; } } } } } return $backendgroups; }