spCloneSite_DeepCopy
This is the legacy Blackbaud Internet Solutions main site copy procedure
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SourceClientSitesID | int | IN | |
@TargetClientSitesID | int | IN | |
@CurrentUserID | int | IN | |
@CopyBatchGUID | uniqueidentifier | IN | |
@CopyDepth | int | IN | |
@CopySecurity | bit | IN |
Definition
Copy
CREATE PROCEDURE [dbo].[spCloneSite_DeepCopy]
(
@SourceClientSitesID int,
@TargetClientSitesID int,
@CurrentUserID int,
@CopyBatchGUID uniqueidentifier,
@CopyDepth int,
@CopySecurity bit
)
AS
----------------------------------------
--CopyDepth
-- 0 - Settings only
-- 1 - Layouts only
-- 2 - Templates and containing parts
-- 3 - Pages and all parts
-----------------------------------------
INSERT INTO SiteCopy (ID, OwnerUserID, [SourceClientSitesID], [TargetClientSitesID], Status, ErrorLog)
VALUES (@CopyBatchGUID,@CurrentUserID,@SourceClientSitesID,@TargetClientSitesID,0, 'Initializing...' + CHAR(13))
if @@Error <> 0
UPDATE SiteCopy SET Status = 99, ErrorLog = ErrorLog + 'An error occurred in the site copy.' + CHAR(13) WHERE ID = @CopyBatchGUID
else
begin
if @CopyDepth > 0
begin
UPDATE SiteCopy SET Status = 1, ErrorLog = ErrorLog + 'Copying Site Folders...' + CHAR(13) WHERE ID = @CopyBatchGUID
--Site Folders are used by many objects. They don't have dependencies so we will get them out of the way.
exec spCloneSite_Folders @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
UPDATE SiteCopy SET Status = 2, ErrorLog = ErrorLog + 'Copying Images...' + CHAR(13) WHERE ID = @CopyBatchGUID
--We need to get images out of the way since they are used by any object that contains HTML
exec spCloneSite_Images @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
UPDATE SiteCopy SET Status = 3, ErrorLog = ErrorLog + 'Updating Image Folders...' + CHAR(13) WHERE ID = @CopyBatchGUID
--Let's put the new images into their new folder homes
exec spCloneSite_ImageFolders @CopyBatchGUID
UPDATE SiteCopy SET Status = 4, ErrorLog = ErrorLog + 'Copying Style sheets...' + CHAR(13) WHERE ID = @CopyBatchGUID
--Needed for Layouts
exec spCloneSite_StyleSheets @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
UPDATE SiteCopy SET Status = 5, ErrorLog = ErrorLog + 'Copying Layouts...' + CHAR(13) WHERE ID = @CopyBatchGUID
--Basic building block of a page. HTML will need to be replaced with new images, etc.
exec spCloneSite_Layouts @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
if @CopyDepth > 1
begin
DECLARE @TemplatesOnly bit
SET @TemplatesOnly = 1
if @CopyDepth > 2
SET @TemplatesOnly = 0
UPDATE SiteCopy SET Status = 6, ErrorLog = ErrorLog + 'Copying Pages...' + CHAR(13) WHERE ID = @CopyBatchGUID
--*************************************
--Content and Page Copying
--Please tread with caution
--*************************************
--Let's get the pages copied. The actual page object is a trivial copy
exec spCloneSite_Pages @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID, @TemplatesOnly
exec USP_CLONESITE_CMSTEMPLATELAYOUT @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
UPDATE SiteCopy SET Status = 7, ErrorLog = ErrorLog + 'Copying Email Templates...' + CHAR(13) WHERE ID = @CopyBatchGUID
declare @IDS xml
set @IDs =
(
select ID
from dbo.[EMAILTEMPLATE] ET
left outer join vwEmailTemplateDataSources DS on DS.DataSourceID = ET.DataSourceID
left outer join (select PAGEMODELITEM.OBJECTGUID
from [dbo].PAGEMODEL
inner join [dbo].PAGEMODELITEM on PAGEMODEL.ID = PAGEMODELITEM.PAGEMODELID
where PAGEMODEL.LOCKARTIFACTS=1)PM on PM.OBJECTGUID = ET.Guid
where
ET.Type = 0
and ET.IsInternalUse = 0
and ET.Deleted = 0
and ET.ClientsID = 1
and DS.DataSourceID is not null
and PM.OBJECTGUID is null
and ET.IsSample = 0
and ET.CLIENTSITESID = @SourceClientSitesID
FOR XML RAW, ELEMENTS
)
exec spCloneSite_EmailTemplate @TargetClientSitesID,@CurrentUserID, @CopyBatchGUID, @IDs
--Copy eCard templates and their folders
UPDATE SiteCopy SET Status = 8, ErrorLog = ErrorLog + 'Copying eCard templates...' + CHAR(13) WHERE ID = @CopyBatchGUID
exec USP_CLONESITE_ECARDTEMPLATES @SourceClientSitesID, @TargetClientSitesID, @CurrentUserID, @CopyBatchGuid
UPDATE SiteCopy SET Status = 9, ErrorLog = ErrorLog + 'Copying eCard templates folders...' + CHAR(13) WHERE ID = @CopyBatchGUID
exec USP_CLONESITE_ECARDTEMPLATEFOLDERS @CopyBatchGUID
UPDATE SiteCopy SET Status = 15, ErrorLog = ErrorLog + 'Copying Parts...' + CHAR(13) WHERE ID = @CopyBatchGUID
--Copy each type of content we allow to be copied
exec spCloneSite_Content @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID,@TemplatesOnly
--Run special case SPs for each content type that needs one
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_USERLOGIN', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_PROFILEFORM', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_MENU', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_USEREMAILPREFERENCESFORM', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_TARGETEDCONTENT', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_TRANSACTIONMANAGER', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_ADVANCEDDONATIONFORM', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_DONATIONFORM_ECARD', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_PAYMENT', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_PAYMENTSUMMARY', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_SEARCH', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_QUICKSEARCH', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_PAGESHARING', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_FACEBOOKPROFILELINK', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_ANONNEWSLETTERSUBSCRIPTION', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_TAGDISPLAY', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_USERPHOTOS', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_NEWSREADER', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_NAVIGATIONBUTTONS', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_DOCUMENTS', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_DISCUSSIONGROUP', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_WEBLOG', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_POLL', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_CONTENTCOMPARISON', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_EVENTCALENDAR', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_EVENTCALENDARGROUP', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_EVENTCALENDARHIGHLIGHT', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_SURVEY', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_MEMBERSHIP', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_USERLINKMODULE', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_GIVINGSEARCH', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_EVENTREGISTRATION', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_EMAILFORWARDINGFORM', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_PAYMENT2', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_SPONSORSHIPFORM', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_SPONSORSHIPSEARCH', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_PAYMENTSUMMARY2', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_FORM', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_FAFACCOUNTSETTINGS', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_FAFPARTICIPANTPAGE', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_ROLESELECTIONCONTROL', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_FAFOFFLINEFORM', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID-->
exec dbo.USP_CLONESITE_WRAPPER 'dbo.USP_CLONESITE_THEME', @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
UPDATE SiteCopy SET Status = 9, ErrorLog = ErrorLog + 'Updating Page Content...' + CHAR(13) WHERE ID = @CopyBatchGUID
--Copy the Page Content. This will wire up the new parts on the new pages
exec spCloneSite_PageContent @CopyBatchGUID
if @TemplatesOnly = 0
begin
UPDATE SiteCopy SET Status = 10, ErrorLog = ErrorLog + 'Copying Friendly URLs...' + CHAR(13) WHERE ID = @CopyBatchGUID
--Copy Friendly URLs
exec spCloneSite_VanityURLs @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
UPDATE SiteCopy SET Status = 11, ErrorLog = ErrorLog + 'Finishing...' + CHAR(13) WHERE ID = @CopyBatchGUID
end
end
--Let's go back and make this official.
--We need to update all the page ids and such that got copied
--Also updates image folder reference... moved from 'if @TemplatesOnly = 0'
exec spCloneSite_ClientSites @SourceClientSitesID,@TargetClientSitesID,@CurrentUserID,@CopyBatchGUID
end
if @CopySecurity = 1
begin
UPDATE SiteCopy SET Status = 12, ErrorLog = ErrorLog + 'Copying Security Settings...' + CHAR(13) WHERE ID = @CopyBatchGUID
-- Copy Object Security
exec spCloneSite_ObjectSecurity @SourceClientSitesID,@TargetClientSitesID,@CopyBatchGUID
-- Copy Security Assignments
exec USP_CMSSECURITYASSIGNMENT_ADDBYID null, @SourceClientSitesID, @TargetClientSitesID
end
--This completes the copy. Don't set the status to 100 until you are completely finished.
UPDATE SiteCopy SET Status = 100, ErrorLog = ErrorLog + 'Complete.' + CHAR(13) WHERE ID = @CopyBatchGUID
end