105 lines
6.2 KiB
Transact-SQL
105 lines
6.2 KiB
Transact-SQL
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: <Author,,Name>
|
|
-- Create date: <Create Date,,>
|
|
-- Description: <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
|