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 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 BEGIN
EXEC sp_executesql N'CREATE PROCEDURE [dbo].[GetDomainByNameByPointer] EXEC sp_executesql N'CREATE PROCEDURE [dbo].[GetDomainByNameByPointer]
( (
@ -5897,76 +5991,79 @@ GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE type_desc = N'SQL_STORED_PROCEDURE' AND name = N'GetDomainsByDomainItemID')
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')
BEGIN 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 END
GO 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 domainId;
private int packageId; private int packageId;
private int zoneItemId; private int zoneItemId;
private int domainItemId;
private string domainName; private string domainName;
private bool hostingAllowed; private bool hostingAllowed;
private int webSiteId; private int webSiteId;
@ -68,6 +69,13 @@ namespace WebsitePanel.EnterpriseServer
set { zoneItemId = value; } set { zoneItemId = value; }
} }
public int DomainItemId
{
get { return domainItemId; }
set { domainItemId = value; }
}
public string DomainName public string DomainName
{ {
get { return domainName; } get { return domainName; }

View file

@ -811,6 +811,15 @@ namespace WebsitePanel.EnterpriseServer
new SqlParameter("@ZoneID", zoneId)); 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) 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, 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, SqlHelper.ExecuteNonQuery(ConnectionString, CommandType.StoredProcedure,
ObjectQualifier + "UpdateDomain", ObjectQualifier + "UpdateDomain",
@ -860,7 +869,8 @@ namespace WebsitePanel.EnterpriseServer
new SqlParameter("@ZoneItemId", zoneItemId), new SqlParameter("@ZoneItemId", zoneItemId),
new SqlParameter("@HostingAllowed", hostingAllowed), new SqlParameter("@HostingAllowed", hostingAllowed),
new SqlParameter("@WebSiteId", webSiteId), new SqlParameter("@WebSiteId", webSiteId),
new SqlParameter("@MailDomainId", mailDomainId)); new SqlParameter("@MailDomainId", mailDomainId),
new SqlParameter("@DomainItemId", domainItemId));
} }
public static void DeleteDomain(int actorId, int domainId) public static void DeleteDomain(int actorId, int domainId)

View file

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

View file

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