USP_CLONESITE_THEME

Copy theme from one site to another

Parameters

Parameter Parameter Type Mode Description
@SourceClientSitesID int IN
@TargetClientSitesID int IN
@CurrentUserID int IN
@CopyBatchGUID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.USP_CLONESITE_THEME

  @SourceClientSitesID    as int 
    ,@TargetClientSitesID    as int 
    ,@CurrentUserID            as int
    ,@CopyBatchGUID            as uniqueidentifier 
)

as
begin
    set nocount on;
  declare @CHANGEAGENTID uniqueidentifier,
          @CURRENTDATE datetime

  if @CHANGEAGENTID is null
    exec USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output

    set @CURRENTDATE = getdate();

  declare @tmpTheme table(OLDTHEMEID uniqueidentifier,  NEWTHEMEID uniqueidentifier, NEWIMAGEID int)
  declare @tmpThemeLayout table(OLDLAYOUTID int, NEWLAYOUTID int)
  declare @tmpThemeStyleSheet table(OLDSSID int, NEWSSID int)

  insert into @tmpTheme select T.ID as OLDTHEMEID, NEWID() as NEWTHEMEID, SI.ID as NEWIMAGEID 
  from dbo.THEME T
  left join dbo.SiteImages SI on SI.CopySourceID = T.IMAGEID and SI.CLIENTSITESID = @TargetClientSitesID
  where T.CLIENTSITESID = @SourceClientSitesID

    -- Default theme copy

    update    TARGETSETTING
        set    TARGETSETTING.VALUE = lower(SOURCETHEME.NEWTHEMEID)
    from    dbo.CMSSITESETTING (nolock) SOURCESETTING
    join    dbo.CMSSITESETTING (nolock) TARGETSETTING
    on        SOURCESETTING.ENUMID = TARGETSETTING.ENUMID
    join    @tmpTheme  SOURCETHEME
    on        SOURCETHEME.OLDTHEMEID = case when len(SOURCESETTING.value)<>36 then '00000000-0000-0000-0000-000000000000' else SOURCESETTING.value end 
    where    SOURCESETTING.ENUMID in (29, 44)
    and        SOURCESETTING.CLIENTSITESID=@SourceClientSitesID
    and        TARGETSETTING.CLIENTSITESID=@TargetClientSitesID;

  insert into dbo.THEME
  (ID, CLIENTSITESID, NAME, DESCRIPTION, DEFAULTSTYLING, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, IMAGEID, DEFAULTSTYLINGSEQUENCE, LAYOUTSTYLINGSEQUENCE)
  select tmpT.NEWTHEMEID, @TargetClientSitesID, NAME, DESCRIPTION, DEFAULTSTYLING,@CHANGEAGENTID,@CHANGEAGENTID,@CURRENTDATE,@CURRENTDATE, coalesce(tmpT.NEWIMAGEID,0), DEFAULTSTYLINGSEQUENCE, LAYOUTSTYLINGSEQUENCE
  from dbo.THEME T
  join @tmpTheme tmpT ON T.ID = tmpT.OLDTHEMEID
  left join    dbo.PAGEMODELITEM (nolock)
    on        T.ID = PAGEMODELITEM.OBJECTGUID
  left    join dbo.PAGEMODEL
    on    PAGEMODELITEM.PAGEMODELID = PAGEMODEL.ID 
  where coalesce(PAGEMODEL.LOCKARTIFACTS, 0) <> 1
  and   T.CLIENTSITESID = @SourceClientSitesID


  insert into @tmpThemeLayout select SL.COPYSOURCEID as OLDLAYOUTID, SL.ID as NEWLAYOUTID 
  from SiteLayouts SL
  where SL.COPYBATCHGUID = @CopyBatchGUID

  insert into dbo.THEMELAYOUT
  (ID, THEMEID, LAYOUTID, SEQUENCE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
  select newID(), tmpT.NEWTHEMEID, tmpTL.NEWLAYOUTID, SEQUENCE,@CHANGEAGENTID,@CHANGEAGENTID,@CURRENTDATE,@CURRENTDATE
  from dbo.THEMELAYOUT TL
  join @tmpThemeLayout tmpTL on TL.LAYOUTID = tmpTL.OLDLAYOUTID
  left join @tmpTheme tmpT on TL.THEMEID = tmpT.OLDTHEMEID
  where THEMEID in (select ID from dbo.THEME where ClientSitesID = @SourceClientSitesID)

  insert into @tmpThemeStyleSheet select SSS.COPYSOURCEID as OLDSSID, SSS.ID as NEWSSID 
  from SiteStyleSheets SSS
  where SSS.COPYBATCHGUID = @CopyBatchGUID  

  insert into dbo.THEMESTYLESHEET
  (ID, THEMEID, STYLESHEETID, SEQUENCE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
  select newID(), tmpT.NEWTHEMEID, tmpTSS.NEWSSID, SEQUENCE,@CHANGEAGENTID,@CHANGEAGENTID,@CURRENTDATE,@CURRENTDATE
  from dbo.THEMESTYLESHEET TSS
  join @tmpThemeStyleSheet tmpTSS on TSS.STYLESHEETID = tmpTSS.OLDSSID
  left join @tmpTheme tmpT on TSS.THEMEID = tmpT.OLDTHEMEID

end