Пример #1
0
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);

            string sTemp = string.Empty;

            //pt = New Forums.Utils.TimeCalcItem("ForumDisplay")
            if (ControlConfig != null)
            {
                object obj = DataCache.CacheRetrieve(ControlConfig.InstanceId + "aftb");
                if (obj == null)
                {
                    sTemp = ParseTemplate();
                }
                else
                {
                    sTemp = Convert.ToString(obj);
                }
                sTemp = Utilities.LocalizeControl(sTemp);
                if (!(sTemp.Contains(Globals.ControlRegisterAFTag)))
                {
                    sTemp = Globals.ControlRegisterAFTag + sTemp;
                }
                Control ctl = Page.ParseControl(sTemp);
                LinkControls(ctl.Controls);
                this.Controls.Add(ctl);
            }
        }
Пример #2
0
        // KR - added caching
        public string CheckForumIdsForView(string ForumIds, string UserRoles)
        {
            string    cacheKey = string.Format("AF-Perm-{0}", ForumIds);
            string    sSQL     = "SELECT f.ForumId, ISNULL(CanView,'') as CanView from " + dbPrefix + "Permissions as P INNER JOIN " + dbPrefix + "Forums as f on f.PermissionsID = P.PermissionsId  INNER JOIN " + dbPrefix + "Functions_Split('" + ForumIds + "',':') as ids on ids.id = f.ForumId";
            string    sForums  = string.Empty;
            DataTable dt       = null;

            object data = DataCache.CacheRetrieve(cacheKey);

            if (data != null)
            {
                dt = (DataTable)data;
            }
            else
            {
                dt = DotNetNuke.Common.Globals.ConvertDataReaderToDataTable(SqlHelper.ExecuteReader(_connectionString, CommandType.Text, sSQL));
                DataCache.CacheStore(cacheKey, dt);
            }

            foreach (DataRow row in dt.Rows)
            {
                string canView = row["CanView"].ToString();
                if (Permissions.HasPerm(canView, UserRoles))
                {
                    sForums += row["ForumId"].ToString() + ":";
                }
            }

            return(sForums);
        }
Пример #3
0
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);

            ambtnSubmit.Click += new System.EventHandler(ambtnSubmit_Click);

            InstanceId = ControlConfig.InstanceId;
            SiteId     = ControlConfig.SiteId;
            ForumController fc = new ForumController();

            if (ForumInfo == null)
            {
                ForumInfo = fc.Forums_Get(SiteId, InstanceId, ForumId, this.UserId, true, false, TopicId);
            }

            SettingsInfo MainSettings = DataCache.MainSettings(ControlConfig.InstanceId);
            string       sTemp        = string.Empty;

            if (ControlConfig != null)
            {
                object obj = DataCache.CacheRetrieve(InstanceId + "qr");
                if (obj == null)
                {
                    sTemp = ParseTemplate();
                }
                else
                {
                    sTemp = Convert.ToString(obj);
                }
                sTemp = Utilities.LocalizeControl(sTemp);
                string SubscribedChecked = string.Empty;
                if (ControlConfig.User.PrefTopicSubscribe || Subscriptions.IsSubscribed(SiteId, InstanceId, ForumId, TopicId, SubscriptionTypes.Instant, this.UserId))
                {
                    SubscribedChecked = " checked=true";
                }
                sTemp = sTemp.Replace("[AF:CONTROL:SUBSCRIBECHECK]", "<input type=\"checkbox\" id=\"chkSubscribe\" name=\"chkSubscribe\" value=\"1\" " + SubscribedChecked + "\" />");
                //Security
                sTemp = sTemp.Replace("[CREATEROLES]", "1;");
                sTemp = sTemp.Replace("[USERROLES]", ForumUser.UserRoles);
                sTemp = sTemp.Replace("[THEMEPATH]", ThemePath);
                sTemp = sTemp.Replace("[SUBJECT]", Subject);
                sTemp = sTemp.Replace("[REPLYROLES]", ForumInfo.Security.Reply);
                if (!HttpContext.Current.Request.IsAuthenticated)
                {
                    sTemp = "<%@ Register TagPrefix=\"dnn\" Assembly=\"DotNetNuke\" Namespace=\"DotNetNuke.UI.WebControls\"%>" + sTemp;
                }
                if (!(sTemp.Contains(Globals.ControlRegisterAFTag)))
                {
                    sTemp = Globals.ControlRegisterAFTag + sTemp;
                }
                Control ctl = Page.ParseControl(sTemp);
                LinkControls(ctl.Controls);
                this.Controls.Add(ctl);
            }
        }
Пример #4
0
        //Dim sb As New StringBuilder
        //Dim fl As New ForumCollection
        //Dim db As New Data.Forums
        //    fl = db.Forums_List(PortalId, ModuleId, UserId, String.Empty)

        //    For Each f As Forum In fl
        //        sb.Append(f.ForumName)
        //        sb.Append("<br />")
        //    Next
        //    writer.Write(sb.ToString)
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);

            string sTemp;
            //pt = New Forums.Utils.TimeCalcItem("ForumDisplay")

            object obj = DataCache.CacheRetrieve(ModuleId + ForumGroupId + "fvt");

            sTemp = obj == null?ParseTemplate() : Convert.ToString(obj);

            sTemp = Utilities.LocalizeControl(sTemp);
            if (!(sTemp.Contains(Globals.ControlRegisterAFTag)))
            {
                sTemp = Globals.ControlRegisterAFTag + sTemp;
            }
            Control ctl = Page.ParseControl(sTemp);

            LinkControls(ctl.Controls);
            Controls.Add(ctl);
        }
Пример #5
0
        public Permissions GetForumPermissions(int forumId)
        {
            var cacheKey = string.Format("aftfp:{0}", forumId);

            var result = DataCache.CacheRetrieve(cacheKey) as Permissions;

            if (result == null)
            {
                using (var ctx = DataContext.Instance())
                {
                    result = ctx.ExecuteSingleOrDefault <Permissions>(CommandType.StoredProcedure, "{databaseOwner}{objectQualifier}activeforumstapatalk_Forum_Permissions", forumId);
                }

                if (result != null)
                {
                    DataCache.CacheStore(cacheKey, result, DateTime.Now.AddMinutes(5));
                }
            }

            return(result);
        }
Пример #6
0
        protected override void Render(HtmlTextWriter writer)
        {
            if (RequestTabID == DefaultTabID || RequestModuleID == DefaultModuleID || !Settings.RSSEnabled)
            {
                return;
            }

            // Attempt to load from cache if it's enabled
            var rss = (Settings.RSSCacheTimeout > 0) ? DataCache.CacheRetrieve(CacheKey) as string : null;

            // Build the RSS if needed
            rss = rss ?? BuildRSS();

            // Save the rss to cache if it's enabled
            if (Settings.RSSCacheTimeout > 0)
            {
                DataCache.CacheStore(CacheKey, rss);
            }

            // Render the output
            writer.Write(rss);
            base.Render(writer);
        }
Пример #7
0
        public ForumCollection Forums_List(int PortalId, int ModuleId)
        {
            ForumCollection f   = new ForumCollection();
            object          obj = DataCache.CacheRetrieve(string.Format(CacheKeys.ForumList, ModuleId));

            if (obj != null)
            {
                f = (ForumCollection)obj;
            }
            else
            {
                using (IDataReader dr = SqlHelper.ExecuteReader(_connectionString, dbPrefix + "ForumsList", PortalId, ModuleId))
                {
                    Forum          fi = null;
                    ForumGroupInfo gi = null;
                    while (dr.Read())
                    {
                        fi               = new Forum();
                        gi               = new ForumGroupInfo();
                        fi.ModuleId      = int.Parse(dr["ModuleId"].ToString());
                        fi.ForumID       = Convert.ToInt32(dr["ForumId"].ToString());
                        fi.Active        = bool.Parse(dr["Active"].ToString());
                        fi.ForumDesc     = dr["ForumDesc"].ToString();
                        fi.ForumGroupId  = int.Parse(dr["ForumGroupId"].ToString());
                        fi.ForumID       = int.Parse(dr["ForumId"].ToString());
                        fi.ForumName     = dr["ForumName"].ToString();
                        fi.GroupName     = dr["GroupName"].ToString();
                        fi.Hidden        = bool.Parse(dr["Hidden"].ToString());
                        fi.ParentForumId = Convert.ToInt32(dr["ParentForumId"].ToString());
                        DateTime postTime;
                        if (!(DateTime.TryParse(dr["LastPostDate"].ToString(), out postTime)))
                        {
                            fi.LastPostDateTime = new DateTime();
                        }
                        else
                        {
                            fi.LastPostDateTime = postTime;
                        }

                        fi.LastTopicId         = int.Parse(dr["LastTopicId"].ToString());
                        fi.LastReplyId         = int.Parse(dr["LastReplyId"].ToString());
                        fi.LastPostSubject     = dr["LastPostSubject"].ToString();
                        fi.LastPostDisplayName = dr["LastPostAuthorName"].ToString();
                        fi.LastPostUserID      = int.Parse(dr["LastPostAuthorId"].ToString());
                        fi.LastPostUserName    = fi.LastPostDisplayName;
                        fi.LastRead            = DateTime.Parse(dr["LastRead"].ToString());
                        gi.Active       = bool.Parse(dr["GroupActive"].ToString());
                        gi.Hidden       = bool.Parse(dr["GroupHidden"].ToString());
                        gi.GroupName    = fi.GroupName;
                        gi.ForumGroupId = fi.ForumGroupId;
                        gi.PrefixURL    = dr["GroupPrefixURL"].ToString();
                        //gi.SEO = dr("GroupSEO").ToString
                        fi.ForumGroup          = gi;
                        fi.Security.Announce   = dr["CanAnnounce"].ToString();
                        fi.Security.Attach     = dr["CanAttach"].ToString();
                        fi.Security.Create     = dr["CanCreate"].ToString();
                        fi.Security.Delete     = dr["CanDelete"].ToString();
                        fi.Security.Edit       = dr["CanEdit"].ToString();
                        fi.Security.Lock       = dr["CanLock"].ToString();
                        fi.Security.ModApprove = dr["CanModApprove"].ToString();
                        fi.Security.ModDelete  = dr["CanModDelete"].ToString();
                        fi.Security.ModEdit    = dr["CanModEdit"].ToString();
                        fi.Security.ModLock    = dr["CanModLock"].ToString();
                        fi.Security.ModMove    = dr["CanModMove"].ToString();
                        fi.Security.ModPin     = dr["CanModPin"].ToString();
                        fi.Security.ModSplit   = dr["CanModSplit"].ToString();
                        fi.Security.ModUser    = dr["CanModUser"].ToString();
                        fi.Security.Pin        = dr["CanPin"].ToString();
                        fi.Security.Poll       = dr["CanPoll"].ToString();
                        fi.Security.Block      = dr["CanBlock"].ToString();
                        fi.Security.Read       = dr["CanRead"].ToString();
                        fi.Security.Reply      = dr["CanReply"].ToString();
                        fi.Security.Subscribe  = dr["CanSubscribe"].ToString();
                        fi.Security.Trust      = dr["CanTrust"].ToString();
                        fi.Security.View       = dr["CanView"].ToString();
                        fi.ForumSettings       = LoadSettings(dr);
                        fi.PrefixURL           = dr["PrefixURL"].ToString();
                        //.SEO = dr("ForumSEO").ToString
                        fi.TotalTopics  = int.Parse(dr["TotalTopics"].ToString());
                        fi.TotalReplies = int.Parse(dr["TotalReplies"].ToString());
                        f.Add(fi);
                    }
                    dr.Close();
                }

                DataCache.CacheStore(string.Format(CacheKeys.ForumList, ModuleId), f);
            }
            return(f);
        }
Пример #8
0
        public XmlDocument ForumListXML(int SiteId, int InstanceId)
        {
            XmlDocument xDoc = new XmlDocument();
            object      obj  = DataCache.CacheRetrieve(InstanceId + "fv");

            if (obj == null)
            {
                Data.ForumsDB   db = new Data.ForumsDB();
                ForumCollection fc = db.Forums_List(SiteId, InstanceId);
                //Dim ds As DataSet = SqlHelper.ExecuteDataset(connectionString, databaseOwner & objectQualifier & "activeforums_UI_ForumDisplay", SiteId, InstanceId, UserId, -1, ForumIds)
                System.Text.StringBuilder sb = new System.Text.StringBuilder();
                sb.Append("<?xml version=\"1.0\" encoding=\"utf-8\" ?>");
                sb.AppendLine();
                sb.Append("<root>");
                sb.AppendLine();
                int groupId = -1;
                System.Text.StringBuilder groups = new System.Text.StringBuilder();
                System.Text.StringBuilder forums = new System.Text.StringBuilder();
                foreach (Forum f in fc)
                {
                    if (groupId != f.ForumGroupId)
                    {
                        groups.Append("<group groupid=\"" + f.ForumGroupId.ToString() + "\" active=\"" + f.ForumGroup.Active.ToString().ToLowerInvariant() + "\" hidden=\"" + f.ForumGroup.Hidden.ToString().ToLowerInvariant() + "\">");
                        groups.Append("<name><![CDATA[" + f.GroupName.ToString() + "]]></name>");
                        //If Not String.IsNullOrEmpty(f.ForumGroup.SEO) Then
                        //    groups.Append(f.ForumGroup.SEO)
                        //End If
                        groups.Append("</group>");
                        sb.AppendLine();
                        groupId = f.ForumGroupId;
                    }
                }
                sb.Append("<groups>");
                sb.AppendLine();
                sb.Append(groups.ToString());
                sb.Append("</groups>");
                sb.AppendLine();
                foreach (Forum f in fc)
                {
                    forums.Append("<forum groupid=\"" + f.ForumGroupId.ToString() + "\" forumid=\"" + f.ForumID.ToString() + "\"");
                    //forums.Append(" name=""" & HttpUtility.UrlEncode(f.ForumName) & """")
                    //forums.Append(" desc=""" & HttpUtility.UrlEncode(Utilities.HTMLEncode(f.ForumDesc.ToString)) & """")
                    forums.Append(" active=\"" + f.Active.ToString().ToLowerInvariant() + "\"");
                    forums.Append(" hidden=\"" + f.Hidden.ToString().ToLowerInvariant() + "\"");
                    forums.Append(" totaltopics=\"" + f.TotalTopics.ToString() + "\"");
                    forums.Append(" totalreplies=\"" + f.TotalReplies.ToString() + "\"");
                    forums.Append(" lasttopicid=\"" + f.LastTopicId.ToString() + "\"");
                    forums.Append(" lastreplyid=\"" + f.LastReplyId.ToString() + "\"");
                    //forums.Append(" lastpostsubject=""" & f.LastPostSubject & """")
                    //forums.Append(" lastpostauthorname=""" & f.LastPostDisplayName & """")
                    forums.Append(" lastpostauthorid=\"" + f.LastPostUserID + "\"");
                    forums.Append(" lastpostdate=\"" + f.LastPostDateTime.ToString() + "\"");
                    forums.Append(" lastread=\"" + f.LastRead.ToString() + "\"");
                    forums.Append(" allowrss=\"" + f.ForumSettings["ALLOWRSS"].ToString() + "\"");
                    forums.Append(" parentforumid=\"" + f.ParentForumId.ToString() + "\"");
                    forums.Append(" viewroles=\"" + f.Security.View.ToString() + "\"");
                    forums.Append(" readroles=\"" + f.Security.Read.ToString() + "\"");
                    forums.Append(" replyroles=\"" + f.Security.Reply.ToString() + "\"");
                    forums.Append(" modroles=\"" + f.Security.ModApprove.ToString() + "\"");
                    forums.Append(" modmove=\"" + f.Security.ModMove.ToString() + "\"");
                    forums.Append(">");
                    forums.Append("<name><![CDATA[" + f.ForumName + "]]></name>");
                    forums.Append("<description><![CDATA[" + f.ForumDesc + "]]></description>");
                    forums.Append("<security>");
                    forums.Append("<view>" + f.Security.View + "</view>");
                    forums.Append("<read>" + f.Security.Read + "</read>");
                    forums.Append("<create>" + f.Security.Create + "</create>");
                    forums.Append("<reply>" + f.Security.Reply + "</reply>");
                    forums.Append("<edit>" + f.Security.Edit + "</edit>");
                    forums.Append("<delete>" + f.Security.Delete + "</delete>");
                    forums.Append("<lock>" + f.Security.Lock + "</lock>");
                    forums.Append("<pin>" + f.Security.Pin + "</pin>");
                    forums.Append("<modapprove>" + f.Security.ModApprove + "</modapprove>");
                    forums.Append("<modedit>" + f.Security.ModEdit + "</modedit>");
                    forums.Append("<moddelete>" + f.Security.ModDelete + "</moddelete>");
                    forums.Append("<modlock>" + f.Security.ModLock + "</modlock>");
                    forums.Append("<modpin>" + f.Security.ModPin + "</modpin>");
                    forums.Append("<modmove>" + f.Security.ModMove + "</modmove>");
                    forums.Append("</security>");
                    //If Not String.IsNullOrEmpty(f.SEO) Then
                    //    forums.Append(f.SEO)
                    //End If

                    forums.Append("</forum>");
                    sb.AppendLine();
                }
                sb.Append("<forums>");
                sb.AppendLine();
                sb.Append(forums.ToString());
                sb.Append("</forums>");
                sb.AppendLine();
                sb.Append("<topics />");
                sb.AppendLine();
                sb.Append("<replies />");
                sb.AppendLine();
                sb.Append("</root>");
                sb.AppendLine();


                //Dim sXML As String = ds.GetXml()
                xDoc.LoadXml(sb.ToString());
                DataCache.CacheStore(InstanceId + "fv", xDoc);
            }
            else
            {
                xDoc = (XmlDocument)obj;
            }
            //Logger.Log(xDoc.OuterXml)
            return(xDoc);
        }
Пример #9
0
        private void TopicDisplay_Init(object sender, System.EventArgs e)
        {
            SettingsInfo MainSettings = DataCache.MainSettings(ControlConfig.InstanceId);

            PageSize = MainSettings.PageSize;
            string sTemp = string.Empty;

            if ((ControlConfig != null))
            {
                object obj = DataCache.CacheRetrieve(ControlConfig.InstanceId + CurrentView);
                if (obj == null)
                {
                    sTemp = ParseTemplate();
                }
                else
                {
                    sTemp = Convert.ToString(obj);
                }
                if (sTemp.Contains("[NOPAGING]"))
                {
                    RowIndex = 0;
                    PageSize = int.MaxValue;
                    sTemp    = sTemp.Replace("[NOPAGING]", string.Empty);
                }
                sTemp = Utilities.ParseTokenConfig(sTemp, "topic", ControlConfig);

                string          Subject      = string.Empty;
                string          Body         = string.Empty;
                System.DateTime CreateDate   = null;
                System.DateTime EditDate     = null;
                string          Tags         = string.Empty;
                string          AuthorRoles  = string.Empty;
                string          IPAddress    = string.Empty;
                System.DateTime LastPostDate = null;
                string          LastPostData = string.Empty;
                UserProfileInfo tAuthor      = null;
                int             ReplyCount   = 0;
                Data.Topics     tc           = new Data.Topics();
                int             rowCount     = 0;
                int             nextTopic    = 0;
                int             prevTopic    = 0;
                int             statusId     = -1;
                double          topicRating  = 0;
                IDataReader     dr           = tc.TopicForDisplay(ControlConfig.SiteId, ControlConfig.InstanceId, -1, TopicId, UserId, RowIndex, PageSize, "ASC");
                while (dr.Read())
                {
                    ForumId      = int.Parse(dr["ForumId"].ToString());
                    Subject      = dr["Subject"].ToString();
                    Body         = dr["Body"].ToString();
                    CreateDate   = Convert.ToDateTime(dr["DateCreated"].ToString());
                    EditDate     = Convert.ToDateTime(dr["DateUpdated"].ToString());
                    Tags         = dr["Tags"].ToString();
                    IPAddress    = dr["IPAddress"].ToString();
                    LastPostDate = System.DateTime.Parse(Utilities.GetDate(System.DateTime.Parse(dr["LastPostDate"].ToString()), ControlConfig.InstanceId));
                    LastPostData = dr["LastPostData"].ToString();
                    ReplyCount   = int.Parse(dr["ReplyCount"].ToString());
                    nextTopic    = int.Parse(dr["NextTopic"].ToString());
                    prevTopic    = int.Parse(dr["PrevTopic"].ToString());
                    topicRating  = double.Parse(dr["TopicRating"].ToString());
                    UserProfileInfo profile = new UserProfileInfo();
                    var             _with1  = profile;
                    _with1.UserID = int.Parse(dr["AuthorId"].ToString());
                    if (string.IsNullOrEmpty(dr["DisplayName"].ToString()))
                    {
                        _with1.DisplayName = dr["AuthorName"].ToString();
                    }
                    else
                    {
                        _with1.DisplayName = dr["DisplayName"].ToString();
                    }
                    _with1.FirstName        = dr["FirstName"].ToString();
                    _with1.LastName         = dr["LastName"].ToString();
                    _with1.Username         = dr["Username"].ToString();
                    _with1.UserCaption      = dr["UserCaption"].ToString();
                    _with1.AnswerCount      = int.Parse(dr["AnswerCount"].ToString());
                    _with1.AOL              = dr["AOL"].ToString();
                    _with1.Avatar           = dr["Avatar"].ToString();
                    _with1.AvatarType       = (AvatarTypes)int.Parse(dr["AvatarType"].ToString());
                    _with1.DateCreated      = System.DateTime.Parse(Utilities.GetDate(System.DateTime.Parse(dr["UserDateCreated"].ToString()), ControlConfig.InstanceId));
                    _with1.DateLastActivity = System.DateTime.Parse(Utilities.GetDate(System.DateTime.Parse(dr["DateLastActivity"].ToString()), ControlConfig.InstanceId));
                    _with1.DateLastPost     = System.DateTime.Parse(Utilities.GetDate(System.DateTime.Parse(dr["DateLastPost"].ToString()), ControlConfig.InstanceId));
                    if (!string.IsNullOrEmpty(dr["UserDateUpdated"].ToString()))
                    {
                        _with1.DateUpdated = System.DateTime.Parse(Utilities.GetDate(System.DateTime.Parse(dr["UserDateUpdated"].ToString()), ControlConfig.InstanceId));
                    }
                    _with1.Interests    = dr["Interests"].ToString();
                    _with1.IsUserOnline = bool.Parse(dr["IsUserOnline"].ToString());
                    _with1.Location     = dr["Location"].ToString();
                    _with1.MSN          = dr["MSN"].ToString();
                    _with1.Occupation   = dr["Occupation"].ToString();
                    _with1.TopicCount   = int.Parse(dr["UserTopicCount"].ToString());
                    _with1.ReplyCount   = int.Parse(dr["UserReplyCount"].ToString());
                    _with1.RewardPoints = int.Parse(dr["RewardPoints"].ToString());
                    _with1.Roles        = dr["UserRoles"].ToString();
                    _with1.Signature    = dr["Signature"].ToString();
                    _with1.TrustLevel   = int.Parse(dr["TrustLevel"].ToString());
                    _with1.WebSite      = dr["WebSite"].ToString();
                    _with1.Yahoo        = dr["Yahoo"].ToString();
                    tAuthor             = profile;

                    if (DataPageId == 1)
                    {
                        sTemp     = ParseTopic(sTemp, Subject, CreateDate, Body, Tags, Convert.ToString(EditDate), IPAddress, ForumUser, rowCount);
                        rowCount += 1;
                    }
                    else
                    {
                        sTemp = TemplateUtils.ReplaceSubSection(sTemp, string.Empty, "[TOPIC]", "[/TOPIC]");
                    }
                }
                if (ForumInfo == null)
                {
                    ForumController fc = new ForumController();
                    Forum           fi = null;
                    fi        = fc.Forums_Get(ForumId, UserId, true, true);
                    ForumInfo = fi;
                }
                sTemp = sTemp.Replace("[FORUMID]", ForumId.ToString);
                sTemp = sTemp.Replace("[FORUMNAME]", ForumInfo.ForumName);
                sTemp = sTemp.Replace("[TOPICID]", TopicId.ToString);
                sTemp = sTemp.Replace("[CREATEROLES]", ForumInfo.Security.Create);
                sTemp = sTemp.Replace("[USERROLES]", ForumUser.UserRoles);
                sTemp = sTemp.Replace("[THEMEPATH]", ThemePath);
                sTemp = sTemp.Replace("[SUBJECT]", Subject);
                sTemp = sTemp.Replace("[PAGEID]", PageId.ToString);
                sTemp = sTemp.Replace("[REPLYROLES]", ForumInfo.Security.Reply);
                sTemp = sTemp.Replace("AF:SECURITY:MODROLES]", "AF:SECURITY:MODROLES:" + ForumInfo.Security.ModApprove + "]");
                sTemp = sTemp.Replace("AF:SECURITY:MODAPPROVE]", "AF:SECURITY:MODAPPROVE:" + ForumInfo.Security.ModApprove + "]");
                sTemp = sTemp.Replace("AF:SECURITY:DELETE]", "AF:SECURITY:DELETE:" + ForumInfo.Security.Delete + ForumInfo.Security.ModDelete + "]");
                sTemp = sTemp.Replace("AF:SECURITY:EDIT]", "AF:SECURITY:EDIT:" + ForumInfo.Security.Edit + ForumInfo.Security.ModEdit + "]");
                sTemp = sTemp.Replace("AF:SECURITY:LOCK]", "AF:SECURITY:LOCK:" + ForumInfo.Security.Lock + ForumInfo.Security.ModLock + "]");
                sTemp = sTemp.Replace("AF:SECURITY:MOVE]", "AF:SECURITY:MOVE:" + ForumInfo.Security.ModMove + "]");
                sTemp = sTemp.Replace("AF:SECURITY:PIN]", "AF:SECURITY:PIN:" + ForumInfo.Security.Pin + ForumInfo.Security.ModPin + "]");
                sTemp = sTemp.Replace("AF:SECURITY:SPLIT]", "AF:SECURITY:SPLIT:" + ForumInfo.Security.ModSplit + "]");
                sTemp = sTemp.Replace("AF:SECURITY:REPLY]", "AF:SECURITY:REPLY:" + ForumInfo.Security.Reply + "]");
                if (LastPostDate == null)
                {
                    LastPostDate = CreateDate;
                }
                string LastPostAuthor = string.Empty;
                if (((bRead & tAuthor.UserID == this.UserId)) & statusId >= 0)
                {
                    sTemp = sTemp.Replace("[AF:CONTROL:STATUS]", "<asp:placeholder id=\"plhStatus\" runat=\"server\" />");
                    sTemp = sTemp.Replace("[AF:CONTROL:STATUSICON]", "<img alt=\"[RESX:PostStatus" + statusId.ToString() + "]\" src=\"" + ThemePath + "status" + statusId.ToString() + ".png\" />");
                }
                else if (statusId >= 0)
                {
                    sTemp = sTemp.Replace("[AF:CONTROL:STATUS]", string.Empty);
                    sTemp = sTemp.Replace("[AF:CONTROL:STATUSICON]", "<img alt=\"[RESX:PostStatus" + statusId.ToString() + "]\" src=\"" + ThemePath + "status" + statusId.ToString() + ".png\" />");
                }
                else
                {
                    sTemp = sTemp.Replace("[AF:CONTROL:STATUS]", string.Empty);
                    sTemp = sTemp.Replace("[AF:CONTROL:STATUSICON]", string.Empty);
                    sTemp = sTemp.Replace("[ACTIONS:ANSWER]", string.Empty);
                }
                if (string.IsNullOrEmpty(LastPostData))
                {
                    LastPostAuthor = UserProfiles.GetDisplayName(ControlConfig.InstanceId, MainSettings.ProfileVisibility, false, tAuthor.UserID, MainSettings.UserNameDisplay, MainSettings.DisableUserProfiles, tAuthor.Username, tAuthor.FirstName, tAuthor.LastName, tAuthor.DisplayName);
                }
                else
                {
                    Author la = new Author();
                    System.Xml.XmlDocument xDoc = new System.Xml.XmlDocument();
                    xDoc.LoadXml(LastPostData);
                    System.Xml.XmlNode xNode = xDoc.SelectSingleNode("//root/lastpost");
                    if ((xNode != null))
                    {
                        var _with2 = la;
                        _with2.AuthorId    = int.Parse(xNode["authorid"].InnerText.ToString());
                        _with2.DisplayName = xNode["displayname"].InnerText;
                        _with2.FirstName   = xNode["firstname"].InnerText;
                        _with2.LastName    = xNode["lastname"].InnerText;
                        _with2.Username    = xNode["username"].InnerText;
                    }
                    LastPostAuthor = UserProfiles.GetDisplayName(ControlConfig.InstanceId, MainSettings.ProfileVisibility, false, la.AuthorId, MainSettings.UserNameDisplay, MainSettings.DisableUserProfiles, la.Username, la.FirstName, la.LastName, la.DisplayName);
                }
                //TODO:Fix LastPostDate Format
                sTemp = sTemp.Replace("[AF:LABEL:LastPostDate]", LastPostDate.ToString());
                sTemp = sTemp.Replace("[AF:LABEL:LastPostAuthor]", LastPostAuthor);
                sTemp = sTemp.Replace("[AF:LABEL:ReplyCount]", ReplyCount.ToString());
                string sURL = "<a rel=\"nofollow\" href=\"" + Utilities.NavigateUrl(PageId, "", ParamKeys.ForumId + "=" + ForumId, ParamKeys.ViewType + "=" + Views.Topic, ParamKeys.TopicId + "=" + TopicId, "mid=" + ControlConfig.InstanceId.ToString, "dnnprintmode=true") + "?skinsrc=" + HttpUtility.UrlEncode("[G]" + DotNetNuke.UI.Skins.SkinInfo.RootSkin + "/" + DotNetNuke.Common.glbHostSkinFolder + "/" + "No Skin") + "&amp;containersrc=" + HttpUtility.UrlEncode("[G]" + DotNetNuke.UI.Skins.SkinInfo.RootContainer + "/" + DotNetNuke.Common.glbHostSkinFolder + "/" + "No Container") + "\" target=\"_blank\">";
                sURL += "<img src=\"" + ThemePath + "images/spacer.gif\" alt=\"[RESX:PrinterFriendly]\" class=\"aficon aficonprint\" /></a>";
                sTemp = sTemp.Replace("[AF:CONTROL:PRINTER]", sURL);
                if (HttpContext.Current.Request.IsAuthenticated)
                {
                    sURL = Utilities.NavigateUrl(PageId, "", new string[] {
                        ParamKeys.ViewType + "=sendto",
                        ParamKeys.ForumId + "=" + ForumId,
                        ParamKeys.TopicId + "=" + TopicId
                    });
                    sTemp = sTemp.Replace("[AF:CONTROL:EMAIL]", "<a href=\"" + sURL + "\" rel=\"nofollow\"><img src=\"" + ThemePath + "images/spacer.gif\" class=\"aficon aficonemail\" alt=\"[RESX:EmailThis]\" /></a>");
                }
                else
                {
                    sTemp = sTemp.Replace("[AF:CONTROL:EMAIL]", string.Empty);
                }
                if (ForumInfo.AllowRSS)
                {
                    string Url = null;
                    Url   = DotNetNuke.Common.AddHTTP(DotNetNuke.Common.GetDomainName(HttpContext.Current.Request)) + "/DesktopModules/ActiveForums/feeds.aspx?portalid=" + ControlConfig.SiteId + "&forumid=" + ForumId + "&tabid=" + PageId + "&moduleid=" + ControlConfig.InstanceId;
                    sTemp = sTemp.Replace("[RSSLINK]", "<a href=\"" + Url + "\"><img src=\"" + ThemePath + "images/rss.png\" runat=server border=\"0\" alt=\"[RESX:RSS]\" /></a>");
                }
                else
                {
                    sTemp = sTemp.Replace("[RSSLINK]", string.Empty);
                }
                if (nextTopic == 0)
                {
                    sTemp = sTemp.Replace("[NEXTTOPICID]", string.Empty);
                    sTemp = sTemp.Replace("[HASNEXTTOPIC]", "False");
                }
                else
                {
                    sTemp = sTemp.Replace("[NEXTTOPICID]", nextTopic.ToString());
                    sTemp = sTemp.Replace("[HASNEXTTOPIC]", "True");
                }
                if (prevTopic == 0)
                {
                    sTemp = sTemp.Replace("[PREVTOPICID]", string.Empty);
                    sTemp = sTemp.Replace("[HASPREVTOPIC]", "False");
                }
                else
                {
                    sTemp = sTemp.Replace("[PREVTOPICID]", prevTopic.ToString());
                    sTemp = sTemp.Replace("[HASPREVTOPIC]", "True");
                }
                dr.NextResult();
                //Process Replies
                StringBuilder sb = new StringBuilder();
                sb.Append(string.Empty);
                int replyId = 0;
                while (dr.Read())
                {
                    Subject    = dr["Subject"].ToString();
                    Body       = dr["Body"].ToString();
                    CreateDate = Convert.ToDateTime(dr["DateCreated"].ToString());
                    EditDate   = Convert.ToDateTime(dr["DateUpdated"].ToString());
                    IPAddress  = dr["IPAddress"].ToString();
                    replyId    = int.Parse(dr["ReplyId"].ToString());
                    UserProfileInfo profile = new UserProfileInfo();
                    var             _with3  = profile;
                    _with3.UserID = int.Parse(dr["AuthorId"].ToString());
                    if (string.IsNullOrEmpty(dr["DisplayName"].ToString()))
                    {
                        _with3.DisplayName = dr["AuthorName"].ToString();
                    }
                    else
                    {
                        _with3.DisplayName = dr["DisplayName"].ToString();
                    }
                    _with3.FirstName        = dr["FirstName"].ToString();
                    _with3.LastName         = dr["LastName"].ToString();
                    _with3.Username         = dr["Username"].ToString();
                    _with3.UserCaption      = dr["UserCaption"].ToString();
                    _with3.AnswerCount      = int.Parse(dr["AnswerCount"].ToString());
                    _with3.AOL              = dr["AOL"].ToString();
                    _with3.Avatar           = dr["Avatar"].ToString();
                    _with3.AvatarType       = (AvatarTypes)int.Parse(dr["AvatarType"].ToString());
                    _with3.DateCreated      = System.DateTime.Parse(Utilities.GetDate(System.DateTime.Parse(dr["UserDateCreated"].ToString()), ControlConfig.InstanceId));
                    _with3.DateLastActivity = System.DateTime.Parse(Utilities.GetDate(System.DateTime.Parse(dr["DateLastActivity"].ToString()), ControlConfig.InstanceId));
                    if (!string.IsNullOrEmpty(dr["DateLastPost"].ToString()))
                    {
                        _with3.DateLastPost = System.DateTime.Parse(Utilities.GetDate(System.DateTime.Parse(dr["DateLastPost"].ToString()), ControlConfig.InstanceId));
                    }

                    if (!string.IsNullOrEmpty(dr["UserDateUpdated"].ToString()))
                    {
                        _with3.DateUpdated = System.DateTime.Parse(Utilities.GetDate(System.DateTime.Parse(dr["UserDateUpdated"].ToString()), ControlConfig.InstanceId));
                    }
                    _with3.Interests    = dr["Interests"].ToString();
                    _with3.IsUserOnline = bool.Parse(dr["IsUserOnline"].ToString());
                    _with3.Location     = dr["Location"].ToString();
                    _with3.MSN          = dr["MSN"].ToString();
                    _with3.Occupation   = dr["Occupation"].ToString();
                    _with3.TopicCount   = int.Parse(dr["UserTopicCount"].ToString());
                    _with3.ReplyCount   = int.Parse(dr["UserReplyCount"].ToString());
                    _with3.RewardPoints = int.Parse(dr["RewardPoints"].ToString());
                    _with3.Roles        = dr["UserRoles"].ToString();
                    _with3.Signature    = dr["Signature"].ToString();
                    _with3.TrustLevel   = int.Parse(dr["TrustLevel"].ToString());
                    _with3.WebSite      = dr["WebSite"].ToString();
                    _with3.Yahoo        = dr["Yahoo"].ToString();
                    sb.Append(ParseReply(sTemp, replyId, Subject, CreateDate, Body, Convert.ToString(EditDate), IPAddress, ForumUser, rowCount));
                    rowCount += 1;
                }
                dr.Close();
                sTemp = TemplateUtils.ReplaceSubSection(sTemp, sb.ToString(), "[REPLIES]", "[/REPLIES]");
                sTemp = Utilities.LocalizeControl(sTemp);
                sTemp = sTemp.Replace("[TOPICID]", TopicId.ToString);
                sTemp = sTemp.Replace("[GROUPNAME]", ForumInfo.GroupName);
                sTemp = sTemp.Replace("[FORUMNAME]", ForumInfo.ForumName);
                sTemp = sTemp.Replace("[TOPICRATING]", topicRating.ToString());
                sTemp = sTemp.Replace("[CURRENTUSERID]", UserId.ToString);

                sTemp = Utilities.ParseSecurityTokens(sTemp, ForumUser.UserRoles);
                if (!sTemp.Contains(Globals.ControlRegisterAFTag))
                {
                    sTemp = Globals.ControlRegisterAFTag + sTemp;
                }
                Control ctl = Page.ParseControl(sTemp);
                LinkControls(ctl.Controls);
                this.Controls.Add(ctl);
            }
        }