-- moved from site-wide search to acs-kernel
-- added
select define_function_args('acs_object_util__object_type_exist_p','object_type');
--
-- procedure acs_object_util__object_type_exist_p/1
--
CREATE OR REPLACE FUNCTION acs_object_util__object_type_exist_p(
p_object_type varchar
) RETURNS boolean AS $$
DECLARE
v_exist_p boolean;
BEGIN
select true into v_exist_p
from acs_object_types
where object_type = p_object_type;
return FOUND;
END;
$$ LANGUAGE plpgsql stable;
-- added
select define_function_args('acs_object_util__get_object_type','object_id');
--
-- procedure acs_object_util__get_object_type/1
--
CREATE OR REPLACE FUNCTION acs_object_util__get_object_type(
p_object_id integer
) RETURNS varchar AS $$
DECLARE
v_object_type varchar(100);
BEGIN
select object_type into v_object_type
from acs_objects
where object_id = p_object_id;
if not found then
raise exception 'acs_object_util__get_object_type: Invalid Object id: % ', p_object_id;
end if;
return v_object_type;
END;
$$ LANGUAGE plpgsql stable;
-- added
select define_function_args('acs_object_util__type_ancestor_type_p','object_type1,object_type2');
--
-- procedure acs_object_util__type_ancestor_type_p/2
--
CREATE OR REPLACE FUNCTION acs_object_util__type_ancestor_type_p(
p_object_type1 varchar,
p_object_type2 varchar
) RETURNS boolean AS $$
DECLARE
BEGIN
if not acs_object_util__object_type_exist_p(p_object_type1) then
raise exception 'Object type % does not exist', p_object_type1;
end if;
if not acs_object_util__object_type_exist_p(p_object_type2) then
raise exception 'Object type % does not exist', p_object_type2;
end if;
return exists (select 1
from acs_object_types o1, acs_object_types o2
where p_object_type2 = o2.object_type
and o1.object_type = p_object_type1
and o1.tree_sortkey between o2.tree_sortkey and tree_right(o2.tree_sortkey));
END;
$$ LANGUAGE plpgsql stable;
-- added
select define_function_args('acs_object_util__object_ancestor_type_p','object_id,object_type');
--
-- procedure acs_object_util__object_ancestor_type_p/2
--
CREATE OR REPLACE FUNCTION acs_object_util__object_ancestor_type_p(
p_object_id integer,
p_object_type varchar
) RETURNS boolean AS $$
DECLARE
v_exist_p boolean := 'f';
v_object_type varchar(100);
BEGIN
v_object_type := acs_object_util__get_object_type (p_object_id);
v_exist_p := acs_object_util__type_ancestor_type_p (v_object_type, p_object_type);
return v_exist_p;
END;
$$ LANGUAGE plpgsql stable;
-- added
select define_function_args('acs_object_util__object_type_p','object_id,object_type');
--
-- procedure acs_object_util__object_type_p/2
--
CREATE OR REPLACE FUNCTION acs_object_util__object_type_p(
p_object_id integer,
p_object_type varchar
) RETURNS boolean AS $$
DECLARE
v_exist_p boolean := 'f';
BEGIN
v_exist_p := acs_object_util__object_ancestor_type_p(p_object_id, p_object_type);
return v_exist_p;
END;
$$ LANGUAGE plpgsql stable;