📄 articledb.vb
字号:
Set(ByVal Value As String)
_Email = Value
End Set
End Property
Public Property Comment As String
Get
Return _Comment
End Get
Set(ByVal Value As String)
_Comment = Value
End Set
End Property
Public Property PublishDate As String
Get
Return _PublishDate
End Get
Set(ByVal Value As String)
_PublishDate = Value
End Set
End Property
End Class
Public Class ArticleController
Implements Entities.Modules.ISearchable
Implements Entities.Modules.IPortable
Private Const MAX_DESCRIPTION_LENGTH As Integer = 150
Dim _spPrefix As String = "Articles_"
Protected ProviderConfiguration As ProviderConfiguration = ProviderConfiguration.GetProviderConfiguration("data")
Protected ConnectionString As String
Protected ProviderPath As String
Protected ObjectQualifier As String
Protected DatabaseOwner As String
Public Sub New()
' Read the configuration specific information for this provider
Dim objProvider As Provider = CType(ProviderConfiguration.Providers(ProviderConfiguration.DefaultProvider), Provider)
' Read the attributes for this provider
If objProvider.Attributes("connectionStringName") <> "" AndAlso _
System.Configuration.ConfigurationSettings.AppSettings(objProvider.Attributes("connectionStringName")) <> "" Then
ConnectionString = System.Configuration.ConfigurationSettings.AppSettings(objProvider.Attributes("connectionStringName"))
Else
ConnectionString = objProvider.Attributes("connectionString")
End If
ProviderPath = objProvider.Attributes("providerPath")
ObjectQualifier = objProvider.Attributes("objectQualifier")
If ObjectQualifier <> "" And ObjectQualifier.EndsWith("_") = False Then
ObjectQualifier += "_"
End If
DatabaseOwner = objProvider.Attributes("databaseOwner")
If DatabaseOwner <> "" And DatabaseOwner.EndsWith(".") = False Then
DatabaseOwner += "."
End If
End Sub
#Region "Articles Methods"
Public Function GetArticles(ByVal CustomSelect as String) As ArrayList
Return CBO.FillCollection(SqlHelper.ExecuteReader(ConnectionString, CommandType.Text, CustomSelect),GetType(ArticleInfo))
End Function
Public Function GetArticles(ByVal PortalId As Integer, ByVal ModuleId As Integer, ByVal Categories As String, ByVal MaxNumber As Integer, ByVal Age As Integer, ByVal ShowAuthOnly As Boolean, ByVal Featured As Boolean, ByVal IgnorePublishDate as Boolean, ByVal IgnoreExpired as Boolean, ByVal SortField as String) As ArrayList
Return CBO.FillCollection(SqlHelper.ExecuteReader(ConnectionString, DatabaseOwner & ObjectQualifier & _spPrefix & "GetArticles", PortalId, ModuleId, Categories, MaxNumber, Age, ShowAuthOnly, Featured, IgnorePublishDate, IgnoreExpired, SortField), GetType(ArticleInfo))
End Function
Public Function SearchArticles(ByVal PortalId As Integer, byval SearchTerm as string, ByVal SortField as String) As ArrayList
Return CBO.FillCollection(SqlHelper.ExecuteReader(ConnectionString, DatabaseOwner & ObjectQualifier & _spPrefix & "GetSearchResults", PortalId, SearchTerm, SortField), GetType(ArticleInfo))
End Function
Public Function GetCategoryList(ByVal ItemId As Integer) As String
Dim myDataReader As SqlDataReader
Dim myDataRow As DataRow
Dim sCategoryList As String = ""
myDataReader = SqlHelper.ExecuteReader(ConnectionString, DatabaseOwner & ObjectQualifier & _spPrefix & "GetArticleCategories", ItemId)
While myDataReader.Read
sCategoryList += myDataReader("CategoryName") & ", "
End While
If sCategoryList.Length > 1 Then
Return sCategoryList.Remove(sCategoryList.Length -2, 2)
Else
Return ""
End If
End Function
Public Function GetArticle(ByVal ItemId As Integer) As ArticleInfo
Dim ai As ArticleInfo
Dim dr As SqlDataReader
ai = CType(CBO.FillObject(SqlHelper.ExecuteReader(ConnectionString, DatabaseOwner & ObjectQualifier & _spPrefix & "GetArticle", ItemId), GetType(ArticleInfo)), ArticleInfo)
dr = SqlHelper.ExecuteReader(ConnectionString, DatabaseOwner & ObjectQualifier & _spPrefix & "GetArticleCategories", ItemId)
Do While dr.Read
ai.Categories += dr("CategoryID") & ","
Loop
Return ai
End Function
Public Sub AddArticle(ByVal objArticle as ArticleInfo)
SqlHelper.ExecuteScalar(ConnectionString, DatabaseOwner & ObjectQualifier & _spPrefix &"AddArticle", objArticle.PortalId, objArticle.ModuleId, objArticle.UserId, objArticle.Title, objArticle.Description, objArticle.Keywords, objArticle.Authed, objArticle.Featured, objArticle.Article, objArticle.Categories, objArticle.ImageFile, GetNull(objArticle.PublishDate), GetNull(objArticle.ExpireDate))
End Sub
Public Sub UpdateArticle(ByVal objArticle as ArticleInfo)
SqlHelper.ExecuteScalar(ConnectionString, DatabaseOwner & ObjectQualifier & _spPrefix &"UpdateArticle", objArticle.ItemId, objArticle.UserId, objArticle.Title, objArticle.Description, objArticle.Keywords, objArticle.Authed, objArticle.Featured, objArticle.Article, objArticle.Categories, objArticle.ImageFile, GetNull(objArticle.PublishDate), GetNull(objArticle.ExpireDate))
End Sub
Public Sub DeleteArticle(ByVal ItemId As Integer)
SqlHelper.ExecuteScalar(ConnectionString, DatabaseOwner & ObjectQualifier & _spPrefix &"DeleteArticle",ItemID)
End Sub
Public Sub UpdateArticleView(ByVal ItemId As Integer)
SqlHelper.ExecuteScalar(ConnectionString, DatabaseOwner & ObjectQualifier & _spPrefix &"UpdateArticleViews",ItemID)
End Sub
Private Function GetNull(ByVal Field As Object) As Object
Return Null.GetNull(Field, DBNull.Value)
End Function
' comments
Public Sub AddComment(ByVal objComment as CommentInfo)
SqlHelper.ExecuteScalar(ConnectionString, DatabaseOwner & ObjectQualifier & _spPrefix &"AddComment", objComment.ArticleId, objComment.Name, objComment.Email, objComment.Comment)
End Sub
Public Function GetComments(ByVal ArticleId as Integer) As ArrayList
Return CBO.FillCollection(SqlHelper.ExecuteReader(ConnectionString, DatabaseOwner & ObjectQualifier & _spPrefix & "GetComments", ArticleId), GetType(CommentInfo))
End Function
' /comments
#End Region
#Region "Optional Interfaces"
''' -----------------------------------------------------------------------------
''' <summary>
''' GetSearchItems implements the ISearchable Interface
''' </summary>
''' <remarks>
''' </remarks>
''' <param name="ModInfo">The ModuleInfo for the module to be Indexed</param>
''' <history>
''' </history>
''' -----------------------------------------------------------------------------
Public Function GetSearchItems(ByVal ModInfo As Entities.Modules.ModuleInfo) As Services.Search.SearchItemInfoCollection Implements Entities.Modules.ISearchable.GetSearchItems
Dim SearchItemCollection As New SearchItemInfoCollection
Dim objModules As New Entities.Modules.ModuleController
Dim objModule As DotNetNuke.Entities.Modules.ModuleInfo = objModules.GetModule(ModInfo.ModuleID, ModInfo.TabID)
Dim settings As Hashtable = objModules.GetTabModuleSettings(objModule.TabModuleID)
Dim nModuleID = ModInfo.ModuleID
if settings("SiteWide") = "True" then nModuleID = -1
Dim sCategories as String = settings("CategoryID")
Dim bFeatured as Boolean = (Settings("Featured") = "True")
Dim Articles As ArrayList = GetArticles(ModInfo.PortalID, nModuleID,sCategories,500,-1,True,bFeatured,False,False,"CreatedDate")
Dim objArticle As ArticleInfo
For Each objArticle In Articles
Dim SearchItem As SearchItemInfo
Dim CreatorId As Integer = Null.NullInteger
CreatorId = Integer.Parse(objArticle.UserId)
Dim strDescription As String = HtmlUtils.Shorten(HtmlUtils.Clean(objArticle.Description, False), MAX_DESCRIPTION_LENGTH, "...")
SearchItem = New SearchItemInfo(ModInfo.ModuleTitle & " - " & objArticle.Title, strDescription, CreatorId, objArticle.CreatedDate, ModInfo.ModuleID, objArticle.ItemId.ToString, objArticle.Description, "ItemId=" & objArticle.ItemId.ToString)
SearchItemCollection.Add(SearchItem)
Next
Return SearchItemCollection
End Function
''' -----------------------------------------------------------------------------
''' <summary>
''' ExportModule implements the IPortable ExportModule Interface
''' </summary>
''' <remarks>
''' </remarks>
''' <param name="ModuleID">The Id of the module to be exported</param>
''' <history>
''' [cnurse] 11/17/2004 documented
''' </history>
''' -----------------------------------------------------------------------------
Public Function ExportModule(ByVal ModuleID As Integer) As String Implements Entities.Modules.IPortable.ExportModule
Dim strXML As String = ""
'TODO: Export Requires testing and refinement.
'Somehow we need to get the PortalID rather than passing in zero
'Dim arrArticles As ArrayList = GetArticles(PortalID,ModuleID,"",500,-1,0,0,"",1,1)
Dim arrArticles As ArrayList = GetArticles(0,ModuleID,"",500,-1,0,0,1,1, "CreatedDate")
If arrArticles.Count <> 0 Then
strXML += "<articles>"
Dim objArticle As ArticleInfo
For Each objArticle In arrArticles
strXML += "<article>"
'strXML += "<category>" & XMLEncode(objArticle.CategoryName) & "</category>"
strXML += "<title>" & XMLEncode(objArticle.Title) & "</title>"
strXML += "<description>" & XMLEncode(objArticle.Description) & "</description>"
strXML += "<keywords>" & XMLEncode(objArticle.Keywords) & "</keywords>"
strXML += "<PublishDate>" & XMLEncode(objArticle.PublishDate.ToString) & "</PublishDate>"
strXML += "<expiredate>" & XMLEncode(objArticle.ExpireDate.ToString) & "</expiredate>"
strXML += "<authed>" & XMLEncode(objArticle.Featured.ToString) & "</authed>"
strXML += "<featured>" & XMLEncode(objArticle.Featured.ToString) & "</featured>"
strXML += "<article>" & XMLEncode(objArticle.Article.ToString) & "</article>"
strXML += "<imagefile>" & XMLEncode(objArticle.ImageFile.ToString) & "</imagefile>"
strXML += "</article>"
Next
strXML += "</articles>"
End If
Return strXML
End Function
''' -----------------------------------------------------------------------------
''' <summary>
''' ImportModule implements the IPortable ImportModule Interface
''' </summary>
''' <remarks>
''' </remarks>
''' <param name="ModuleID">The Id of the module to be imported</param>
''' <history>
''' [cnurse] 11/17/2004 documented
''' </history>
''' -----------------------------------------------------------------------------
Public Sub ImportModule(ByVal ModuleID As Integer, ByVal Content As String, ByVal Version As String, ByVal UserId As Integer) Implements Entities.Modules.IPortable.ImportModule
Dim xmlArticle As XmlNode
Dim xmlArticles As XmlNode = GetContent(Content, "articles")
For Each xmlArticle In xmlArticles
Dim objArticle As New ArticleInfo
objArticle.ModuleId = ModuleID
objArticle.Title = xmlArticle.Item("title").InnerText
objArticle.Description = xmlArticle.Item("description").InnerText
objArticle.Keywords = xmlArticle.Item("keywords").InnerText
objArticle.Article = xmlArticle.Item("article").InnerText
objArticle.Authed = Boolean.Parse(xmlArticle.Item("authed").InnerText)
objArticle.PublishDate = Date.Parse(xmlArticle.Item("PublishDate").InnerText)
objArticle.ExpireDate = Date.Parse(xmlArticle.Item("expiredate").InnerText)
objArticle.Featured = Boolean.Parse(xmlArticle.Item("featured").InnerText)
objArticle.ImageFile = xmlArticle.Item("imagefile").InnerText
objArticle.UserId = UserId
AddArticle(objArticle)
Next
End Sub
#End Region
End Class
End Namespace
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -