📄 weblogdataprovider.cs
字号:
//------------------------------------------------------------------------------
// <copyright company="Telligent Systems">
// Copyright (c) Telligent Systems Corporation. All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
using System;
using System.Collections;
using System.Data;
using System.IO;
using System.Xml;
using CommunityServer.Components;
using CommunityServer.Configuration;
namespace CommunityServer.Blogs.Components
{
/// <summary>
/// Summary description for WeblogDataProvider.
/// </summary>
public abstract class WeblogDataProvider
{
public static readonly string WeblogDataProviderName = "WeblogDataProvider";
#region Search
public abstract SearchResultSet GetSearchResults(SearchQuery query, SearchTerms terms);
public abstract PostSet SearchReindexPosts (int setsize, int settingsID);
#endregion
#region Instance
private static WeblogDataProvider _defaultInstance = null;
static WeblogDataProvider()
{
CreateDefaultCommonProvider();
}
/// <summary>
/// Returns an instance of the user-specified data provider class.
/// </summary>
/// <returns>An instance of the user-specified data provider class. This class must inherit the
/// CommonDataProvider interface.</returns>
public static WeblogDataProvider Instance()
{
return _defaultInstance;
}
public static WeblogDataProvider Instance (Provider dataProvider)
{
WeblogDataProvider fdp = CSCache.Get(dataProvider.Name) as WeblogDataProvider;
if(fdp == null)
{
fdp = DataProviders.Invoke(dataProvider) as WeblogDataProvider;
CSCache.Max(dataProvider.Name,fdp);
}
return fdp;
}
/// <summary>
/// Creates the Default CommonDataProvider
/// </summary>
private static void CreateDefaultCommonProvider()
{
// Get the names of the providers
//
CSConfiguration config = CSConfiguration.GetConfig();
// Read the configuration specific information
// for this provider
//
Provider sqlForumsProvider = (Provider) config.Providers[WeblogDataProviderName];
// Read the connection string for this provider
//
_defaultInstance = DataProviders.CreateInstance(sqlForumsProvider) as WeblogDataProvider;
}
#endregion
#region Base Methods
#region Get Posts
public abstract WeblogPost GetWeblogPost(int postID, bool includeCategories, bool isApproved);
public abstract ThreadSet GetBlogThreads(BlogThreadQuery query);
public abstract PostSet GetPosts(BlogPostQuery query);
public abstract PostSet GetThreadsTrackedByUser(int SectionID, int UserID);
#endregion
#region Posts
public abstract BlogPostResults AddPost(WeblogPost post, User user, out int PostID);
public abstract BlogPostResults UpdatePost(WeblogPost post, int editedBy);
public abstract void DeletePost(int sectionID, int postID, int userID, BlogPostType blogPostType);
#endregion
#region GetBlogs
public abstract Hashtable GetWeblogs();
#endregion
#region Permissions
public abstract ArrayList GetBlogPermissions(int weblogID);
#endregion
#region Blog Feedback
public abstract ArrayList GetFeedback( Int32 forumID, Int32 pageIndex, Int32 pageSize, out Int32 totalRecords );
#endregion
public abstract ArrayList GetPostsByMonths(int BlogID);
public abstract Hashtable GetPostsByMonth(int BlogID, DateTime Month);
public abstract void UpdateRecentContent(int SettingsID);
#endregion
#region Helpers
public static object ConvertCategoriesToXML(string[] Categories)
{
if(Categories == null || Categories.Length == 0)
return DBNull.Value;
StringWriter sw = new StringWriter();
XmlTextWriter writer = new XmlTextWriter(sw);
writer.WriteStartElement("Categories");
foreach (string category in Categories)
{
writer.WriteElementString("Category", category);
}
writer.Close();
return sw.ToString();
}
#endregion
#region Populate
#region Weblogs
/// <summary>
/// Populates an existing Weblog object
/// </summary>
public static void PopulateWeblogData(IDataReader dr, Weblog w)
{
CommonDataProvider.PopulateSectionFromIDataReader(dr,w);
w.MostRecentPostName = dr["MostRecentPostName"] as string;
w.MostRecentArticleID = (int)dr["MostRecentArticleID"];
w.MostRecentArticleDate = (DateTime)dr["MostRecentArticleDate"];
w.MostRecentArticleAuthor = dr["MostRecentArticleAuthor"] as string;
w.MostRecentArticleAuthorID = (int)dr["MostRecentArticleAuthorID"];
w.MostRecentArticleName = dr["MostRecentArticleName"] as string;
w.PostCount = (int)dr["PostCount"];
w.ArticleCount = (int)dr["ArticleCount"];
w.TrackbackCount = (int)dr["TrackbackCount"];
w.CommentCount = (int)dr["CommentCount"];
}
#endregion
public static WeblogPost PopulateWeblogPostContentFromIDataReader(IDataReader reader)
{
//Is this all of the data we need?
WeblogPost post = new WeblogPost();
post.SectionID = (int) reader["SectionID"];
post.PostID = (int) reader["PostID"];
post.Replies = (int) reader["Replies"];
post.Views = (int) reader["TotalViews"];
post.AggViews = (int) reader["AggViews"];
post.ThreadID = (int) reader["ThreadID"];
post.Subject = (string) reader["Subject"];
post.Body = (string) reader["Body"];
post.Username = (string) reader["Username"];
post.AuthorID = (int) reader["UserID"];
post.PostDate = (DateTime) reader["PostDate"];
post.BloggerTime = (DateTime) reader["BloggerTime"];
post.ThreadDate = (DateTime) reader["ThreadDate"];
post.IsLocked = (bool) reader["IsLocked"];
post.IsApproved = (bool) reader["IsApproved"];
post.FormattedBody = reader["FormattedBody"] as string;
post.ThreadID = (int)reader["ThreadID"];
post.PostLevel = (int) reader["PostLevel"];
post.ParentID = (int) reader["ParentID"];
post.PostConfig = (BlogPostConfig) (int)reader["PostConfig"];
post.BlogPostType = (BlogPostType) (byte)reader["BlogPostType"];
post.TitleUrl = reader["TitleUrl"] as string;
post.Excerpt = reader["Excerpt"] as string;
post.Name = reader["PostName"] as string;
post.RatingSum = (int)reader["RatingSum"];
post.TotalRatings = (int)reader["TotalRatings"];
return post;
}
public static WeblogPost PopulateWeblogPostContentFromDataRow(DataRow dr, DataRelation relationShip)
{
//Is this all of the data we need?
WeblogPost post = new WeblogPost();
post.SectionID = (int) dr["SectionID"];
post.PostID = (int) dr["PostID"];
post.Replies = (int) dr["Replies"];
post.Views = (int) dr["TotalViews"];
post.AggViews = (int) dr["AggViews"];
post.ThreadID = (int) dr["ThreadID"];
post.Subject = (string) dr["Subject"];
post.Body = (string) dr["Body"];
post.Username = (string) dr["Username"];
post.AuthorID = (int) dr["UserID"];
post.PostDate = (DateTime) dr["PostDate"];
post.BloggerTime = (DateTime) dr["BloggerTime"];
post.ThreadDate = (DateTime) dr["ThreadDate"];
post.IsLocked = (bool) dr["IsLocked"];
post.EmoticonID = (int) dr["ThreadEmoticonID"];
post.FormattedBody = dr["FormattedBody"] as string;
post.IsApproved = (bool) dr["IsApproved"];
post.PostLevel = (int) dr["PostLevel"];
post.ParentID = (int) dr["ParentID"];
post.PostConfig = (BlogPostConfig) (int)dr["PostConfig"];
post.BlogPostType = (BlogPostType) (byte)dr["BlogPostType"];
post.TitleUrl = dr["TitleUrl"] as string;
post.Excerpt = dr["Excerpt"] as string;
post.Name = dr["PostName"] as string;
post.RatingSum = (int)dr["RatingSum"];
post.TotalRatings = (int)dr["TotalRatings"];
DataRow[] categories = dr.GetChildRows(relationShip);
if(categories != null && categories.Length > 0)
{
post.Categories = new string[categories.Length];
for(int i = 0; i<categories.Length; i++)
{
post.Categories[i] = categories[i]["Name"] as string;
}
}
return post;
}
public static WeblogPost PopulateWeblogEntryFromIDataReader(IDataReader reader)
{
WeblogPost entry = PopulateWeblogPostContentFromIDataReader(reader);
SerializerData data = CommonDataProvider.PopulateSerializerDataIDataReader(reader, SerializationType.Post);
entry.SetSerializerData(data);
return entry;
// CommonDataProvider.PopulatePostFromIDataReader(reader,entry);
//
// entry.PostConfig = (BlogPostConfig) (int)reader["PostConfig"];
// entry.BlogPostType = (BlogPostType) (byte)reader["BlogPostType"];
//
// entry.BloggerTime = (DateTime) reader["BloggerTime"];
//
// entry.TitleUrl = reader["TitleUrl"] as string;
// entry.Excerpt = reader["Excerpt"] as string;
// entry.Name = reader["PostName"] as string;
//
// entry.RatingSum = (int)reader["RatingSum"];
// entry.TotalRatings = (int)reader["TotalRatings"];
}
#endregion
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -