public UserCreateStatus AddDNNUser(UserInfo AuthenticationUser) { PortalSettings _portalSettings = PortalController.GetCurrentPortalSettings(); PortalSecurity objSecurity = new PortalSecurity(); Entities.Users.UserController objDNNUsers = new Entities.Users.UserController(); UserController objAuthUsers = new UserController(); Entities.Users.UserInfo objDNNUser = (Entities.Users.UserInfo)AuthenticationUser; int AffiliateId = -1; if (HttpContext.Current.Request.Cookies["AffiliateId"] != null) { AffiliateId = int.Parse(HttpContext.Current.Request.Cookies["AffiliateId"].Value); } int UserID = -1; UserCreateStatus createStatus; createStatus = Entities.Users.UserController.CreateUser(ref objDNNUser); UserID = objDNNUser.UserID; if (AuthenticationUser.AuthenticationExists && UserID > -1) { AuthenticationUser.UserID = UserID; AddUserRoles(_portalSettings.PortalId, AuthenticationUser); } return(createStatus); }
public static string ParseEmailTemplate(string template, string templateName, int portalID, int moduleID, int tabID, int forumID, int topicId, int replyId, string comments, int userId, int timeZoneOffset) { var uc = new Entities.Users.UserController(); var usr = uc.GetUser(portalID, userId); return(ParseEmailTemplate(template, templateName, portalID, moduleID, tabID, forumID, topicId, replyId, comments, usr, userId, timeZoneOffset)); }
public static string GetAvatar(int userID, int avatarWidth, int avatarHeight) { var portalSettings = HttpContext.Current.Items["PortalSettings"] as PortalSettings; if (portalSettings == null) { return(string.Empty); } //GIF files when reduced using DNN class losses its animation, so for gifs send them as is var user = new Entities.Users.UserController().GetUser(portalSettings.PortalId, userID); string imgUrl = string.Empty; if (user != null) { imgUrl = user.Profile.PhotoURL; } if (!string.IsNullOrWhiteSpace(imgUrl) && imgUrl.ToLower().EndsWith("gif")) { return("<img class='af-avatar' src='" + imgUrl + "' height='" + avatarHeight + "px' width='" + avatarWidth + "px' />"); } else { return("<img class='af-avatar' src='" + string.Format(Common.Globals.UserProfilePicFormattedUrl(), userID, avatarWidth, avatarHeight) + "' />"); } }
public UserCreateStatus AddDNNUser(UserInfo AuthenticationUser) { PortalSettings _portalSettings = PortalController.GetCurrentPortalSettings(); PortalSecurity objSecurity = new PortalSecurity(); Entities.Users.UserController objDNNUsers = new Entities.Users.UserController(); UserController objAuthUsers = new UserController(); Entities.Users.UserInfo objDNNUser = (Entities.Users.UserInfo)AuthenticationUser; int AffiliateId = -1; if (HttpContext.Current.Request.Cookies["AffiliateId"] != null) { AffiliateId = int.Parse(HttpContext.Current.Request.Cookies["AffiliateId"].Value); } int UserID = -1; UserCreateStatus createStatus; createStatus = Entities.Users.UserController.CreateUser(ref objDNNUser); UserID = objDNNUser.UserID; if (AuthenticationUser.AuthenticationExists && UserID > -1) { AuthenticationUser.UserID = UserID; AddUserRoles(_portalSettings.PortalId, AuthenticationUser); } return createStatus; }
public static string GetAvatar(int userID, int avatarWidth, int avatarHeight) { var portalSettings = HttpContext.Current.Items["PortalSettings"] as PortalSettings; if (portalSettings == null) return string.Empty; //GIF files when reduced using DNN class losses its animation, so for gifs send them as is string imgUrl = new Entities.Users.UserController().GetUser(portalSettings.PortalId, userID).Profile.PhotoURL; if (!string.IsNullOrWhiteSpace(imgUrl) && imgUrl.ToLower().EndsWith("gif")) { return "<img class='af-avatar' src='" + imgUrl + "' height='" + avatarHeight + "px' width='" + avatarWidth + "px' />"; } else { return "<img class='af-avatar' src='" + string.Format(Common.Globals.UserProfilePicFormattedUrl(), userID, avatarWidth, avatarHeight) + "' />"; } }
public HttpResponseMessage RejectPost(ModerationDTO dto) { var notify = NotificationsController.Instance.GetNotification(dto.NotificationId); ParseNotificationContext(notify.Context); var fc = new ForumController(); var fi = fc.Forums_Get(_forumId, -1, false, true); if (fi == null) { return(Request.CreateResponse(HttpStatusCode.OK, new { Message = "Forum Not Found" })); } if (!(IsMod(_forumId))) { return(Request.CreateResponse(HttpStatusCode.Forbidden, new { Message = "User is not a moderator for this forum" })); } var mc = new ModController(); mc.Mod_Reject(PortalSettings.PortalId, _moduleId, UserInfo.UserID, _forumId, _topicId, _replyId); int authorId; if (_replyId > 0) { var rc = new ReplyController(); var reply = rc.Reply_Get(PortalSettings.PortalId, _moduleId, _topicId, _replyId); if (reply == null) { return(Request.CreateResponse(HttpStatusCode.OK, new { Message = "Reply Not Found" })); } authorId = reply.Content.AuthorId; } else { var tc = new TopicsController(); var topic = tc.Topics_Get(PortalSettings.PortalId, _moduleId, _topicId); if (topic == null) { return(Request.CreateResponse(HttpStatusCode.OK, new { Message = "Topic Not Found" })); } authorId = topic.Content.AuthorId; } if (fi.ModRejectTemplateId > 0 && authorId > 0) { var uc = new Entities.Users.UserController(); var ui = uc.GetUser(PortalSettings.PortalId, authorId); if (ui != null) { var au = new Author { AuthorId = authorId, DisplayName = ui.DisplayName, Email = ui.Email, FirstName = ui.FirstName, LastName = ui.LastName, Username = ui.Username }; var oEmail = new Email(); oEmail.SendEmail(fi.ModRejectTemplateId, PortalSettings.PortalId, _moduleId, _tabId, _forumId, _topicId, _replyId, string.Empty, au); } } NotificationsController.Instance.DeleteNotification(dto.NotificationId); return(Request.CreateResponse(HttpStatusCode.OK, new { Result = "success" })); }
public static List<Entities.Users.UserInfo> GetListOfModerators(int portalId, int forumId) { var rc = new Security.Roles.RoleController(); var uc = new Entities.Users.UserController(); var fc = new ForumController(); var fi = fc.Forums_Get(forumId, -1, false, true); if (fi == null) return null; var mods = new List<Entities.Users.UserInfo>(); SubscriptionInfo si = null; var modApprove = fi.Security.ModApprove; var modRoles = modApprove.Split('|')[0].Split(';'); foreach (var r in modRoles) { if (string.IsNullOrEmpty(r)) continue; var rid = Convert.ToInt32(r); var rName = rc.GetRole(rid, portalId).RoleName; foreach (Entities.Users.UserRoleInfo usr in rc.GetUserRolesByRoleName(portalId, rName)) { var ui = uc.GetUser(portalId, usr.UserID); if (!(mods.Contains(ui))) { mods.Add(ui); } } } return mods; }
public static void SendEmailToModerators(int templateId, int portalId, int forumId, int topicId, int replyId, int moduleID, int tabID, string comments, UserInfo user) { var portalSettings = (Entities.Portals.PortalSettings)(HttpContext.Current.Items["PortalSettings"]); var mainSettings = DataCache.MainSettings(moduleID); var fc = new ForumController(); var fi = fc.Forums_Get(forumId, -1, false, true); if (fi == null) { return; } var subs = new List <SubscriptionInfo>(); var rc = new Security.Roles.RoleController(); var rp = RoleProvider.Instance(); var uc = new Entities.Users.UserController(); var modApprove = fi.Security.ModApprove; var modRoles = modApprove.Split('|')[0].Split(';'); foreach (var r in modRoles) { if (string.IsNullOrEmpty(r)) { continue; } var rid = Convert.ToInt32(r); var rName = rc.GetRole(rid, portalId).RoleName; foreach (UserRoleInfo usr in rp.GetUserRoles(portalId, null, rName)) { var ui = uc.GetUser(portalId, usr.UserID); var si = new SubscriptionInfo { UserId = ui.UserID, DisplayName = ui.DisplayName, Email = ui.Email, FirstName = ui.FirstName, LastName = ui.LastName }; if (!(subs.Contains(si))) { subs.Add(si); } } } if (subs.Count <= 0) { return; } var sTemplate = string.Empty; var tc = new TemplateController(); var ti = tc.Template_Get(templateId, portalId, moduleID); var subject = TemplateUtils.ParseEmailTemplate(ti.Subject, string.Empty, portalId, moduleID, tabID, forumId, topicId, replyId, Convert.ToInt32(portalSettings.TimeZone.BaseUtcOffset.TotalMinutes)); var bodyText = TemplateUtils.ParseEmailTemplate(ti.TemplateText, string.Empty, portalId, moduleID, tabID, forumId, topicId, replyId, comments, user, -1, Convert.ToInt32(portalSettings.TimeZone.BaseUtcOffset.TotalMinutes)); var bodyHTML = TemplateUtils.ParseEmailTemplate(ti.TemplateHTML, string.Empty, portalId, moduleID, tabID, forumId, topicId, replyId, comments, user, -1, Convert.ToInt32(portalSettings.TimeZone.BaseUtcOffset.TotalMinutes)); var sFrom = fi.EmailAddress != string.Empty ? fi.EmailAddress : portalSettings.Email; var oEmail = new Email { Recipients = subs, Subject = subject, From = sFrom, BodyText = bodyText, BodyHTML = bodyHTML, UseQueue = mainSettings.MailQueue }; new Thread(oEmail.Send).Start(); }
public static string ParseEmailTemplate(string template, string templateName, int portalID, int moduleID, int tabID, int forumID, int topicId, int replyId, string comments, int userId, int timeZoneOffset) { var uc = new Entities.Users.UserController(); var usr = uc.GetUser(portalID, userId); return ParseEmailTemplate(template, templateName, portalID, moduleID, tabID, forumID, topicId, replyId, comments, usr, userId, timeZoneOffset); }
public void SendEmailToModerators(int TemplateId, int PortalId, int ForumId, int TopicId, int ReplyId, int ModuleID, int TabID, string Comments, DotNetNuke.Entities.Users.UserInfo User) { var _portalSettings = (Entities.Portals.PortalSettings)(HttpContext.Current.Items["PortalSettings"]); SettingsInfo MainSettings = DataCache.MainSettings(ModuleID); var fc = new ForumController(); Forum fi = fc.Forums_Get(ForumId, -1, false, true); if (fi == null) { return; } var subs = new List <SubscriptionInfo>(); var rc = new Security.Roles.RoleController(); var uc = new Entities.Users.UserController(); SubscriptionInfo si; string modApprove = fi.Security.ModApprove; string[] modRoles = modApprove.Split('|')[0].Split(';'); if (modRoles != null) { foreach (string r in modRoles) { if (!(string.IsNullOrEmpty(r))) { int rid = Convert.ToInt32(r); string rName = rc.GetRole(rid, PortalId).RoleName; foreach (Entities.Users.UserRoleInfo usr in rc.GetUserRolesByRoleName(PortalId, rName)) { var ui = uc.GetUser(PortalId, usr.UserID); si = new SubscriptionInfo { UserId = ui.UserID, DisplayName = ui.DisplayName, Email = ui.Email, FirstName = ui.FirstName, LastName = ui.LastName }; if (!(subs.Contains(si))) { subs.Add(si); } } } } } if (subs.Count <= 0) { return; } string Subject; string BodyText; string BodyHTML; string sTemplate = string.Empty; var tc = new TemplateController(); TemplateInfo ti = tc.Template_Get(TemplateId, PortalId, ModuleID); Subject = TemplateUtils.ParseEmailTemplate(ti.Subject, string.Empty, PortalId, ModuleID, TabID, ForumId, TopicId, ReplyId, _portalSettings.TimeZoneOffset); BodyText = TemplateUtils.ParseEmailTemplate(ti.TemplateText, string.Empty, PortalId, ModuleID, TabID, ForumId, TopicId, ReplyId, Comments, User, -1, _portalSettings.TimeZoneOffset); BodyHTML = TemplateUtils.ParseEmailTemplate(ti.TemplateHTML, string.Empty, PortalId, ModuleID, TabID, ForumId, TopicId, ReplyId, Comments, User, -1, _portalSettings.TimeZoneOffset); string sFrom; sFrom = fi.EmailAddress != string.Empty ? fi.EmailAddress : _portalSettings.Email; var oEmail = new Email { Recipients = subs, Subject = Subject, From = sFrom, BodyText = BodyText, BodyHTML = BodyHTML, SmtpServer = Host.SMTPServer, // Convert.ToString(_portalSettings.HostSettings["SMTPServer"]), SmtpUserName = Host.SMTPUsername, // Convert.ToString(_portalSettings.HostSettings["SMTPUsername"]), SmtpPassword = Host.SMTPPassword, // Convert.ToString(_portalSettings.HostSettings["SMTPPassword"]), SmtpAuthentication = Host.SMTPAuthentication // Convert.ToString(_portalSettings.HostSettings["SMTPAuthentication"]) }; //#if SKU_ENTERPRISE oEmail.UseQueue = MainSettings.MailQueue; //#endif var objThread = new System.Threading.Thread(oEmail.Send); objThread.Start(); }
public static void SendEmailToModerators(int templateId, int portalId, int forumId, int topicId, int replyId, int moduleID, int tabID, string comments, UserInfo user) { var portalSettings = (Entities.Portals.PortalSettings)(HttpContext.Current.Items["PortalSettings"]); var mainSettings = DataCache.MainSettings(moduleID); var fc = new ForumController(); var fi = fc.Forums_Get(forumId, -1, false, true); if (fi == null) return; var subs = new List<SubscriptionInfo>(); var rc = new Security.Roles.RoleController(); var uc = new Entities.Users.UserController(); var modApprove = fi.Security.ModApprove; var modRoles = modApprove.Split('|')[0].Split(';'); foreach (var r in modRoles) { if (string.IsNullOrEmpty(r)) continue; var rid = Convert.ToInt32(r); var rName = rc.GetRole(rid, portalId).RoleName; foreach (UserRoleInfo usr in rc.GetUserRolesByRoleName(portalId, rName)) { var ui = uc.GetUser(portalId, usr.UserID); var si = new SubscriptionInfo { UserId = ui.UserID, DisplayName = ui.DisplayName, Email = ui.Email, FirstName = ui.FirstName, LastName = ui.LastName }; if (! (subs.Contains(si))) { subs.Add(si); } } } if (subs.Count <= 0) return; var sTemplate = string.Empty; var tc = new TemplateController(); var ti = tc.Template_Get(templateId, portalId, moduleID); var subject = TemplateUtils.ParseEmailTemplate(ti.Subject, string.Empty, portalId, moduleID, tabID, forumId, topicId, replyId, portalSettings.TimeZoneOffset); var bodyText = TemplateUtils.ParseEmailTemplate(ti.TemplateText, string.Empty, portalId, moduleID, tabID, forumId, topicId, replyId, comments, user, -1, portalSettings.TimeZoneOffset); var bodyHTML = TemplateUtils.ParseEmailTemplate(ti.TemplateHTML, string.Empty, portalId, moduleID, tabID, forumId, topicId, replyId, comments, user, -1, portalSettings.TimeZoneOffset); var sFrom = fi.EmailAddress != string.Empty ? fi.EmailAddress : portalSettings.Email; var oEmail = new Email { Recipients = subs, Subject = subject, From = sFrom, BodyText = bodyText, BodyHTML = bodyHTML, UseQueue = mainSettings.MailQueue }; new Thread(oEmail.Send).Start(); }
public HttpResponseMessage RejectPost(ModerationDTO dto) { var notify = NotificationsController.Instance.GetNotification(dto.NotificationId); ParseNotificationContext(notify.Context); var fc = new ForumController(); var fi = fc.Forums_Get(_forumId, -1, false, true); if (fi == null) return Request.CreateResponse(HttpStatusCode.OK, new { Message = "Forum Not Found" }); if (!(IsMod(_forumId))) return Request.CreateResponse(HttpStatusCode.Forbidden, new { Message = "User is not a moderator for this forum" }); var mc = new ModController(); mc.Mod_Reject(PortalSettings.PortalId, _moduleId, UserInfo.UserID, _forumId, _topicId, _replyId); int authorId; if (_replyId > 0) { var rc = new ReplyController(); var reply = rc.Reply_Get(PortalSettings.PortalId, _moduleId, _topicId, _replyId); if (reply == null) return Request.CreateResponse(HttpStatusCode.OK, new { Message = "Reply Not Found" }); authorId = reply.Content.AuthorId; } else { var tc = new TopicsController(); var topic = tc.Topics_Get(PortalSettings.PortalId, _moduleId, _topicId); if (topic == null) return Request.CreateResponse(HttpStatusCode.OK, new { Message = "Topic Not Found" }); authorId = topic.Content.AuthorId; } if (fi.ModRejectTemplateId > 0 && authorId > 0) { var uc = new Entities.Users.UserController(); var ui = uc.GetUser(PortalSettings.PortalId, authorId); if (ui != null) { var au = new Author { AuthorId = authorId, DisplayName = ui.DisplayName, Email = ui.Email, FirstName = ui.FirstName, LastName = ui.LastName, Username = ui.Username }; Email.SendEmail(fi.ModRejectTemplateId, PortalSettings.PortalId, _moduleId, _tabId, _forumId, _topicId, _replyId, string.Empty, au); } } NotificationsController.Instance.DeleteNotification(dto.NotificationId); return Request.CreateResponse(HttpStatusCode.OK, new { Result = "success" }); }
protected override void OnLoad(EventArgs e) { base.OnLoad(e); var timeOffset = PortalSettings.TimeZoneOffset; if (UserId > 0) { var uc = new Entities.Users.UserController(); var dnnUser = uc.GetUser(PortalId, UserId); timeOffset = dnnUser.Profile.TimeZone; if (timeOffset == 0) timeOffset = PortalSettings.TimeZoneOffset; } var sHeaderTemplate = "<div style=\"padding:10px;padding-top:5px;\">"; var sFooterTemplate = "</div>"; if (HeaderTemplate != null) sHeaderTemplate = HeaderTemplate.Text; if (FooterTemplate != null) sFooterTemplate = FooterTemplate.Text; var sTemplate = "<div style=\"padding-bottom:2px;\" class=\"normal\">[SUBJECTLINK]</div><div style=\"padding-bottom:2px;border-bottom:solid 1px #AAA;\">by [AUTHORDISPLAYNAME]</div>"; if (Template != null) sTemplate = Template.Text; if (ForumIds == string.Empty && FilterByUserId <= 0) return; if (ForumIds.Contains(";")) ForumIds = ForumIds.Replace(";", ":"); var sb = new StringBuilder(1024); sb.Append(sHeaderTemplate); var bodyLength = -1; var bodyTrim = string.Empty; if (sTemplate.Contains("[BODY:")) { var inStart = (sTemplate.IndexOf("[BODY:", StringComparison.Ordinal) + 1) + 5; var inEnd = (sTemplate.IndexOf("]", inStart - 1, StringComparison.Ordinal) + 1) - 1; var sLength = sTemplate.Substring(inStart, inEnd - inStart); bodyLength = Convert.ToInt32(sLength); bodyTrim = "[BODY:" + bodyLength + "]"; } IDataReader dr; if (ForumIds == string.Empty && FilterByUserId > 0) { var fc = new ForumController(); var uc = new UserController(); var u = uc.DNNGetCurrentUser(PortalId, -1); ForumIds = fc.GetForumsForUser(u.UserRoles, PortalId, -1); ForumIds = ForumIds.Replace(";", ":"); dr = DataProvider.Instance().GetPostsByUser(PortalId, Rows, UserInfo.IsSuperUser, UserInfo.UserID, FilterByUserId, TopicsOnly, ForumIds); } else { dr = DataProvider.Instance().GetPosts(PortalId, ForumIds, TopicsOnly, RandomOrder, Rows, Tags, FilterByUserId); } var useFriendly = Utilities.IsRewriteLoaded(); var sHost = Utilities.GetHost(); try { var sTempTemplate = sTemplate; string lastPostDate; while (dr.Read()) { var groupName = Convert.ToString(dr["GroupName"]); var groupId = Convert.ToString(dr["ForumGroupId"]); var topicTabId = Convert.ToString(dr["TabId"]); var topicModuleId = Convert.ToString(dr["ModuleId"]); var forumName = Convert.ToString(dr["ForumName"]); var forumId = Convert.ToString(dr["ForumId"]); var subject = Convert.ToString(dr["Subject"]); var userName = Convert.ToString(dr["AuthorUserName"]); var firstName = Convert.ToString(dr["AuthorFirstName"]); var lastName = Convert.ToString(dr["AuthorLastName"]); var authorId = Convert.ToString(dr["AuthorId"]); var displayName = Convert.ToString(dr["AuthorDisplayName"]); var postDate = Convert.ToString(dr["DateCreated"]); var body = Utilities.StripHTMLTag(Convert.ToString(dr["Body"])); var topicId = Convert.ToString(dr["TopicId"]); var replyId = Convert.ToString(dr["ReplyId"]); var bodyHTML = Convert.ToString(dr["Body"]); var replyCount = Convert.ToString(dr["ReplyCount"]); var sForumUrl = dr["PrefixURL"].ToString(); var sTopicURL = dr["TopicURL"].ToString(); var sGroupPrefixURL = dr["GroupPrefixURL"].ToString(); sTempTemplate = sTempTemplate.Replace("[FORUMGROUPNAME]", groupName); sTempTemplate = sTempTemplate.Replace("[FORUMGROUPID]", groupId); sTempTemplate = sTempTemplate.Replace("[TOPICTABID]", topicTabId); sTempTemplate = sTempTemplate.Replace("[TOPICMODULEID]", topicModuleId); sTempTemplate = sTempTemplate.Replace("[FORUMNAME]", forumName); sTempTemplate = sTempTemplate.Replace("[FORUMID]", forumId); sTempTemplate = sTempTemplate.Replace("[SUBJECT]", subject); sTempTemplate = sTempTemplate.Replace("[AUTHORUSERNAME]", userName); sTempTemplate = sTempTemplate.Replace("[AUTHORFIRSTNAME]", firstName); sTempTemplate = sTempTemplate.Replace("[AUTHORLASTNAME]", lastName); sTempTemplate = sTempTemplate.Replace("[AUTHORID]", authorId); sTempTemplate = sTempTemplate.Replace("[AUTHORDISPLAYNAME]", displayName); sTempTemplate = sTempTemplate.Replace("[DATE]", Utilities.GetDate(Convert.ToDateTime(postDate), Convert.ToInt32(topicModuleId), timeOffset)); sTempTemplate = sTempTemplate.Replace("[BODY]", body); sTempTemplate = sTempTemplate.Replace("[BODYHTML]", bodyHTML); sTempTemplate = sTempTemplate.Replace("[BODYTEXT]", Utilities.StripHTMLTag(bodyHTML)); if (bodyTrim != string.Empty) { if (bodyLength > 0 & body.Length > bodyLength) sTempTemplate = sTempTemplate.Replace(bodyTrim, body.Substring(0, bodyLength) + "..."); else sTempTemplate = sTempTemplate.Replace(bodyTrim, body); } sTempTemplate = sTempTemplate.Replace("[TOPICID]", topicId); sTempTemplate = sTempTemplate.Replace("[REPLYID]", replyId); sTempTemplate = sTempTemplate.Replace("[REPLYCOUNT]", replyCount); if (TabId == -1) TabId = Convert.ToInt32(topicTabId); if (useFriendly && !(string.IsNullOrEmpty(sForumUrl)) && !(string.IsNullOrEmpty(sTopicURL))) { var ctlUtils = new ControlUtils(); sTopicURL = ctlUtils.BuildUrl(Convert.ToInt32(topicTabId), Convert.ToInt32(topicModuleId), sGroupPrefixURL, sForumUrl, Convert.ToInt32(groupId), Convert.ToInt32(forumId), Convert.ToInt32(topicId), sTopicURL, -1, -1, string.Empty, 1, Convert.ToInt32(replyId), -1); if (Convert.ToInt32(replyId) == 0) { sTempTemplate = sTempTemplate.Replace("[POSTURL]", sTopicURL); sTempTemplate = sTempTemplate.Replace("[SUBJECTLINK]", "<a href=\"" + sTopicURL + "\">" + subject + "</a>"); } else { if (!(sTopicURL.EndsWith("/"))) sTopicURL += "/"; sTopicURL += "?afc=" + replyId; sTempTemplate = sTempTemplate.Replace("[POSTURL]", sTopicURL); if (Request.IsAuthenticated) sTempTemplate = sTempTemplate.Replace("[SUBJECTLINK]", "<a href=\"" + sTopicURL + "\">" + subject + "</a>"); else sTempTemplate = sTempTemplate.Replace("[SUBJECTLINK]", "<a href=\"" + sTopicURL + "\" rel=\"nofollow\">" + subject + "</a>"); } sTempTemplate = sTempTemplate.Replace("[TOPICSURL]", sForumUrl); } else { List<string> @params; if (Convert.ToInt32(replyId) == 0) { @params = new List<string>{ ParamKeys.ViewType + "=" + Views.Topic, ParamKeys.ForumId + "=" + forumId, ParamKeys.TopicId + "=" + topicId }; if (AdditionalParams != string.Empty) @params.Add(AdditionalParams); sTempTemplate = sTempTemplate.Replace("[POSTURL]", Utilities.NavigateUrl(TabId, string.Empty, @params.ToArray())); @params = new List<string> { ParamKeys.ViewType + "=" + Views.Topic, ParamKeys.ForumId + "=" + forumId, ParamKeys.TopicId + "=" + topicId }; if (AdditionalParams != string.Empty) @params.Add(AdditionalParams); sTempTemplate = sTempTemplate.Replace("[SUBJECTLINK]", "<a href=\"" + Utilities.NavigateUrl(TabId, "", @params.ToArray()) + "\">" + subject + "</a>"); } else { @params = new List<string> { ParamKeys.ViewType + "=" + Views.Topic, ParamKeys.ForumId + "=" + forumId, ParamKeys.TopicId + "=" + topicId, ParamKeys.ContentJumpId + "=" + replyId }; if (AdditionalParams != string.Empty) @params.Add(AdditionalParams); sTempTemplate = sTempTemplate.Replace("[POSTURL]", Utilities.NavigateUrl(TabId, "", @params.ToArray())); @params = new List<string> { ParamKeys.ViewType + "=" + Views.Topic, ParamKeys.ForumId + "=" + forumId, ParamKeys.TopicId + "=" + topicId, ParamKeys.ContentJumpId + "=" + replyId }; if (AdditionalParams != string.Empty) @params.Add(AdditionalParams); sTempTemplate = sTempTemplate.Replace("[SUBJECTLINK]", "<a href=\"" + Utilities.NavigateUrl(TabId, string.Empty, @params.ToArray()) + "\">" + subject + "</a>"); } @params = new List<string> { ParamKeys.ViewType + "=" + Views.Topics, ParamKeys.ForumId + "=" + forumId }; if (AdditionalParams != string.Empty) @params.Add(AdditionalParams); sTempTemplate = sTempTemplate.Replace("[TOPICSURL]", Utilities.NavigateUrl(TabId, string.Empty, @params.ToArray())); } sTempTemplate = sTempTemplate.Replace("[FORUMURL]", Utilities.NavigateUrl(TabId)); sb.Append(sTempTemplate); } dr.Close(); var sRSSImage = "<img src=\"" + Page.ResolveUrl("~/DesktopModules/ActiveForums/images/feedicon.gif") + "\" border=\"0\" />"; var sRSSURL = Page.ResolveUrl("~/desktopmodules/activeforumswhatsnew/feeds.aspx") + "?portalId=" + PortalId + "&tabid=" + TabId.ToString() + "&moduleid=" + ModuleId.ToString(); var sRSSIconLink = "<a href=\"" + sRSSURL + "\">" + sRSSImage + "</a>"; sFooterTemplate = sFooterTemplate.Replace("[RSSICON]", sRSSImage); sFooterTemplate = sFooterTemplate.Replace("[RSSURL]", sRSSURL); sFooterTemplate = sFooterTemplate.Replace("[RSSICONLINK]", sRSSIconLink); sb.Append(sFooterTemplate); var lit = new Literal {Text = sb.ToString()}; Controls.Add(lit); } catch (Exception ex) { if (!dr.IsClosed) { dr.Close(); } sb.Append(ex.StackTrace); var lit = new Literal {Text = ex.Message}; Controls.Add(lit); } }
public static string ParseEmailTemplate(string template, string templateName, int portalID, int moduleID, int tabID, int forumID, int topicId, int replyId, string comments, Entities.Users.UserInfo user, int userId, int timeZoneOffset) { var portalSettings = (Entities.Portals.PortalSettings)(HttpContext.Current.Items["PortalSettings"]); var ms = DataCache.MainSettings(moduleID); var sOut = template; // If we have a template name, load the template into sOut if (templateName != string.Empty) { if (templateName.Contains("_Subject_")) { templateName = templateName.Replace("_Subject_" + moduleID, string.Empty); var objTemplate = GetTemplateByName(templateName, moduleID, portalID); sOut = objTemplate.Subject; } else { var objTemplate = GetTemplateByName(templateName, moduleID, portalID); sOut = objTemplate.TemplateHTML; } } // Load Subject and body from topic or reply var subject = string.Empty; var body = string.Empty; var dateCreated = Utilities.NullDate(); var authorName = string.Empty; if (topicId > 0 && replyId > 0) { var ri = new ReplyController().Reply_Get(portalID, moduleID, topicId, replyId); if (ri != null) { subject = ri.Content.Subject; body = ri.Content.Body; dateCreated = ri.Content.DateCreated; authorName = ri.Content.AuthorName; } } else { var ti = new TopicsController().Topics_Get(portalID, moduleID, topicId); if (ti != null) { subject = ti.Content.Subject; body = ti.Content.Body; dateCreated = ti.Content.DateCreated; authorName = ti.Content.AuthorName; } } body = Utilities.ManageImagePath(body, Common.Globals.AddHTTP(Common.Globals.GetDomainName(HttpContext.Current.Request))); // load the forum information var fi = new ForumController().Forums_Get(forumID, -1, false); // Load the user if needed if (user == null) { var objUsers = new Entities.Users.UserController(); var objUser = objUsers.GetUser(portalID, userId); user = objUser; } // Load the user properties string sFirstName; string sLastName; string sDisplayName; string sUsername; if (user != null) { sFirstName = user.FirstName; sLastName = user.LastName; sDisplayName = user.DisplayName; sUsername = user.Username; } else { sFirstName = string.Empty; sLastName = string.Empty; sDisplayName = string.Empty; sUsername = string.Empty; } // Build the link string link; if (string.IsNullOrEmpty(fi.PrefixURL) || !Utilities.IsRewriteLoaded()) { if (replyId == 0) { link = ms.UseShortUrls ? Common.Globals.NavigateURL(tabID, string.Empty, new[] { ParamKeys.TopicId + "=" + topicId }) : Common.Globals.NavigateURL(tabID, string.Empty, new[] { ParamKeys.ForumId + "=" + forumID, ParamKeys.ViewType + "=" + Views.Topic, ParamKeys.TopicId + "=" + topicId }); } else { link = ms.UseShortUrls ? Common.Globals.NavigateURL(tabID, string.Empty, new[] { ParamKeys.TopicId + "=" + topicId, ParamKeys.ContentJumpId + "=" + replyId }) : Common.Globals.NavigateURL(tabID, string.Empty, new[] { ParamKeys.ForumId + "=" + forumID, ParamKeys.ViewType + "=" + Views.Topic, ParamKeys.TopicId + "=" + topicId, ParamKeys.ContentJumpId + "=" + replyId }); } } else { var contentId = (replyId > 0) ? replyId : -1; link = new Data.Common().GetUrl(moduleID, -1, forumID, topicId, -1, contentId); } if (!(link.StartsWith("http"))) { if (!link.StartsWith("/")) { link = "/" + link; } if (link.IndexOf(HttpContext.Current.Request.Url.Host, StringComparison.Ordinal) == -1) { link = Common.Globals.AddHTTP(HttpContext.Current.Request.Url.Host) + link; } } // Build the forum Url var forumURL = ms.UseShortUrls ? Common.Globals.NavigateURL(tabID, string.Empty, new[] { ParamKeys.ForumId + "=" + forumID }) : Common.Globals.NavigateURL(tabID, string.Empty, new[] { ParamKeys.ForumId + "=" + forumID, ParamKeys.ViewType + "=" + Views.Topics }); // Build Moderation url var modLink = Common.Globals.NavigateURL(tabID, string.Empty, new[] { ParamKeys.ViewType + "=modtopics", ParamKeys.ForumId + "=" + forumID }); if (modLink.IndexOf(HttpContext.Current.Request.Url.Host, StringComparison.Ordinal) == -1) { modLink = Common.Globals.AddHTTP(HttpContext.Current.Request.Url.Host) + modLink; } var result = new StringBuilder(sOut); result.Replace("[DISPLAYNAME]", UserProfiles.GetDisplayName(moduleID, userId, authorName, sFirstName, sLastName, sDisplayName)); result.Replace("[USERNAME]", sUsername); result.Replace("[USERID]", userId.ToString()); result.Replace("[FORUMNAME]", fi.ForumName); result.Replace("[PORTALID]", portalID.ToString()); result.Replace("[FIRSTNAME]", sFirstName); result.Replace("[LASTNAME]", sLastName); result.Replace("[FULLNAME]", sFirstName + " " + sLastName); result.Replace("[GROUPNAME]", fi.GroupName); result.Replace("[POSTDATE]", Utilities.GetDate(dateCreated, moduleID, timeZoneOffset)); result.Replace("[COMMENTS]", comments); result.Replace("[PORTALNAME]", portalSettings.PortalName); result.Replace("[MODLINK]", "<a href=\"" + modLink + "\">" + modLink + "</a>"); result.Replace("[LINK]", "<a href=\"" + link + "\">" + link + "</a>"); result.Replace("[HYPERLINK]", "<a href=\"" + link + "\">" + link + "</a>"); result.Replace("[LINKURL]", link); result.Replace("[FORUMURL]", forumURL); result.Replace("[FORUMLINK]", "<a href=\"" + forumURL + "\">" + forumURL + "</a>"); if (user != null) { result.Replace("[SENDERUSERNAME]", user.UserID.ToString()); result.Replace("[SENDERFIRSTNAME]", user.FirstName); result.Replace("[SENDERLASTNAME]", user.LastName); result.Replace("[SENDERDISPLAYNAME]", user.DisplayName); } else { result.Replace("[SENDERUSERNAME]", string.Empty); result.Replace("[SENDERFIRSTNAME]", string.Empty); result.Replace("[SENDERLASTNAME]", string.Empty); result.Replace("[SENDERDISPLAYNAME]", string.Empty); } result.Replace("[SUBJECT]", subject); result.Replace("[BODY]", body); result.Replace("[Body]", body); return(result.ToString()); }
protected override void OnLoad(EventArgs e) { base.OnLoad(e); var timeOffset = PortalSettings.TimeZoneOffset; if (UserId > 0) { var uc = new Entities.Users.UserController(); var dnnUser = uc.GetUser(PortalId, UserId); timeOffset = dnnUser.Profile.TimeZone; if (timeOffset == 0) { timeOffset = PortalSettings.TimeZoneOffset; } } var sHeaderTemplate = "<div style=\"padding:10px;padding-top:5px;\">"; var sFooterTemplate = "</div>"; if (HeaderTemplate != null) { sHeaderTemplate = HeaderTemplate.Text; } if (FooterTemplate != null) { sFooterTemplate = FooterTemplate.Text; } var sTemplate = "<div style=\"padding-bottom:2px;\" class=\"normal\">[SUBJECTLINK]</div><div style=\"padding-bottom:2px;border-bottom:solid 1px #AAA;\">by [AUTHORDISPLAYNAME]</div>"; if (Template != null) { sTemplate = Template.Text; } if (ForumIds == string.Empty && FilterByUserId <= 0) { return; } if (ForumIds.Contains(";")) { ForumIds = ForumIds.Replace(";", ":"); } var sb = new StringBuilder(1024); sb.Append(sHeaderTemplate); var bodyLength = -1; var bodyTrim = string.Empty; if (sTemplate.Contains("[BODY:")) { var inStart = (sTemplate.IndexOf("[BODY:", StringComparison.Ordinal) + 1) + 5; var inEnd = (sTemplate.IndexOf("]", inStart - 1, StringComparison.Ordinal) + 1) - 1; var sLength = sTemplate.Substring(inStart, inEnd - inStart); bodyLength = Convert.ToInt32(sLength); bodyTrim = "[BODY:" + bodyLength + "]"; } IDataReader dr; if (ForumIds == string.Empty && FilterByUserId > 0) { var fc = new ForumController(); var uc = new UserController(); var u = uc.DNNGetCurrentUser(PortalId, -1); ForumIds = fc.GetForumsForUser(u.UserRoles, PortalId, -1); ForumIds = ForumIds.Replace(";", ":"); dr = DataProvider.Instance().GetPostsByUser(PortalId, Rows, UserInfo.IsSuperUser, UserInfo.UserID, FilterByUserId, TopicsOnly, ForumIds); } else { dr = DataProvider.Instance().GetPosts(PortalId, ForumIds, TopicsOnly, RandomOrder, Rows, Tags, FilterByUserId); } var useFriendly = Utilities.IsRewriteLoaded(); var sHost = Utilities.GetHost(); try { var sTempTemplate = sTemplate; string lastPostDate; while (dr.Read()) { var groupName = Convert.ToString(dr["GroupName"]); var groupId = Convert.ToString(dr["ForumGroupId"]); var topicTabId = Convert.ToString(dr["TabId"]); var topicModuleId = Convert.ToString(dr["ModuleId"]); var forumName = Convert.ToString(dr["ForumName"]); var forumId = Convert.ToString(dr["ForumId"]); var subject = Convert.ToString(dr["Subject"]); var userName = Convert.ToString(dr["AuthorUserName"]); var firstName = Convert.ToString(dr["AuthorFirstName"]); var lastName = Convert.ToString(dr["AuthorLastName"]); var authorId = Convert.ToString(dr["AuthorId"]); var displayName = Convert.ToString(dr["AuthorDisplayName"]); var postDate = Convert.ToString(dr["DateCreated"]); var body = Utilities.StripHTMLTag(Convert.ToString(dr["Body"])); var topicId = Convert.ToString(dr["TopicId"]); var replyId = Convert.ToString(dr["ReplyId"]); var bodyHTML = Convert.ToString(dr["Body"]); var replyCount = Convert.ToString(dr["ReplyCount"]); var sForumUrl = dr["PrefixURL"].ToString(); var sTopicURL = dr["TopicURL"].ToString(); var sGroupPrefixURL = dr["GroupPrefixURL"].ToString(); sTempTemplate = sTempTemplate.Replace("[FORUMGROUPNAME]", groupName); sTempTemplate = sTempTemplate.Replace("[FORUMGROUPID]", groupId); sTempTemplate = sTempTemplate.Replace("[TOPICTABID]", topicTabId); sTempTemplate = sTempTemplate.Replace("[TOPICMODULEID]", topicModuleId); sTempTemplate = sTempTemplate.Replace("[FORUMNAME]", forumName); sTempTemplate = sTempTemplate.Replace("[FORUMID]", forumId); sTempTemplate = sTempTemplate.Replace("[SUBJECT]", subject); sTempTemplate = sTempTemplate.Replace("[AUTHORUSERNAME]", userName); sTempTemplate = sTempTemplate.Replace("[AUTHORFIRSTNAME]", firstName); sTempTemplate = sTempTemplate.Replace("[AUTHORLASTNAME]", lastName); sTempTemplate = sTempTemplate.Replace("[AUTHORID]", authorId); sTempTemplate = sTempTemplate.Replace("[AUTHORDISPLAYNAME]", displayName); sTempTemplate = sTempTemplate.Replace("[DATE]", Utilities.GetDate(Convert.ToDateTime(postDate), Convert.ToInt32(topicModuleId), timeOffset)); sTempTemplate = sTempTemplate.Replace("[BODY]", body); sTempTemplate = sTempTemplate.Replace("[BODYHTML]", bodyHTML); sTempTemplate = sTempTemplate.Replace("[BODYTEXT]", Utilities.StripHTMLTag(bodyHTML)); if (bodyTrim != string.Empty) { if (bodyLength > 0 & body.Length > bodyLength) { sTempTemplate = sTempTemplate.Replace(bodyTrim, body.Substring(0, bodyLength) + "..."); } else { sTempTemplate = sTempTemplate.Replace(bodyTrim, body); } } sTempTemplate = sTempTemplate.Replace("[TOPICID]", topicId); sTempTemplate = sTempTemplate.Replace("[REPLYID]", replyId); sTempTemplate = sTempTemplate.Replace("[REPLYCOUNT]", replyCount); if (TabId == -1) { TabId = Convert.ToInt32(topicTabId); } if (useFriendly && !(string.IsNullOrEmpty(sForumUrl)) && !(string.IsNullOrEmpty(sTopicURL))) { var ctlUtils = new ControlUtils(); sTopicURL = ctlUtils.BuildUrl(Convert.ToInt32(topicTabId), Convert.ToInt32(topicModuleId), sGroupPrefixURL, sForumUrl, Convert.ToInt32(groupId), Convert.ToInt32(forumId), Convert.ToInt32(topicId), sTopicURL, -1, -1, string.Empty, 1, -1); if (Convert.ToInt32(replyId) == 0) { sTempTemplate = sTempTemplate.Replace("[POSTURL]", sTopicURL); sTempTemplate = sTempTemplate.Replace("[SUBJECTLINK]", "<a href=\"" + sTopicURL + "\">" + subject + "</a>"); } else { if (!(sTopicURL.EndsWith("/"))) { sTopicURL += "/"; } sTopicURL += "?afc=" + replyId; sTempTemplate = sTempTemplate.Replace("[POSTURL]", sTopicURL); if (Request.IsAuthenticated) { sTempTemplate = sTempTemplate.Replace("[SUBJECTLINK]", "<a href=\"" + sTopicURL + "\">" + subject + "</a>"); } else { sTempTemplate = sTempTemplate.Replace("[SUBJECTLINK]", "<a href=\"" + sTopicURL + "\" rel=\"nofollow\">" + subject + "</a>"); } } sTempTemplate = sTempTemplate.Replace("[TOPICSURL]", sForumUrl); } else { List <string> @params; if (Convert.ToInt32(replyId) == 0) { @params = new List <string> { ParamKeys.ViewType + "=" + Views.Topic, ParamKeys.ForumId + "=" + forumId, ParamKeys.TopicId + "=" + topicId }; if (AdditionalParams != string.Empty) { @params.Add(AdditionalParams); } sTempTemplate = sTempTemplate.Replace("[POSTURL]", Utilities.NavigateUrl(TabId, string.Empty, @params.ToArray())); @params = new List <string> { ParamKeys.ViewType + "=" + Views.Topic, ParamKeys.ForumId + "=" + forumId, ParamKeys.TopicId + "=" + topicId }; if (AdditionalParams != string.Empty) { @params.Add(AdditionalParams); } sTempTemplate = sTempTemplate.Replace("[SUBJECTLINK]", "<a href=\"" + Utilities.NavigateUrl(TabId, "", @params.ToArray()) + "\">" + subject + "</a>"); } else { @params = new List <string> { ParamKeys.ViewType + "=" + Views.Topic, ParamKeys.ForumId + "=" + forumId, ParamKeys.TopicId + "=" + topicId, ParamKeys.ContentJumpId + "=" + replyId }; if (AdditionalParams != string.Empty) { @params.Add(AdditionalParams); } sTempTemplate = sTempTemplate.Replace("[POSTURL]", Utilities.NavigateUrl(TabId, "", @params.ToArray())); @params = new List <string> { ParamKeys.ViewType + "=" + Views.Topic, ParamKeys.ForumId + "=" + forumId, ParamKeys.TopicId + "=" + topicId, ParamKeys.ContentJumpId + "=" + replyId }; if (AdditionalParams != string.Empty) { @params.Add(AdditionalParams); } sTempTemplate = sTempTemplate.Replace("[SUBJECTLINK]", "<a href=\"" + Utilities.NavigateUrl(TabId, string.Empty, @params.ToArray()) + "\">" + subject + "</a>"); } @params = new List <string> { ParamKeys.ViewType + "=" + Views.Topics, ParamKeys.ForumId + "=" + forumId }; if (AdditionalParams != string.Empty) { @params.Add(AdditionalParams); } sTempTemplate = sTempTemplate.Replace("[TOPICSURL]", Utilities.NavigateUrl(TabId, string.Empty, @params.ToArray())); } sTempTemplate = sTempTemplate.Replace("[FORUMURL]", Utilities.NavigateUrl(TabId)); sb.Append(sTempTemplate); } dr.Close(); var sRSSImage = "<img src=\"" + Page.ResolveUrl("~/DesktopModules/ActiveForums/images/feedicon.gif") + "\" border=\"0\" />"; var sRSSURL = Page.ResolveUrl("~/desktopmodules/activeforumswhatsnew/feeds.aspx") + "?portalId=" + PortalId + "&tabid=" + TabId.ToString() + "&moduleid=" + ModuleId.ToString(); var sRSSIconLink = "<a href=\"" + sRSSURL + "\">" + sRSSImage + "</a>"; sFooterTemplate = sFooterTemplate.Replace("[RSSICON]", sRSSImage); sFooterTemplate = sFooterTemplate.Replace("[RSSURL]", sRSSURL); sFooterTemplate = sFooterTemplate.Replace("[RSSICONLINK]", sRSSIconLink); sb.Append(sFooterTemplate); var lit = new Literal { Text = sb.ToString() }; Controls.Add(lit); } catch (Exception ex) { if (!dr.IsClosed) { dr.Close(); } sb.Append(ex.StackTrace); var lit = new Literal { Text = ex.Message }; Controls.Add(lit); } }
public static string GetDisplayName(int moduleId, bool linkProfile, bool isMod, bool isAdmin, int userId, string username, string firstName = "", string lastName = "", string displayName = "", string profileLinkClass = "af-profile-link", string profileNameClass = "af-profile-name") { var portalSettings = HttpContext.Current.Items["PortalSettings"] as PortalSettings; if (portalSettings == null) { return(null); } var mainSettings = DataCache.MainSettings(moduleId); var outputTemplate = string.IsNullOrWhiteSpace(profileLinkClass) ? "{0}" : "<span class='" + profileNameClass + "'>{0}</span>"; if (linkProfile && userId > 0) { var profileVisibility = mainSettings.ProfileVisibility; switch (profileVisibility) { case ProfileVisibilities.Disabled: linkProfile = false; break; case ProfileVisibilities.Everyone: // Nothing to do in this case break; case ProfileVisibilities.RegisteredUsers: linkProfile = HttpContext.Current.Request.IsAuthenticated; break; case ProfileVisibilities.Moderators: linkProfile = isMod || isAdmin; break; case ProfileVisibilities.Admins: linkProfile = isAdmin; break; } if (linkProfile) { outputTemplate = "<a href='" + Common.Globals.NavigateURL(portalSettings.UserTabId, string.Empty, new [] { "userid=" + userId }) + "' class='" + profileLinkClass + "'>{0}</a>"; } } var displayMode = mainSettings.UserNameDisplay + string.Empty; string outputName = null; UserInfo user; switch (displayMode.ToUpperInvariant()) { case "DISPLAYNAME": if (string.IsNullOrWhiteSpace(username) && userId > 0) { user = new Entities.Users.UserController().GetUser(portalSettings.PortalId, userId); displayName = (user != null) ? user.DisplayName : null; } outputName = displayName; break; case "USERNAME": if (string.IsNullOrWhiteSpace(username) && userId > 0) { user = new Entities.Users.UserController().GetUser(portalSettings.PortalId, userId); username = (user != null) ? user.Username : null; } outputName = username; break; case "FIRSTNAME": if (string.IsNullOrWhiteSpace(firstName) && userId > 0) { user = new Entities.Users.UserController().GetUser(portalSettings.PortalId, userId); firstName = (user != null) ? user.FirstName : null; } outputName = firstName; break; case "LASTNAME": if (string.IsNullOrWhiteSpace(lastName) && userId > 0) { user = new Entities.Users.UserController().GetUser(portalSettings.PortalId, userId); lastName = (user != null) ? user.LastName : null; } outputName = lastName; break; case "FULLNAME": if (string.IsNullOrWhiteSpace(firstName) && string.IsNullOrWhiteSpace(lastName) && userId > 0) { user = new Entities.Users.UserController().GetUser(portalSettings.PortalId, userId); firstName = (user != null) ? Utilities.SafeTrim(user.FirstName) : null; lastName = (user != null) ? Utilities.SafeTrim(user.LastName) : null; } outputName = firstName + " " + lastName; break; } outputName = Utilities.SafeTrim(outputName); if (string.IsNullOrWhiteSpace(outputName)) { outputName = userId > 0 ? "Deleted User" : "Anonymous"; } outputName = HttpUtility.HtmlEncode(outputName); return(string.Format(outputTemplate, outputName)); }
public static string GetDisplayName(int moduleId, bool linkProfile, bool isMod, bool isAdmin, int userId, string username, string firstName = "", string lastName = "", string displayName = "", string profileLinkClass = "af-profile-link", string profileNameClass = "af-profile-name") { var portalSettings = HttpContext.Current.Items["PortalSettings"] as PortalSettings; if (portalSettings == null) return null; var mainSettings = DataCache.MainSettings(moduleId); var outputTemplate = string.IsNullOrWhiteSpace(profileLinkClass) ? "{0}" : "<span class='" + profileNameClass + "'>{0}</span>"; if(linkProfile && userId > 0) { var profileVisibility = mainSettings.ProfileVisibility; switch(profileVisibility) { case ProfileVisibilities.Disabled: linkProfile = false; break; case ProfileVisibilities.Everyone: // Nothing to do in this case break; case ProfileVisibilities.RegisteredUsers: linkProfile = HttpContext.Current.Request.IsAuthenticated; break; case ProfileVisibilities.Moderators: linkProfile = isMod || isAdmin; break; case ProfileVisibilities.Admins: linkProfile = isAdmin; break; } if(linkProfile) outputTemplate = "<a href='" + Common.Globals.NavigateURL(portalSettings.UserTabId, string.Empty, new [] { "userid=" + userId }) + "' class='" + profileLinkClass + "'>{0}</a>"; } var displayMode = mainSettings.UserNameDisplay + string.Empty; string outputName = null; UserInfo user; switch (displayMode.ToUpperInvariant()) { case "DISPLAYNAME": if(string.IsNullOrWhiteSpace(username) && userId > 0) { user = new Entities.Users.UserController().GetUser(portalSettings.PortalId, userId); displayName = (user != null) ? user.DisplayName : null; } outputName = displayName; break; case "USERNAME": if (string.IsNullOrWhiteSpace(username) && userId > 0) { user = new Entities.Users.UserController().GetUser(portalSettings.PortalId, userId); username = (user != null) ? user.Username : null; } outputName = username; break; case "FIRSTNAME": if (string.IsNullOrWhiteSpace(firstName) && userId > 0) { user = new Entities.Users.UserController().GetUser(portalSettings.PortalId, userId); firstName = (user != null) ? user.FirstName : null; } outputName = firstName; break; case "LASTNAME": if (string.IsNullOrWhiteSpace(lastName) && userId > 0) { user = new Entities.Users.UserController().GetUser(portalSettings.PortalId, userId); lastName = (user != null) ? user.LastName : null; } outputName = lastName; break; case "FULLNAME": if (string.IsNullOrWhiteSpace(firstName) && string.IsNullOrWhiteSpace(lastName) && userId > 0) { user = new Entities.Users.UserController().GetUser(portalSettings.PortalId, userId); firstName = (user != null) ? Utilities.SafeTrim(user.FirstName) : null; lastName = (user != null) ? Utilities.SafeTrim(user.LastName) : null; } outputName = firstName + " " + lastName; break; } outputName = Utilities.SafeTrim(outputName); if (string.IsNullOrWhiteSpace(outputName)) outputName = userId > 0 ? "Deleted User" : "Anonymous"; outputName = HttpUtility.HtmlEncode(outputName); return string.Format(outputTemplate, outputName); }
public static string ParseEmailTemplate(string template, string templateName, int portalID, int moduleID, int tabID, int forumID, int topicId, int replyId, string comments, Entities.Users.UserInfo user, int userId, int timeZoneOffset) { var portalSettings = (Entities.Portals.PortalSettings)(HttpContext.Current.Items["PortalSettings"]); var ms = DataCache.MainSettings(moduleID); var sOut = template; // If we have a template name, load the template into sOut if (templateName != string.Empty) { if (templateName.Contains("_Subject_")) { templateName = templateName.Replace("_Subject_" + moduleID, string.Empty); var objTemplate = GetTemplateByName(templateName, moduleID, portalID); sOut = objTemplate.Subject; } else { var objTemplate = GetTemplateByName(templateName, moduleID, portalID); sOut = objTemplate.TemplateHTML; } } // Load Subject and body from topic or reply var subject = string.Empty; var body = string.Empty; var dateCreated = Utilities.NullDate(); var authorName = string.Empty; if (topicId > 0 && replyId > 0) { var ri = new ReplyController().Reply_Get(portalID, moduleID, topicId, replyId); if (ri != null) { subject = ri.Content.Subject; body = ri.Content.Body; dateCreated = ri.Content.DateCreated; authorName = ri.Content.AuthorName; } } else { var ti = new TopicsController().Topics_Get(portalID, moduleID, topicId); if (ti != null) { subject = ti.Content.Subject; body = ti.Content.Body; dateCreated = ti.Content.DateCreated; authorName = ti.Content.AuthorName; } } body = Utilities.ManageImagePath(body, Common.Globals.AddHTTP(Common.Globals.GetDomainName(HttpContext.Current.Request))); // load the forum information var fi = new ForumController().Forums_Get(forumID, -1, false); // Load the user if needed if (user == null) { var objUsers = new Entities.Users.UserController(); var objUser = objUsers.GetUser(portalID, userId); user = objUser; } // Load the user properties string sFirstName; string sLastName; string sDisplayName; string sUsername; if (user != null) { sFirstName = user.FirstName; sLastName = user.LastName; sDisplayName = user.DisplayName; sUsername = user.Username; } else { sFirstName = string.Empty; sLastName = string.Empty; sDisplayName = string.Empty; sUsername = string.Empty; } // Build the link string link; if (string.IsNullOrEmpty(fi.PrefixURL) || !Utilities.IsRewriteLoaded()) { if (replyId == 0) link = ms.UseShortUrls ? Common.Globals.NavigateURL(tabID, string.Empty, new[] { ParamKeys.TopicId + "=" + topicId }) : Common.Globals.NavigateURL(tabID, string.Empty, new[] { ParamKeys.ForumId + "=" + forumID, ParamKeys.ViewType + "=" + Views.Topic, ParamKeys.TopicId + "=" + topicId }); else link = ms.UseShortUrls ? Common.Globals.NavigateURL(tabID, string.Empty, new[] { ParamKeys.TopicId + "=" + topicId, ParamKeys.ContentJumpId + "=" + replyId }) : Common.Globals.NavigateURL(tabID, string.Empty, new[] { ParamKeys.ForumId + "=" + forumID, ParamKeys.ViewType + "=" + Views.Topic, ParamKeys.TopicId + "=" + topicId, ParamKeys.ContentJumpId + "=" + replyId }); } else { var contentId = (replyId > 0) ? replyId : -1; link = new Data.Common().GetUrl(moduleID, -1, forumID, topicId, -1, contentId); } if (!(link.StartsWith("http"))) { if (!link.StartsWith("/")) link = "/" + link; if (link.IndexOf(HttpContext.Current.Request.Url.Host, StringComparison.Ordinal) == -1) link = Common.Globals.AddHTTP(HttpContext.Current.Request.Url.Host) + link; } // Build the forum Url var forumURL = ms.UseShortUrls ? Common.Globals.NavigateURL(tabID, string.Empty, new[] { ParamKeys.ForumId + "=" + forumID }) : Common.Globals.NavigateURL(tabID, string.Empty, new[] { ParamKeys.ForumId + "=" + forumID, ParamKeys.ViewType + "=" + Views.Topics }); // Build Moderation url var modLink = Common.Globals.NavigateURL(tabID, string.Empty, new[] {ParamKeys.ViewType + "=modtopics", ParamKeys.ForumId + "=" + forumID}); if (modLink.IndexOf(HttpContext.Current.Request.Url.Host, StringComparison.Ordinal) == -1) modLink = Common.Globals.AddHTTP(HttpContext.Current.Request.Url.Host) + modLink; var result = new StringBuilder(sOut); result.Replace("[DISPLAYNAME]", UserProfiles.GetDisplayName(moduleID, userId, authorName, sFirstName, sLastName, sDisplayName)); result.Replace("[USERNAME]", sUsername); result.Replace("[USERID]", userId.ToString()); result.Replace("[FORUMNAME]", fi.ForumName); result.Replace("[PORTALID]", portalID.ToString()); result.Replace("[FIRSTNAME]", sFirstName); result.Replace("[LASTNAME]", sLastName); result.Replace("[FULLNAME]", sFirstName + " " + sLastName); result.Replace("[GROUPNAME]", fi.GroupName); result.Replace("[POSTDATE]", Utilities.GetDate(dateCreated, moduleID, timeZoneOffset)); result.Replace("[COMMENTS]", comments); result.Replace("[PORTALNAME]", portalSettings.PortalName); result.Replace("[MODLINK]", "<a href=\"" + modLink + "\">" + modLink + "</a>"); result.Replace("[LINK]", "<a href=\"" + link + "\">" + link + "</a>"); result.Replace("[HYPERLINK]", "<a href=\"" + link + "\">" + link + "</a>"); result.Replace("[LINKURL]", link); result.Replace("[FORUMURL]", forumURL); result.Replace("[FORUMLINK]", "<a href=\"" + forumURL + "\">" + forumURL + "</a>"); // Introduced for Active Forum Email Connector plug-in Starts if (result.ToString().Contains("[EMAILCONNECTORITEMID]")) { // This Try with empty catch is introduced here because this code section is for Email Connector functionality only and this section should not // cause any issue to Active Forums functionality in case it does not run successfully. try { long itemID = GetEmailInfo(portalID, moduleID, forumID, topicId, HttpContext.Current.Request.UserHostAddress); result.Replace("[EMAILCONNECTORITEMID]", itemID.ToString()); } catch { } } // Introduced for Active Forum Email Connector plug-in Ends if (user != null) { result.Replace("[SENDERUSERNAME]", user.UserID.ToString()); result.Replace("[SENDERFIRSTNAME]", user.FirstName); result.Replace("[SENDERLASTNAME]", user.LastName); result.Replace("[SENDERDISPLAYNAME]", user.DisplayName); } else { result.Replace("[SENDERUSERNAME]", string.Empty); result.Replace("[SENDERFIRSTNAME]", string.Empty); result.Replace("[SENDERLASTNAME]", string.Empty); result.Replace("[SENDERDISPLAYNAME]", string.Empty); } result.Replace("[SUBJECT]", subject); result.Replace("[BODY]", body); result.Replace("[Body]", body); return result.ToString(); }
public void SendEmailToModerators(int TemplateId, int PortalId, int ForumId, int TopicId, int ReplyId, int ModuleID, int TabID, string Comments, DotNetNuke.Entities.Users.UserInfo User) { var _portalSettings = (Entities.Portals.PortalSettings)(HttpContext.Current.Items["PortalSettings"]); SettingsInfo MainSettings = DataCache.MainSettings(ModuleID); var fc = new ForumController(); Forum fi = fc.Forums_Get(ForumId, -1, false, true); if (fi == null) { return; } var subs = new List<SubscriptionInfo>(); var rc = new Security.Roles.RoleController(); var uc = new Entities.Users.UserController(); SubscriptionInfo si; string modApprove = fi.Security.ModApprove; string[] modRoles = modApprove.Split('|')[0].Split(';'); if (modRoles != null) { foreach (string r in modRoles) { if (! (string.IsNullOrEmpty(r))) { int rid = Convert.ToInt32(r); string rName = rc.GetRole(rid, PortalId).RoleName; foreach (Entities.Users.UserRoleInfo usr in rc.GetUserRolesByRoleName(PortalId, rName)) { var ui = uc.GetUser(PortalId, usr.UserID); si = new SubscriptionInfo { UserId = ui.UserID, DisplayName = ui.DisplayName, Email = ui.Email, FirstName = ui.FirstName, LastName = ui.LastName }; if (! (subs.Contains(si))) { subs.Add(si); } } } } } if (subs.Count <= 0) { return; } string Subject; string BodyText; string BodyHTML; string sTemplate = string.Empty; var tc = new TemplateController(); TemplateInfo ti = tc.Template_Get(TemplateId, PortalId, ModuleID); Subject = TemplateUtils.ParseEmailTemplate(ti.Subject, string.Empty, PortalId, ModuleID, TabID, ForumId, TopicId, ReplyId, _portalSettings.TimeZoneOffset); BodyText = TemplateUtils.ParseEmailTemplate(ti.TemplateText, string.Empty, PortalId, ModuleID, TabID, ForumId, TopicId, ReplyId, Comments, User, -1, _portalSettings.TimeZoneOffset); BodyHTML = TemplateUtils.ParseEmailTemplate(ti.TemplateHTML, string.Empty, PortalId, ModuleID, TabID, ForumId, TopicId, ReplyId, Comments, User, -1, _portalSettings.TimeZoneOffset); string sFrom; sFrom = fi.EmailAddress != string.Empty ? fi.EmailAddress : _portalSettings.Email; var oEmail = new Email { Recipients = subs, Subject = Subject, From = sFrom, BodyText = BodyText, BodyHTML = BodyHTML, SmtpServer = Convert.ToString(_portalSettings.HostSettings["SMTPServer"]), SmtpUserName = Convert.ToString(_portalSettings.HostSettings["SMTPUsername"]), SmtpPassword = Convert.ToString(_portalSettings.HostSettings["SMTPPassword"]), SmtpAuthentication = Convert.ToString(_portalSettings.HostSettings["SMTPAuthentication"]) }; //#if SKU_ENTERPRISE oEmail.UseQueue = MainSettings.MailQueue; //#endif var objThread = new System.Threading.Thread(oEmail.Send); objThread.Start(); }