Example #1
0
        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));
        }
Example #3
0
        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;
        }
Example #5
0
        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" }));
        }
Example #7
0
        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;
        }
Example #8
0
        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);
 }
Example #10
0
        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();
        }
Example #11
0
		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" });
        }
Example #13
0
        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);
            }
        }
Example #14
0
        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());
        }
Example #15
0
        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);
            }
        }
Example #16
0
        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));
        }
Example #17
0
	    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();
        }
Example #19
0
        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();
        }