spCloneSite_Content
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SourceClientSitesID | int | IN | |
@TargetClientSitesID | int | IN | |
@CurrentUserID | int | IN | |
@CopyBatchGuid | uniqueidentifier | IN | |
@TemplatesOnly | bit | IN |
Definition
Copy
CREATE procedure [dbo].[spCloneSite_Content]
(
@SourceClientSitesID int,
@TargetClientSitesID int,
@CurrentUserID int,
@CopyBatchGuid uniqueidentifier,
@TemplatesOnly bit
)
as
begin try
begin transaction
declare @ContentToCopy table([ID] int, [Guid] uniqueidentifier)
if @TemplatesOnly = 0
begin
insert into @ContentToCopy
select SC.ID, SC.Guid FROM SiteContent SC
inner join dbo.UFN_GETCLONESITECONTENTTYPES() C on SC.ContentTypesID = C.ID
WHERE ClientSitesID = @SourceClientSitesID AND Deleted = 0
AND SC.ShareInSiteCopy = 0
end
else
begin
insert into @ContentToCopy
select distinct SiteContent.ID, SiteContent.Guid
from SitePages
inner join PageContent on SitePages.ID = PageContent.SitePagesID
inner join SiteContent on SiteContent.ID = PageContent.SiteContentID
inner join dbo.UFN_GETCLONESITECONTENTTYPES() C on SiteContent.ContentTypesID = C.ID
where SitePages.IsTemplatePage = 1 AND SitePages.Deleted = 0 AND SiteContent.ClientSitesID = @SourceClientSitesID AND SiteContent.Deleted = 0
AND SiteContent.ShareInSiteCopy = 0
end
delete @ContentToCopy
from @ContentToCopy CTC
inner join PAGEMODELITEM PMI on PMI.OBJECTGUID = CTC.Guid
inner join dbo.PAGEMODEL PM on PM.ID = PMI.PAGEMODELID
where PM.LOCKARTIFACTS = 1
INSERT INTO SiteContent
(Title, XMLData, ExpireDate, PublishDate, AuthorizedEditRoles, CacheTime, ShowMobile, ClientSitesID, Guid, OwnerID, Deleted, Approved, ContentTypesID, Description, IsTimePublished, CreateDate, UpdateDate, LanguageTarget, WorkflowID, TestMode, CopySourceID, CopyBatchGUID, Discoverable, DiscoverableTitle, DiscoverableSummary, ChangedByCMSUserID, BBSPEnabled)
SELECT
Title,
dbo.UFN_UPDATECOPYCONTENTHTML(XMLData,@CopyBatchGUID), --this will replace the images and pids etc that are in html for helplets and contenthtml
ExpireDate,
PublishDate,
AuthorizedEditRoles,
CacheTime,
ShowMobile,
@TargetClientSitesID,
newid(),
OwnerID,
Deleted,
Approved,
ContentTypesID,
Description,
IsTimePublished,
CreateDate,
UpdateDate,
LanguageTarget,
WorkflowID,
TestMode,
SC.ID,
@CopyBatchGUID,
SC.Discoverable,
SC.DiscoverableTitle,
SC.DiscoverableSummary,
@CurrentUserID,
BBSPEnabled
FROM SiteContent SC
inner join @ContentToCopy CTC on CTC.ID = SC.ID
-- copy over the latest site content version info from the original parts
insert into dbo.SiteContentVersion (SiteContentID, [XMLData], [Status], [StatusUpdatedBy], [StatusUpdatedOn], [Comments])
select SCnew.ID, dbo.UFN_UPDATECOPYCONTENTHTML(SCV.XMLData,@CopyBatchGUID), SCV.Status, SCV.StatusUpdatedBy, SCV.StatusUpdatedOn, SCV.Comments
from
(
select MAX(SCV.ID) as ID
from dbo.SiteContentVersion SCV
inner join @ContentToCopy CTC on CTC.ID = SCV.SiteContentID
group by SCV.SiteContentID
) LATEST
inner join dbo.SiteContentVersion SCV on SCV.ID = LATEST.ID
inner join SiteContent SCnew on SCnew.CopySourceID = SCV.SITECONTENTID and SCnew.CopyBatchGUID = @CopyBatchGuid
-- copy over the tags for the parts we have just copied
insert into dbo.SITECONTENTTAG (SITECONTENTID, TAGCODEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
select SCnew.ID, SCT.TAGCODEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
from dbo.SITECONTENTTAG SCT
inner join @ContentToCopy CTC on CTC.ID = SCT.SITECONTENTID
inner join SiteContent SCnew on SCnew.CopySourceID = SCT.SITECONTENTID and SCnew.CopyBatchGUID = @CopyBatchGuid
-- copy over the folders for the parts we have just copied
insert into dbo.SITECONTENTFOLDERS (CONTENTID, SITEFOLDERSID)
select SC.ID, SF.FolderID
from dbo.SITECONTENTFOLDERS SCT
inner join dbo.SiteFolders SF on SF.CopySourceID = SCT.SITEFOLDERSID and SF.CopyBatchGUID = @CopyBatchGuid
inner join dbo.SiteContent SC on SC.CopySourceID = SCT.CONTENTID and SC.CopyBatchGUID = @CopyBatchGuid
INSERT INTO Search (SearchTypeId,SiteContentId,ContentUpdateDate,ExtendedKey,Title,SearchText,TagText,SearchDate1,SearchDate2,SearchInt1)
select
S.SearchTypeId,
SC.ID,
S.ContentUpdateDate,
S.ExtendedKey,
S.Title,
dbo.UFN_UPDATECOPYCONTENTHTML(S.SearchText,@CopyBatchGUID),
S.TagText,
S.SearchDate1,
S.SearchDate2,
S.SearchInt1
from dbo.Search S
inner join dbo.SiteContent SC on SC.CopySourceID = S.SiteContentId
where SC.CopyBatchGUID = @CopyBatchGuid
commit transaction
end try
begin catch
rollback transaction
UPDATE SiteCopy SET ErrorLog = ErrorLog + 'Error Copying Parts in Clone Site Content:' + ERROR_MESSAGE() + CHAR(13) WHERE ID = @CopyBatchGUID
end catch