RHN_CONFIG_CHANNEL
DDL scriptPackage source
Legend: string keyword reserved word operator
1: PACKAGE rhn_config_channel
2: IS
3: FUNCTION get_user_chan_access(config_channel_id_in IN NUMBER, user_id_in IN NUMBER) RETURN NUMBER;
4: FUNCTION get_user_revision_access(config_revision_id_in IN NUMBER, user_id_in IN NUMBER) RETURN NUMBER;
5: FUNCTION get_user_file_access(config_file_id_in IN NUMBER, user_id_in IN NUMBER) RETURN NUMBER;
6: FUNCTION action_diff_revision_status(action_config_revision_id_in IN NUMBER) RETURN VARCHAR2;
7: END rhn_config_channel;
Package body source
Legend: string keyword reserved word operator
1: PACKAGE BODY rhn_config_channel
2: IS
3: FUNCTION action_diff_revision_status(action_config_revision_id_in IN NUMBER)
4: RETURN VARCHAR2
5: IS
6: failure_reason VARCHAR2(4000);
7: result_is_null NUMBER;
8: result_exists NUMBER;
9: BEGIN
10: select extant, is_null, reason
11: into result_exists, result_is_null, failure_reason
12: from (
13: SELECT ACRR.action_config_revision_id extant,
14: 1 is_null,
15: CFF.name reason
16: FROM rhnConfigFileFailure CFF,
17: rhnActionConfigRevisionResult ACRR,
18: rhnActionConfigRevision ACR
19: WHERE ACR.id = action_config_revision_id_in
20: AND ACR.id = ACRR.action_config_revision_id (+)
21: and acrr.result is null
22: AND ACR.failure_id = CFF.id (+)
23: union all
24: SELECT ACRR.action_config_revision_id extant,
25: 0 is_null,
26: CFF.name reason
27: FROM rhnConfigFileFailure CFF,
28: rhnActionConfigRevisionResult ACRR,
29: rhnActionConfigRevision ACR
30: WHERE ACR.id = action_config_revision_id_in
31: AND ACR.id = ACRR.action_config_revision_id (+)
32: and acrr.result is not null
33: AND ACR.failure_id = CFF.id (+)
34: );
35: IF failure_reason IS NOT NULL
36: THEN
37: RETURN failure_reason;
38: END IF;
39: IF result_exists IS NOT NULL
40: THEN
41: IF result_is_null = 1
42: THEN
43: RETURN 'No differences';
44: END IF;
45: RETURN 'Differences exist';
46: END IF;
47: RETURN NULL;
48: END action_diff_revision_status;
49: FUNCTION get_user_chan_access(config_channel_id_in IN NUMBER, user_id_in IN NUMBER)
50: RETURN NUMBER
51: IS
52: server_id NUMBER;
53: org_matches NUMBER;
54: global_channel VARCHAR2(30);
55: any_visible_servers_subscribed NUMBER;
56: BEGIN
57: org_matches := 0;
58: BEGIN
59: SELECT 1 INTO org_matches
60: FROM rhnConfigChannel CC,
61: web_contact WC
62: WHERE WC.id = user_id_in
63: AND CC.id = config_channel_id_in
64: AND WC.org_id = CC.org_id;
65: EXCEPTION
66: WHEN NO_DATA_FOUND
67: THEN RETURN 0;
68: END;
69: global_channel := 'unknown';
70: SELECT CCT.label INTO global_channel
71: FROM rhnConfigChannel CC,
72: rhnConfigChannelType CCT
73: WHERE CC.id = config_channel_id_in
74: AND CCT.id = CC.confchan_type_id;
75: IF (rhn_user.check_role_implied(user_id_in, 'config_admin') = 1) AND (global_channel = 'normal')
76: THEN
77: RETURN 1;
78: END IF;
79: any_visible_servers_subscribed := 0;
80: BEGIN
81: SELECT 1 INTO any_visible_servers_subscribed
82: FROM DUAL
83: WHERE EXISTS (
84: SELECT SCC.server_id
85: FROM rhnServerConfigChannel SCC,
86: rhnUserServerPermsDupes USPD
87: WHERE USPD.user_id = user_id_in
88: AND USPD.server_id = SCC.server_id
89: AND SCC.config_channel_id = config_channel_id_in
90: );
91: EXCEPTION
92: WHEN NO_DATA_FOUND
93: THEN RETURN 0;
94: END;
95: RETURN any_visible_servers_subscribed;
96: END get_user_chan_access;
97: FUNCTION get_user_revision_access(config_revision_id_in IN NUMBER, user_id_in IN NUMBER)
98: RETURN NUMBER
99: IS
100: config_channel_id NUMBER;
101: BEGIN
102: BEGIN
103: SELECT CF.config_channel_id INTO config_channel_id
104: FROM rhnConfigFile CF,
105: rhnConfigRevision CR
106: WHERE CF.id = CR.config_file_id
107: AND CR.id = config_revision_id_in;
108: EXCEPTION
109: WHEN NO_DATA_FOUND
110: THEN RETURN 0;
111: END;
112: RETURN rhn_config_channel.get_user_chan_access(config_channel_id, user_id_in);
113: END get_user_revision_access;
114: FUNCTION get_user_file_access(config_file_id_in IN NUMBER, user_id_in IN NUMBER)
115: RETURN NUMBER
116: IS
117: config_channel_id NUMBER;
118: BEGIN
119: BEGIN
120: SELECT CF.config_channel_id INTO config_channel_id
121: FROM rhnConfigFile CF
122: WHERE CF.id = config_file_id_in;
123: EXCEPTION
124: WHEN NO_DATA_FOUND
125: THEN RETURN 0;
126: END;
127: RETURN rhn_config_channel.get_user_chan_access(config_channel_id, user_id_in);
128: END get_user_file_access;
129: END rhn_config_channel;