USP_SITECONTENT_BULKPUTINTRASHBIN
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@XML | xml | IN | |
@NUMBEROFSUCCESSFUL | int | INOUT | |
@NUMBERINCONTENTTEST | int | INOUT | |
@NUMBEROFDOCPARTSUSEDBYFORMS | int | INOUT | |
@NUMBERINTARGETEDCONTENT | int | INOUT | |
@NUMBEROFFUNDRAIERS | int | INOUT | |
@NUMBERPERSONALPAGEWITHOWNERS | int | INOUT | |
@PARTSSTILLONPAGES | xml | INOUT |
Definition
Copy
CREATE procedure dbo.USP_SITECONTENT_BULKPUTINTRASHBIN
(
@XML xml,
@NUMBEROFSUCCESSFUL int = 0 output,
@NUMBERINCONTENTTEST int = 0 output,
@NUMBEROFDOCPARTSUSEDBYFORMS int = 0 output,
@NUMBERINTARGETEDCONTENT int = 0 output,
@NUMBEROFFUNDRAIERS int = 0 output,
@NUMBERPERSONALPAGEWITHOWNERS int = 0 output,
@PARTSSTILLONPAGES xml = null output
)
AS
begin
set nocount on
begin tran
declare @SITECONTENTIDS table ([ID] int)
insert into @SITECONTENTIDS select IDS.ID.value('.', 'int') from @XML.nodes('/SiteContent/id') IDS(ID)
-----------Check Content Tests
declare @PARTSINCONTENTTEST table ([SITECONTENTID] int)
insert into @PARTSINCONTENTTEST
select distinct SC.[ID]
from dbo.CONTENTCOMPARISONS CC
inner join dbo.CONTENTCOMPARISONPART CCP on CC.CCPID = CCP.ID
inner join @SITECONTENTIDS SC on SC.[ID]= CC.CID
where CCP.STARTEDDATE is not null and CCP.ENDEDDATE is null
set @NUMBERINCONTENTTEST = (select count(1) from @PARTSINCONTENTTEST)
delete @SITECONTENTIDS
from @SITECONTENTIDS STI
inner join @PARTSINCONTENTTEST P on P.SITECONTENTID= STI.[ID]
-----------Check Targeted Content
declare @PARTSINTARGETEDCONTENT table ([SITECONTENTID] int)
insert into @PARTSINTARGETEDCONTENT
select distinct SCI.[ID]
from dbo.TARGETEDCONTENTCHECKS TCC
inner join dbo.TARGETEDCONTENTPART TCP on TCP.[ID] = TCC.[TARGETEDPARTID]
inner join dbo.SITECONTENT SC on SC.[ID] = TCP.[SITECONTENTID]
inner join @SITECONTENTIDS SCI on SCI.[ID] = TCC.[CONTENTID]
where SC.[DELETED] = 0 or SC.[INTRASHBIN] = 1 --Only care about TC parts that are not deleted at all, or are in Trash bin
set @NUMBERINTARGETEDCONTENT = (select count(1) from @PARTSINTARGETEDCONTENT)
delete @SITECONTENTIDS
from @SITECONTENTIDS STI
inner join @PARTSINTARGETEDCONTENT P on P.SITECONTENTID= STI.[ID]
-----------Check parts that still exist on pages.
declare @PARTSTHATEXISTONPAGES table ([SITECONTENTID] int)
insert into @PARTSTHATEXISTONPAGES
select SCI.ID
from @SITECONTENTIDS SCI
inner join dbo.pagecontent PC on SCI.ID = PC.SiteContentID
delete @SITECONTENTIDS
from @SITECONTENTIDS SCI
inner join @PARTSTHATEXISTONPAGES P on P.SITECONTENTID = SCI.ID
set @PARTSSTILLONPAGES =
(select SC.Title from @PARTSTHATEXISTONPAGES P
inner join dbo.SITECONTENT SC on P.SITECONTENTID = SC.ID
FOR XML RAW ('Part'), ROOT)
-----------Fundraisers
declare @FUNDRAISERS table ([SITECONTENTID] int)
insert into @FUNDRAISERS
select SC.ID
from @SITECONTENTIDS SC
inner join dbo.FUNDRAISERS F on F.SITECONTENTID = SC.ID
where F.BACKOFFICEID is not null and [IsCarePageManager] = 0
set @NUMBEROFFUNDRAIERS = (select count(1) from @FUNDRAISERS)
delete @SITECONTENTIDS
from @SITECONTENTIDS STI
inner join @FUNDRAISERS P on P.SITECONTENTID= STI.[ID]
-----------Check Personal Pages
declare @PARTSWITHPPOWNERS table ([SITECONTENTID] int)
insert into @PARTSWITHPPOWNERS
select SC.ID
from @SITECONTENTIDS SC
inner join dbo.FundRaisers FR on FR.SITECONTENTID = SC.ID
inner join dbo.FundraiserSolicitors FS on FS.FundraiserID = FR.ID
where FR.[IsCarePageManager] <> 0
union
select SC.ID
from @SITECONTENTIDS SC
inner join dbo.FundRaisers FR on FR.SITECONTENTID = SC.ID
inner join dbo.FundraiserTeams FS on FS.FundraiserID = FR.ID
where FR.[IsCarePageManager] <> 0
set @NUMBERPERSONALPAGEWITHOWNERS = (select count(1) from @PARTSWITHPPOWNERS)
delete @SITECONTENTIDS
from @SITECONTENTIDS STI
inner join @PARTSWITHPPOWNERS P on P.SITECONTENTID= STI.[ID]
--get all of the document parts that are used by forms
declare @DocPartsUsedByForms table ([SiteContentID] int)
insert into @DocPartsUsedByForms
SELECT distinct convert(int, convert(varchar(20), Properties.query('string(FileUploadProperties[1]/@DPID)')))
FROM dbo.CustomFormElement cfe
WHERE cfe.TypeID = 4
AND cfe.SubTypeID = 16
declare @NUMTODELETEWITHDOCPARTS int = (select count(1) from @SiteContentIDS)
--prevent document parts that are used by forms from being moved
delete @SiteContentIDS
from @SiteContentIDS STI
inner join @DocPartsUsedByForms P on P.SiteContentID= STI.[ID]
--set the number parts that were prevented from moving
set @NUMBEROFDOCPARTSUSEDBYFORMS = @NUMTODELETEWITHDOCPARTS - (select count(1) from @SiteContentIDS)
UPDATE SiteContent SET Deleted=1, InTrashBin=1 from dbo.SiteContent inner join @SiteContentIDS SC on SiteContent.ID=SC.ID
set @NUMBEROFSUCCESSFUL = (select count(1) from @SiteContentIDS);
commit tran
end