Main Tables Views Materialized Views Indexes Constraints Triggers Procedures Functions Packages Sequences Java Sources Jobs Sanity Check Index DDL scrips
Package source Package body source

RHN_CONFIG_CHANNEL

DDL script

Package source

Legend: comment 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: comment 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:     	-- result_is_null obviously wants NVL2, but stupid 8.1.7.3.0 doesn't
    11: 	-- have that.  Or case.  So we're using union, instead.
    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, -- NVL2(ACRR.result, 0, 1),
    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, -- NVL2(ACRR.result, 0, 1),
    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;