[Home] [Help]
PACKAGE BODY: APPS.ICX_PORTLET
Source
1 package body ICX_PORTLET as
2 /* $Header: ICXPUTIB.pls 120.0 2005/10/07 12:17:48 gjimenez noship $ */
3
4 procedure responsibilities(p_portlet_id in number,
5 p_responsibilities out NOCOPY icx_portlet.responsibilityTable) is
6
7 l_counter pls_integer;
8 l_security_group_name varchar2(80);
9
10 cursor functions is
11 select fr.RESPONSIBILITY_NAME,
12 fr.APPLICATION_ID,
13 fr.RESPONSIBILITY_ID,
14 furg.SECURITY_GROUP_ID
15 from FND_MENU_ENTRIES fme,
16 FND_RESPONSIBILITY_VL fr,
17 FND_USER_RESP_GROUPS furg
18 where furg.USER_ID = icx_sec.g_user_id
19 and furg.RESPONSIBILITY_APPLICATION_ID = fr.APPLICATION_ID
20 and furg.RESPONSIBILITY_ID = fr.RESPONSIBILITY_ID
21 and fr.MENU_ID = fme.MENU_ID
22 and fme.FUNCTION_ID = p_portlet_id;
23
24 begin
25
26 p_responsibilities(0).ids := '0*0*0**]';
27 p_responsibilities(0).name := '';
28
29 l_counter := 0;
30 for f in functions loop
31 p_responsibilities(l_counter).ids := f.application_id||'*'||
32 f.responsibility_id||'*'||
33 f.security_group_id||'**]';
34 p_responsibilities(l_counter).name := f.responsibility_name;
35
36 if OracleNavigate.security_group(f.responsibility_id,f.application_id)
37 then
38 select security_group_name
39 into l_security_group_name
40 from fnd_security_groups_vl
41 where security_group_id = f.security_group_id;
42
43 p_responsibilities(l_counter).name := p_responsibilities(l_counter).name||', '||l_security_group_name;
44 end if;
45 l_counter := l_counter + 1;
46 end loop;
47
48 end;
49
50
51 function validateSessionPart1
52 return number is
53
54 l_session_id number;
55 l_gen_redirect_url varchar2(2024);
56 l_urlrequested varchar2(2024);
57 l_urlcancel varchar2(2024);
58 l_listener_token varchar2(240);
59 l_procedure_call varchar2(32000);
60 l_call integer;
61 l_dummy integer;
62 l_defined boolean;
63
64 begin
65
66 l_session_id := icx_sec.getsessioncookie;
67
68 if l_session_id = -1
69 then
70
71 l_urlrequested :=
72 lower(owa_util.get_cgi_env('REQUEST_PROTOCOL'))||'://'||
73 owa_util.get_cgi_env('SERVER_NAME')||':'||
74 owa_util.get_cgi_env('SERVER_PORT')||
75 owa_util.get_cgi_env('SCRIPT_NAME')||
76 owa_util.get_cgi_env('PATH_INFO')||'?'||
77 owa_util.get_cgi_env('QUERY_STRING');
78
79 fnd_profile.get_specific(name_z => 'APPS_PORTAL',
80 val_z => l_urlcancel,
81 defined_z => l_defined );
82
83 l_gen_redirect_url := ICX_PORTLET.SSORedirect(l_urlrequested,l_urlcancel);
84 owa_util.redirect_url(l_gen_redirect_url);
85 end if;
86
87 return l_session_id;
88
89 exception
90 when others then
91 htp.p(SQLERRM);
92
93 end;
94
95 function validateSessionpart2(p_session_id in NUMBER,
96 p_application_id in NUMBER,
97 p_responsibility_id in NUMBER,
98 p_security_group_id in NUMBER,
99 p_function_id in NUMBER)
100 return boolean is
101
102 l_valid boolean;
103
104 begin
105
106 l_valid := icx_sec.validateSessionPrivate(c_session_id => p_session_id,
107 c_resp_appl_id => p_application_id,
108 c_responsibility_id => p_responsibility_id,
109 c_security_group_id => p_security_group_id,
110 c_function_id => p_function_id);
111
112 return l_valid;
113
114 exception
115 when others then
116 htp.p(SQLERRM);
117
118 end;
119
120 function validateSession(p_application_id in NUMBER,
121 p_responsibility_id in NUMBER,
122 p_security_group_id in NUMBER,
123 p_function_id in NUMBER)
124 return boolean is
125
126 l_session_id number;
127 l_valid boolean;
128
129 begin
130
131 l_session_id := validateSessionPart1;
132
133 l_valid := icx_sec.validateSessionPrivate(c_session_id => l_session_id,
134 c_resp_appl_id => p_application_id,
135 c_responsibility_id => p_responsibility_id,
136 c_security_group_id => p_security_group_id,
137 c_function_id => p_function_id);
138
139 return l_valid;
140
141 exception
142 when others then
143 htp.p(SQLERRM);
144
145 end;
146
147 function createBookmarkLink( p_text VARCHAR2,
148 p_application_id NUMBER,
149 p_responsibility_id NUMBER,
150 p_security_group_id NUMBER,
151 p_function_id NUMBER,
152 p_function_type VARCHAR2,
153 p_web_html_call VARCHAR2,
154 p_target VARCHAR2,
155 p_session_id NUMBER,
156 p_agent VARCHAR2,
157 p_parameters VARCHAR2)
158 return varchar2 is
159
160 l_url varchar2(4000) := null;
161 /*
162 l_link varchar2(4000) := null;
163 l_session_id number;
164 l_agent varchar2(240);
165 */
166
167 begin
168
169 -- 2758891 nlbarlow
170 l_url := icx_portlet.createExecLink(p_application_id => p_application_id,
171 p_responsibility_id => p_responsibility_id,
172 p_security_group_id => p_security_group_id,
173 p_function_id => p_function_id,
174 p_parameters => p_parameters,
175 p_target => p_target,
176 p_link_name => p_text,
177 p_url_only => 'N');
178
179 return l_url;
180
181 /*
182 if p_session_id is null
183 then
184 l_session_id := nvl(icx_sec.getsessioncookie,-999);
185 else
186 l_session_id := p_session_id;
187 end if;
188
189 if p_agent is null
190 then
191 l_agent := FND_WEB_CONFIG.PLSQL_AGENT;
192 else
193 l_agent := p_agent;
194 end if;
195
196 if substr(p_web_html_call,1,10) = 'javascript'
197 then
198 l_link := replace(p_web_html_call,'"','''');
199 l_link := replace(l_link,'[RESPONSIBILITY_ID]',p_responsibility_id);
200 l_link := replace(l_link,'[PLSQL_AGENT]',icx_plug_utilities.getPLSQLagent);
201 l_link := '<A HREF="'||l_link||'">'||p_text||'</A>';
202 else
203 l_url := l_agent||'OracleSSWA.BookmarkThis?icxtoken='
204 ||icx_call.encrypt4(p_application_id
205 ||'*'||p_responsibility_id
206 ||'*'||p_security_group_id
207 ||'*'||p_function_id||'**]'
208 ,l_session_id);
209 if p_parameters is not null
210 then
211 l_url := l_url||'&'||'p='||icx_call.encrypt4(p_parameters,l_session_id);
212 end if;
213
214 if p_function_type = 'WWK'
215 then
216 l_link := '<A HREF="javascript:void window.open ('''
217 ||l_url
218 ||''',''function_window'',''status=yes,resizable=yes,scrollbars=yes,menubar=no,toolbar=no'')" TARGET='''||p_target||'''>'
219 ||p_text||'</A>';
220 else
221 l_link := '<A HREF="'||l_url
222 ||'" TARGET='''||p_target||'''>'
223 ||p_text||'</A>';
224 end if;
225 end if;
226
227 return l_link;
228 */
229
230 end createBookmarkLink;
231
232
233 function createFwkBookmarkLink(p_text varchar2,
234 p_application_id number,
235 p_responsibility_id number,
236 p_security_group_id number,
237 p_function_id number,
238 p_function_type varchar2,
239 p_web_html_call varchar2,
240 p_target varchar2,
241 p_session_id number,
242 p_agent varchar2,
243 p_parameters varchar2)
244 return varchar2 is
245 l_link varchar2(4000) := null;
246 begin
247
248 -- Get the normal bookmark link
249 l_link := ICX_PORTLET.createBookmarkLink(p_text,
250 p_application_id,
251 p_responsibility_id,
252 p_security_group_id,
253 p_function_id,
254 p_function_type,
255 p_web_html_call,
256 p_target,
257 p_session_id,
258 p_agent,
259 p_parameters);
260
261 -- If it has a call to BookmarkThis, replace it with FwkBookmarkThis
262 l_link := replace(l_link,
263 'OracleSSWA.BookmarkThis',
264 'OracleSSWA.FwkBookmarkThis');
265
266 return l_link;
267
268 end createFwkBookmarkLink;
269
270 procedure updCacheByUser(p_user_name varchar2)
271 is
272
273 l_user_id number;
274
275 begin
276
277 select user_id
278 into l_user_id
279 from fnd_user
280 where user_name = p_user_name;
281
282 update icx_portlet_customizations
283 set caching_key = TO_CHAR(TO_NUMBER(NVL(caching_key, '0')) + 1)
284 where user_id = l_user_id;
285
286 end;
287
288 procedure updCacheByFuncName(p_function_name varchar2)
289 is
290
291 l_function_id number;
292
293 begin
294
295 select function_id
296 into l_function_id
297 from fnd_form_functions
298 where function_name = p_function_name;
299
300 update icx_portlet_customizations
301 set caching_key = TO_CHAR(TO_NUMBER(NVL(caching_key, '0')) + 1)
302 where function_id = l_function_id;
303
304 end;
305
306 procedure updateCacheByUserFunc(p_user_name varchar2, p_function_name varchar2)
307 is
308
309 l_function_id number;
310 l_user_id number;
311
312 begin
313
314 select user_id
315 into l_user_id
316 from fnd_user
317 where user_name = p_user_name;
318
319 select function_id
320 into l_function_id
321 from fnd_form_functions
322 where function_name = p_function_name;
323
324 update icx_portlet_customizations
325 set caching_key = TO_CHAR(TO_NUMBER(NVL(caching_key, '0')) + 1)
326 where function_id = l_function_id
327 and user_id = l_user_id;
328
329 end;
330
331 procedure updCacheKeyValueByUser(p_user_name varchar2, p_caching_key_value varchar2) is
332 l_user_id number;
333 l_caching_key_value varchar2(55);
334 begin
335 select user_id
336 into l_user_id
337 from fnd_user
338 where user_name = p_user_name;
339
340 l_caching_key_value := p_caching_key_value;
341
342 update icx_portlet_customizations
343 set caching_key = l_caching_key_value
344 where user_id = l_user_id;
345
346 end;
347
348 procedure updCacheKeyValueByFuncName(p_function_name varchar2, p_caching_key_value varchar2) is
349
350 l_function_id number;
351 l_caching_key_value varchar2(55);
352
353 begin
354
355 select function_id
356 into l_function_id
357 from fnd_form_functions
358 where function_name = p_function_name;
359
360 l_caching_key_value := p_caching_key_value;
361
362 update icx_portlet_customizations
363 set caching_key = l_caching_key_value
364 where function_id = l_function_id;
365
366 end;
367
368
369 procedure updateCacheKeyValueByUserFunc(p_user_name varchar2, p_function_name varchar2, p_caching_key_value varchar2) is
370
371 l_function_id number;
372 l_user_id number;
373 l_caching_key_value varchar2(55);
374
375 begin
376
377 select user_id
378 into l_user_id
379 from fnd_user
380 where user_name = p_user_name;
381
382 select function_id
383 into l_function_id
384 from fnd_form_functions
385 where function_name = p_function_name;
386
387 l_caching_key_value := p_caching_key_value;
388
389 update icx_portlet_customizations
390 set caching_key = l_caching_key_value
391 where function_id = l_function_id
392 and user_id = l_user_id;
393
394 end;
395
396 procedure updCacheKeyValueByPortletRef(p_reference_path varchar2, p_caching_key_value varchar2) is
397
398 l_reference_path varchar2(100);
399 l_caching_key_value varchar2(55);
400
401 begin
402
403 l_caching_key_value := p_caching_key_value;
404
405 update icx_portlet_customizations
406 set caching_key = l_caching_key_value
407 where reference_path = l_reference_path;
408
409 end;
410
411
412 function createExecLink2(p_application_short_name VARCHAR2,
413 p_responsibility_key VARCHAR2,
414 p_security_group_key VARCHAR2,
415 p_function_name VARCHAR2,
416 p_parameters VARCHAR2,
417 p_target VARCHAR2,
418 p_link_name VARCHAR2,
419 p_url_only VARCHAR2)
420
421 return varchar2 is
422 l_application_id NUMBER;
423 l_responsibility_id number;
424 l_security_group_id number;
425 l_function_id number;
426 l_RFLink varchar2(2000) := null;
427 l_session_id number;
428 l_hosted_profile VARCHAR2(50);
429 b_hosted BOOLEAN :=FALSE;
430 e_bad_parameters exception;
431
432
433 begin
434
435 fnd_profile.get(name => 'ENABLE_SECURITY_GROUPS',
436 val => l_hosted_profile);
437 IF (upper(l_hosted_profile)='HOSTED') THEN
438 b_hosted:=TRUE;
439 END IF;
440
441 IF b_hosted THEN
442
443 BEGIN
444 SELECT SECURITY_GROUP_ID
445 INTO l_security_group_id
446 FROM fnd_security_groups
447 WHERE security_group_key = p_security_group_key;
448 EXCEPTION
449 WHEN no_data_found THEN
450 raise e_bad_parameters;
451
452 END;
453 ELSE
454 l_security_group_id:=0;
455 END IF;
456
457 BEGIN
458 SELECT application_id
459 INTO l_application_id
460 FROM fnd_application
461 WHERE application_short_name = p_application_short_name;
462
463 SELECT responsibility_id
464 INTO l_responsibility_id
465 FROM fnd_responsibility
466 WHERE responsibility_key = p_responsibility_key
467 AND application_id = l_application_id;
468
469 SELECT function_id
470 INTO l_function_id
471 FROM fnd_form_functions
472 WHERE function_name = p_function_name;
473
474 EXCEPTION
475 WHEN OTHERS THEN
476 RAISE e_bad_parameters;
477
478 END;
479
480 l_RFlink := icx_portlet.createExecLink
481 (p_application_id => l_application_id,
482 p_responsibility_id => l_responsibility_id,
483 p_security_group_id => l_security_group_id,
484 p_function_id => l_function_id,
485 p_parameters => p_parameters,
486 p_target => p_target,
487 p_link_name => p_link_name,
488 p_url_only => p_url_only);
489
490 return l_RFlink;
491 EXCEPTION
492 WHEN e_bad_parameters THEN
493 RETURN '-1';
494
495 end createExecLink2;
496
497
498 function createExecLink(p_application_id number,
499 p_responsibility_id number,
500 p_security_group_id number,
501 p_function_id number,
502 p_parameters VARCHAR2,
503 p_target VARCHAR2,
504 p_link_name VARCHAR2,
505 p_url_only VARCHAR2)
506 return varchar2 is
507
508 l_RFLink varchar2(4000);
509
510 begin
511
512 if p_url_only = 'N'
513 then
514
515 if fnd_profile.value('APPLICATIONS_HOME_PAGE') = 'PHP'
516 then
517 icx_sec.ServerLevel;
518 end if;
519
520 l_RFLink := FND_RUN_FUNCTION.GET_RUN_FUNCTION_LINK
521 (P_TEXT =>p_link_name,
522 P_TARGET => p_target,
523 P_FUNCTION_ID => p_function_id,
524 P_RESP_APPL_ID => p_application_id,
525 P_RESP_ID => p_responsibility_id,
526 P_SECURITY_GROUP_ID => p_security_group_id,
527 P_PARAMETERS => p_parameters);
528 else
529
530 if fnd_profile.value('APPLICATIONS_HOME_PAGE') = 'PHP'
531 then
532 icx_sec.ServerLevel;
533 end if;
534
535 l_RFLink := FND_RUN_FUNCTION.GET_RUN_FUNCTION_URL
536 (P_FUNCTION_ID => p_function_id,
537 P_RESP_APPL_ID => p_application_id,
538 P_RESP_ID => p_responsibility_id,
539 P_SECURITY_GROUP_ID => p_security_group_id,
540 P_PARAMETERS => p_parameters);
541 end if;
542
543 return l_RFlink;
544
545 end createExecLink;
546
547 function GET_CACHING_KEY(p_reference_path VARCHAR2) return varchar2
548 is
549 cachingKey varchar2(55);
550 begin
551
552 select caching_key into cachingKey
553 from icx_portlet_customizations
554 where reference_path = p_reference_path;
555
556 return cachingKey;
557
558 EXCEPTION
559 WHEN NO_DATA_FOUND THEN
560 return null;
561 WHEN OTHERS THEN
562 return null;
563
564 end GET_CACHING_KEY;
565
566 function listener_token return varchar2 is
567
568 l_listener_token VARCHAR2(240);
569 l_server VARCHAR2(240);
570
571 begin
572
573 l_listener_token:=FND_WEB_CONFIG.DATABASE_ID;
574 return l_listener_token;
575
576 end;
577
578
579 FUNCTION SSORedirect (p_req_url IN VARCHAR2,
580 p_cancel_url IN VARCHAR2)
581 RETURN VARCHAR2
582 IS
583
584 l_gen_redirect_url varchar2(2024);
585 l_urlrequested varchar2(2024);
586 l_urlcancel varchar2(2024);
587 l_listener_token varchar2(240);
588 l_procedure_call varchar2(32000);
589 l_call integer;
590 l_dummy integer;
591 l_defined boolean;
592
593 BEGIN
594
595 IF p_req_url IS NULL THEN
596 fnd_profile.get_specific(name_z => 'APPS_PORTAL',
597 val_z => l_urlrequested,
598 defined_z => l_defined );
599 ELSE
600 l_urlrequested :=p_req_url;
601 END IF;
602 IF p_cancel_url IS NULL THEN
603 fnd_profile.get_specific(name_z => 'APPS_PORTAL',
604 val_z => l_urlcancel,
605 defined_z => l_defined );
606 ELSE
607 l_urlcancel:=p_cancel_url;
608 END IF;
609
610 l_listener_token := ICX_PORTLET.listener_token;
611 l_call := dbms_sql.open_cursor;
612
613 l_procedure_call := ':l_gen_redirect_url := wwsec_sso_enabler.generate_redirect'||
614 '(p_lsnr_token => :l_listener_token'||
615 ',p_url_requested => :l_urlrequested'||
616 ',p_url_cancel => :l_urlcancel)';
617
618 dbms_sql.parse(l_call,'declare l_gen_redirect_url varchar2(32000); begin '||l_procedure_call||'; end;',dbms_sql.native);
619
620 l_gen_redirect_url := '';
621 for i in 1..100 loop -- set l_gen_redirect_url to 2000 characters
622 l_gen_redirect_url := l_gen_redirect_url||'12345678901234567890';
623 end loop;
624
625 dbms_sql.bind_variable(l_call,'l_gen_redirect_url',l_gen_redirect_url);
626 dbms_sql.bind_variable(l_call,'l_listener_token',l_listener_token);
627 dbms_sql.bind_variable(l_call,'l_urlrequested',l_urlrequested);
628 dbms_sql.bind_variable(l_call,'l_urlcancel',l_urlcancel);
629 l_dummy := dbms_sql.execute(l_call);
630 dbms_sql.variable_value(l_call,'l_gen_redirect_url',l_gen_redirect_url);
631
632 dbms_sql.close_cursor(l_call);
633
634 RETURN l_gen_redirect_url;
635 END;
636
637
638 end ICX_PORTLET;