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