public static ViewPostViewModel MapPostViewModel(PermissionSet permissions, Post post, Member currentMember, DialogueSettings settings, Topic topic, List<Vote> allPostVotes, List<Favourite> favourites, bool showTopicLinks = false) { var postViewModel = new ViewPostViewModel { Permissions = permissions, Post = post, User = currentMember, ParentTopic = topic, Votes = allPostVotes.Where(x => x.Post.Id == post.Id).ToList(), LoggedOnMemberId = currentMember != null ? currentMember.Id : 0, AllowedToVote = (currentMember != null && currentMember.Id != post.MemberId && currentMember.TotalPoints > settings.AmountOfPointsBeforeAUserCanVote), PostCount = post.Member.PostCount, IsAdminOrMod = HttpContext.Current.User.IsInRole(AppConstants.AdminRoleName) || permissions[AppConstants.PermissionModerate].IsTicked, HasFavourited = favourites.Any(x => x.PostId == post.Id), IsTopicStarter = post.IsTopicStarter, ShowTopicLinks = showTopicLinks }; postViewModel.UpVotes = postViewModel.Votes.Count(x => x.Amount > 0); postViewModel.DownVotes = postViewModel.Votes.Count(x => x.Amount < 0); return postViewModel; }
private static DialogueSettings Settings(IPublishedContent forumRootNode) { if (forumRootNode != null) { var settings = new DialogueSettings(); // Content settings.ForumId = forumRootNode.Id; settings.ForumRootUrl = forumRootNode.Url; settings.ForumName = forumRootNode.GetPropertyValue<string>("forumName"); settings.ForumDescription = forumRootNode.GetPropertyValue<string>("forumDescription"); settings.ForumRootUrlWithDomain = string.Concat(AppHelpers.ReturnCurrentDomain(), settings.ForumRootUrl); // Urls settings.TopicUrlName = forumRootNode.GetPropertyValue<string>(AppConstants.PropTopicUrlName); settings.MemberUrlName = forumRootNode.GetPropertyValue<string>(AppConstants.PropMemberUrlName); settings.DialogueUrlName = forumRootNode.GetPropertyValue<string>(AppConstants.PropDialogueUrlName); var loginPage = forumRootNode.Descendant(AppConstants.DocTypeLogin) ?? forumRootNode.Ancestor(AppConstants.DocTypeLogin); settings.LoginUrl = loginPage != null ? loginPage.Url : "/Unable-to-find-login-page"; var registerPage = forumRootNode.Descendant(AppConstants.DocTypeRegister) ?? forumRootNode.Ancestor(AppConstants.DocTypeRegister); settings.RegisterUrl = registerPage != null ? registerPage.Url : "/Unable-to-find-Register-page"; settings.BannedEmails = forumRootNode.GetPropertyValue<string[]>("bannedEmail").ToList(); settings.BannedLinks = forumRootNode.GetPropertyValue<string[]>("bannedLinks").ToList(); settings.BannedWords = forumRootNode.GetPropertyValue<string[]>("bannedWords").ToList(); // General var extensions = forumRootNode.GetPropertyValue<string>("fileUploadAllowedExtensions"); if (!string.IsNullOrEmpty(extensions)) { settings.FileUploadAllowedExtensions = extensions.ToLower() .TrimStart(',').TrimEnd(',') .Split(',') .Where(x => !string.IsNullOrEmpty(x)).ToList(); } else { settings.FileUploadAllowedExtensions = new List<string>(); } settings.FileUploadMaximumFilesize = forumRootNode.GetPropertyValue<int>("fileUploadMaximumFilesize"); settings.AllowRssFeeds = forumRootNode.GetPropertyValue<bool>("allowRssFeeds"); settings.SuspendRegistration = forumRootNode.GetPropertyValue<bool>("suspendRegistration"); settings.EnableSpamReporting = forumRootNode.GetPropertyValue<bool>("enableSpamReporting"); settings.EnableMemberReporting = forumRootNode.GetPropertyValue<bool>("enableMemberReporting"); settings.AllowEmailSubscriptions = forumRootNode.GetPropertyValue<bool>("allowEmailSubscriptions"); settings.ManuallyAuthoriseNewMembers = forumRootNode.GetPropertyValue<bool>("manuallyAuthoriseNewMembers"); settings.EmailAdminOnNewMemberSignup = forumRootNode.GetPropertyValue<bool>("emailAdminOnNewMemberSignup"); settings.NewMembersMustConfirmAccountsViaEmail = forumRootNode.GetPropertyValue<bool>("newMembersMustConfirmAccountsViaEmail"); settings.AllowMemberSignatures = forumRootNode.GetPropertyValue<bool>("allowMemberSignatures"); settings.TopicsPerPage = forumRootNode.GetPropertyValue<int>("topicsPerPage"); settings.AllowPostsToBeMarkedAsSolution = forumRootNode.GetPropertyValue<bool>("allowPostsToBeMarkedAsSolution"); settings.PostsPerPage = forumRootNode.GetPropertyValue<int>("postsPerPage"); settings.ActivitiesPerPage = forumRootNode.GetPropertyValue<int>("activitiesPerPage"); settings.AllowPrivateMessages = forumRootNode.GetPropertyValue<bool>("allowPrivateMessages"); settings.PrivateMessageInboxSize = forumRootNode.GetPropertyValue<int>("privateMessageInboxSize"); settings.PrivateMessageFloodControl = forumRootNode.GetPropertyValue<int>("privateMessageFloodControl"); // Points settings.AllowPoints = forumRootNode.GetPropertyValue<bool>("allowPoints"); settings.AmountOfPointsBeforeAUserCanVote = forumRootNode.GetPropertyValue<int>("amountOfPointsBeforeAUserCanVote"); settings.PointsAddedPerNewPost = forumRootNode.GetPropertyValue<int>("pointsAddedPerNewPost"); settings.PointsAddedForPositiveVote = forumRootNode.GetPropertyValue<int>("pointsAddedForPositiveVote"); settings.PointsDeductedForNegativeVote = forumRootNode.GetPropertyValue<int>("pointsDeductedForNegativeVote"); settings.PointsAddedForASolution = forumRootNode.GetPropertyValue<int>("pointsAddedForASolution"); // Email settings.AdminEmailAddress = forumRootNode.GetPropertyValue<string>("adminEmailAddress"); settings.NotificationReplyEmailAddress = forumRootNode.GetPropertyValue<string>("notificationReplyEmailAddress"); // Theme settings.Theme = forumRootNode.GetPropertyValue<string>("theme"); // Member Group var memberGroupService = AppHelpers.UmbServices().MemberGroupService; var memberGroupCsv = forumRootNode.GetPropertyValue<string>("newMemberStartingGroup"); //NOTE: Take the FIRST one only if there are multiple if (memberGroupCsv != null) { var memberGroupId = memberGroupCsv.Split(',').FirstOrDefault(); settings.Group = memberGroupService.GetByName(memberGroupId); } else { settings.Group = memberGroupService.GetByName(AppConstants.MemberGroupDefault); } // Spam settings.EnableAkismetSpamControl = forumRootNode.GetPropertyValue<bool>("enableAkismetSpamControl"); settings.AkismetKey = forumRootNode.GetPropertyValue<string>("enterYourAkismetKeyHere"); settings.SpamQuestion = forumRootNode.GetPropertyValue<string>("enterASpamRegistrationPreventionQuestion"); settings.SpamAnswer = forumRootNode.GetPropertyValue<string>("enterTheAnswerToYourSpamQuestion"); // Social settings.FacebookAppId = forumRootNode.GetPropertyValue<string>("FacebookAppId"); settings.FacebookAppSecret = forumRootNode.GetPropertyValue<string>("FacebookAppSecret"); settings.GoogleClientId = forumRootNode.GetPropertyValue<string>("googleClientId"); settings.GoogleClientSecret = forumRootNode.GetPropertyValue<string>("googleClientSecret"); // Meta settings.PageTitle = forumRootNode.GetPropertyValue<string>("pageTitle"); settings.MetaDescription = forumRootNode.GetPropertyValue<string>("metaDescription"); // Umbraco Properties settings.LastModified = forumRootNode.UpdateDate; return settings; } return null; }