/// <summary> /// The mark all_ click. /// </summary> /// <param name="sender"> /// The sender. /// </param> /// <param name="e"> /// The e. /// </param> protected void MarkAll_Click([NotNull] object sender, [NotNull] EventArgs e) { var markAll = (LinkButton)sender; object categoryId = null; int icategoryId; if (int.TryParse(markAll.CommandArgument, out icategoryId)) { categoryId = icategoryId; } DataTable dt = LegacyDb.forum_listread( boardID: this.PageContext.PageBoardID, userID: this.PageContext.PageUserID, categoryID: categoryId, parentID: null, useStyledNicks: false, findLastRead: false); this.Get <IReadTrackCurrentUser>().SetForumRead(dt.AsEnumerable().Select(r => r["ForumID"].ToType <int>())); this.BindData(); }
/// <summary> /// The bind data. /// </summary> private void BindData() { this.forumlist.DataSource = LegacyDb.forum_listread( this.PageContext.PageBoardID, this.PageContext.PageUserID, null, null, false, false); this.forumlist.DataValueField = "ForumID"; this.forumlist.DataTextField = "Forum"; this.DataBind(); this.forumlist.Items.Insert(0, new ListItem(this.GetText("ADMIN_PRUNE", "ALL_FORUMS"), "0")); }
/// <summary> /// The method creates YAF SyndicationFeed for forums in a category. /// </summary> /// <param name="feed"> /// The YAF Syndication Feed. /// </param> /// <param name="feedType"> /// The FeedType. /// </param> /// <param name="atomFeedByVar"> /// The Atom feed checker. /// </param> /// <param name="categoryId"> /// The category id. /// </param> private void GetForumFeed( [NotNull] ref YafSyndicationFeed feed, YafRssFeeds feedType, bool atomFeedByVar, [NotNull] object categoryId) { var syndicationItems = new List <SyndicationItem>(); using (var dt = LegacyDb.forum_listread(this.PageContext.PageBoardID, this.PageContext.PageUserID, categoryId, null, false, false)) { var urlAlphaNum = FormatUrlForFeed(BaseUrlBuilder.BaseUrl); feed = new YafSyndicationFeed( this.GetText("DEFAULT", "FORUM"), feedType, atomFeedByVar ? YafSyndicationFormats.Atom.ToInt() : YafSyndicationFormats.Rss.ToInt(), urlAlphaNum); foreach (DataRow row in dt.Rows) { if (row["TopicMovedID"].IsNullOrEmptyDBField() && row["LastPosted"].IsNullOrEmptyDBField()) { continue; } var lastPosted = Convert.ToDateTime(row["LastPosted"]) + this.Get <IDateTime>().TimeOffset; if (syndicationItems.Count <= 0) { if (row["LastUserID"].IsNullOrEmptyDBField() || row["LastUserID"].IsNullOrEmptyDBField()) { break; } feed.Authors.Add( SyndicationItemExtensions.NewSyndicationPerson( string.Empty, row["LastUserID"].ToType <long>(), null, null)); feed.LastUpdatedTime = DateTime.UtcNow + this.Get <IDateTime>().TimeOffset; // Alternate Link // feed.Links.Add(new SyndicationLink(new Uri(YafBuildLink.GetLinkNotEscaped(ForumPages.topics, true)))); } if (!row["LastUserID"].IsNullOrEmptyDBField()) { feed.Contributors.Add( SyndicationItemExtensions.NewSyndicationPerson( string.Empty, row["LastUserID"].ToType <long>(), null, null)); } syndicationItems.AddSyndicationItem( row["Forum"].ToString(), this.HtmlEncode(row["Description"].ToString()), null, YafBuildLink.GetLinkNotEscaped(ForumPages.topics, true, "f={0}", row["ForumID"]), "urn:{0}:ft{1}:st{2}:fid{3}:lmid{4}:{5}".FormatWith( urlAlphaNum, feedType, atomFeedByVar ? YafSyndicationFormats.Atom.ToInt() : YafSyndicationFormats.Rss.ToInt(), row["ForumID"], row["LastMessageID"], this.PageContext.PageBoardID).Unidecode(), lastPosted, feed); } feed.Items = syndicationItems; } }
/// <summary> /// Returns the layout of the board /// </summary> /// <param name="boardID"> The board ID. </param> /// <param name="userID"> The user ID. </param> /// <param name="categoryID"> The category ID. </param> /// <param name="parentID"> The parent ID. </param> /// <returns> The board layout. </returns> public DataSet BoardLayout(int boardID, int userID, int?categoryID, int?parentID) { if (categoryID.HasValue && categoryID == 0) { categoryID = null; } using (var ds = new DataSet()) { // get the cached version of forum moderators if it's valid DataTable moderator; if (this.BoardSettings.ShowModeratorList) { moderator = this.GetModerators(); } else { // add dummy table. moderator = new DataTable("Moderator"); moderator.Columns.AddRange( new[] { new DataColumn("ForumID", typeof(int)), new DataColumn("ForumName", typeof(string)), new DataColumn("ModeratorName", typeof(string)), new DataColumn("ModeratorDisplayName", typeof(string)), new DataColumn("ModeratorEmail", typeof(string)), new DataColumn("ModeratorAvatar", typeof(string)), new DataColumn("ModeratorAvatarImage", typeof(bool)), new DataColumn("Style", typeof(string)), new DataColumn("IsGroup", typeof(bool)) }); } // insert it into this DataSet ds.Tables.Add(moderator.Copy()); // get the Category Table DataTable category = this.DataCache.GetOrSet( Constants.Cache.ForumCategory, () => { var catDt = this.DbFunction.GetAsDataTable(cdb => cdb.category_list(boardID, null)); catDt.TableName = "Category"; return(catDt); }, TimeSpan.FromMinutes(this.BoardSettings.BoardCategoriesCacheTimeout)); // add it to this dataset ds.Tables.Add(category.Copy()); DataTable categoryTable = ds.Tables["Category"]; if (categoryID.HasValue) { // make sure this only has the category desired in the dataset foreach ( DataRow row in categoryTable.AsEnumerable().Where(row => row.Field <int>("CategoryID") != categoryID)) { // delete it... row.Delete(); } categoryTable.AcceptChanges(); } DataTable forum = LegacyDb.forum_listread( boardID, userID, categoryID, parentID, this.BoardSettings.UseStyledNicks, this.BoardSettings.UseReadTrackingByDatabase); forum.TableName = "Forum"; ds.Tables.Add(forum.Copy()); ds.Relations.Add( "FK_Forum_Category", categoryTable.Columns["CategoryID"], ds.Tables["Forum"].Columns["CategoryID"], false); ds.Relations.Add( "FK_Moderator_Forum", ds.Tables["Forum"].Columns["ForumID"], ds.Tables["Moderator"].Columns["ForumID"], false); bool deletedCategory = false; // remove empty categories... foreach ( DataRow row in categoryTable.SelectTypedList( row => new { row, childRows = row.GetChildRows("FK_Forum_Category") }) .Where(@t => [email protected]()) .Select(@t => @t.row)) { // remove this category... row.Delete(); deletedCategory = true; } if (deletedCategory) { categoryTable.AcceptChanges(); } return(ds); } }