--
-- etp__get_description/2
--
create or replace function etp__get_description(
integer,
character varying
) returns varchar as $$
declare
p_item_id alias for $1;
p_revision_description alias for $2;
v_item_id integer;
v_description varchar;
v_object_type varchar;
begin
if p_revision_description is not null then
return p_revision_description;
end if;
select object_type from acs_objects into v_object_type
where object_id = p_item_id;
if v_object_type = 'content_folder' then
select r.description
into v_description
from cr_items i, cr_revisions r
where i.parent_id = p_item_id
and i.name = 'index'
and i.live_revision = r.revision_id
and i.item_id = r.item_id;
return v_description;
end if;
if v_object_type = 'content_extlink' then
select description into v_description
from cr_extlinks
where extlink_id = p_item_id;
return v_description;
end if;
if v_object_type = 'content_symlink' then
select target_id into v_item_id
from cr_symlinks
where symlink_id = p_item_id;
return etp__get_description(v_item_id, null);
end if;
if v_object_type = 'content_item' then
select r.description into v_description
from cr_items i, cr_revisions r
where i.item_id = v_item_id
and i.live_revision = r.revision_id;
return v_description;
end if;
return null;
end;$$ language plpgsql;