示例#1
0
        public static ISnesActivity CreateActivity(int activityType, IDnaDataReader currentRow)
        {
            CommentActivity activity;

            if (currentRow.IsDBNull("BlogUrl"))
            {
                activity = PolicyInjection.Create<MessageBoardPostActivity>();
            }
            else
            {
                activity = PolicyInjection.Create<CommentForumActivity>();
            }

            activity.Contents = new OpenSocialActivity();
            activity.ActivityId = currentRow.GetInt32("EventID");
            activity.Application = currentRow.GetString("AppId") ?? "";
            activity.ActivityType = GetActivityTypeVerb(activityType);
            activity.IdentityUserId = currentRow.GetInt32("IdentityUserId");

            activity.SetTitle(currentRow);
            activity.SetObjectTitle(currentRow);
            activity.SetObjectDescription(currentRow);
            activity.SetObjectUri(currentRow);

            activity.Contents.Type = "comment";
            activity.Contents.Body = currentRow.GetString("Body") ?? "";
            activity.Contents.PostedTime = currentRow.GetDateTime("ActivityTime").MillisecondsSinceEpoch();
            activity.Contents.DisplayName = currentRow.GetString("displayName") ?? "";
            activity.Contents.Username = currentRow.GetString("username") ?? "";

            return activity;
        }
        protected override void SetProperties(IDnaDataReader reader)
        {
            base.SetProperties(reader);

            ThreadEntryId = reader.GetNullableInt32("ThreadEntryId");
            ModClassId = reader.GetInt32("ModClassId");
            SiteId = reader.GetInt32("SiteId");
            ForumId = reader.GetInt32("ForumId");
            ThreadId = reader.GetNullableInt32("ThreadId");
            UserId = reader.GetInt32("UserId");
            DatePosted = reader.GetDateTime("DatePosted");
            Text = reader.GetString("text");
            RiskModThreadEntryQueueId = reader.GetInt32("RiskModThreadEntryQueueId");
        }
        public SnesEventDataReaderAdapter(IDnaDataReader dataReader)
        {
            Rating = dataReader.IsDBNull("Rating") ? null : new RatingDataReaderAdapter(dataReader);
            AppInfo = new AppInfoDataReaderAdapter(dataReader);
            ActivityType = dataReader.GetInt32("ActivityType");
            EventId = dataReader.GetInt32("EventId");
            IdentityUserId = dataReader.GetString("IdentityUserId");
            BlogUrl = dataReader.IsDBNull("BlogUrl") ? null : dataReader.GetString("BlogUrl");

            UrlBuilder = new DnaUrlBuilder
                             {
                                 PostId = dataReader.GetInt32("PostId"),
                                 ForumId = dataReader.GetInt32("ForumId"),
                                 ThreadId = dataReader.GetInt32("ThreadId"),
                                 DnaUrl = dataReader.GetString("DnaUrl")
                             };
        }
示例#4
0
        /// <summary>
        /// This method creates the crumbtrail for a given item
        /// </summary>
        /// <param name="reader">The DnaDataReader that contains the crumbtrail result set.</param>
        static public CrumbTrails GetCrumbtrailForItem(IDnaDataReader reader)
        {
            CrumbTrails crumbTrialList = new CrumbTrails();
            bool startOfTrail = true;
            CrumbTrail crumbTrail = null;
            while (reader.Read())
            {
                // Check to see if we're at the top level
                int treeLevel = reader.GetInt32("TreeLevel");
                if (treeLevel == 0)
                {
                    startOfTrail = true;
                }

                // Check to see if we're starting a new trail
                if (startOfTrail)
                {
                    if (crumbTrail != null)
                    {//add the previous to the list
                        crumbTrialList.CrumbTrail.Add(crumbTrail);
                    }
                    //start new
                    crumbTrail = new CrumbTrail();
                    startOfTrail = false;
                }

                CrumbTrailAncestor ancestor = new CrumbTrailAncestor();
                ancestor.Name = reader.GetString("DisplayName");
                ancestor.NodeId = reader.GetInt32("NodeID");
                ancestor.TreeLevel = treeLevel;
                ancestor.NodeType = reader.GetInt32("Type");
                if (reader.Exists("RedirectNodeID") && !reader.IsDBNull("RedirectNodeID"))
                {
                    ancestor.RedirectNode = new CrumbTrialAncestorRedirect();
                    ancestor.RedirectNode.id = reader.GetInt32("RedirectNodeID");
                    ancestor.RedirectNode.value = reader.GetString("RedirectNodeName");
                }
                crumbTrail.Ancestor.Add(ancestor);
            }
            if (crumbTrail != null)
            {//add the previous to the list
                crumbTrialList.CrumbTrail.Add(crumbTrail);
            }
            return crumbTrialList;
        }
示例#5
0
        private EmailDetailsToProcess CreateProcessorForEmail(IDnaDataReader reader)
        {
            EmailDetailsToProcess emailToProcess = new EmailDetailsToProcess();

            emailToProcess.ID = reader.GetInt32("ID");
            emailToProcess.Subject = reader.GetString("Subject");
            emailToProcess.Body = reader.GetString("Body");
            emailToProcess.FromAddress = reader.GetString("FromEmailAddress");
            emailToProcess.ToAddress = reader.GetString("ToEmailAddress");

            return emailToProcess;
        }
示例#6
0
        public static BIEvent CreateBiEvent(IDnaDataReader reader, ITheGuideSystem theGuideSys, IRiskModSystem riskModSys)
        {
            EventTypes et = (EventTypes)reader.GetInt32("EventType");
            
            BIEvent be = null;

            switch (et)
            {
                case EventTypes.ET_POSTNEEDSRISKASSESSMENT: be = new BIPostNeedsRiskAssessmentEvent(theGuideSys, riskModSys); break;
                case EventTypes.ET_POSTTOFORUM:             be = new BIPostToForumEvent(riskModSys); break;
                case EventTypes.ET_MODERATIONDECISION_POST: be = new BIPostModerationDecisionEvent(riskModSys); break;

                default: throw new InvalidOperationException("Event Type " + et.ToString() + " not supported");
            }

            be.SetProperties(reader);

            return be;
        }   
示例#7
0
        protected override void SetProperties(IDnaDataReader reader)
        {
            base.SetProperties(reader);

            ThreadEntryId = reader.GetInt32("ThreadEntryId");
            ModClassId = reader.GetInt32("ModClassId");
            SiteId = reader.GetInt32("SiteId");
            ForumId = reader.GetInt32("ForumId");
            ThreadId = reader.GetInt32("ThreadId");
            UserId = reader.GetInt32("UserId");
            NextSibling = reader.GetNullableInt32("NextSibling");
            Parent = reader.GetNullableInt32("Parent");
            PrevSibling = reader.GetNullableInt32("PrevSibling");
            FirstChild = reader.GetNullableInt32("FirstChild");
            DatePosted = reader.GetDateTime("DatePosted");
            Text = reader.GetString("text");
        }
        public OpenSocialActivityDataReaderAdapter(IDnaDataReader dataReader)
        {
            Body = dataReader.GetString("Body");

            PostedTime = dataReader.GetDateTime("ActivityTime").MillisecondsSinceEpoch();
            DisplayName = dataReader.GetString("displayName");
            ObjectTitle = dataReader.GetString("ObjectTitle");
            ObjectDescription =dataReader.GetString("Body");
            UserName = dataReader.GetString("Username");
            ApplicationActivityObjectId = dataReader.GetInt32("PostID");

            var appName = dataReader.GetString("DnaUrl") ?? "";

            ObjectUri = (dataReader.GetString("ObjectUriFormat") ?? "").FormatReplacementStrings(dataReader.GetInt32("ForumID"), 
                dataReader.GetInt32("ThreadID"), dataReader.GetInt32("PostID"), appName, dataReader.GetString("BlogUrl") ?? "", 
                dataReader.GetString("ObjectUri") ?? "");

            ContentPermaUrl = (dataReader.GetString("ContentPermaUrl") ?? "").FormatReplacementStrings(dataReader.GetInt32("ForumID"),
                dataReader.GetInt32("ThreadID"), dataReader.GetInt32("PostID"), appName, dataReader.GetString("BlogUrl") ?? "",
                dataReader.GetString("ObjectUri") ?? "");
                
            CustomActivityType = dataReader.GetString("CustomActivityType") ?? "";

        }
示例#9
0
        private static Contribution CreateContributionInternal(IDnaDataReader reader)
        {
            Contribution contribution = new Contribution();

            // Make sure we got something back
            if (reader.HasRows && reader.Read()) 
            {
                contribution.Body = reader.GetStringNullAsEmpty("Body");
                contribution.PostIndex = reader.GetLongNullAsZero("PostIndex");
                contribution.SiteName = reader.GetStringNullAsEmpty("SiteName");
                contribution.SiteType = (SiteType)Enum.Parse(typeof(SiteType), reader.GetStringNullAsEmpty("SiteType"));
                contribution.SiteDescription = reader.GetStringNullAsEmpty("SiteDescription");
                contribution.SiteUrl = reader.GetStringNullAsEmpty("UrlName");
                contribution.FirstSubject = reader.GetStringNullAsEmpty("FirstSubject");
                contribution.Subject = reader.GetStringNullAsEmpty("Subject");
                contribution.Timestamp = new DateTimeHelper(reader.GetDateTime("TimeStamp"));
                contribution.Title = reader.GetStringNullAsEmpty("ForumTitle");
                contribution.ThreadEntryID = reader.GetInt32("ThreadEntryID");
                contribution.CommentForumUrl = reader.GetStringNullAsEmpty("CommentForumUrl");
                contribution.GuideEntrySubject = reader.GetStringNullAsEmpty("GuideEntrySubject");

                contribution.TotalPostsOnForum = reader.GetInt32NullAsZero("TotalPostsOnForum");
                contribution.AuthorUserId = reader.GetInt32NullAsZero("AuthorUserId");
                contribution.AuthorUsername = reader.GetStringNullAsEmpty("AuthorUsername");
                contribution.AuthorIdentityUsername = reader.GetStringNullAsEmpty("AuthorIdentityUsername");

                bool forumCanWrite = reader.GetByteNullAsZero("ForumCanWrite") == 1;
                bool isEmergencyClosed = reader.GetInt32NullAsZero("SiteEmergencyClosed") == 1;
                //bool isSiteScheduledClosed = reader2.GetByteNullAsZero("SiteScheduledClosed") == 1;

                DateTime closingDate = DateTime.MaxValue;
                if (reader.DoesFieldExist("forumclosedate") && !reader.IsDBNull("forumclosedate"))
                {
                    closingDate = reader.GetDateTime("forumclosedate");
                    contribution.ForumCloseDate = new DateTimeHelper(closingDate);
                }
                contribution.isClosed = (!forumCanWrite || isEmergencyClosed || (closingDate != null && DateTime.Now > closingDate));
            }
            else
            {
                throw ApiException.GetError(ErrorType.ThreadPostNotFound);
            }

            return contribution;
        }
示例#10
0
        int GetLatestRiskModThreadEntryQueueId(IDnaDataReader reader)
        {
            reader.ExecuteWithinATransaction(@"SELECT top 1 * FROM RiskModThreadEntryQueue order by RiskModThreadEntryQueueId desc");
            reader.Read();

            if (reader.HasRows)
                return reader.GetInt32("RiskModThreadEntryQueueId");

            return -1;
        }
示例#11
0
        int GetLatestPremodPostingsModId(IDnaDataReader reader)
        {
            reader.ExecuteWithinATransaction(@"SELECT top 1 * FROM PremodPostings order by modid desc");
            reader.Read();

            if (reader.HasRows)
                return reader.GetInt32("ModId");

            return -1;
        }
示例#12
0
        void CheckLatestPremodPostings(IDnaDataReader reader, int modId, int userid, int forumid, int? threadid, int? inReplyTo, string body, int postStyle, int siteid, byte isComment, int? riskModThreadEntryQueueId)
        {
            reader.ExecuteWithinATransaction(@"SELECT * FROM PremodPostings where ModId="+modId);
            reader.Read();

            // Nasty tweak.  With PremodPostings, when it creates a thread mod entry, it sets threadid=null and postid=0
            // posttoforuminternal returns 0 for both thread id and threadentry id, so here we're treating 0 as null
            threadid = NullIf(threadid, 0);

            Assert.AreEqual(userid, reader.GetInt32("userid"));
            Assert.AreEqual(forumid, reader.GetInt32("forumid"));
            TestNullableIntField(reader, "threadid", threadid);
            TestNullableIntField(reader, "inReplyTo", inReplyTo);
            Assert.AreEqual(body, reader.GetString("body"));
            Assert.AreEqual(postStyle, reader.GetInt32("postStyle"));
            Assert.AreEqual(siteid, reader.GetInt32("siteid"));
            Assert.AreEqual(isComment, reader.GetByte("isComment"));
            TestNullableIntField(reader, "riskModThreadEntryQueueId", riskModThreadEntryQueueId);
        }
示例#13
0
        int GetLatestThreadEntryId(IDnaDataReader reader)
        {
            reader.ExecuteWithinATransaction(@"SELECT top 1 * FROM ThreadEntries order by EntryId desc");
            reader.Read();

            return reader.GetInt32("EntryId");
        }
示例#14
0
        /// <summary>
        /// This method reads in the entry form the database and sets up all the member fields
        /// </summary>
        /// <param name="safeToCache">A flag to state whether or not this entry is safe to cache. Usually set to false whhen an error occures.</param>
        /// <param name="failingGracefully">A flag that states whether or not this method is failing gracefully.</param>
        static public ArticleInfo GetEntryFromDataBase(int entryId, IDnaDataReader reader, IDnaDataReaderCreator readerCreator)
        {
            ArticleInfo articleInfo = null;
            // fetch all the lovely intellectual property from the database
            // Make sure we got something back
            if (reader.HasRows)
            {
                // Go though the results untill we get the main article
                do
                {
                    if (reader.GetInt32("IsMainArticle") == 1 ) 
                    {
                        articleInfo = new ArticleInfo();
                        // Now start reading in all the values for the entry
                        articleInfo.H2g2Id = reader.GetInt32("h2g2ID");
                        articleInfo.ForumId = reader.GetInt32("ForumID");
                        articleInfo.ModerationStatus = (BBC.Dna.Moderation.Utils.ModerationStatus.ArticleStatus)reader.GetInt32NullAsZero("ModerationStatus");

                        articleInfo.Status = ArticleStatus.GetStatus(reader.GetInt32("Status"));
                        articleInfo.DateCreated = new DateElement(reader.GetDateTime("DateCreated"));
                        articleInfo.LastUpdated = new DateElement(reader.GetDateTime("LastUpdated"));
                        articleInfo.PreProcessed = reader.GetInt32("PreProcessed");
                        articleInfo.SiteId = reader.GetInt32("SiteID");
                        articleInfo.Site = new ArticleInfoSite() { Id = articleInfo.SiteId };

                        //create children objects
                        articleInfo.PageAuthor = ArticleInfoPageAuthor.CreateListForArticle(articleInfo.H2g2Id, reader.GetInt32("Editor"), readerCreator);
                        articleInfo.RelatedMembers = ArticleInfoRelatedMembers.GetRelatedMembers(articleInfo.H2g2Id, readerCreator);
                        articleInfo.CrumbTrails = CrumbTrails.CreateArticleCrumbtrail(articleInfo.H2g2Id, readerCreator);
                        if (articleInfo.Status.Type == 3)
                        {//create Submittable if status = 3...
                            bool isSubmittable = (reader.GetTinyIntAsInt("Submittable")==1);
                            articleInfo.Submittable = ArticleInfoSubmittable.CreateSubmittable(readerCreator, articleInfo.H2g2Id, isSubmittable);
                        }
                        
                    }
                    if (articleInfo != null)
                    {
                        break;//got the info so run
                    }
                }
                while (reader.Read());
            }
            return articleInfo;
        }
示例#15
0
        void CheckLatestThreadMod(IDnaDataReader reader, int forumid, int? threadid, int? postid, int? lockedby, int status, string notes, int siteid, byte isPremodPosting)
        {
            reader.ExecuteWithinATransaction(@"SELECT top 1 * FROM ThreadMod order by ModId desc");
            reader.Read();

            // Nasty tweak.  With PremodPostings, when it creates a thread mod entry, it sets threadid=null and postid=0
            // posttoforuminternal returns 0 for both thread id and threadentry id, so here we're treating 0 as null
            threadid = NullIf(threadid, 0);

            Assert.AreEqual(forumid, reader.GetInt32("forumid"));
            TestNullableIntField(reader, "threadid", threadid);
            TestNullableIntField(reader, "postid", postid);
            TestNullableIntField(reader, "lockedby", lockedby);
            Assert.AreEqual(status, reader.GetInt32("status"));
            TestNullableStringField(reader, "notes", notes);
            Assert.AreEqual(siteid, reader.GetInt32("siteid"));
            Assert.AreEqual(isPremodPosting,reader.GetByte("isPremodPosting"));
        }
示例#16
0
 protected virtual void SetProperties(IDnaDataReader reader)
 {
     EventId   = reader.GetInt32("EventId");
     EventType = (EventTypes)reader.GetInt32("EventType");
     EventDate = reader.GetDateTime("EventDate");
 }
示例#17
0
        private void SetSiteID(IDnaDataReader dataReader, String urlname)
        {
            dataReader.ExecuteDEBUGONLY("select siteid from sites where urlname='" + urlname + "'");

            if (dataReader.Read())
            {
                _siteId = dataReader.GetInt32("SiteID");
            }
            else
            {
                Assert.Fail("Unable to read the Sites table");
            }
        }
示例#18
0
 int CountEventQueueEntries(IDnaDataReader reader)
 {
     reader.ExecuteWithinATransaction("select count(*) as C from eventqueue");
     reader.Read();
     int c = reader.GetInt32("C");
     reader.Close();
     return c;
 }
示例#19
0
 void GetRiskModTestSiteAndForum(IDnaDataReader reader, out int siteid, out int forumid)
 {
     reader.ExecuteWithinATransaction(@"  select top 1 g.forumid,g.siteid 
                                         from topics t
                                         join guideentries g on g.h2g2id=t.h2g2id
                                         order by topicid");
     reader.Read();
     forumid = reader.GetInt32("forumid");
     siteid = reader.GetInt32("siteid");
     reader.Close();
 }
示例#20
0
        void RiskMod_ProcessRiskAssessmentForThreadEntry(IDnaDataReader reader, int riskModId, string isRisky, out int? newThreadId, out int? newThreadEntryId)
        {
            string sql = string.Format(@"
                            declare @ret int
                            exec @ret=riskmod_processriskassessmentforthreadentry @riskmodthreadentryqueueid={0}, @risky={1}
                            ", riskModId, RiskyOrNotRisky(isRisky));
            reader.ExecuteWithinATransaction(sql);
            reader.Read();

            if (reader.DoesFieldExist("ThreadId"))
            {
                newThreadId = reader.GetInt32("ThreadID");
                newThreadEntryId = reader.GetInt32("PostID");
            }
            else
            {
                newThreadId = newThreadEntryId = null;
            }
        }
示例#21
0
        private static int CreateNewSite(IDnaDataReader reader, string urlname)
        {
            string sql = @"exec createnewsite	 @urlname = '"+urlname+"',"+
									            "@shortname = '"+urlname+"',"+
									            "@description = '"+urlname+"',"+
									            "@defaultskin = 'default',"+
									            "@skindescription = '',"+
									            "@skinset ='boards',"+
									            "@useframes =0,"+
									            "@premoderation = 0,"+
									            "@noautoswitch =0,"+
									            "@customterms = 0,"+
									            "@moderatorsemail = '[email protected]',"+
									            "@editorsemail = '[email protected]',"+
									            "@feedbackemail = '[email protected]',"+
									            "@automessageuserid = 245,"+
									            "@passworded = 0,"+
									            "@unmoderated = 0,"+
									            "@articleforumstyle =0,"+
									            "@threadorder =1,"+
									            "@threadedittimelimit = 0,"+
									            "@eventemailsubject = '',"+
									            "@eventalertmessageuserid = 254,"+ 
									            "@includecrumbtrail  = 0,"+
									            "@allowpostcodesinsearch = 0,"+ 
									            "@ssoservice = null,"+
									            "@siteemergencyclosed = 0,"+
									            "@allowremovevote = 0,"+
									            "@queuepostings = 0,"+
									            "@modclassid = 1,"+
									            "@identitypolicy = 'http://identity/policies/dna/adult'";

            reader.ExecuteDEBUGONLY(sql);
            reader.Read();
            int siteid = reader.GetInt32("siteid");
            return siteid;
        }
示例#22
0
文件: Forum.cs 项目: rocketeerbkw/DNA
        /// <summary>
        /// Creates the XML block for a posting in a thread
        /// </summary>
        /// <param name="reader">The IDnaDataReader that contains the information about the posting</param>
        /// <param name="threadNode">The node to add the posting node to</param>
        /// <param name="usersPrefix">Pass in 'First' if the post is the first post in the thread, and 'last' if it's the last.</param>
        /// <returns>The new post node</returns>
        private XmlNode CreateThreadPostingXml(IDnaDataReader reader, XmlNode threadNode, string usersPrefix)
        {
            XmlNode postingNode = AddElementTag(threadNode, usersPrefix + "POST");
            AddAttribute(postingNode, "POSTID", reader.GetInt32(usersPrefix + "PostEntryID"));
            AddAttribute(postingNode, "HIDDEN", reader.GetInt32NullAsZero(usersPrefix + "PostHidden"));

            User postingUser = new User(InputContext);
            postingUser.AddPrefixedUserXMLBlock(reader, reader.GetInt32(usersPrefix + "PostUserID"), usersPrefix + "Post", postingNode);

            if (!reader.IsDBNull(usersPrefix + "PostHidden") && reader.GetInt32(usersPrefix + "PostHidden") > 0)
            {
                AddTextElement((XmlElement)postingNode, "TEXT", "Hidden");
            }
            else
            {
                string text = reader.GetString(usersPrefix + "PostText");

                // Do the translate to plain text here!

                XmlNode textNode = AddTextElement((XmlElement)postingNode, "TEXT", text);
            }

            return postingNode;
        }
示例#23
0
 public RatingDataReaderAdapter(IDnaDataReader dataReader)
 {
     Value = dataReader.GetTinyIntAsInt("Rating");
     MaxValue = dataReader.GetInt32("MaxValue");
 }
示例#24
0
        /// <summary>
        /// This method creates the crumbtrail for a given item
        /// </summary>
        /// <param name="reader">The DnaDataReader that contains the crumbtrail result set.</param>
        private void GetCrumbtrailForItem(IDnaDataReader reader)
        {
            XmlNode crumbtrailsNode = AddElementTag(RootElement, "CRUMBTRAILS");
            bool startOfTrail = true;
            XmlNode crumbtrailNode = null;
            while (reader.Read())
            {
                // Check to see if we're at the top level
                int treeLevel = reader.GetInt32("TreeLevel");
                if (treeLevel == 0)
                {
                    startOfTrail = true;
                }
                
                // Check to see if we're starting a new trail
                if (startOfTrail)
                {
                    crumbtrailNode = AddElementTag(crumbtrailsNode, "CRUMBTRAIL");
                    startOfTrail = false;
                }

                XmlNode ancestorNode = AddElementTag(crumbtrailNode, "ANCESTOR");
                AddIntElement(ancestorNode, "NODEID", reader.GetInt32("NodeID"));
                AddTextElement((XmlElement)ancestorNode, "NAME", reader.GetString("DisplayName"));
                AddIntElement(ancestorNode, "TREELEVEL", treeLevel);
                AddIntElement(ancestorNode, "NODETYPE", reader.GetInt32("Type"));
                if (reader.Exists("RedirectNodeID") && !reader.IsDBNull("RedirectNodeID"))
                {
                    XmlNode redirectNode = AddTextElement((XmlElement)ancestorNode, "REDIRECTNODE", reader.GetString("RedirectNodeName"));
                    AddAttribute(redirectNode,"ID", reader.GetInt32("RedirectNodeID"));
                }
            }
        }
示例#25
0
        /// <summary>
        /// Generates the Xml structure containing the Hierarchy data
        /// </summary>
        /// <param name="siteID">Get the hierarchy for a given site</param>
        /// <param name="dataReader">Results from the database</param>
        private void GenerateHierarchyForSiteXML(int siteID, IDnaDataReader dataReader)
        {
            XmlElement hierarchyNodes = (XmlElement)RootElement.AppendChild(RootElement.OwnerDocument.CreateElement("HIERARCHYNODES"));
            hierarchyNodes.SetAttribute("SITEID", siteID.ToString());
            bool builtTopNode = false;
            // Got through the results building the tree
            while (dataReader.Read())
            {
                // Check to see if we've built the top level node yet
                if (!builtTopNode)
                {
                    XmlElement topElement = (XmlElement)AddElement(hierarchyNodes);
                    topElement.SetAttribute("NODEID", dataReader.GetInt32("ParentID").ToString());
                    topElement.SetAttribute("NAME", dataReader.GetString("ParentName").Trim());
                    topElement.SetAttribute("TREELEVEL", "0");
                    topElement.SetAttribute("TYPE", dataReader.GetInt32("Type").ToString());
                    builtTopNode = true;
                }

                int parentID = dataReader.GetInt32("ParentID");
                int treeLevel = dataReader.GetInt32("TreeLevel");
                XmlElement parent = (XmlElement)RootElement.SelectSingleNode("//NODE[@NODEID='" + parentID + "'][@TREELEVEL='" + (treeLevel - 1) + "']");
                if (parent == null)
                {
                    // Create the parent
                    parent = AddElement((XmlElement)RootElement.SelectSingleNode("LOCATION[@TREELEVEL='" + (treeLevel - 1) + "']"));
                    parent.SetAttribute("NODEID", parentID.ToString());
                    parent.SetAttribute("NAME", dataReader.GetString("ParentName").Trim());
                    int newTreeLevel = treeLevel - 1;
                    parent.SetAttribute("TREELEVEL", newTreeLevel.ToString());
                    parent.SetAttribute("TYPE", dataReader.GetInt32("ParentType").ToString());
                }

                XmlElement newElement = (XmlElement)AddElement(parent);
                newElement.SetAttribute("NODEID", dataReader.GetInt32("NodeID").ToString());
                newElement.SetAttribute("NAME", dataReader.GetString("DisplayName").Trim());
                newElement.SetAttribute("TREELEVEL", treeLevel.ToString());
                newElement.SetAttribute("TYPE", dataReader.GetInt32("Type").ToString());
            }

            AddCachedXmlElement(hierarchyNodes, siteID);
        }
示例#26
0
        private XmlNode GenerateXMLFromDataReader(IDnaDataReader reader)
        {
            //XmlNode contactFormsXml = CreateElementNode("CONTACTFORMS");
            XmlNode contactFormsXml = CreateElementNode("COMMENTFORUMLIST");
            AddAttribute(contactFormsXml, "skip", skip);
            AddAttribute(contactFormsXml, "show", show);
            AddAttribute(contactFormsXml, "REQUESTEDSITEID", requestedSiteID);

            // Check to make sure that we have a valid reader and we have soething to read
            if (reader == null || !reader.HasRows)
            {
                AddAttribute(contactFormsXml, "totalcount", 0);
            }
            else
            {
                bool haveData = reader.Read();
                
                AddAttribute(contactFormsXml, "COMMENTFORUMLISTCOUNT", reader.GetInt32("commentforumlistcount"));
                
                while (haveData)
                {
                    AddCommentForumListXML(reader, contactFormsXml);
                    haveData = reader.Read();
                }
            }

            return contactFormsXml;
        }
示例#27
0
        void CheckLatestThread(IDnaDataReader reader, int threadid, int forumid, byte canRead, byte canWrite, int siteid)
        {
            reader.ExecuteWithinATransaction(@"SELECT top 1 * FROM Threads order by ThreadID desc");
            reader.Read();

            Assert.AreEqual(threadid, reader.GetInt32("threadid"));
            Assert.AreEqual(forumid, reader.GetInt32("forumid"));
            Assert.AreEqual(canRead, reader.GetByte("canRead"));
            Assert.AreEqual(canWrite, reader.GetByte("canWrite"));
            Assert.AreEqual(siteid, reader.GetInt32("siteid"));
        }
示例#28
0
        void CheckLatestThreadEntry(IDnaDataReader reader, int threadid, int forumid, int userid, int? nextSibling, int? parent, int? prevSibling, int? firstChild, int entryID, int? hidden, int postIndex, byte postStyle, string text)
        {
            reader.ExecuteWithinATransaction(@"SELECT top 1 * FROM ThreadEntries order by EntryID desc");
            reader.Read();

            Assert.AreEqual(threadid, reader.GetInt32("threadid"));
            Assert.AreEqual(forumid, reader.GetInt32("forumid"));
            Assert.AreEqual(userid, reader.GetInt32("userid"));
            TestNullableIntField(reader, "nextSibling", nextSibling);
            TestNullableIntField(reader, "parent", parent);
            TestNullableIntField(reader, "prevSibling", prevSibling);
            TestNullableIntField(reader, "firstChild", firstChild);
            Assert.AreEqual(entryID, reader.GetInt32("entryID"));
            TestNullableIntField(reader, "hidden", hidden);
            Assert.AreEqual(postIndex, reader.GetInt32("postIndex"));
            Assert.AreEqual(postStyle, reader.GetByte("postStyle"));
            Assert.AreEqual(text, reader.GetString("text"));
        }
示例#29
0
        void CheckRiskModThreadEntryQueue(IDnaDataReader reader, int? ThreadEntryId, char PublishMethod, bool? IsRisky, TestDate DateAssessed, int SiteId, int ForumId, int? ThreadId, int UserId, string UserName, int? InReplyTo, string Subject, string Text, byte PostStyle, string IPAddress, string BBCUID, DateTime EventDate, byte AllowEventEntries, int NodeId, int? QueueId, int ClubId, byte IsNotable, byte IsComment, string ModNotes, byte IsThreadedComment)
        {
            reader.ExecuteWithinATransaction(@"SELECT rm.*
                                        FROM RiskModThreadEntryQueue rm
                                        WHERE RiskModThreadEntryQueueId=" + GetLatestRiskModThreadEntryQueueId(reader));
            reader.Read();

            // Nasty tweak.  The RiskModThreadEntryQueue table always stores undefined ThreadId and ThreadEntryId values
            // as NULL.  We treat zero values as NULL for comparision purposes 
            ThreadId = NullIf(ThreadId, 0);
            ThreadEntryId = NullIf(ThreadEntryId, 0);
            
            TestNullableIntField(reader, "ThreadEntryId", ThreadEntryId);

            TestPublishMethod(reader, PublishMethod);

            TestNullableBoolField(reader, "IsRisky", IsRisky);

            TestNullableDateField(reader, "DateAssessed", DateAssessed);

            Assert.AreEqual(SiteId,reader.GetInt32("SiteId"));
            Assert.AreEqual(ForumId,reader.GetInt32("ForumId"));

            TestNullableIntField(reader, "ThreadId", ThreadId);

            Assert.AreEqual(UserId,reader.GetInt32("UserId"));

            Assert.AreEqual(UserName, reader.GetString("UserName"));

            TestNullableIntField(reader, "InReplyTo", InReplyTo);

            Assert.AreEqual(Subject,reader.GetString("Subject"));
            Assert.AreEqual(Text,reader.GetString("Text"));
            Assert.AreEqual(PostStyle, reader.GetByte("PostStyle"));
            Assert.AreEqual(IPAddress,reader.GetString("IPAddress"));
            Assert.AreEqual(BBCUID,reader.GetGuidAsStringOrEmpty("BBCUID"));

            //Assert.AreEqual(EventDate,reader.GetInt32("EventDate"));
            Assert.AreEqual(AllowEventEntries,reader.GetByte("AllowEventEntries"));
            //Assert.AreEqual(NodeId,reader.GetInt32("NodeId"));
            TestNullableIntField(reader, "QueueId", QueueId);
            Assert.AreEqual(ClubId,reader.GetInt32("ClubId"));
            Assert.AreEqual(IsNotable, reader.GetByte("IsNotable"));
            Assert.AreEqual(IsComment, reader.GetByte("IsComment"));
            TestNullableStringField(reader, "ModNotes", ModNotes);
            Assert.AreEqual(IsThreadedComment, reader.GetByte("IsThreadedComment"));

            reader.Close();
        }
示例#30
0
        private void SetForumID(IDnaDataReader dataReader)
        {
            dataReader.ExecuteDEBUGONLY("select forumid from forums where canread = 1 and canwrite=1 and siteid =" + Convert.ToString(_siteId) );

            if (dataReader.Read())
            {
                _forumId = dataReader.GetInt32("ForumID");
            }
            else
            {
                Assert.Fail("Unable to find a forum for site");
            }
        }