UFN_CMS_BBPAY_CONTENTNEEDINGUPDATE_DELIVERYCHANNEL

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@FORCEUPDATE bit IN

Definition

Copy


CREATE function dbo.UFN_CMS_BBPAY_CONTENTNEEDINGUPDATE_DELIVERYCHANNEL
(
    @FORCEUPDATE bit
)
returns @RETTABLE table
(
    SITECONTENTID   integer not null,
    SITEPAGEID      integer not null,
    DELIVERYCHANNELID uniqueidentifier
)
as 
begin
    declare
        -- older CMS artifacts saved with UTC datetime; need to offset those times.

        @UTC_OFFSET integer =       datediff(minute, getdate(), getutcdate()),
        -- wait until artifact changes are at least 5 minutes old before updating template

        @WAIT_TIME datetime =       dateadd(minute, -5, getdate()),
        @WAIT_TIME_UTC datetime =   dateadd(minute, -5, getutcdate());

    insert into @RETTABLE select distinct
        SiteContent.ID,
        SitePages.ID,
        CMSTEMPLATELAYOUT.CMSDELIVERYCHANNELID
    from 
        dbo.SiteContent 
            left join (select PAGEMODELITEM.OBJECTGUID 
                        from [dbo].PAGEMODEL 
                            inner join [dbo].PAGEMODELITEM on PAGEMODEL.ID = PAGEMODELITEM.PAGEMODELID
                        where PAGEMODEL.LOCKARTIFACTS = 1) PM on PM.OBJECTGUID = SiteContent.Guid

        join dbo.PageContent            on PageContent.SiteContentID = SiteContent.ID
        left join dbo.CRMBBPAYTEMPLATE  on CRMBBPAYTEMPLATE.SITEPAGEID = PageContent.SitePagesID
                                                and CRMBBPAYTEMPLATE.SITECONTENTID = SiteContent.ID
        join dbo.SitePages              on SitePages.ID = PageContent.SitePagesID
        join dbo.SitePages Templates    on Templates.ID = SitePages.TemplatePageID
        join dbo.CMSTEMPLATELAYOUT      on CMSTEMPLATELAYOUT.TEMPLATEID = Templates.ID 
            --and CMSTEMPLATELAYOUT.CMSDELIVERYCHANNELID = '23B56292-0F3C-43AC-AF13-7767AD9D4057' -- desktop only; known value

        join dbo.SiteLayouts            on SiteLayouts.ID = CMSTEMPLATELAYOUT.SITELAYOUTSID
        left join dbo.SiteStyleSheets        on SiteStyleSheets.ID = SiteLayouts.StyleSheetID
        left join dbo.THEME            on SitePages.ClientSitesID = THEME.CLIENTSITESID
    where 
        SiteContent.BBSPEnabled = 1  
        and dbo.fnSiteContentIsPublished(SiteContent.ID, getutcdate()) = 1
        and dbo.UFN_CMS_SITEISPUBLISHED(SitePages.ClientSitesID) = 1
        and PM.OBJECTGUID is null   -- no page model stuff

        and (@FORCEUPDATE = 1  or
            ((SiteContent.UpdateDate           between dateadd(minute, @UTC_OFFSET, isnull(CRMBBPAYTEMPLATE.DATECHANGED, '1900-01-01')) and @WAIT_TIME_UTC
            or  SitePages.UpdateDate           between dateadd(minute, @UTC_OFFSET, isnull(CRMBBPAYTEMPLATE.DATECHANGED, '1900-01-01')) and @WAIT_TIME_UTC
            or  Templates.UpdateDate           between dateadd(minute, @UTC_OFFSET, isnull(CRMBBPAYTEMPLATE.DATECHANGED, '1900-01-01')) and @WAIT_TIME_UTC
            or  CMSTEMPLATELAYOUT.DATECHANGED  between isnull(CRMBBPAYTEMPLATE.DATECHANGED, '1900-01-01') and @WAIT_TIME
            or  SiteLayouts.UpdateDate         between dateadd(minute, @UTC_OFFSET, isnull(CRMBBPAYTEMPLATE.DATECHANGED, '1900-01-01')) and @WAIT_TIME_UTC
            or  SiteStyleSheets.UpdateDate     between dateadd(minute, @UTC_OFFSET, isnull(CRMBBPAYTEMPLATE.DATECHANGED, '1900-01-01')) and @WAIT_TIME_UTC
            or  THEME.DATECHANGED           between isnull(CRMBBPAYTEMPLATE.DATECHANGED, '1900-01-01') and @WAIT_TIME)))

    return;
end