I have a great need for a current project to optimize whereever I can. The DotNetNuke SqlDataProvider is one of those areas where optimizations are NEEDED.
As of right now, I have only optimized the string portions of the code. I replaced the normal concatenation with String.Concat() and am also using String comparison instead of strString <> "". Oh yeah, and you cannot forget to use StringBuilders! :)
There is also a few mail methods leftover in there from a script I had inserted to show me some information during troubleshooting something. There are certainly better implementations for it, but like I said, it was just for some real quick troubleshooting. I suggest removing it if you aren't going to use it.
There is much more to be done... Check it out and enjoy! (The DOWNLOAD is available at the bottom.)
Imports System
Imports System.Data
Imports System.Data.Common
Imports System.Data.SqlClient
Imports System.Data.SqlTypes
Imports Microsoft.ApplicationBlocks.Data
Imports System.IO
Imports System.Text
Imports System.Web
Imports DotNetNuke
Imports DotNetNuke.Common.Utilities
Imports DotNetNuke.Framework.Providers
Imports DotNetNuke.Entities.Users
Namespace DotNetNuke.Data
Public Class SqlDataProvider
Inherits DataProvider
#Region "Private Members"
Private Const ProviderType As String = "data"
Private p_providerConfiguration As ProviderConfiguration = ProviderConfiguration.GetProviderConfiguration(ProviderType)
Private p_connectionString As String = String.Empty
Private p_providerPath As String = String.Empty
Private p_objectQualifier As String = String.Empty
Private p_databaseOwner As String = String.Empty
Private p_upgradeConnectionString As String = String.Empty
Private p_DbOwnerQualifier As String = String.Empty
#End Region
#Region "Constructors"
Sub New()
Try
' Read the configuration specific information for this provider
Dim objProvider As DotNetNuke.Framework.Providers.Provider = _
CType(p_providerConfiguration.Providers(p_providerConfiguration.DefaultProvider), DotNetNuke.Framework.Providers.Provider)
' Read the attributes for this provider
'Get Connection string from web.config
p_connectionString = DotNetNuke.Common.Utilities.Config.GetConnectionString()
If String.IsNullOrEmpty(p_connectionString) Then
' Use connection string specified in provider
p_connectionString = objProvider.Attributes("connectionString")
End If
If Not String.IsNullOrEmpty(Convert.ToString(objProvider.Attributes("upgradeConnectionString"))) Then
p_upgradeConnectionString = objProvider.Attributes("upgradeConnectionString")
Else
p_upgradeConnectionString = p_connectionString
End If
p_providerPath = DotNetNuke.Common.Utilities.Config.GetProviderPath(ProviderType)
p_objectQualifier = DotNetNuke.Common.Utilities.Config.GetObjectQualifer()
p_databaseOwner = DotNetNuke.Common.Utilities.Config.GetDataBaseOwner()
p_DbOwnerQualifier = String.Concat(p_databaseOwner, p_objectQualifier)
Catch ex As Exception
SendExceptionToAdmin(ex)
Throw ex
End Try
End Sub
#End Region
#Region "Public Properties"
ReadOnly Property ConnectionString() As String
Get
Return p_connectionString
End Get
End Property
ReadOnly Property ProviderPath() As String
Get
Return p_providerPath
End Get
End Property
ReadOnly Property ObjectQualifier() As String
Get
Return p_objectQualifier
End Get
End Property
ReadOnly Property DatabaseOwner() As String
Get
Return p_databaseOwner
End Get
End Property
ReadOnly Property UpgradeConnectionString() As String
Get
Return p_upgradeConnectionString
End Get
End Property
ReadOnly Property DbOwnerQualifier() As String
Get
Try
Return p_DbOwnerQualifier
Catch ex As Exception
SendExceptionToAdmin(ex)
Return String.Empty
End Try
End Get
End Property
#End Region
#Region "Private Methods"
Private Sub ExecuteADOScript(ByVal trans As SqlTransaction, ByVal SQL As String)
'Get the connection
Dim connection As SqlConnection = trans.Connection
'Create a new command (with no timeout)
Dim command As New SqlCommand(SQL, trans.Connection)
command.Transaction = trans
command.CommandTimeout = 0
command.ExecuteNonQuery()
End Sub
Private Sub ExecuteADOScript(ByVal SQL As String)
'Create a new connection
Dim connection As New SqlConnection(UpgradeConnectionString)
'Create a new command (with no timeout)
Dim command As New SqlCommand(SQL, connection)
command.CommandTimeout = 0
connection.Open()
command.ExecuteNonQuery()
connection.Close()
End Sub
Private Function GetRoleNull(ByVal RoleID As Integer) As Object
If RoleID.ToString = DotNetNuke.Common.Globals.glbRoleNothing Then
Return DBNull.Value
Else
Return RoleID
End If
End Function
#End Region
#Region "Generic Methods"
'Generic Methods
'===============
'
''' -----------------------------------------------------------------------------
'''
''' ExecuteReader executes a stored procedure or "dynamic sql" statement, against
''' the database
'''
'''
'''
''' The name of the Stored Procedure to Execute
''' An array of parameters to pass to the Database
'''
''' [cnurse] 12/11/2005 created
'''
''' -----------------------------------------------------------------------------
Overrides Sub ExecuteNonQuery(ByVal ProcedureName As String, ByVal ParamArray commandParameters() As Object)
SqlHelper.ExecuteNonQuery(ConnectionString, QueryName(ProcedureName), commandParameters)
End Sub
Overrides Function ExecuteReader(ByVal ProcedureName As String, ByVal ParamArray commandParameters() As Object) As IDataReader
Return SqlHelper.ExecuteReader(ConnectionString, QueryName(ProcedureName), commandParameters)
End Function
Overrides Function ExecuteScalar(ByVal ProcedureName As String, ByVal ParamArray commandParameters() As Object) As Object
Return SqlHelper.ExecuteScalar(ConnectionString, QueryName(ProcedureName), commandParameters)
End Function
Overrides Function ExecuteSql(ByVal strSql As String) As IDataReader
Return ExecuteSql(strSql, Nothing)
End Function
Overrides Function ExecuteSql(ByVal strSql As String, ByVal ParamArray commandParameters() As IDataParameter) As IDataReader
SendMailToAdmin(String.Concat("ExecuteSql(", strSql, ") ENTERED"), String.Concat("ExecuteSql(", strSql, ") ENTERED"))
Dim sqlCommandParameters() As SqlParameter = Nothing
If Not commandParameters Is Nothing Then
sqlCommandParameters = New SqlParameter(commandParameters.Length - 1) {}
For intIndex As Integer = 0 To commandParameters.Length - 1
sqlCommandParameters(intIndex) = CType(commandParameters(intIndex), SqlParameter)
Next
End If
strSql = strSql.Replace("{databaseOwner}", DatabaseOwner)
strSql = strSql.Replace("{objectQualifier}", ObjectQualifier)
SendMailToAdmin(String.Concat("FINAL strSql = ", strSql), String.Concat("FINAL strSql = ", strSql))
Try
Return CType(SqlHelper.ExecuteReader(ConnectionString, CommandType.Text, strSql, sqlCommandParameters), IDataReader)
Catch ex As Exception
SendExceptionToAdmin(ex)
' error in SQL query
Return Nothing
End Try
End Function
#End Region
#Region "Abstract Method Implementation"
#Region "General Methods"
Overrides Function GetConnectionStringBuilder() As DbConnectionStringBuilder
Return New SqlConnectionStringBuilder
End Function
Overrides Function GetNull(ByVal Field As Object) As Object
Return DotNetNuke.Common.Utilities.Null.GetNull(Field, System.DBNull.Value)
End Function
#End Region
#Region "Install/Upgrade Methods"
Overloads Overrides Function ExecuteScript(ByVal Script As String) As String
Return ExecuteScript(Script, False)
End Function
Overloads Overrides Function ExecuteScript(ByVal Script As String, ByVal UseTransactions As Boolean) As String
Try
Dim strSql As String = String.Empty
'Dim Exceptions As String = String.Empty
Dim sbExceptions As New StringBuilder
Dim Delimiter As String = String.Concat("GO", Microsoft.VisualBasic.ControlChars.CrLf)
Dim arrSQL As String() = Split(Script, Delimiter, , CompareMethod.Text)
If UseTransactions Then
Dim Conn As New SqlConnection(UpgradeConnectionString)
Conn.Open()
Try
Dim Trans As SqlTransaction = Conn.BeginTransaction
Dim IgnoreErrors As Boolean
For Each strSql In arrSQL
If Not String.IsNullOrEmpty(strSql) Then
' script dynamic substitution
strSql = strSql.Replace("{databaseOwner}", DatabaseOwner)
strSql = strSql.Replace("{objectQualifier}", ObjectQualifier)
IgnoreErrors = False
If strSql.Trim.StartsWith("{IgnoreError}") Then
IgnoreErrors = True
strSql = strSql.Replace("{IgnoreError}", String.Empty)
End If
Try
ExecuteADOScript(Trans, strSql)
Catch objException As SqlException
If Not IgnoreErrors Then
sbExceptions.Append(ExceptionString(objException, strSql))
End If
End Try
End If
Next
If sbExceptions.ToString.Length = 0 Then
'No exceptions so go ahead and commit
Trans.Commit()
Else
'Found exceptions, so rollback db
Trans.Rollback()
With sbExceptions
.Append("SQL Execution failed. Database was rolled back")
.Append(Environment.NewLine)
.Append(Environment.NewLine)
.Append(strSql)
.Append(Environment.NewLine)
.Append(Environment.NewLine)
End With
End If
Finally
Conn.Close()
End Try
Else
For Each strSql In arrSQL
If Not String.IsNullOrEmpty(strSql) Then
' script dynamic substitution
strSql = strSql.Replace("{databaseOwner}", DatabaseOwner)
strSql = strSql.Replace("{objectQualifier}", ObjectQualifier)
Try
ExecuteADOScript(strSql)
Catch objException As SqlException
sbExceptions.Append(ExceptionString(objException, strSql))
End Try
End If
Next
End If
' if the upgrade connection string is specified
If Not String.Equals(UpgradeConnectionString, ConnectionString) Then
Try
' grant execute rights to the public role for all stored procedures. This is
' necesary because the UpgradeConnectionString will create stored procedures
' which restrict execute permissions for the ConnectionString user account.
sbExceptions.Append(GrantStoredProceduresPermission("EXECUTE", "public"))
Catch objException As SqlException
sbExceptions.Append(ExceptionString(objException, strSql))
End Try
Try
' grant execute or select rights to the public role for all user defined functions based
' on what type of function it is (scalar function or table function). This is
' necesary because the UpgradeConnectionString will create user defined functions
' which restrict execute permissions for the ConnectionString user account.
sbExceptions.Append(GrantUserDefinedFunctionsPermission("EXECUTE", "SELECT", "public"))
Catch objException As SqlException
sbExceptions.Append(ExceptionString(objException, strSql))
End Try
End If
Return sbExceptions.ToString
Catch ex As Exception
SendExceptionToAdmin(ex)
Return String.Empty
End Try
End Function
Overrides Function FindDatabaseVersion(ByVal Major As Integer, ByVal Minor As Integer, ByVal Build As Integer) As IDataReader
Return CType(SqlHelper.ExecuteReader(UpgradeConnectionString, QueryName("FindDatabaseVersion"), Major, Minor, Build), IDataReader)
End Function
Overrides Function GetDatabaseVersion() As IDataReader
Return CType(SqlHelper.ExecuteReader(UpgradeConnectionString, QueryName("GetDatabaseVersion")), IDataReader)
End Function
Overrides Function GetProviderPath() As String
SendMailToAdmin("BEGIN GetProviderPath()", "BEGIN GetProviderPath()")
Try
Dim objHttpContext As HttpContext = HttpContext.Current
GetProviderPath = ProviderPath
If Not String.IsNullOrEmpty(GetProviderPath) Then
SendMailToAdmin("GetProviderPath Is Null or Empty", "GetProviderPath Is Null or Empty")
GetProviderPath = objHttpContext.Server.MapPath(GetProviderPath)
If Directory.Exists(GetProviderPath) Then
SendMailToAdmin("DIRECTORY EXISTS", "DIRECTORY EXISTS")
Try
' check if database is initialized
Dim dr As IDataReader = GetDatabaseVersion()
dr.Close()
Catch
' initialize the database
Dim objStreamReader As StreamReader
objStreamReader = File.OpenText(String.Concat(GetProviderPath, "00.00.00.", p_providerConfiguration.DefaultProvider))
Dim strScript As String = objStreamReader.ReadToEnd
objStreamReader.Close()
If Not String.IsNullOrEmpty(ExecuteScript(strScript)) Then
GetProviderPath = "ERROR: Could not connect to database specified in connectionString for SqlDataProvider"
End If
End Try
Else
SendMailToAdmin("DIRECTORY DOESN'T EXIST", "DIRECTORY DOESN'T EXIST")
GetProviderPath = String.Concat("ERROR: providerPath folder ", GetProviderPath, " specified for SqlDataProvider does not exist on web server")
End If
Else
SendMailToAdmin("GetProviderPath Is NOT Null or Empty", "GetProviderPath Is NOT Null or Empty")
GetProviderPath = "ERROR: providerPath folder value not specified in web.config for SqlDataProvider"
End If
Catch ex As Exception
SendExceptionToAdmin(ex)
Throw ex
End Try
SendMailToAdmin("END GetProviderPath()", String.Concat("GetProviderPath = ", GetProviderPath))
End Function
Private Function GrantStoredProceduresPermission(ByVal Permission As String, ByVal LoginOrRole As String) As String
'Dim SQL As String = String.Empty
Dim sbSql As New StringBuilder
Dim Exceptions As String = String.Empty
Try
' grant rights to a login or role for all stored procedures
With sbSql
.Append("declare @exec nvarchar(2000) ")
.Append("declare @name varchar(150) ")
.Append("declare sp_cursor cursor for select o.name as name ")
.Append("from dbo.sysobjects o ")
.Append("where ( OBJECTPROPERTY(o.id, N'IsProcedure') = 1 or OBJECTPROPERTY(o.id, N'IsExtendedProc') = 1 or OBJECTPROPERTY(o.id, N'IsReplProc') = 1 ) ")
.Append("and OBJECTPROPERTY(o.id, N'IsMSShipped') = 0 ")
.Append("and o.name not like N'#%%' ")
.Append("and (left(o.name,len('")
.Append(ObjectQualifier)
.Append("')) = '")
.Append(ObjectQualifier)
.Append("' or left(o.name,7) = 'aspnet_') ")
.Append("open sp_cursor ")
.Append("fetch sp_cursor into @name ")
.Append("while @@fetch_status >= 0 ")
.Append("begin")
.Append(" select @exec = 'grant ")
.Append(Permission)
.Append(" on ' + @name + ' to ")
.Append(LoginOrRole)
.Append("'")
.Append(" execute (@exec)")
.Append(" fetch sp_cursor into @name ")
.Append("end ")
.Append("deallocate sp_cursor")
End With
SqlHelper.ExecuteNonQuery(UpgradeConnectionString, CommandType.Text, sbSql.ToString)
Catch objException As SqlException
SendExceptionToAdmin(objException)
Exceptions = ExceptionString(objException, sbSql.ToString())
End Try
Return Exceptions
End Function
Private Function GrantUserDefinedFunctionsPermission(ByVal ScalarPermission As String, ByVal TablePermission As String, ByVal LoginOrRole As String) As String
Dim sbSql As New StringBuilder
Dim Exceptions As String = String.Empty
Try
' grant EXECUTE rights to a login or role for all functions
With sbSql
.Append("declare @exec nvarchar(2000) ")
.Append("declare @name varchar(150) ")
.Append("declare @isscalarfunction int ")
.Append("declare @istablefunction int ")
.Append("declare sp_cursor cursor for select o.name as name, OBJECTPROPERTY(o.id, N'IsScalarFunction') as IsScalarFunction ")
.Append("from dbo.sysobjects o ")
.Append("where ( OBJECTPROPERTY(o.id, N'IsScalarFunction') = 1 OR OBJECTPROPERTY(o.id, N'IsTableFunction') = 1 ) ")
.Append("and OBJECTPROPERTY(o.id, N'IsMSShipped') = 0 ")
.Append("and o.name not like N'#%%' ")
.Append("and (left(o.name,len('")
.Append(ObjectQualifier)
.Append("')) = '")
.Append(ObjectQualifier)
.Append("' or left(o.name,7) = 'aspnet_') ")
.Append("open sp_cursor ")
.Append("fetch sp_cursor into @name, @isscalarfunction ")
.Append("while @@fetch_status >= 0 ")
.Append("begin ")
.Append("if @IsScalarFunction = 1 ")
.Append("begin")
.Append(" select @exec = 'grant ")
.Append(ScalarPermission)
.Append(" on ' + @name + ' to ")
.Append(LoginOrRole)
.Append("'")
.Append(" execute (@exec)")
.Append(" fetch sp_cursor into @name, @isscalarfunction ")
.Append("end ")
.Append("else ")
.Append("begin")
.Append(" select @exec = 'grant ")
.Append(TablePermission)
.Append(" on ' + @name + ' to ")
.Append(LoginOrRole)
.Append("'")
.Append(" execute (@exec)")
.Append(" fetch sp_cursor into @name, @isscalarfunction ")
.Append("end ")
.Append("end ")
.Append("deallocate sp_cursor")
End With
SqlHelper.ExecuteNonQuery(UpgradeConnectionString, CommandType.Text, sbSql.ToString)
Catch objException As SqlException
SendExceptionToAdmin(objException)
Exceptions = ExceptionString(objException, sbSql.ToString)
End Try
Return Exceptions
End Function
Overrides Function TestDatabaseConnection(ByVal builder As DbConnectionStringBuilder, ByVal Owner As String, ByVal Qualifier As String) As String
Try
Dim sqlBuilder As SqlConnectionStringBuilder = TryCast(builder, SqlConnectionStringBuilder)
Dim connectionString As String = Null.NullString
If Not sqlBuilder Is Nothing Then
connectionString = sqlBuilder.ToString()
Dim dr As IDataReader = Nothing
Try
dr = SqlHelper.ExecuteReader(connectionString, String.Concat(Owner, Qualifier, "GetDatabaseVersion"))
Catch ex As SqlException
SendExceptionToAdmin(ex)
Dim message As String = "ERROR:"
Dim bError As Boolean = True
Dim i As Integer
Dim errorMessages As New StringBuilder()
For i = 0 To ex.Errors.Count - 1
Dim sqlError As SqlError = ex.Errors(i)
If sqlError.Number = 2812 And sqlError.Class = 16 Then
bError = False
Exit For
Else
With errorMessages
.Append("Index #: ")
.Append(i.ToString())
.Append("
Source: ")
.Append(sqlError.Source)
.Append("
Class: ")
.Append(sqlError.Class)
.Append("
Number: ")
.Append(sqlError.Number)
.Append("
Message: ")
.Append(sqlError.Message)
.Append("
")
End With
End If
Next i
If bError Then
connectionString = String.Concat(message, errorMessages.ToString())
End If
Finally
If Not dr Is Nothing Then
dr.Close()
End If
End Try
Else
'Invalid DbConnectionStringBuilder
End If
Return connectionString
Catch ex As Exception
SendExceptionToAdmin(ex)
Return String.Empty
End Try
End Function
Overrides Sub UpgradeDatabaseSchema(ByVal Major As Integer, ByVal Minor As Integer, ByVal Build As Integer)
' not necessary for SQL Server - use Transact-SQL scripts
End Sub
Public Overrides Sub UpdateDatabaseVersion(ByVal Major As Integer, ByVal Minor As Integer, ByVal Build As Integer)
SqlHelper.ExecuteNonQuery(UpgradeConnectionString, QueryName("UpdateDatabaseVersion"), Major, Minor, Build)
End Sub
#End Region
' host
Overrides Function GetHostSettings() As IDataReader
Return CType(SqlHelper.ExecuteReader(ConnectionString, QueryName("GetHostSettings")), IDataReader)
End Function
Overrides Function GetHostSetting(ByVal SettingName As String) As IDataReader
Return CType(SqlHelper.ExecuteReader(ConnectionString, QueryName("GetHostSetting"), SettingName), IDataReader)
End Function
Overrides Sub AddHostSetting(ByVal SettingName As String, ByVal SettingValue As String, ByVal SettingIsSecure As Boolean)
SqlHelper.ExecuteNonQuery(ConnectionString, QueryName("AddHostSetting"), SettingName, SettingValue, SettingIsSecure)
End Sub
Overrides Sub UpdateHostSetting(ByVal SettingName As String, ByVal SettingValue As String, ByVal SettingIsSecure As Boolean)
SqlHelper.ExecuteNonQuery(ConnectionString, QueryName("UpdateHostSetting"), SettingName, SettingValue, SettingIsSecure)
End Sub
' portal
Overrides Function AddPortalInfo(ByVal PortalName As String, ByVal Currency As String, ByVal FirstName As String, ByVal LastName As String, ByVal Username As String, ByVal Password As String, ByVal Email As String, ByVal ExpiryDate As Date, ByVal HostFee As Double, ByVal HostSpace As Double, ByVal PageQuota As Integer, ByVal UserQuota As Integer, ByVal SiteLogHistory As Integer, ByVal HomeDirectory As String) As Integer
Return CType(SqlHelper.ExecuteScalar(ConnectionString, QueryName("AddPortalInfo"), PortalName, Currency, GetNull(ExpiryDate), HostFee, HostSpace, PageQuota, UserQuota, GetNull(SiteLogHistory), HomeDirectory), Integer)
End Function
Overrides Function CreatePortal(ByVal PortalName As String, ByVal Currency As String, ByVal ExpiryDate As Date, ByVal HostFee As Double, ByVal HostSpace As Double, ByVal PageQuota As Integer, ByVal UserQuota As Integer, ByVal SiteLogHistory As Integer, ByVal HomeDirectory As String) As Integer
Return CType(SqlHelper.ExecuteScalar(ConnectionString, QueryName("AddPortalInfo"), PortalName, Currency, GetNull(ExpiryDate), HostFee, HostSpace, PageQuota, UserQuota, GetNull(SiteLogHistory), HomeDirectory), Integer)
End Function
Overrides Sub DeletePortalInfo(ByVal PortalId As Integer)
SqlHelper.ExecuteNonQuery(ConnectionString, QueryName("DeletePortalInfo"), PortalId)
End Sub
Overrides Function GetExpiredPortals() As IDataReader
Return CType(SqlHelper.ExecuteReader(ConnectionString, QueryName("GetExpiredPortals")), IDataReader)
End Function
Overrides Function GetPortal(ByVal PortalId As Integer) As IDataReader
Return CType(SqlHelper.ExecuteReader(ConnectionString, QueryName("GetPortal"), PortalId), IDataReader)
End Function
Overrides Function GetPortalByAlias(ByVal PortalAlias As String) As IDataReader
Return CType(SqlHelper.ExecuteReader(ConnectionString, QueryName("GetPortalByAlias"), PortalAlias), IDataReader)
End Function
Overrides Function GetPortalByTab(ByVal TabId As Integer, ByVal PortalAlias As String) As IDataReader
Return CType(SqlHelper.ExecuteReader(ConnectionString, QueryName("GetPortalByTab"), TabId, PortalAlias), IDataReader)
End Function
Overrides Function GetPortalCount() As Integer
Return CType(SqlHelper.ExecuteScalar(ConnectionString, QueryName("GetPortalCount")), Integer)
End Function
Overrides Function GetPortals() As IDataReader
Return CType(SqlHelper.ExecuteReader(ConnectionString, QueryName("GetPortals")), IDataReader)
End Function
Overrides Function GetPortalsByName(ByVal nameToMatch As String, ByVal pageIndex As Integer, ByVal pageSize As Integer) As IDataReader
Return CType(SqlHelper.ExecuteReader(ConnectionString, QueryName("GetPortalsByName"), nameToMatch, pageIndex, pageSize), IDataReader)
End Function
Overrides Function GetPortalSpaceUsed(ByVal PortalId As Integer) As IDataReader
Return CType(SqlHelper.ExecuteReader(ConnectionString, QueryName("GetPortalSpaceUsed"), GetNull(PortalId)), IDataReader)
End Function
Overrides Sub UpdatePortalInfo(ByVal PortalId As Integer, ByVal PortalName As String, ByVal LogoFile As String, ByVal FooterText As String, ByVal ExpiryDate As Date, ByVal UserRegistration As Integer, ByVal BannerAdvertising As Integer, ByVal Currency As String, ByVal AdministratorId As Integer, ByVal HostFee As Double, ByVal HostSpace As Double, ByVal PageQuota As Integer, ByVal UserQuota As Integer, ByVal PaymentProcessor As String, ByVal ProcessorUserId As String, ByVal ProcessorPassword As String, ByVal Description As String, ByVal KeyWords As String, ByVal BackgroundFile As String, ByVal SiteLogHistory As Integer, ByVal SplashTabId As Integer, ByVal HomeTabId As Integer, ByVal LoginTabId As Integer, ByVal UserTabId As Integer, ByVal DefaultLanguage As String, ByVal TimeZoneOffset As Integer, ByVal HomeDirectory As String)
SqlHelper.ExecuteNonQuery(ConnectionString, QueryName("UpdatePortalInfo"), PortalId, PortalName, GetNull(LogoFile), GetNull(FooterText), GetNull(ExpiryDate), UserRegistration, BannerAdvertising, Currency, GetNull(AdministratorId), HostFee, HostSpace, PageQuota, UserQuota, GetNull(PaymentProcessor), GetNull(ProcessorUserId), GetNull(ProcessorPassword), GetNull(Description), GetNull(KeyWords), GetNull(BackgroundFile), GetNull(SiteLogHistory), GetNull(SplashTabId), GetNull(HomeTabId), GetNull(LoginTabId), GetNull(UserTabId), GetNull(DefaultLanguage), GetNull(TimeZoneOffset), HomeDirectory)
End Sub
Overrides Sub UpdatePortalSetup(ByVal PortalId As Integer, ByVal AdministratorId As Integer, ByVal AdministratorRoleId As Integer, ByVal RegisteredRoleId As Integer, ByVal SplashTabId As Integer, ByVal HomeTabId As Integer, ByVal LoginTabId As Integer, ByVal UserTabId As Integer, ByVal AdminTabId As Integer)
SqlHelper.ExecuteNonQuery(ConnectionString, QueryName("UpdatePortalSetup"), PortalId, AdministratorId, AdministratorRoleId, RegisteredRoleId, SplashTabId, HomeTabId, LoginTabId, UserTabId, AdminTabId)
End Sub
Overrides Function VerifyPortal(ByVal PortalId As Integer) As IDataReader
Return CType(SqlHelper.ExecuteReader(ConnectionString, QueryName("VerifyPortal"), PortalId), IDataReader)
End Function
Overrides Function VerifyPortalTab(ByVal PortalId As Integer, ByVal TabId As Integer) As IDataReader
Return CType(SqlHelper.ExecuteReader(ConnectionString, QueryName("VerifyPortalTab"), PortalId, TabId), IDataReader)
End Function
' tab
Overloads Overrides Function AddTab(ByVal PortalId As Integer, ByVal TabName As String, ByVal IsVisible As Boolean, ByVal DisableLink As Boolean, ByVal ParentId As Integer, ByVal IconFile As String, ByVal Title As String, ByVal Description As String, ByVal KeyWords As String, ByVal Url As String, ByVal SkinSrc As String, ByVal ContainerSrc As String, ByVal TabPath As String, ByVal StartDate As Date, ByVal EndDate As Date, ByVal RefreshInterval As Integer, ByVal PageHeadText As String) As Integer
Return CType(SqlHelper.ExecuteScalar(ConnectionString, QueryName("AddTab"), GetNull(PortalId), TabName, IsVisible, DisableLink, GetNull(ParentId), IconFile, Title, Description, KeyWords, Url, GetNull(SkinSrc), GetNull(ContainerSrc), TabPath, GetNull(StartDate), GetNull(EndDate), GetNull(RefreshInterval), GetNull(PageHeadText)), Integer)
End Function
_
Overloads Overrides Sub UpdateTab(ByVal TabId As Integer, ByVal TabName As String, ByVal IsVisible As Boolean, ByVal DisableLink As Boolean, ByVal ParentId As Integer, ByVal IconFile As String, ByVal Title As String, ByVal Description As String, ByVal KeyWords As String, ByVal IsDeleted As Boolean, ByVal Url As String, ByVal SkinSrc As String, ByVal ContainerSrc As String, ByVal TabPath As String, ByVal StartDate As Date, ByVal EndDate As Date)
SqlHelper.ExecuteNonQuery(ConnectionString, QueryName("UpdateTab"), TabId, TabName, IsVisible, DisableLink, GetNull(ParentId), IconFile, Title, Description, KeyWords, IsDeleted, Url, GetNull(SkinSrc), GetNull(ContainerSrc), TabPath, GetNull(StartDate), GetNull(EndDate))
End Sub
Overloads Overrides Sub UpdateTab(ByVal TabId As Integer, ByVal TabName As String, ByVal IsVisible As Boolean, ByVal DisableLink As Boolean, ByVal ParentId As Integer, ByVal IconFile As String, ByVal Title As String, ByVal Description As String, ByVal KeyWords As String, ByVal IsDeleted As Boolean, ByVal Url As String, ByVal SkinSrc As String, ByVal ContainerSrc As String, ByVal TabPath As String, ByVal StartDate As Date, ByVal EndDate As Date, ByVal RefreshInterval As Integer, ByVal PageHeadText As String)
SqlHelper.ExecuteNonQuery(ConnectionString, QueryName("UpdateTab"), TabId, TabName, IsVisible, DisableLink, GetNull(ParentId), IconFile, Title, Description, KeyWords, IsDeleted, Url, GetNull(SkinSrc), GetNull(ContainerSrc), TabPath, GetNull(StartDate), GetNull(EndDate), GetNull(RefreshInterval), GetNull(PageHeadText))
End Sub
Overrides Sub UpdateTabOrder(ByVal TabId As Integer, ByVal TabOrder As Integer, ByVal Level As Integer, ByVal ParentId As Integer, ByVal TabPath As String)
SqlHelper.ExecuteNonQuery(ConnectionString, QueryName("UpdateTabOrder"), TabId, TabOrder, Level, GetNull(ParentId), TabPath)
End Sub
Overrides Sub DeleteTab(ByVal TabId As Integer)
SqlHelper.ExecuteNonQuery(ConnectionString, QueryName("DeleteTab"), TabId)
End Sub
Overrides Function GetTabs(ByVal PortalId As Integer) As IDataReader
Return CType(SqlHelper.ExecuteReader(ConnectionString, QueryName("GetTabs"), GetNull(PortalId)), IDataReader)
End Function
Overrides Function GetAllTabs() As IDataReader
Return CType(SqlHelper.ExecuteReader(ConnectionString, QueryName("GetAllTabs")), IDataReader)
End Function
Overrides Function GetTab(ByVal TabId As Integer) As IDataReader
Return CType(SqlHelper.ExecuteReader(ConnectionString, QueryName("GetTab"), TabId), IDataReader)
End Function
Overrides Function GetTabByName(ByVal TabName As String, ByVal PortalId As Integer) As IDataReader
Return CType(SqlHelper.ExecuteReader(ConnectionString, QueryName("GetTabByName"), TabName, GetNull(PortalId)), IDataReader)
End Function
Overrides Function GetTabCount(ByVal PortalId As Integer) As Integer
Return CType(SqlHelper.ExecuteScalar(ConnectionString, QueryName("GetTabCount"), PortalId), Integer)
End Function
Overrides Function GetTabsByParentId(ByVal ParentId As Integer) As IDataReader
Return CType(SqlHelper.ExecuteReader(ConnectionString, QueryName("GetTabsByParentId"), ParentId), IDataReader)
End Function
Overrides Function GetTabPanes(ByVal TabId As Integer) As IDataReader
Return CType(SqlHelper.ExecuteReader(ConnectionString, QueryName("GetTabPanes"), TabId), IDataReader)
End Function
Overrides Function GetPortalTabModules(ByVal PortalId As Integer, ByVal TabId As Integer) As IDataReader
Return CType(SqlHelper.ExecuteReader(ConnectionString, QueryName("GetTabModules"), TabId), IDataReader)
End Function
Overrides Function GetTabModules(ByVal TabId As Integer) As IDataReader
Return CType(SqlHelper.ExecuteReader(ConnectionString, QueryName("GetTabModules"), TabId), IDataReader)
End Function
' module
Overrides Function GetAllModules() As IDataReader
Return CType(SqlHelper.ExecuteReader(ConnectionString, QueryName("GetAllModules")), IDataReader)
End Function
Overrides Function GetModules(ByVal PortalId As Integer) As IDataReader
Return CType(SqlHelper.ExecuteReader(ConnectionString, QueryName("GetModules"), PortalId), IDataReader)
End Function
Overrides Function GetAllTabsModules(ByVal PortalId As Integer, ByVal AllTabs As Boolean) As IDataReader
Return CType(SqlHelper.ExecuteReader(ConnectionString, QueryName("GetAllTabsModules"), PortalId, AllTabs), IDataReader)
End Function
Overrides Function GetModule(ByVal ModuleId As Integer, ByVal TabId As Integer) As IDataReader
Return CType(SqlHelper.ExecuteReader(ConnectionString, QueryName("GetModule"), ModuleId, GetNull(TabId)), IDataReader)
End Function
Overrides Function GetModuleByDefinition(ByVal PortalId As Integer, ByVal FriendlyName As String) As IDataReader
Return CType(SqlHelper.ExecuteReader(ConnectionString, QueryName("GetModuleByDefinition"), GetNull(PortalId), FriendlyName), IDataReader)
End Function
Overrides Function AddModule(ByVal PortalID As Integer, ByVal ModuleDefID As Integer, ByVal ModuleTitle As String, ByVal AllTabs As Boolean, ByVal Header As String, ByVal Footer As String, ByVal StartDate As DateTime, ByVal EndDate As DateTime, ByVal InheritViewPermissions As Boolean, ByVal IsDeleted As Boolean) As Integer
Return CType(SqlHelper.ExecuteScalar(ConnectionString, QueryName("AddModule"), GetNull(PortalID), ModuleDefID, ModuleTitle, AllTabs, GetNull(Header), GetNull(Footer), GetNull(StartDate), GetNull(EndDate), InheritViewPermissions, IsDeleted), Integer)
End Function
Overrides Sub UpdateModule(ByVal ModuleId As Integer, ByVal ModuleTitle As String, ByVal AllTabs As Boolean, ByVal Header As String, ByVal Footer As String, ByVal StartDate As DateTime, ByVal EndDate As DateTime, ByVal InheritViewPermissions As Boolean, ByVal IsDeleted As Boolean)
SqlHelper.ExecuteNonQuery(ConnectionString, QueryName("UpdateModule"), ModuleId, ModuleTitle, AllTabs, GetNull(Header), GetNull(Footer), GetNull(StartDate), GetNull(EndDate), InheritViewPermissions, IsDeleted)
End Sub
Overrides Sub DeleteModule(ByVal ModuleId As Integer)
SqlHelper.ExecuteNonQuery(ConnectionString, QueryName("DeleteModule"), ModuleId)
End Sub
Overrides Function GetTabModuleOrder(ByVal TabId As Integer, ByVal PaneName As String) As IDataReader
Return CType(SqlHelper.ExecuteReader(ConnectionString, QueryName("GetTabModuleOrder"), TabId, PaneName), IDataReader)
End Function
Overrides Sub UpdateModuleOrder(ByVal TabId As Integer, ByVal ModuleId As Integer, ByVal ModuleOrder As Integer, ByVal PaneName As String)
SqlHelper.ExecuteNonQuery(ConnectionString, QueryName("UpdateModuleOrder"), TabId, ModuleId, ModuleOrder, PaneName)
End Sub
Overrides Sub AddTabModule(ByVal TabId As Integer, ByVal ModuleId As Integer, ByVal ModuleOrder As Integer, ByVal PaneName As String, ByVal CacheTime As Integer, ByVal Alignment As String, ByVal Color As String, ByVal