spDelete_SitePages
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@PKID | int | IN | |
@CurrentUsersID | int | IN |
Definition
Copy
CREATE PROCEDURE [dbo].[spDelete_SitePages]
(
@PKID int,
@CurrentUsersID int
)
with execute as owner
AS
declare @Guid uniqueidentifier
if (EXISTS (SELECT TOP 1 ID FROM sitepages where templatepageid=@PKID)) begin
RAISERROR ('Unable to delete Template - This Template is in use by one or more Pages.',16,1)
return 0
end
if (EXISTS (SELECT TOP 1 ID FROM CMSSITESETTING where ENUMID=2 and CAST(VALUE as int)=@PKID)) begin
RAISERROR ('This Page is configured as the Home Page in Site Settings. It may not be deleted.',16,1)
return 0
end
if (EXISTS (SELECT TOP 1 ID FROM CMSSITESETTING where ENUMID=3 and CAST(VALUE as int)=@PKID)) begin
RAISERROR ('This Page is configured as the Login Page in Site Settings. It may not be deleted.',16,1)
return 0
end
if (EXISTS (SELECT TOP 1 ID FROM CMSSITESETTING where ENUMID=4 and CAST(VALUE as int)=@PKID)) begin
RAISERROR ('This Page is configured as the Authorization Failed Page in Site Settings. It may not be deleted.',16,1)
return 0
end
if (EXISTS (SELECT TOP 1 ID FROM CMSSITESETTING where ENUMID=5 and CAST(VALUE as int)=@PKID)) begin
RAISERROR ('This Page is configured as the Privacy Page in Site Settings. It may not be deleted.',16,1)
return 0
end
if (EXISTS (SELECT TOP 1 ID FROM CMSSITESETTING where ENUMID=53 and CAST(VALUE as int)=@PKID)) begin
RAISERROR ('This Page is configured as the Error Page in Site Settings. It may not be deleted.',16,1)
return 0
end
if (EXISTS (SELECT TOP 1 ID FROM fundraiserpages where sitepageid=@PKID)) begin
RAISERROR ('This Page is in use by one or more Fundraisers. It may not be deleted.',16,1)
return 0
end
if (EXISTS (SELECT TOP 1 ID FROM chapterpages where sitepageid=@PKID)) begin
RAISERROR ('This Page is in use by one or more Chapter Managers. It may not be deleted.',16,1)
return 0
end
declare @PARENTOBJECTID int;declare @PARENTCOLUMNID int;declare @REFERENCEDOBJECTID int;declare @REFERENCEDCOLUMNID int;
declare FKCURSOR cursor local fast_forward for
select sys.foreign_key_columns.parent_object_id, sys.foreign_key_columns.parent_column_id, sys.foreign_key_columns.referenced_object_id, sys.foreign_key_columns.referenced_column_id
from sys.foreign_key_columns
inner join sys.columns on sys.foreign_key_columns.referenced_object_id = sys.columns.object_id and sys.foreign_key_columns.referenced_column_id = sys.columns.column_id
inner join sys.foreign_keys on foreign_keys.object_id = sys.foreign_key_columns.constraint_object_id
where sys.foreign_key_columns.referenced_object_id = object_id('dbo.sitepages')
and sys.foreign_keys.delete_referential_action <> 1
and sys.foreign_keys.object_id <> object_id('FK_VanityURL_PageID')
open FKCURSOR
fetch next from FKCURSOR into @PARENTOBJECTID, @PARENTCOLUMNID, @REFERENCEDOBJECTID, @REFERENCEDCOLUMNID;
while @@fetch_status = 0
begin
declare @SELECTSQL nvarchar(4000);
declare @ParmDefinition nvarchar(500);
declare @DOESEXIST bit = 0
set @SELECTSQL = 'IF EXISTS(select top 1 SP.ID from dbo.SITEPAGES SP inner join [' + OBJECT_NAME(@PARENTOBJECTID) + '] P on P.[' + col_name(@PARENTOBJECTID, @PARENTCOLUMNID) + '] = SP.[' + col_name(@REFERENCEDOBJECTID, @REFERENCEDCOLUMNID) + '] where SP.ID = ' +CAST(@PKID as NVARCHAR(15)) + ') set @DE = 1;'
set @ParmDefinition = '@DE int output'
exec sp_executesql @SELECTSQL, @ParmDefinition, @DE = @DOESEXIST output
if @DOESEXIST = 1
begin
select 2
RAISERROR('This Page is referenced by one or more other components.',16,1)
return 0
end
fetch next from FKCURSOR into @PARENTOBJECTID, @PARENTCOLUMNID, @REFERENCEDOBJECTID, @REFERENCEDCOLUMNID;
end
close FKCURSOR
deallocate FKCURSOR
update dbo.sitepages set deleted = 1, InTrashBin = 1
where id = @PKID