Skip to content

Instantly share code, notes, and snippets.

@adnanzameer
Last active April 30, 2019 09:53
Show Gist options
  • Save adnanzameer/107d18f1ffaed6d3c5c7fa23d2b5d668 to your computer and use it in GitHub Desktop.
Save adnanzameer/107d18f1ffaed6d3c5c7fa23d2b5d668 to your computer and use it in GitHub Desktop.
SQL script to change page branch master language in Episerver
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[AZChangePageBranchMasterLanguage]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[AZChangePageBranchMasterLanguage]
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[AZChangePageBranchMasterLanguage]
@content_id int,
@language_branch varchar(20),
@recursive bit,
@switch_only bit
AS
DECLARE @language_branch_id nchar(17);
DECLARE @language_branch_nid int;
DECLARE @prev_language_branch_nid int;
DECLARE @child_Id int;
DECLARE @Fetch int;
DECLARE @target_lang_version_exist int;
SET @language_branch_nid = (SELECT pkID FROM tblLanguageBranch WHERE (LanguageID = @language_branch))
SET @language_branch_id = (SELECT LanguageID FROM tblLanguageBranch WHERE (LanguageID = @language_branch))
SET @prev_language_branch_nid = (SELECT fkMasterLanguageBranchID FROM tblContent WHERE pkID = @content_id)
SET @target_lang_version_exist = (SELECT count(*) FROM tblContentLanguage WHERE (fkContentID = @content_id AND fkLanguageBranchID = @language_branch_nid))
-- for switch only check if the page exist in the selected language and only then switch
IF 1 = @switch_only
BEGIN
print 'target_lang_version_exist' + str(@target_lang_version_exist);
IF @target_lang_version_exist > 0
BEGIN
UPDATE tblContent
SET fkMasterLanguageBranchID = @language_branch_nid
WHERE pkID = @content_id AND fkMasterLanguageBranchID = @prev_language_branch_nid
END
ELSE
BEGIN
RAISERROR
(N'The Selected page with ID:%d, cannot switch master branch since there is no version in the selected target language: %s.',
11, 1, @content_id, @language_branch);
END
END
ELSE
BEGIN
IF @target_lang_version_exist > 0
BEGIN
RAISERROR
(N'The Selected page with ID:%d, cannot be translated since there already is a version in the selected target language: %s.',
11, 1, @content_id, @language_branch);
END
ELSE
BEGIN
UPDATE tblContent
SET fkMasterLanguageBranchID = @language_branch_nid
WHERE pkID = @content_id
UPDATE tblContentProperty
SET fkLanguageBranchID = @language_branch_nid
WHERE fkContentID = @content_id AND fkLanguageBranchID = @prev_language_branch_nid
UPDATE tblContentLanguage
SET fkLanguageBranchID = @language_branch_nid
WHERE fkContentID = @content_id AND fkLanguageBranchID = @prev_language_branch_nid
UPDATE tblWorkContent
SET fkLanguageBranchID = @language_branch_nid
WHERE fkContentID = @content_id AND fkLanguageBranchID = @prev_language_branch_nid
END
END
IF 1 = @recursive
BEGIN
DECLARE children_cursor CURSOR LOCAL FOR
select pkID from tblContent where fkParentID = @content_id
OPEN children_cursor
FETCH NEXT FROM children_cursor INTO @child_Id
SET @Fetch=@@FETCH_STATUS
WHILE @Fetch = 0
BEGIN
print @child_id
print @language_branch_id
exec [dbo].[AZChangePageBranchMasterLanguage] @child_id, @language_branch_id, @recursive, @switch_only
FETCH NEXT FROM children_cursor INTO @child_Id
SET @Fetch=@@FETCH_STATUS
END
CLOSE children_cursor
DEALLOCATE children_cursor
END
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment