/// <summary> /// Process Request Override /// </summary> public override void ProcessRequest() { if (InputContext.ViewingUser == null || !InputContext.ViewingUser.IsEditor) { AddErrorXml("Unauthorised", "User not authorised", RootElement); return; } string groupName = String.Empty; if (InputContext.DoesParamExist("manage", "manage")) { groupName = InputContext.GetParamStringOrEmpty("manage", "manage"); } if ( groupName == String.Empty ) groupName = "moderator"; // Process Input var foundUserId = ProcessSubmission( groupName ); // Generate XML GenerateXml( groupName, foundUserId ); // Get a list of all the sites. SiteXmlBuilder siteXml = new SiteXmlBuilder(InputContext); RootElement.AppendChild(ImportNode(siteXml.GenerateSitesForUserAsEditorXml(InputContext.TheSiteList).FirstChild)); }
/// <summary> /// /// </summary> public override void ProcessRequest() { bool alerts = InputContext.GetParamBoolOrFalse("alerts", "Moderation Alerts"); bool referrals = InputContext.GetParamBoolOrFalse("referrals", "Refered Items"); bool locked = InputContext.GetParamBoolOrFalse("locked", "Locked Items"); bool fastMod = InputContext.GetParamBoolOrFalse("fastmod", "!Fast Moderation"); int modClassId = InputContext.GetParamIntOrZero("modclassid", "Moderation Class Id"); int postId = InputContext.GetParamIntOrZero("postfilterid", "PostId Filter"); int show = InputContext.GetParamIntOrZero("show", "Number of Items"); if (show == 0) { show = 10; } // Process Input ProcessSubmission(); if (InputContext.DoesParamExist("done","Redirect")) { String redir = InputContext.GetParamStringOrEmpty("redirect", "Redirect"); //AddDnaRedirect("moderate?newstyle=1"); XmlNode redirect = AddElementTag(RootElement, "REDIRECT"); AddAttribute(redirect, "URL", redir); return; } // Generate XML GenerateXml(alerts, referrals, locked, fastMod, InputContext.ViewingUser.UserID, modClassId, postId, show); // Get a list of all the sites. SiteXmlBuilder siteXml = new SiteXmlBuilder(InputContext); RootElement.AppendChild(ImportNode(siteXml.GenerateAllSitesXml(InputContext.TheSiteList).FirstChild)); // Get a list of site options for all sites. RootElement.AppendChild(ImportNode(siteXml.GetSiteOptionListXml(InputContext.TheSiteList))); //Get Moderation Resons for current moderation class ModerationReasons modReasons = new ModerationReasons(InputContext); RootElement.AppendChild(ImportNode(modReasons.GenerateXml(modClassId)) ); //Get Distress Messages for current Moderation Class ModerationDistressMessages mdm = new ModerationDistressMessages(InputContext); RootElement.AppendChild(ImportNode(mdm.GenerateXml(modClassId))); }
/// <summary> /// Functions generates the Recent Posts List /// </summary> /// <param name="userID">The user of the posts to get</param> /// <param name="skip">number of posts to skip</param> /// <param name="show">number to show</param> /// <param name="postType">Type of posts to look for</param> /// <param name="siteID">Site of the posts</param> /// <returns>Whether created ok</returns> public bool CreateRecentPostsList(int userID, int skip, int show, int postType, int siteID) { //TDVASSERT(userID > 0, "CreateRecentPostsList(...) called with non-positive ID"); //TDVASSERT(iMaxNumber > 0, "CreateRecentPostsList(...) called with non-positive max number of posts"); // check object is not already initialised if (userID <= 0 || show <= 0) { return false; } bool showPrivate = false; if (InputContext.ViewingUser != null && (userID == InputContext.ViewingUser.UserID || InputContext.ViewingUser.IsEditor)) { showPrivate = true; } //Allow post authors to see their user-deleted notices and events. bool showUserHidden = showPrivate && (postType == 1 || postType == 2); int count = 0; int rows = 0; XmlElement postList = AddElementTag(RootElement, "POST-LIST"); AddAttribute(postList, "SHOW", show); AddAttribute(postList, "SKIPTO", skip); //AddAttribute(postList, "COUNT", show); using (IDnaDataReader dataReader = GetUsersMostRecentPosts(userID, skip, show, postType, siteID, showUserHidden)) { // Check to see if we found anything string userName = String.Empty; if (dataReader.HasRows && dataReader.Read()) { User user = new User(InputContext); user.AddUserXMLBlock(dataReader, userID, postList); string threadPostType = String.Empty; string threadSubject = String.Empty; ArrayList noticeThreadIDArray = new ArrayList(); int threadID = 0; int postSiteID = 0; int IsPostingFromVisibleSite = 0; if (skip > 0) { //Read/skip over the skip number of rows so that the row that the first row that in the do below is //the one required for (int i = 0; i < skip; i++) { dataReader.Read(); } } //TODO think i will need to check if the reads fail above ie you skip past the end Forum Forum = new Forum(InputContext); do { IsPostingFromVisibleSite = dataReader.GetInt32NullAsZero("IsPostingFromVisibleSite"); if (IsPostingFromVisibleSite == 1) { // Setup the Post Tag and Attributes XmlElement post = CreateElement("POST"); AddAttribute(post, "COUNTPOSTS", dataReader.GetInt32NullAsZero("CountPosts")); if (showPrivate) { AddAttribute(post, "LASTPOSTCOUNTREAD", dataReader.GetInt32NullAsZero("LastPostCountRead")); } // Add User-Hidden Status. if ( showUserHidden && dataReader.DoesFieldExist("Hidden") && dataReader.GetInt32NullAsZero("Hidden") > 0 ) { AddAttribute(post, "HIDDEN", dataReader.GetInt32NullAsZero("HIDDEN")); } int yourLastPost = dataReader.GetInt32NullAsZero("YourLastPost"); //add the editable attribute if (InputContext.ViewingUser != null) { int editable = 0; if (InputContext.ViewingUser.UserID != userID) { editable = 0; } else { if (yourLastPost > 0 ) { DateTime dateMostRecent = dataReader.GetDateTime("MostRecent"); editable = Forum.GetPostEditableAttribute(userID, dateMostRecent); } else { editable = 0; } } AddAttribute(post, "EDITABLE", editable); } AddAttribute(post, "PRIVATE", dataReader.GetInt32NullAsZero("Private")); // Add the siteid and reply details postSiteID = dataReader.GetInt32NullAsZero("SiteID"); AddIntElement(post, "SITEID", postSiteID); AddIntElement(post, "HAS-REPLY", dataReader.GetInt32NullAsZero("Replies")); // Setup a Thread Tag and Attributes XmlElement thread = CreateElement("Thread"); AddAttribute(thread, "FORUMID", dataReader.GetInt32NullAsZero("ForumID")); threadID = dataReader.GetInt32NullAsZero("ThreadID"); AddAttribute(thread, "THREADID", threadID); // Add the first post id if it exists in the result set if (dataReader.DoesFieldExist("FirstPostID")) { AddAttribute(thread, "FIRSTPOSTID", dataReader.GetInt32NullAsZero("FirstPostID")); } threadPostType = dataReader.GetStringNullAsEmpty("Type"); AddAttribute(thread, "TYPE", threadPostType); AddDateXml(dataReader, thread, "EVENTDATE", "EventDate"); AddDateXml(dataReader, thread, "DATEFIRSTPOSTED", "DateFirstPosted"); // See if we've got an notice or event, if so then get the taginfo for the post if (threadPostType == "notice" || threadPostType == "event") { // Add the threadid to the array so we can get the tag details later noticeThreadIDArray.Add(threadID); } // Add the Subject threadSubject = ThreadPost.FormatSubject(dataReader.GetStringNullAsEmpty("FirstSubject"), CommentStatus.Hidden.NotHidden); AddTextTag(thread, "SUBJECT", threadSubject); AddDateXml(dataReader, thread, "LastReply", "REPLYDATE"); // If we have a journal user then put the following in... if (dataReader.GetInt32NullAsZero("Journal") > 0) { XmlElement journal = CreateElement("JOURNAL"); AddAttribute(journal, "USERID", dataReader.GetInt32NullAsZero("Journal")); AddTextTag(journal, "UserName", dataReader.GetStringNullAsEmpty("JournalName")); AddTextTag(journal, "Area", dataReader.GetStringNullAsEmpty("JournalArea")); AddTextTag(journal, "FirstNames", dataReader.GetStringNullAsEmpty("JournalFirstNames")); AddTextTag(journal, "LastName", dataReader.GetStringNullAsEmpty("JournalLastName")); AddTextTag(journal, "Title", dataReader.GetStringNullAsEmpty("JournalTitle")); AddTextTag(journal, "SiteSuffix", dataReader.GetStringNullAsEmpty("JournalSiteSuffix")); thread.AppendChild(journal); } // Get the ForumInfo and Last post details //AddTextTag(thread, "ForumTitle", dataReader.GetStringNullAsEmpty("ForumTitle")); string forumTitle = dataReader.GetStringNullAsEmpty("ForumTitle"); XmlElement forumTitleElement = AddTextElement(thread, "ForumTitle", ""); try { forumTitleElement.InnerXml = forumTitle; } catch (System.Xml.XmlException ex) { AppContext.TheAppContext.Diagnostics.WriteWarningToLog("PostList", "Escaping character in Forum Title" + ex.Message); forumTitleElement.InnerXml = StringUtils.EscapeAllXml(forumTitle); } if (yourLastPost > 0) { XmlElement lastUserPost = CreateElement("LASTUSERPOST"); AddAttribute(lastUserPost, "POSTID", yourLastPost ); AddDateXml(dataReader, lastUserPost, "MostRecent", "DATEPOSTED"); thread.AppendChild(lastUserPost); } // Close the ThreadTag post.AppendChild(thread); // Add the first poster info int firstPostUserID = 0; XmlElement firstPoster = CreateElement("FIRSTPOSTER"); firstPostUserID = dataReader.GetInt32NullAsZero("FirstPosterUserID"); user.AddPrefixedUserXMLBlock(dataReader, firstPostUserID, "FirstPoster", firstPoster); post.AppendChild(firstPoster); // Finally close the POST tag postList.AppendChild(post); count++; } rows++; } while (rows < show && dataReader.Read()); if (dataReader.Read()) { AddAttribute(postList, "MORE", 1); } // Now insert the tag info for any notices or events found if (noticeThreadIDArray.Count > 0) { // Set up some locals string taggedNodeInfo; int noticeThreadID = 0; TagItem tagItem = new TagItem(InputContext); // Now go through the list adding the taginfo into the XML for (int i = 0; i < noticeThreadIDArray.Count; i++) { // Get the ThreadId for the current Index noticeThreadID = (int) noticeThreadIDArray[i]; taggedNodeInfo = String.Empty; // Get the Tagging locations! if (tagItem.InitialiseFromThreadId(noticeThreadID, siteID, userID, threadSubject, false) && tagItem.GetAllNodesTaggedForItem()) { // Get the taginfo from the tagitem object and insert it into the page //tagItem.GetAsString(taggedNodeInfo); //AddInsideWhereIntAttributeEquals("THREAD", "THREADID", noticeThreadID, taggedNodeInfo, 1); string xpath = "/THREAD[@THREADID=" + noticeThreadID.ToString() + "]"; XmlNodeList threads = postList.SelectNodes(xpath); if (threads.Count > 0) { foreach (XmlNode thread in threads) { SiteXmlBuilder siteXml = new SiteXmlBuilder(InputContext); thread.AppendChild(ImportNode(siteXml.GenerateAllSitesXml(InputContext.TheSiteList).FirstChild)); } } } else { // Setup an error for this post! throw new DnaException("CreateRecentPostsList : FailedToGetTagInfo - Failed to get Tagging Info for post"); } } } } } AddAttribute(postList, "COUNT", count); RemovePrivatePosts(showPrivate); return true; }
private void AddEditableSitesXML() { SiteXmlBuilder siteXml = new SiteXmlBuilder(InputContext); RootElement.AppendChild(ImportNode(siteXml.GenerateSitesForUserAsEditorXml(InputContext.TheSiteList, false, "EDITABLESITES").FirstChild)); }
private void AddCurrentSiteSiteOptionsXML() { SiteXmlBuilder siteXml = new SiteXmlBuilder(InputContext); RootElement.AppendChild(ImportNode(siteXml.GetSiteOptionListForSiteXml(selectedSite.SiteID, InputContext.TheSiteList, true))); }
private void AddDefaultSiteOptionsListXML() { SiteXmlBuilder siteXml = new SiteXmlBuilder(InputContext); RootElement.AppendChild(ImportNode(siteXml.GetSiteOptionListForSiteXml(0, InputContext.TheSiteList, true))); }
/// <summary> /// Put in the XML representation of all the sites into the page /// </summary> public void AddAllSitesXmlToPage() { SiteXmlBuilder siteXml = new SiteXmlBuilder(this); siteXml.GenerateAllSitesXml(TheSiteList); _page.AddInside(siteXml, "H2G2"); }
/// <summary> /// Calls the individual objects to generate the User Page XML /// </summary> /// <param name="userPageParameters"></param> private void GenerateUserPageXml(UserPageParameters userPageParameters) { // all the XML objects we need to build the page if (userPageParameters.IsRegistering) { //TODO REGISTER USER STUFF } else { // introducing the players - these will point to the BBC.DNA Component objects required // to construct a user page PageUI pageInterface = new PageUI(userPageParameters.UserID); User owner = new User(InputContext); GuideEntry masthead = null; Forum pageForum = new Forum(InputContext); Forum journal = new Forum(InputContext); PostList recentPosts = new PostList(InputContext); ArticleList recentArticles = new ArticleList(InputContext); ArticleList recentApprovals = new ArticleList(InputContext); CommentsList recentComments = new CommentsList(InputContext); ArticleSubscriptionsList subscribedUsersArticles = new ArticleSubscriptionsList(InputContext); // get or create all the appropriate xml objects bool gotMasthead = false; bool gotPageForum = false; bool gotJournal = false; bool gotRecentPosts = false; bool gotRecentArticles = false; bool gotRecentApprovals = false; bool gotRecentComments = false; bool gotSubscribedToUsersRecentArticles = false; bool gotOwner = CreatePageOwner(userPageParameters.UserID, ref owner); if (InputContext.GetSiteOptionValueBool("PersonalSpace", "IncludeUsersGuideEntry") || userPageParameters.IncludeUsersGuideEntries || InputContext.GetSiteOptionValueBool("PersonalSpace", "IncludeUsersGuideEntryForum") || userPageParameters.IncludeUsersGuideEntriesForums) { gotMasthead = CreatePageArticle(userPageParameters.UserID, owner, out masthead); if (gotMasthead && (InputContext.GetSiteOptionValueBool("PersonalSpace", "IncludeUsersGuideEntryForum") || userPageParameters.IncludeUsersGuideEntriesForums)) { // GuideEntry forum can not be returned if GuideEntry is not being returned. gotPageForum = CreatePageForum(masthead, ref pageForum); } } bool gotInterface = CreateUserInterface(owner, masthead, ref pageInterface); // Only display other information if the page has a valid masthead if (gotMasthead) { if (InputContext.GetSiteOptionValueBool("PersonalSpace", "IncludeJournal") || userPageParameters.IncludeJournals) { gotJournal = CreateJournal(owner, ref journal); } if (InputContext.GetSiteOptionValueBool("PersonalSpace", "IncludeRecentPosts") || userPageParameters.IncludeRecentPosts) { gotRecentPosts = CreateRecentPosts(owner, ref recentPosts); } if (InputContext.GetSiteOptionValueBool("PersonalSpace", "IncludeRecentComments") || userPageParameters.IncludeRecentComments) { gotRecentComments = CreateRecentComments(owner, ref recentComments); } if (InputContext.GetSiteOptionValueBool("PersonalSpace", "IncludeRecentGuideEntries") || userPageParameters.IncludeRecentGuideEntries) { gotRecentArticles = CreateRecentArticles(owner, ref recentArticles); gotRecentApprovals = CreateRecentApprovedArticles(owner, ref recentApprovals); } if (InputContext.GetSiteOptionValueBool("PersonalSpace", "IncludeUploads") || userPageParameters.IncludeRecentUploads) { //string sUploadsXML; //CUpload Upload(m_InputContext); //Upload.GetUploadsForUser(iUserID,sUploadsXML); //pWholePage->AddInside("H2G2",sUploadsXML); } if (InputContext.GetSiteOptionValueBool("PersonalSpace", "IncludeRecentArticlesOfSubscribedToUsers") || userPageParameters.IncludeRecentArticlesOfSubscribedUsers) { gotSubscribedToUsersRecentArticles = CreateSubscribedToUsersRecentArticles(owner, InputContext.CurrentSite.SiteID, ref subscribedUsersArticles); } } XmlElement pageOwner = AddElementTag(RootElement, "PAGE-OWNER"); if(gotOwner) { AddInside(pageOwner, owner); } else { XmlElement pretendUser = AddElementTag(pageOwner, "USER"); AddIntElement(pretendUser, "USERID", userPageParameters.UserID); AddTextTag(pretendUser, "USERNAME", "Researcher " + userPageParameters.UserID.ToString()); } if(gotInterface) { AddInside(pageInterface, ""); } if (userPageParameters.Clip) { string clipSubject = String.Empty; if (gotOwner) { clipSubject = owner.UserName; } else { clipSubject = "U" + userPageParameters.UserID.ToString(); } Link link = new Link(InputContext); //TODO ClipPageToUser page link.ClipPageToUserPage("userpage", userPageParameters.UserID, clipSubject, String.Empty, InputContext.ViewingUser, userPageParameters.Private); AddInside(link); } // if masthead NULL stylesheet should do the default response if (gotMasthead && (InputContext.GetSiteOptionValueBool("PersonalSpace", "IncludeUsersGuideEntry") || userPageParameters.IncludeUsersGuideEntries)) { AddInside(masthead); } // add page forum if there is one => this is the forum associated with // the guide enty that is the masthead for this user if (gotPageForum && (InputContext.GetSiteOptionValueBool("PersonalSpace", "IncludeUsersGuideEntryForum") || userPageParameters.IncludeUsersGuideEntriesForums)) { XmlElement articleForumTag = AddElementTag(RootElement, "ARTICLEFORUM"); AddInside(articleForumTag, pageForum); } // add journal if it exists if ( gotJournal) { XmlElement journalTag = AddElementTag(RootElement, "JOURNAL"); AddInside(journalTag, journal); } // add recent posts if they exist, this may add an empty // POST-LIST tag if the user exists but has never posted if ( gotRecentPosts) { XmlElement recentPostsTag = AddElementTag(RootElement, "RECENT-POSTS"); AddInside(recentPostsTag, recentPosts); } // add recent articles if they exist, this may add an empty // ARTICLES-LIST tag if the user exists but has never written a guide entry if ( gotRecentArticles) { XmlElement recentEntries = AddElementTag(RootElement, "RECENT-ENTRIES"); AddInside(recentEntries, recentArticles); // add the user XML for the owner too if (gotOwner) { AddInside(recentEntries, owner); } } // add recent approvals if they exist, this may add an empty // ARTICLES-LIST tag if the user exists but has never had an entry approved if ( gotRecentApprovals) { XmlElement recentApprovalsTag = AddElementTag(RootElement, "RECENT-APPROVALS"); AddInside(recentApprovalsTag, recentApprovals); // add the user XML for the owner too if (gotOwner) { AddInside(recentApprovalsTag, owner); } } // add recent comments if they exist, this may add an empty // COMMENTS-LIST tag if the user exists but has never posted if ( gotRecentComments) { XmlElement recentCommentsTag = AddElementTag(RootElement, "RECENT-COMMENTS"); AddInside(recentCommentsTag, recentComments); } if ( gotSubscribedToUsersRecentArticles) { XmlElement subscribedUsersArticlesTag = AddElementTag(RootElement, "RECENT-SUBSCRIBEDARTICLES"); AddInside(subscribedUsersArticlesTag, subscribedUsersArticles); } SiteXmlBuilder siteXml = new SiteXmlBuilder(InputContext); RootElement.AppendChild(ImportNode(siteXml.GenerateAllSitesXml(InputContext.TheSiteList).FirstChild)); AddWatchListSection(userPageParameters, gotMasthead); AddWhosOnlineSection(); AddClubsSection(userPageParameters, gotMasthead); AddPrivateForumSection(userPageParameters, gotMasthead, gotOwner); AddLinksSection(userPageParameters, owner, gotMasthead, gotOwner); AddTaggedNodesSection(userPageParameters, owner, gotMasthead); AddNoticeBoardPostcoderSection(userPageParameters, gotMasthead); AddSiteOptionSection(userPageParameters); } }
/// <summary> /// Finalises the page by add required member variable XML to the page /// </summary> private void FinalisePage() { SiteXmlBuilder siteXml = new SiteXmlBuilder(this); Diagnostics.WriteToLog("FinalisePage", "Adding siteoption list for site " + CurrentSite.SiteID.ToString()); XmlNode siteOptionList = siteXml.GetSiteOptionListForSiteXml(CurrentSite.SiteID, TheSiteList); siteXml.GenerateXml(siteOptionList, CurrentSite); InsertPageComponent(siteXml); // Add the domain tag to the page string domain = "bbc.co.uk"; if (pageDomain == "com") { domain = "bbc.com"; } _page.AddTextTag(_page.RootElement.FirstChild, "PAGEDOMAIN", domain); }
private void GenerateAltIdentitiesXml(IDnaDataReader dataReader, XmlNode parentXml) { int postPassedCount = 0; int postFailedCount = 0; int postTotalCount = 0; int articlePassedCount = 0; int articleFailedCount = 0; int articleTotalCount = 0; // Add Result Data . while (dataReader.Read()) { XmlNode memberXml = AddElementTag(parentXml,"MEMBERDETAILS"); //AddUser XML XmlNode userXml = AddElementTag(memberXml, "USER"); AddIntElement(userXml,"USERID", dataReader.GetInt32NullAsZero("userid")); AddTextTag(userXml, "USERNAME", dataReader.GetStringNullAsEmpty("username")); AddTextTag(userXml, "LOGINNAME", dataReader.GetStringNullAsEmpty("loginname")); AddTextTag(userXml, "EMAIL", dataReader.GetStringNullAsEmpty("email")); XmlNode statusXml = AddElementTag(userXml, "STATUS"); AddAttribute(statusXml, "STATUSID", dataReader.GetInt32NullAsZero("prefstatus")); AddIntElement(userXml, "ACTIVE", Convert.ToInt32(dataReader.GetBoolean("active"))); //Add Site XML. int siteId = dataReader.GetInt32NullAsZero("siteid"); ISite site = InputContext.TheSiteList.GetSite(siteId); SiteXmlBuilder siteXmlBuilder = new SiteXmlBuilder(InputContext); XmlNode siteXML = siteXmlBuilder.GenerateXml(null, site); siteXML = ImportNode(siteXML); memberXml.AppendChild(siteXML); if (!dataReader.IsDBNull("datejoined")) { AddDateXml(dataReader.GetDateTime("datejoined"), memberXml, "DATEJOINED"); } //Add Stats XML AddIntElement(memberXml, "POSTPASSEDCOUNT", dataReader.GetInt32NullAsZero("postpassedcount")); AddIntElement(memberXml, "POSTFAILEDCOUNT", dataReader.GetInt32NullAsZero("postfailedcount")); AddIntElement(memberXml, "POSTTOTALCOUNT", dataReader.GetInt32NullAsZero("totalpostcount")); AddIntElement(memberXml, "ARTICLEPASSEDCOUNT", dataReader.GetInt32NullAsZero("articlepassedcount")); AddIntElement(memberXml, "ARTICLEFAILEDCOUNT", dataReader.GetInt32NullAsZero("articlefailedcount")); AddIntElement(memberXml, "ARTICLETOTALCOUNT", dataReader.GetInt32NullAsZero("totalarticlecount")); postPassedCount += dataReader.GetInt32NullAsZero("postpassedcount"); postFailedCount += dataReader.GetInt32NullAsZero("postfailedcount"); postTotalCount += dataReader.GetInt32NullAsZero("totalpostcount"); articlePassedCount += dataReader.GetInt32NullAsZero("articlepassedcount"); articleFailedCount += dataReader.GetInt32NullAsZero("articlefailedcount"); articleTotalCount += dataReader.GetInt32NullAsZero("totalarticlecount"); } //Add Member Details Summary XML XmlNode summaryXml = AddElementTag(parentXml, "SUMMARY"); AddIntElement(summaryXml, "POSTPASSEDCOUNT", postPassedCount); AddIntElement(summaryXml, "POSTFAILEDCOUNT", postFailedCount); AddIntElement(summaryXml, "POSTTOTALCOUNT", postTotalCount); AddIntElement(summaryXml, "ARTICLEPASSEDCOUNT", articlePassedCount); AddIntElement(summaryXml,"ARTICLEFAILEDCOUNT",articleFailedCount); AddIntElement(summaryXml, "ARTICLETOTALCOUNT", articleTotalCount); }
/// <summary> /// Calls the post list class to generate the posts matching the search /// </summary> private void GetThreadSearchXml(string search, int skip, int show) { // Put in the wrapping <POSTS> tag which has the user ID in it XmlElement threadSearch = AddElementTag(RootElement, "THREADENTRY-SEARCH"); AddTextTag(threadSearch, "SEARCH", search); AddIntElement(threadSearch, "SITEID", InputContext.CurrentSite.SiteID); XmlElement postlist = AddElementTag(threadSearch, "POST-LIST"); AddAttribute(postlist, "SKIP", skip); AddAttribute(postlist, "SHOW", show); using (IDnaDataReader dataReader = InputContext.CreateDnaDataReader("searchthreadentriesfast")) { dataReader.AddParameter("siteid", InputContext.CurrentSite.SiteID); dataReader.AddParameter("condition", search); dataReader.Execute(); int results = 0; int more = 0; // Check to see if we found anything if (dataReader.HasRows && dataReader.Read()) { //Need to skip to start of results. TODO replace with paged results for (int i = 0; i < skip; ++i) { dataReader.Read(); } do { XmlElement post = AddElementTag(postlist, "POST"); AddIntElement(post, "POSTID", dataReader.GetInt32NullAsZero("entryid")); AddIntElement(post, "THREADID", dataReader.GetInt32NullAsZero("threadID")); AddIntElement(post, "FORUMID", dataReader.GetInt32NullAsZero("forumid")); AddTextTag(post, "SUBJECT", dataReader.GetStringNullAsEmpty("subject")); AddTextTag(post, "TEXT", dataReader.GetStringNullAsEmpty("text")); AddDateXml(dataReader.GetDateTime("dateposted"), post, "DATEPOSTED"); AddDateXml(dataReader.GetDateTime("lastupdated"), post, "LASTUPDATED"); AddIntElement(post, "POSTSTYLE", dataReader.GetTinyIntAsInt("PostStyle")); int score = Convert.ToInt32(dataReader.GetDoubleNullAsZero("score") * 100.0); AddIntElement(post, "SCORE", score); ++results; } while (dataReader.Read() && results < show); if (dataReader.Read()) { more = 1; } } AddAttribute(postlist, "MORE", more); AddAttribute(postlist, "COUNT", results); } FileCache.PutItem(AppContext.TheAppContext.Config.CachePath, "threadentrysearch", _cacheName, threadSearch.OuterXml); SiteXmlBuilder siteXml = new SiteXmlBuilder(InputContext); RootElement.AppendChild(ImportNode(siteXml.GenerateAllSitesXml(InputContext.TheSiteList).FirstChild)); }
/// <summary> /// Used to process the current request. /// </summary> public override void ProcessRequest() { //Clean any existing XML. RootElement.RemoveAll(); XmlNode summaryXML = AddElementTag(RootElement, "SITESUMMARY"); if (InputContext.ViewingUser == null || !InputContext.ViewingUser.IsSuperUser) { AddErrorXml("Invalid Permissions", "Superuser permissions required", RootElement); return; } int siteId = InputContext.GetParamIntOrZero("siteid","SiteId"); if (siteId > 0) { //Add XML for selected site. ISite site = InputContext.TheSiteList.GetSite(siteId); SiteXmlBuilder siteXmlBuilder = new SiteXmlBuilder(InputContext); XmlNode siteXML = siteXmlBuilder.GenerateXml(null, site); siteXML = ImportNode(siteXML); summaryXML.AppendChild(siteXML); } bool recalculateReport = InputContext.GetParamIntOrZero("recalculate", "Recalculate Report") == 1; //Require Dates to produce site summary report. if (InputContext.DoesParamExist("startdate", "Start Date") && InputContext.DoesParamExist("enddate", "End Date")) { DateTime startDate; DateTime endDate; try { startDate = DateTime.Parse(InputContext.GetParamStringOrEmpty("startdate", "StartDate")); endDate = DateTime.Parse(InputContext.GetParamStringOrEmpty("enddate", "EndDate")); } catch(FormatException fe) { this.AddErrorXml("Bad Format",fe.Message,RootElement); return; } DateRangeValidation dateValidate = new DateRangeValidation(); DateRangeValidation.ValidationResult result = dateValidate.ValidateDateRange(startDate, endDate, 1, false, true); if (result != DateRangeValidation.ValidationResult.VALID) { XmlElement errorXML = dateValidate.GetLastValidationResultAsXmlElement(RootElement.OwnerDocument); RootElement.AppendChild(errorXML); return; } AddDateXml(startDate, summaryXML, "STARTDATE"); AddDateXml(endDate, summaryXML, "ENDDATE"); GenerateStatsXML(summaryXML, siteId, startDate, endDate, recalculateReport); } SiteXmlBuilder siteXml = new SiteXmlBuilder(InputContext); siteXml.GenerateAllSitesXml(InputContext.TheSiteList); AddInside(RootElement, siteXml); }