--
-- content_revision__new/7
--
create or replace function content_revision__new(
new__title character varying,
new__description character varying,
new__publish_date timestamp with time zone,
new__mime_type character varying,
new__text text,
new__item_id integer,
new__package_id integer DEFAULT NULL::integer
) returns int4 as $$
DECLARE
BEGIN
raise NOTICE 'content_revision__new/7 is deprecated, call content_revision__new/13 instead';
return content_revision__new(new__title,
new__description,
new__publish_date,
new__mime_type,
null,
new__text,
new__item_id,
null,
now(),
null,
null,
null,
new__package_id
);
END;
$$ language plpgsql;
--
-- content_revision__new/12
--
create or replace function content_revision__new(
new__title character varying,
new__description character varying,
new__publish_date timestamp with time zone,
new__mime_type character varying,
new__nls_language character varying,
new__data integer,
new__item_id integer,
new__revision_id integer,
new__creation_date timestamp with time zone,
new__creation_user integer,
new__creation_ip character varying,
new__package_id integer DEFAULT NULL::integer
) returns int4 as $$
DECLARE
v_revision_id integer;
v_package_id acs_objects.package_id%TYPE;
v_content_type acs_object_types.object_type%TYPE;
BEGIN
v_content_type := content_item__get_content_type(new__item_id);
if new__package_id is null then
v_package_id := acs_object__package_id(new__item_id);
else
v_package_id := new__package_id;
end if;
v_revision_id := acs_object__new(
new__revision_id,
v_content_type,
new__creation_date,
new__creation_user,
new__creation_ip,
new__item_id,
't',
new__title,
v_package_id
);
-- binary data is stored in cr_revisions using Dons lob hack.
-- This routine only inserts the lob id. It would need to be followed by
-- ns_pg blob_dml from within a tcl script to actually insert the lob data.
-- After the lob data is inserted, the content_length needs to be updated
-- as well.
-- DanW, 2001-05-10.
insert into cr_revisions (
revision_id, title, description, mime_type, publish_date,
nls_language, lob, item_id, content_length
) values (
v_revision_id, new__title, new__description,
new__mime_type,
new__publish_date, new__nls_language, new__data,
new__item_id, 0
);
return v_revision_id;
END;
$$ language plpgsql;
--
-- content_revision__new/12
--
create or replace function content_revision__new(
new__title character varying,
new__description character varying,
new__publish_date timestamp with time zone,
new__mime_type character varying,
new__nls_language character varying,
new__text text,
new__item_id integer,
new__revision_id integer,
new__creation_date timestamp with time zone,
new__creation_user integer,
new__creation_ip character varying,
new__package_id integer DEFAULT NULL::integer
) returns int4 as $$
DECLARE
BEGIN
raise NOTICE 'content_revision__new/12 is deprecated, call content_revision__new/13 instead';
return content_revision__new(new__title,
new__description,
new__publish_date,
new__mime_type,
new__nls_language,
new__text,
new__item_id,
new__revision_id,
new__creation_date,
new__creation_user,
new__creation_ip,
null, -- content_length
new__package_id
);
END
$$ language plpgsql;
--
-- content_revision__new/13
--
create or replace function content_revision__new(
new__title character varying,
new__description character varying,
new__publish_date timestamp with time zone,
new__mime_type character varying,
new__nls_language character varying,
new__text text,
new__item_id integer,
new__revision_id integer,
new__creation_date timestamp with time zone,
new__creation_user integer,
new__creation_ip character varying,
new__content_length integer,
new__package_id integer
) returns int4 as $$
DECLARE
v_revision_id integer;
v_package_id acs_objects.package_id%TYPE;
v_content_type acs_object_types.object_type%TYPE;
v_storage_type cr_items.storage_type%TYPE;
v_length cr_revisions.content_length%TYPE;
BEGIN
v_content_type := content_item__get_content_type(new__item_id);
if new__package_id is null then
v_package_id := acs_object__package_id(new__item_id);
else
v_package_id := new__package_id;
end if;
v_revision_id := acs_object__new(
new__revision_id,
v_content_type,
new__creation_date,
new__creation_user,
new__creation_ip,
new__item_id,
't',
new__title,
v_package_id
);
select storage_type into v_storage_type
from cr_items
where item_id = new__item_id;
if v_storage_type = 'text' then
v_length := length(new__text);
else
v_length := coalesce(new__content_length,0);
end if;
-- text data is stored directly in cr_revisions using text datatype.
insert into cr_revisions (
revision_id, title, description, mime_type, publish_date,
nls_language, content, item_id, content_length
) values (
v_revision_id, new__title, new__description,
new__mime_type,
new__publish_date, new__nls_language,
new__text, new__item_id, v_length
);
return v_revision_id;
END;
$$ language plpgsql;