COMPILE FUNCTION obj_Sec_Groups(Method,Parms) /* Methods for SEC_GROUP table 2/27/2012 JCH - Initial Coding Properties: Methods: LSLUsers() ;* Returns all users */ DECLARE FUNCTION Get_Status, Msg, Utility, obj_Tables, Dialog_Box DECLARE SUBROUTINE Set_Status, Msg, obj_Tables, Send_Dyn, Btree.Extract, ErrMsg DECLARE SUBROUTINE obj_Notes, Send_Info $INSERT LSL_USERS_EQUATES $INSERT SEC_GROUPS_EQUATES $INSERT MSG_EQUATES ErrTitle = 'Error in Stored Procedure "obj_Sec_Group"' ErrorMsg = '' IF NOT(ASSIGNED(Method)) THEN ErrorMsg = 'Unassigned parameter "Method" passed to subroutine' IF NOT(ASSIGNED(Parms)) THEN Parms = '' IF ErrorMsg NE '' THEN Set_Status(-1,ErrTitle:@SVM:ErrorMsg) RETURN '' END Result = '' BEGIN CASE CASE Method = 'AddUser' ; GOSUB AddUser CASE Method = 'RemoveUser' ; GOSUB RemoveUser CASE 1 ErrorMsg = 'Unknown Method ':QUOTE(Method):' passed to routine.' END CASE IF ErrorMsg NE '' THEN Set_Status(-1,ErrTitle:@SVM:ErrorMsg) RETURN '' END RETURN Result * * * * * * * AddUser: * * * * * * * User = Parms[1,@RM] SecGroups = Parms[COL2()+1,@RM] IF User = '' THEN ErrorMsg = 'Null parameter "User" passed to routine. (':Method:')' IF SecGroups = '' THEN ErrorMsg = 'Null parameter "SecGroups" passed to routine. (':Method:')' IF ErrorMsg NE '' THEN RETURN GroupCnt = COUNT(SecGroups,@VM) + (SecGroups NE '') FOR I = 1 TO GroupCnt SecGroup = SecGroups<1,I> otParms = 'SEC_GROUPS':@RM:SecGroup GroupRec = obj_Tables('ReadRec',otParms) IF Get_Status(errCode) THEN RETURN END LOCATE User IN GroupRec BY 'AL' USING @VM SETTING Pos THEN obj_Tables('UnlockRec',otParms) END ELSE GroupRec = INSERT(GroupRec,SEC_GROUPS_USER$,Pos,0,User) otParms = FieldStore(OtParms,@RM,4,0,GroupRec) ;* Put record in 4th field of OtParms obj_Tables('WriteRec',otParms) END NEXT I RETURN * * * * * * * RemoveUser: * * * * * * * User = Parms[1,@RM] SecGroups = Parms[COL2()+1,@RM] IF User = '' THEN ErrorMsg = 'Null parameter "User" passed to routine. (':Method:')' IF SecGroups = '' THEN ErrorMsg = 'Null parameter "SecGroups" passed to routine. (':Method:')' IF ErrorMsg NE '' THEN RETURN GroupCnt = COUNT(SecGroups,@VM) + (SecGroups NE '') FOR I = 1 TO GroupCnt SecGroup = SecGroups<1,I> otParms = 'SEC_GROUPS':@RM:SecGroup GroupRec = obj_Tables('ReadRec',otParms) IF Get_Status(errCode) THEN RETURN END LOCATE User IN GroupRec BY 'AL' USING @VM SETTING Pos THEN GroupRec = DELETE(GroupRec,SEC_GROUPS_USER$,Pos,0) otParms = FieldStore(OtParms,@RM,4,0,GroupRec) ;* Put record in 4th field of OtParms obj_Tables('WriteRec',otParms) END ELSE obj_Tables('UnlockRec',otParms) END NEXT I RETURN