Fixed: DomainItemId field added to the Domains table to register the

relationship between a domain pointer and  domain.

Updated depended procedures and methods
This commit is contained in:
robvde 2012-10-18 09:37:39 +04:00
parent 14b7f86cee
commit cc6277c8d7
5 changed files with 212 additions and 81 deletions

View file

@ -5856,7 +5856,101 @@ END
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE type_desc = N'SQL_STORED_PROCEDURE' AND name = N'GetExchangeOrganization')
IF NOT EXISTS(select 1 from sys.columns COLS INNER JOIN sys.objects OBJS ON OBJS.object_id=COLS.object_id and OBJS.type='U' AND OBJS.name='Domains' AND COLS.name='DomainItemId')
BEGIN
ALTER TABLE [dbo].[Domains] ADD
[DomainItemId] [int] NULL
END
GO
BEGIN TRAN
CREATE TABLE #TempDomains
(
[PackageID] [int] NOT NULL,
[ZoneItemID] [int] NULL,
[DomainName] [nvarchar](100) COLLATE Latin1_General_CI_AS NOT NULL,
[HostingAllowed] [bit] NOT NULL,
[WebSiteID] [int] NULL,
[IsSubDomain] [bit] NOT NULL,
[IsInstantAlias] [bit] NOT NULL,
[IsDomainPointer] [bit] NOT NULL,
[DomainItemID] [int] NULL,
)
UPDATE Domains SET DomainItemID = DomainID
INSERT INTO #TempDomains SELECT PackageID,
ZoneItemID,
DomainName,
HostingAllowed,
WebSiteID,
IsSubDomain,
IsInstantAlias,
IsDomainPointer,
DomainItemID FROM Domains WHERE IsDomainPointer = 1
UPDATE Domains SET IsDomainPointer=0,WebSiteID=NULL, DomainItemID=NULL WHERE IsDomainPointer = 1 AND DomainName IN (SELECT DomainName FROM Domains AS D WHERE
D.DomainName = (SELECT DISTINCT ItemName FROM ServiceItems WHERE ItemID = D.ZoneItemId )
Group BY DOmainName
HAVING (COUNT(DomainName) = 1))
INSERT INTO Domains SELECT PackageID,
ZoneItemID,
DomainName,
HostingAllowed,
WebSiteID,
NULL,
IsSubDomain,
IsInstantAlias,
IsDomainPointer,
DomainItemID
FROM #TempDomains As T WHERE DomainName IN (SELECT DomainName FROM Domains AS D WHERE
D.DomainName = (SELECT DISTINCT ItemName FROM ServiceItems WHERE ItemID = D.ZoneItemId )
Group BY DOmainName
HAVING (COUNT(DomainName) = 1))
UPDATE Domains SET DomainItemID = null WHERE IsDomainPointer=0
DROP TABLE #TempDomains
COMMIT TRAN
GO
IF NOT EXISTS (SELECT * FROM [dbo].[Quotas] WHERE [QuotaName] = 'Web.EnableHostNameSupport')
BEGIN
INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (334, 2, 23, N'Web.EnableHostNameSupport', N'Enable Hostname Support', 1, 0, NULL)
END
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE type_desc = N'SQL_STORED_PROCEDURE' AND name = N'GetDomainByNameByPointer')
BEGIN
EXEC sp_executesql N'CREATE PROCEDURE [dbo].[GetDomainByNameByPointer]
(
@ -5897,76 +5991,79 @@ GO
BEGIN TRAN
CREATE TABLE #TempDomains
(
[PackageID] [int] NOT NULL,
[ZoneItemID] [int] NULL,
[DomainName] [nvarchar](100) COLLATE Latin1_General_CI_AS NOT NULL,
[HostingAllowed] [bit] NOT NULL,
[WebSiteID] [int] NULL,
[IsSubDomain] [bit] NOT NULL,
[IsInstantAlias] [bit] NOT NULL,
[IsDomainPointer] [bit] NOT NULL,
)
INSERT INTO #TempDomains SELECT PackageID,
ZoneItemID,
DomainName,
HostingAllowed,
WebSiteID,
IsSubDomain,
IsInstantAlias,
IsDomainPointer FROM Domains WHERE IsDomainPointer = 1
UPDATE Domains SET IsDomainPointer=0,WebSiteID=NULL WHERE IsDomainPointer = 1 AND DomainName IN (SELECT DomainName FROM Domains AS D WHERE
D.DomainName = (SELECT DISTINCT ItemName FROM ServiceItems WHERE ItemID = D.ZoneItemId )
Group BY DOmainName
HAVING (COUNT(DomainName) = 1))
INSERT INTO Domains SELECT PackageID,
ZoneItemID,
DomainName,
HostingAllowed,
WebSiteID,
NULL,
IsSubDomain,
IsInstantAlias,
IsDomainPointer
FROM #TempDomains As T WHERE DomainName IN (SELECT DomainName FROM Domains AS D WHERE
D.DomainName = (SELECT DISTINCT ItemName FROM ServiceItems WHERE ItemID = D.ZoneItemId )
Group BY DOmainName
HAVING (COUNT(DomainName) = 1))
DROP TABLE #TempDomains
COMMIT TRAN
GO
IF NOT EXISTS (SELECT * FROM [dbo].[Quotas] WHERE [QuotaName] = 'Web.EnableHostNameSupport')
IF NOT EXISTS (SELECT * FROM sys.objects WHERE type_desc = N'SQL_STORED_PROCEDURE' AND name = N'GetDomainsByDomainItemID')
BEGIN
INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (334, 2, 23, N'Web.EnableHostNameSupport', N'Enable Hostname Support', 1, 0, NULL)
EXEC sp_executesql N'CREATE PROCEDURE [dbo].[GetDomainsByDomainItemID]
(
@ActorID int,
@DomainID int
)
AS
SELECT
D.DomainID,
D.PackageID,
D.ZoneItemID,
D.DomainItemID,
D.DomainName,
D.HostingAllowed,
ISNULL(D.WebSiteID, 0) AS WebSiteID,
WS.ItemName AS WebSiteName,
ISNULL(D.MailDomainID, 0) AS MailDomainID,
MD.ItemName AS MailDomainName,
Z.ItemName AS ZoneName,
D.IsSubDomain,
D.IsInstantAlias,
D.IsDomainPointer
FROM Domains AS D
INNER JOIN Packages AS P ON D.PackageID = P.PackageID
LEFT OUTER JOIN ServiceItems AS WS ON D.WebSiteID = WS.ItemID
LEFT OUTER JOIN ServiceItems AS MD ON D.MailDomainID = MD.ItemID
LEFT OUTER JOIN ServiceItems AS Z ON D.ZoneItemID = Z.ItemID
WHERE
D.DomainItemID = @DomainID
AND dbo.CheckActorPackageRights(@ActorID, P.PackageID) = 1
RETURN'
END
GO
ALTER PROCEDURE [dbo].[UpdateDomain]
(
@DomainID int,
@ActorID int,
@ZoneItemID int,
@HostingAllowed bit,
@WebSiteID int,
@MailDomainID int,
@DomainItemID int
)
AS
-- check rights
DECLARE @PackageID int
SELECT @PackageID = PackageID FROM Domains
WHERE DomainID = @DomainID
IF dbo.CheckActorPackageRights(@ActorID, @PackageID) = 0
RAISERROR('You are not allowed to access this package', 16, 1)
IF @ZoneItemID = 0 SET @ZoneItemID = NULL
IF @WebSiteID = 0 SET @WebSiteID = NULL
IF @MailDomainID = 0 SET @MailDomainID = NULL
-- update record
UPDATE Domains
SET
ZoneItemID = @ZoneItemID,
HostingAllowed = @HostingAllowed,
WebSiteID = @WebSiteID,
MailDomainID = @MailDomainID,
DomainItemID = @DomainItemID
WHERE
DomainID = @DomainID
RETURN
GO

View file

@ -36,6 +36,7 @@ namespace WebsitePanel.EnterpriseServer
private int domainId;
private int packageId;
private int zoneItemId;
private int domainItemId;
private string domainName;
private bool hostingAllowed;
private int webSiteId;
@ -68,6 +69,13 @@ namespace WebsitePanel.EnterpriseServer
set { zoneItemId = value; }
}
public int DomainItemId
{
get { return domainItemId; }
set { domainItemId = value; }
}
public string DomainName
{
get { return domainName; }

View file

@ -811,6 +811,15 @@ namespace WebsitePanel.EnterpriseServer
new SqlParameter("@ZoneID", zoneId));
}
public static DataSet GetDomainsByDomainItemId(int actorId, int domainId)
{
return SqlHelper.ExecuteDataset(ConnectionString, CommandType.StoredProcedure,
ObjectQualifier + "GetDomainsByDomainItemId",
new SqlParameter("@ActorId", actorId),
new SqlParameter("@DomainID", domainId));
}
public static int CheckDomain(int packageId, string domainName, bool isDomainPointer)
{
@ -851,7 +860,7 @@ namespace WebsitePanel.EnterpriseServer
}
public static void UpdateDomain(int actorId, int domainId, int zoneItemId,
bool hostingAllowed, int webSiteId, int mailDomainId)
bool hostingAllowed, int webSiteId, int mailDomainId, int domainItemId)
{
SqlHelper.ExecuteNonQuery(ConnectionString, CommandType.StoredProcedure,
ObjectQualifier + "UpdateDomain",
@ -860,7 +869,8 @@ namespace WebsitePanel.EnterpriseServer
new SqlParameter("@ZoneItemId", zoneItemId),
new SqlParameter("@HostingAllowed", hostingAllowed),
new SqlParameter("@WebSiteId", webSiteId),
new SqlParameter("@MailDomainId", mailDomainId));
new SqlParameter("@MailDomainId", mailDomainId),
new SqlParameter("@DomainItemId", domainItemId));
}
public static void DeleteDomain(int actorId, int domainId)

View file

@ -1609,7 +1609,14 @@ namespace WebsitePanel.EnterpriseServer
return ObjectUtils.CreateListFromDataSet<DomainInfo>(
DataProvider.GetDomainsByZoneId(SecurityContext.User.UserId, zoneId));
}
public static List<DomainInfo> GetDomainsByDomainItemId(int zoneId)
{
return ObjectUtils.CreateListFromDataSet<DomainInfo>(
DataProvider.GetDomainsByDomainItemId(SecurityContext.User.UserId, zoneId));
}
public static List<DomainInfo> GetMyDomains(int packageId)
{
return ObjectUtils.CreateListFromDataSet<DomainInfo>(
@ -1908,7 +1915,7 @@ namespace WebsitePanel.EnterpriseServer
{
DataProvider.UpdateDomain(SecurityContext.User.UserId,
domain.DomainId, domain.ZoneItemId, domain.HostingAllowed, domain.WebSiteId,
domain.MailDomainId);
domain.MailDomainId, domain.DomainItemId);
return 0;
}
@ -1959,7 +1966,7 @@ namespace WebsitePanel.EnterpriseServer
}
List<DomainInfo> domains = GetDomainsByZoneId(domain.ZoneItemId);
List<DomainInfo> domains = GetDomainsByDomainItemId(domain.DomainId);
foreach (DomainInfo d in domains)
{
if (d.WebSiteId > 0)
@ -2030,7 +2037,7 @@ namespace WebsitePanel.EnterpriseServer
if (!domain.IsDomainPointer)
{
List<DomainInfo> domains = GetDomainsByZoneId(domain.ZoneItemId);
List<DomainInfo> domains = GetDomainsByDomainItemId(domain.DomainId);
foreach (DomainInfo d in domains)
{
if (d.WebSiteId > 0)
@ -2218,16 +2225,22 @@ namespace WebsitePanel.EnterpriseServer
instantAlias = GetDomainItem(instantAliasId);
}
if (domain.WebSiteId > 0)
{
WebServerController.AddWebSitePointer(domain.WebSiteId,
(domain.DomainName.Replace("." + domain.ZoneName, "") == domain.ZoneName) ? "" : domain.DomainName.Replace("." + domain.ZoneName, ""),
instantAlias.DomainId);
}
// add web site pointer if required
List<DomainInfo> domains = GetDomainsByZoneId(domain.ZoneItemId);
List<DomainInfo> domains = GetDomainsByDomainItemId(domain.DomainId);
foreach (DomainInfo d in domains)
{
if (d.WebSiteId > 0)
{
WebSite w = WebServerController.GetWebSite(d.WebSiteId);
WebServerController.AddWebSitePointer(d.WebSiteId,
(w.Name.Replace("." + domain.ZoneName, "") == domain.ZoneName) ? "" : w.Name.Replace("." + domain.ZoneName, ""),
(d.DomainName.Replace("." + domain.ZoneName, "") == domain.ZoneName) ? "" : d.DomainName.Replace("." + domain.ZoneName, ""),
instantAlias.DomainId);
}
@ -2283,7 +2296,8 @@ namespace WebsitePanel.EnterpriseServer
return webRes;
}
List<DomainInfo> domains = GetDomainsByZoneId(instantAlias.ZoneItemId);
List<DomainInfo> domains = GetDomainsByDomainItemId(instantAlias.DomainId);
foreach (DomainInfo d in domains)
{
if (d.WebSiteId > 0)

View file

@ -1170,6 +1170,8 @@ namespace WebsitePanel.EnterpriseServer
{
domainTmp.WebSiteId = siteItemId;
domainTmp.ZoneItemId = domain.ZoneItemId;
domainTmp.DomainItemId = domainId;
ServerController.UpdateDomain(domainTmp);
}
}