public function checkMembershipPermission($userId, $objectGroups, $permission, $requiredFor = 'all')
{
$userGroups = $this->getGroupMemberships($userId);
$commonGroups = array_intersect($userGroups, $objectGroups);
if (count($commonGroups) == 0) {
return false;
}
foreach ($commonGroups as $commonGroup) {
$roleId = $this->user_get_membership_role($userId, $commonGroup);
if ($requiredFor == 'any' && $this->membership_role_allows($roleId, $permission)) {
return true;
}
if ($requiredFor == 'all' && !$this->membership_role_allows($roleId, $permission)) {
return false;
}
}
return $requiredFor == 'all';
}