spAddUpdate_SiteContent

Parameters

Parameter Parameter Type Mode Description
@PKID int INOUT
@VersionID int INOUT
@CurrentUsersID int IN
@Title nvarchar(256) IN
@Description nvarchar(256) IN
@XMLData ntext IN
@ExpireDate datetime IN
@PublishDate datetime IN
@CacheTime int IN
@EditRoles nvarchar(256) IN
@ClientSitesID int IN
@ContentTypesID int IN
@Approved bit IN
@Guid uniqueidentifier INOUT
@IsTimePublished bit IN
@LanguageTarget nvarchar(256) IN
@WorkflowID int IN
@XMLDataIsDirty bit IN
@TestMode bit IN
@FromPageModelId int IN
@Discoverable bit IN
@DiscoverableTitle nvarchar(255) IN
@DiscoverableSummary nvarchar(4000) IN
@Categories ntext IN
@ShareInSiteCopy bit IN
@CanCreateLocalCopy bit IN
@BBSPEnabled bit IN

Definition

Copy

CREATE procedure [dbo].[spAddUpdate_SiteContent]
    (
        @PKID        int output,
        @VersionID  int output,
        @CurrentUsersID    int,        
        @Title          nvarchar(256),
        @Description    nvarchar(256),
        @XMLData        ntext,
        @ExpireDate        datetime,
        @PublishDate    datetime,
        @CacheTime      int,
        @EditRoles      nvarchar(256),
        @ClientSitesID        int,
        @ContentTypesID    int,
        @Approved        bit,
        @Guid    uniqueidentifier output,
        @IsTimePublished bit,
        @LanguageTarget nvarchar(256),
        @WorkflowID int,
        @XMLDataIsDirty bit,
        @TestMode bit,
        @FromPageModelId int,
        @Discoverable bit,
        @DiscoverableTitle nvarchar(255),
        @DiscoverableSummary nvarchar(4000),
        @Categories ntext = '',
        @ShareInSiteCopy bit = 0,
        @CanCreateLocalCopy bit= 0,
        @BBSPEnabled bit=0
    )
    as


    DECLARE @Error int;
    SET @Error = 0;

    begin transaction spAddUpdate_SiteContent


    if (@FromPageModelId <= 0) begin
    set @FromPageModelId = null
    end

    if (@PKID<=0
        begin

        insert into dbo.SiteContent
        (     
            Title,
            Description,
            ExpireDate,
            PublishDate,
            XMLData,
            CacheTime,
            AuthorizedEditRoles,
            ClientSitesID,
            ContentTypesID,
            OwnerID,
            Approved,
            IsTimePublished,
            LanguageTarget,
            WorkflowID,
            TestMode,
            FromModelId,
            Discoverable,
            DiscoverableTitle,
            DiscoverableSummary,
            ShareInSiteCopy,
            CanCreateLocalCopy,
            ChangedByCMSUserID,
            BBSPEnabled
        )

        values
        (
            @Title,
            @Description,
            @ExpireDate,
            @PublishDate,
            @XMLData,
            @CacheTime,
            @EditRoles,
            @ClientSitesID,
            @ContentTypesID,
            @CurrentUsersID,
            @Approved,
            @IsTimePublished,
            @LanguageTarget,
            coalesce(@WorkflowID, dbo.fnGetDefaultWorkflowID(@ContentTypesID)),            
            @TestMode,
            @FromPageModelId,
            @Discoverable,
            @DiscoverableTitle,
            @DiscoverableSummary,
            @ShareInSiteCopy,
            @CanCreateLocalCopy,
            @CurrentUsersID,
            @BBSPEnabled
        )

        SET @Error = @@ERROR;
        select @PKID = @@Identity

        select @Guid = Guid from SiteContent where ID = @PKID

        exec spAuditThis @CurrentUsersID, 1, @Guid, 1

        /* content versioning */
        /* formatted text and images only */
        if dbo.fnContentTypeSupportsVersioning(@ContentTypesID)=1
            begin
                if coalesce(@WorkflowID, dbo.fnGetDefaultWorkflowID(@ContentTypesID)) is not null
                    insert into dbo.SiteContentVersion (SiteContentID, [XMLData], [Status], [StatusUpdatedBy]) values (@PKID, @XMLData, 0, @CurrentUsersID)
                else
                    insert into dbo.SiteContentVersion (SiteContentID, [XMLData], [Status], [StatusUpdatedBy]) values (@PKID, @XMLData, 2, @CurrentUsersID)
                select @VersionID = @@Identity
            end
        end 
    else 
        begin

        update dbo.SiteContent set
        Title           = @Title,
        Description     = @Description,
        ExpireDate = @ExpireDate,
        PublishDate = @PublishDate,
        XMLData = @XMLData,
        CacheTime   = @CacheTime,
        AuthorizedEditRoles = @EditRoles,
        ClientSitesID = @ClientSitesID,
        ContentTypesID = @ContentTypesID,        
        Approved = @Approved,
        IsTimePublished = @IsTimePublished,
        UpdateDate = getutcdate(),
        LanguageTarget = @LanguageTarget,
        WorkflowID = @WorkflowID,
        TestMode = @TestMode,
        FromModelId = @FromPageModelId,
        Discoverable = @Discoverable,
        DiscoverableTitle = @DiscoverableTitle,
        DiscoverableSummary = @DiscoverableSummary,
        ShareInSiteCopy = @ShareInSiteCopy,
        CanCreateLocalCopy = @CanCreateLocalCopy,
        ChangedByCMSUserID = @CurrentUsersID,
        BBSPEnabled = @BBSPEnabled
        where ID=@PKID

        SET @Error = @@ERROR;
        select @Guid = Guid from SiteContent where ID = @PKID

        exec spAuditThis @CurrentUsersID, 2, @Guid, 1


        /* content versioning */
     if dbo.fnContentTypeSupportsVersioning(@ContentTypesID)=1 and @XMLDataIsDirty=1
            begin
                if exists(select null from dbo.SiteContentVersion where [SiteContentID]=@PKID and [Status] in (0,1))
                    /* update existing draft/pending change */
                    update dbo.SiteContentVersion set [XMLData]=@XMLData, [StatusUpdatedOn]=getutcdate(), [StatusUpdatedBy]=@CurrentUsersID where [SiteContentID]=@PKID and [Status] in (0,1)
                else
                    if (@WorkflowID is not null)
                        /* add a new draft */
                        insert into dbo.SiteContentVersion (SiteContentID, [XMLData], [Status], [StatusUpdatedBy]) values (@PKID, @XMLData, 0, @CurrentUsersID)
                    else
                        /* update the mirrored live version if workflows do not apply */
                        update dbo.SiteContentVersion set [XMLData]=@XMLData, [StatusUpdatedOn]=getutcdate(), [StatusUpdatedBy]=@CurrentUsersID where [SiteContentID]=@PKID and [Status]=2
            end 
        end


        IF @Error = 0 BEGIN
            EXEC USP_ADDUPDATE_SITECONTENTFOLDERS @PKID, @Categories;
            SET @Error = @@ERROR;
        END

        IF @Error = 0
            COMMIT TRANSACTION spAddUpdate_SiteContent;
        ELSE
            ROLLBACK TRANSACTION spAddUpdate_SiteContent;