| |
|
1 |
create or replace function static_page__get_root_folder ( |
| |
|
2 |
integer |
| |
|
3 |
) returns integer as ' |
| |
|
4 |
declare |
| |
|
5 |
p_package_id alias for $1; |
| |
|
6 |
v_folder_exists_p integer; |
| |
|
7 |
v_folder_id sp_folders.folder_id%TYPE; |
| |
|
8 |
v_rows integer; |
| |
|
9 |
begin |
| |
|
10 |
|
| |
|
11 |
|
| |
|
12 |
select count(*) into v_folder_exists_p where exists ( |
| |
|
13 |
select 1 from sp_folders |
| |
|
14 |
where package_id = p_package_id |
| |
|
15 |
and parent_id is null |
| |
|
16 |
); |
| |
|
17 |
|
| |
|
18 |
if v_folder_exists_p = 0 then |
| |
|
19 |
|
| |
|
20 |
v_folder_id := static_page__new_folder ( |
| |
|
21 |
null, |
| |
|
22 |
''sp_root_package_id_'' || p_package_id, |
| |
|
23 |
''sp_root_package_id_'' || p_package_id, |
| |
|
24 |
null, |
| |
|
25 |
null, |
| |
|
26 |
null, |
| |
|
27 |
null, |
| |
|
28 |
null, |
| |
|
29 |
null, |
| |
|
30 |
p_package_id |
| |
|
31 |
); |
| |
|
32 |
|
| |
|
33 |
update sp_folders |
| |
|
34 |
set package_id = p_package_id |
| |
|
35 |
where folder_id = v_folder_id; |
| |
|
36 |
|
| |
|
37 |
PERFORM acs_permission__grant_permission ( |
| |
|
38 |
v_folder_id, |
| |
|
39 |
acs__magic_object_id(''the_public''), |
| |
|
40 |
''general_comments_create'' |
| |
|
41 |
); |
| |
|
42 |
|
| |
|
43 |
|
| |
|
44 |
PERFORM acs_permission__grant_permission ( |
| |
|
45 |
v_folder_id, |
| |
|
46 |
acs__magic_object_id(''the_public''), |
| |
|
47 |
''read'' |
| |
|
48 |
); |
| |
|
49 |
else |
| |
|
50 |
select folder_id into v_folder_id from sp_folders |
| |
|
51 |
where package_id = p_package_id |
| |
|
52 |
and parent_id is null; |
| |
|
53 |
end if; |
| |
|
54 |
|
| |
|
55 |
return v_folder_id; |
| |
|
56 |
end;' language 'plpgsql'; |
| |
|
57 |
|
| |
|
58 |
|
| |
|
59 |
|
| |
|
60 |
drop function static_page__new_folder (integer, character varying, character varying, text, integer, timestamp with time zone, integer, character varying, integer); |
| |
|
61 |
|
| |
|
62 |
create or replace function static_page__new_folder ( |
| |
|
63 |
integer, |
| |
|
64 |
|
| |
|
65 |
varchar, |
| |
|
66 |
varchar, |
| |
|
67 |
text, |
| |
|
68 |
integer, |
| |
|
69 |
timestamptz, |
| |
|
70 |
|
| |
|
71 |
integer, |
| |
|
72 |
|
| |
|
73 |
varchar, |
| |
|
74 |
|
| |
|
75 |
integer, |
| |
|
76 |
|
| |
|
77 |
integer |
| |
|
78 |
) returns integer as ' |
| |
|
79 |
declare |
| |
|
80 |
p_folder_id alias for $1; |
| |
|
81 |
p_name alias for $2; |
| |
|
82 |
p_label alias for $3; |
| |
|
83 |
p_description alias for $4; |
| |
|
84 |
p_parent_id alias for $5; |
| |
|
85 |
p_creation_date alias for $6; |
| |
|
86 |
p_creation_user alias for $7; |
| |
|
87 |
p_creation_ip alias for $8; |
| |
|
88 |
p_context_id alias for $9; |
| |
|
89 |
p_package_id alias for $10; |
| |
|
90 |
|
| |
|
91 |
v_folder_id sp_folders.folder_id%TYPE; |
| |
|
92 |
v_parent_id cr_items.parent_id%TYPE; |
| |
|
93 |
v_package_id apm_packages.package_id%TYPE; |
| |
|
94 |
v_creation_date acs_objects.creation_date%TYPE; |
| |
|
95 |
v_permission_row RECORD; |
| |
|
96 |
begin |
| |
|
97 |
if p_creation_date is null then |
| |
|
98 |
v_creation_date := now(); |
| |
|
99 |
else |
| |
|
100 |
v_creation_date := p_creation_date; |
| |
|
101 |
end if; |
| |
|
102 |
|
| |
|
103 |
if p_parent_id is null then |
| |
|
104 |
v_parent_id := 0; |
| |
|
105 |
else |
| |
|
106 |
v_parent_id := p_parent_id; |
| |
|
107 |
end if; |
| |
|
108 |
|
| |
|
109 |
|
| |
|
110 |
if p_parent_id is not null then |
| |
|
111 |
if p_package_id is null then |
| |
|
112 |
|
| |
|
113 |
select package_id into v_package_id from sp_folders |
| |
|
114 |
where folder_id = p_parent_id; |
| |
|
115 |
else |
| |
|
116 |
v_package_id := p_package_id; |
| |
|
117 |
end if; |
| |
|
118 |
else |
| |
|
119 |
v_package_id := p_package_id; |
| |
|
120 |
end if; |
| |
|
121 |
|
| |
|
122 |
v_folder_id := content_folder__new ( |
| |
|
123 |
p_name, |
| |
|
124 |
p_label, |
| |
|
125 |
p_description, |
| |
|
126 |
v_parent_id, |
| |
|
127 |
p_context_id, |
| |
|
128 |
p_folder_id, |
| |
|
129 |
v_creation_date, |
| |
|
130 |
p_creation_user, |
| |
|
131 |
p_creation_ip, |
| |
|
132 |
''f'', |
| |
|
133 |
v_package_id |
| |
|
134 |
); |
| |
|
135 |
|
| |
|
136 |
|
| |
|
137 |
if p_parent_id is not null then |
| |
|
138 |
insert into sp_folders (folder_id, parent_id, package_id) |
| |
|
139 |
values (v_folder_id, p_parent_id, v_package_id); |
| |
|
140 |
|
| |
|
141 |
|
| |
|
142 |
|
| |
|
143 |
|
| |
|
144 |
|
| |
|
145 |
for v_permission_row in |
| |
|
146 |
select * from acs_permissions |
| |
|
147 |
where object_id = p_parent_id |
| |
|
148 |
loop |
| |
|
149 |
perform acs_permission__grant_permission( |
| |
|
150 |
v_folder_id, |
| |
|
151 |
v_permission_row.grantee_id, |
| |
|
152 |
v_permission_row.privilege |
| |
|
153 |
); |
| |
|
154 |
end loop; |
| |
|
155 |
else |
| |
|
156 |
insert into sp_folders (folder_id, parent_id, package_id) |
| |
|
157 |
values (v_folder_id, p_parent_id, p_package_id); |
| |
|
158 |
|
| |
|
159 |
|
| |
|
160 |
|
| |
|
161 |
PERFORM content_folder__register_content_type ( |
| |
|
162 |
v_folder_id, |
| |
|
163 |
''static_page'', |
| |
|
164 |
''f'' |
| |
|
165 |
); |
| |
|
166 |
PERFORM content_folder__register_content_type ( |
| |
|
167 |
v_folder_id, |
| |
|
168 |
''content_revision'', |
| |
|
169 |
''f'' |
| |
|
170 |
); |
| |
|
171 |
PERFORM content_folder__register_content_type ( |
| |
|
172 |
v_folder_id, |
| |
|
173 |
''content_folder'', |
| |
|
174 |
''f'' |
| |
|
175 |
); |
| |
|
176 |
end if; |
| |
|
177 |
|
| |
|
178 |
return v_folder_id; |
| |
|
179 |
end;' language 'plpgsql'; |
| |
|
180 |
|