1: procedure administration_subgroup_add (pretty_name IN
2: varchar, v_short_name IN varchar, v_module IN varchar, v_submodule IN
3: varchar, v_multi_role_p IN varchar, v_url IN varchar,
4: v_parent_module IN varchar)
5: IS
6: v_group_id integer;
7: n_administration_groups integer;
8: v_system_user_id integer;
9: v_parent_id integer;
10: BEGIN
11: if v_submodule is null then
12: select count(group_id) into n_administration_groups
13: from administration_info
14: where module = v_module
15: and submodule is null;
16: else
17: select count(group_id) into n_administration_groups
18: from administration_info
19: where module = v_module
20: and submodule = v_submodule;
21: end if;
22: if n_administration_groups = 0 then
23: -- call procedure defined in community-core.sql to get system user
24: v_system_user_id := system_user_id;
25: select user_group_sequence.nextval into v_group_id from dual;
26: insert into user_groups
27: (group_id, group_type, short_name, group_name, creation_user, creation_ip_address, approved_p, existence_public_p, new_member_policy, multi_role_p)
28: values
29: (v_group_id, 'administration', v_short_name, pretty_name, v_system_user_id, '0.0.0.0', 't', 'f', 'closed', v_multi_role_p);
30: insert into administration_info (group_id, module, submodule, url) values (v_group_id, v_module, v_submodule, v_url);
31: end if;
32:
33: Begin
34: select ai.group_id into v_parent_id
35: from administration_info ai, user_groups ug
36: where ai.module = v_parent_module
37: and ai.group_id != v_group_id
38: and ug.group_id = ai.group_id
39: and ug.parent_group_id is null;
40: Exception when others then null;
41: End;
42:
43: update user_groups
44: set parent_group_id = v_parent_id
45: where group_id = v_group_id;
46: end;
|