--
-- acs_group__member_p/3
--
create or replace function acs_group__member_p(
  p_party_id integer,
  p_group_id integer,
  p_cascade_membership boolean
) returns bool as $$


  SELECT CASE
  WHEN p_cascade_membership = true then
    --
    -- Direct and indirect memberships
    --
    EXISTS (
      select 1 from group_member_map
      where group_id = p_group_id
	and member_id = p_party_id
    )
  ELSE
    --
    -- Only direct memberships
    --
    EXISTS (
      select 1 from acs_rels rels
      where rels.rel_type = 'membership_rel'
	and rels.object_id_one = p_group_id
	and rels.object_id_two = p_party_id
    )
  END;

$$ language plpgsql;