DBA Data[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;