USE [site_fuchs] GO /****** Object: StoredProcedure [dbo].[ocms_cloneItem] Script Date: 02.12.2020 21:05:05 ******/ DROP PROCEDURE [dbo].[ocms_cloneItem] GO /****** Object: StoredProcedure [dbo].[ocms_cloneItem] Script Date: 02.12.2020 21:05:06 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [dbo].[ocms_cloneItem] @old_ocms_iid bigint ,@new_parent_iid bigint AS BEGIN SET NOCOUNT ON; IF EXISTS (SELECT * from [dbo].[ocms_items] as i where i.[ocms_iid] = @old_ocms_iid) AND EXISTS (SELECT * from [dbo].[ocms_items] as i where i.[ocms_iid] = @new_parent_iid) BEGIN DECLARE @NEW TABLE ([ocms_iid] bigint, [old_ocms_pid] bigint); INSERT INTO [dbo].[ocms_items] ([parent_iid] ,[ocms_pid] ,[name] ,[view] ,[template_id] ,[hide] ,[order] ,[DateCreated] ,[DateModified]) OUTPUT inserted.[ocms_iid], inserted.[ocms_pid] INTO @new SELECT @new_parent_iid ,[ocms_pid] ,[name] ,[view] ,[template_id] ,[hide] ,[order] ,GETUTCDATE() ,GETUTCDATE() FROM [dbo].[ocms_items] as i WHERE [ocms_iid] = @old_ocms_iid; DECLARE @new_ocms_iid bigint, @old_ocms_pid bigint; SELECT TOP(1) @new_ocms_iid = [ocms_iid], @old_ocms_pid = [old_ocms_pid] FROM @NEW; IF NOT EXISTS (SELECT pn.* from [dbo].[ocms_properties] as pn JOIN [dbo].[ocms_properties] as po ON pn.[key] = po.[key] and pn.[locale] = po.[locale] WHERE pn.[ocms_iid] = @new_parent_iid AND po.[ocms_pid] = @old_ocms_pid) BEGIN DECLARE @newprop [dbo].[ocms_type_properties_base]; DECLARE @property_key varchar(50), @locale varchar(5), @new_ocms_pid bigint; SELECT TOP(1) @property_key = [key], @locale = [locale] FROM [dbo].[ocms_properties] as p WHERE [ocms_pid] = @old_ocms_pid; IF ISNULL(@property_key, '') <> '' BEGIN INSERT INTO @newprop VALUES(@new_parent_iid, @property_key, '', @locale); EXECUTE [dbo].[ocms_merge_properties] @newprop; --makes sure is ok with template END SELECT TOP(1) @new_ocms_pid = [ocms_pid] FROM [dbo].[ocms_properties] WHERE [ocms_iid] = @new_parent_iid AND [key] = @property_key; UPDATE [dbo].[ocms_items] SET [ocms_pid] = @new_ocms_pid ,[DateModified] = GETUTCDATE() WHERE [ocms_iid] = @new_ocms_iid; END IF @new_ocms_iid is not null BEGIN INSERT INTO [dbo].[ocms_properties] ([ocms_iid] ,[key] ,[value] ,[locale] ,[DateCreated] ,[DateModified] ) SELECT @new_ocms_iid ,[key] ,[value] ,[locale] ,GETUTCDATE() ,GETUTCDATE() FROM [dbo].[ocms_properties] WHERE [ocms_iid] = @old_ocms_iid; END END END GO ALTER AUTHORIZATION ON [dbo].[ocms_cloneItem] TO SCHEMA OWNER GO