-- changed variable declaration from varchar(400) to varchar
create or replace function etp__get_relative_url(integer, varchar)
returns varchar as '
declare
p_item_id alias for $1;
p_name alias for $2;
v_item_id integer;
v_url varchar;
v_object_type varchar;
v_link_rec record;
begin
select object_type into v_object_type
from acs_objects
where object_id = p_item_id;
if v_object_type = ''content_item'' then
return p_name;
end if;
if v_object_type = ''content_folder'' then
select s.name || ''/'' into v_url
from cr_folders f, site_nodes s
where f.folder_id = p_item_id
and s.object_id = f.package_id;
return v_url;
end if;
if v_object_type = ''content_extlink'' then
select url into v_url
from cr_extlinks
where extlink_id = p_item_id;
return v_url;
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;
select f.package_id, i.name
into v_link_rec
from cr_items i, cr_folders f
where i.item_id = v_item_id
and i.parent_id = f.folder_id;
select site_node__url(s.node_id) into v_url
from site_nodes s
where s.object_id = v_link_rec.package_id;
return v_url || v_link_rec.name;
end if;
return null;
end;
' language 'plpgsql';
create or replace function etp__get_title(integer, varchar)
returns varchar as '
declare
p_item_id alias for $1;
p_revision_title alias for $2;
v_item_id integer;
v_title varchar;
v_object_type varchar;
begin
if p_revision_title is not null then
return p_revision_title;
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.title
into v_title
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;
return v_title;
end if;
if v_object_type = ''content_extlink'' then
select label into v_title
from cr_extlinks
where extlink_id = p_item_id;
return v_title;
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_title(v_item_id, null);
end if;
if v_object_type = ''content_item'' then
select r.title into v_title
from cr_items i, cr_revisions r
where i.item_id = v_item_id
and i.live_revision = r.revision_id;
return v_title;
end if;
return null;
end;
' language 'plpgsql';
create or replace function etp__get_description(integer, varchar)
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';