public static bool HasPermission(UserSession userSession, GroupMember groupMember, Group group, eGroupPermissionType permissionType) { bool hasNonMembersPermissions = false; bool hasMembersPermissions = false; bool hasVipMembersPermissions = false; switch(permissionType) { case eGroupPermissionType.ViewGroup: hasNonMembersPermissions = group.IsPermissionEnabled(eGroupPermissions.ViewGroupNonMembers); hasMembersPermissions = group.IsPermissionEnabled(eGroupPermissions.ViewGroupMembers); hasVipMembersPermissions = group.IsPermissionEnabled(eGroupPermissions.ViewGroupVip); break; case eGroupPermissionType.ViewMessageBoard: hasNonMembersPermissions = group.IsPermissionEnabled(eGroupPermissions.ViewMessageBoardNonMembers); hasMembersPermissions = group.IsPermissionEnabled(eGroupPermissions.ViewMessageBoardMembers); hasVipMembersPermissions = group.IsPermissionEnabled(eGroupPermissions.ViewMessageBoardVip); break; case eGroupPermissionType.ViewGallery: hasNonMembersPermissions = group.IsPermissionEnabled(eGroupPermissions.ViewGalleryNonMembers); hasMembersPermissions = group.IsPermissionEnabled(eGroupPermissions.ViewGalleryMembers); hasVipMembersPermissions = group.IsPermissionEnabled(eGroupPermissions.ViewGalleryVip); break; case eGroupPermissionType.ViewMembers: hasNonMembersPermissions = group.IsPermissionEnabled(eGroupPermissions.ViewMembersNonMembers); hasMembersPermissions = group.IsPermissionEnabled(eGroupPermissions.ViewMembersMembers); hasVipMembersPermissions = group.IsPermissionEnabled(eGroupPermissions.ViewMembersVip); break; case eGroupPermissionType.ViewEvents: hasNonMembersPermissions = group.IsPermissionEnabled(eGroupPermissions.ViewEventsNonMembers); hasMembersPermissions = group.IsPermissionEnabled(eGroupPermissions.ViewEventsMembers); hasVipMembersPermissions = group.IsPermissionEnabled(eGroupPermissions.ViewEventsVip); break; case eGroupPermissionType.UploadPhoto: hasNonMembersPermissions = group.IsPermissionEnabled(eGroupPermissions.UploadPhotoNonMembers); hasMembersPermissions = group.IsPermissionEnabled(eGroupPermissions.UploadPhotoMembers); hasVipMembersPermissions = group.IsPermissionEnabled(eGroupPermissions.UploadPhotoVip); break; case eGroupPermissionType.UseChat: hasNonMembersPermissions = group.IsPermissionEnabled(eGroupPermissions.UseChatNonMembers); hasMembersPermissions = group.IsPermissionEnabled(eGroupPermissions.UseChatMembers); hasVipMembersPermissions = group.IsPermissionEnabled(eGroupPermissions.UseChatVip); break; case eGroupPermissionType.AddTopic: hasNonMembersPermissions = group.IsPermissionEnabled(eGroupPermissions.AddTopicNonMembers); hasMembersPermissions = group.IsPermissionEnabled(eGroupPermissions.AddTopicMembers); hasVipMembersPermissions = group.IsPermissionEnabled(eGroupPermissions.AddTopicVip); break; case eGroupPermissionType.AddPost: hasNonMembersPermissions = group.IsPermissionEnabled(eGroupPermissions.AddPostNonMembers); hasMembersPermissions = group.IsPermissionEnabled(eGroupPermissions.AddPostMembers); hasVipMembersPermissions = group.IsPermissionEnabled(eGroupPermissions.AddPostVip); break; case eGroupPermissionType.AddEvent: hasNonMembersPermissions = group.IsPermissionEnabled(eGroupPermissions.AddEventNonMembers); hasMembersPermissions = group.IsPermissionEnabled(eGroupPermissions.AddEventMembers); hasVipMembersPermissions = group.IsPermissionEnabled(eGroupPermissions.AddEventVip); break; default: throw new ArgumentOutOfRangeException("permissionType"); } if (userSession != null) { if (groupMember == null && !hasNonMembersPermissions) { return false; } else if (groupMember != null) { if (!groupMember.Active) { if (!hasNonMembersPermissions) { return false; } } else { if ((groupMember.Type == eType.Member && !hasMembersPermissions) || (groupMember.Type == eType.VIP && !hasVipMembersPermissions)) { return false; } } } } else // is not logged in { if (!hasNonMembersPermissions) { return false; } } return true; }