--
-- image__new/16
--
create or replace function image__new(
p_name character varying,
p_parent_id integer,
p_item_id integer,
p_revision_id integer,
p_mime_type character varying,
p_creation_user integer,
p_creation_ip character varying,
p_title character varying,
p_description character varying,
p_storage_type cr_item_storage_type_enum,
p_content_type character varying,
p_nls_language character varying,
p_publish_date timestamp with time zone,
p_height integer,
p_width integer,
p_package_id integer DEFAULT NULL::integer
) returns int4 as $$
DECLARE
v_item_id cr_items.item_id%TYPE;
v_revision_id cr_revisions.revision_id%TYPE;
v_package_id acs_objects.package_id%TYPE;
BEGIN
if content_item__is_subclass(p_content_type, 'image') = 'f' then
raise EXCEPTION '-20000: image__new can only be called for an image type';
end if;
if p_package_id is null then
v_package_id := acs_object__package_id(p_parent_id);
else
v_package_id := p_package_id;
end if;
v_item_id := content_item__new (
p_name,
p_parent_id,
p_item_id,
null,
current_timestamp,
p_creation_user,
p_parent_id,
p_creation_ip,
'content_item',
p_content_type,
null,
null,
null,
null,
null,
p_storage_type,
v_package_id
);
-- We will let the caller fill in the LOB data or file path.
v_revision_id := content_revision__new (
p_title,
p_description,
p_publish_date,
p_mime_type,
p_nls_language,
null, -- text
v_item_id,
p_revision_id,
current_timestamp,
p_creation_user,
p_creation_ip,
null, -- content_length
v_package_id
);
insert into images
(image_id, height, width)
values
(v_revision_id, p_height, p_width);
return v_item_id;
END;
$$ language plpgsql;
--
-- image__new/17
--
create or replace function image__new(
new__name character varying,
new__parent_id integer,
new__item_id integer,
new__revision_id integer,
new__mime_type character varying,
new__creation_user integer,
new__creation_ip character varying,
new__relation_tag character varying,
new__title character varying,
new__description character varying,
new__is_live boolean,
new__publish_date timestamp with time zone,
new__path character varying,
new__file_size integer,
new__height integer,
new__width integer,
new__package_id integer DEFAULT NULL::integer
) returns int4 as $$
DECLARE
new__locale varchar default null;
new__nls_language varchar default null;
new__creation_date timestamptz default current_timestamp;
new__context_id integer;
v_item_id cr_items.item_id%TYPE;
v_package_id acs_objects.package_id%TYPE;
v_revision_id cr_revisions.revision_id%TYPE;
BEGIN
new__context_id := new__parent_id;
if new__package_id is null then
v_package_id := acs_object__package_id(new__parent_id);
else
v_package_id := new__package_id;
end if;
v_item_id := content_item__new (
new__name,
new__parent_id,
new__item_id,
new__locale,
new__creation_date,
new__creation_user,
new__context_id,
new__creation_ip,
'content_item',
'image',
null,
new__description,
new__mime_type,
new__nls_language,
null,
'file', -- storage_type
v_package_id
);
-- update cr_child_rels to have the correct relation_tag
update cr_child_rels
set relation_tag = new__relation_tag
where parent_id = new__parent_id
and child_id = new__item_id
and relation_tag = content_item__get_content_type(new__parent_id) || '-' || 'image';
v_revision_id := content_revision__new (
new__title,
new__description,
new__publish_date,
new__mime_type,
new__nls_language,
new__path,
v_item_id,
new__revision_id,
new__creation_date,
new__creation_user,
new__creation_ip,
new__file_size,
v_package_id
);
insert into images
(image_id, height, width)
values
(v_revision_id, new__height, new__width);
-- is_live => 't' not used as part of content_item.new
-- because content_item.new does not let developer specify revision_id,
-- revision_id is determined in advance
if new__is_live = 't' then
PERFORM content_item__set_live_revision (v_revision_id);
end if;
return v_item_id;
END;
$$ language plpgsql;