XQCHK1 ;BP-OAK/BDT - Check security on option; 5/12/03 12:32pm [ 07/29/2004 9:01 AM ]
;;8.0;KERNEL;**303**; Jul 10,1995
Q
CHCK1 ;check if there is another path to access a specific option
N XQK,XQK1,XQK2,XQK3,XQK4,I,J,KFG1,KFG2 S KFG=0,XQK=0
Q:'$D(^XUTL("XQO",XQDIC,"^",%XQOP,0))
F S XQK=$O(^XUTL("XQO",XQDIC,"^",%XQOP,0,XQK)) Q:XQK="" D
.S XQK1=$P($G(^XUTL("XQO",XQDIC,"^",%XQOP,0,XQK)),"^",2)
.S XQK3=$P($G(^XUTL("XQO",XQDIC,"^",%XQOP,0,XQK)),"^",5)
.I XQK1="",XQK3="" S KFG=1 Q
.S KFG1=1,KFG2=1
.F I=1:1 S XQK2=$P(XQK1,",",I) Q:XQK2="" D
..I $D(^XUSEC(XQK2,%XQUSR)) S KFG1=KFG1+1
.F J=1:1 S XQK4=$P(XQK3,",",J) Q:XQK4="" D
..I '$D(^XUSEC(XQK4,%XQUSR)) S KFG2=KFG2+1
.I KFG1=I,KFG2=J S KFG=1
Q
XQCHK1 ;BP-OAK/BDT - Check security on option; 5/12/03 12:32pm [ 07/29/2004 9:01 AM ]
+1 ;;8.0;KERNEL;**303**; Jul 10,1995
+2 QUIT
CHCK1 ;check if there is another path to access a specific option
+1 NEW XQK,XQK1,XQK2,XQK3,XQK4,I,J,KFG1,KFG2
SET KFG=0
SET XQK=0
+2 IF '$DATA(^XUTL("XQO",XQDIC,"^",%XQOP,0))
QUIT
+3 FOR
SET XQK=$ORDER(^XUTL("XQO",XQDIC,"^",%XQOP,0,XQK))
IF XQK=""
QUIT
Begin DoDot:1
+4 SET XQK1=$PIECE($GET(^XUTL("XQO",XQDIC,"^",%XQOP,0,XQK)),"^",2)
+5 SET XQK3=$PIECE($GET(^XUTL("XQO",XQDIC,"^",%XQOP,0,XQK)),"^",5)
+6 IF XQK1=""
IF XQK3=""
SET KFG=1
QUIT
+7 SET KFG1=1
SET KFG2=1
+8 FOR I=1:1
SET XQK2=$PIECE(XQK1,",",I)
IF XQK2=""
QUIT
Begin DoDot:2
+9 IF $DATA(^XUSEC(XQK2,%XQUSR))
SET KFG1=KFG1+1
End DoDot:2
+10 FOR J=1:1
SET XQK4=$PIECE(XQK3,",",J)
IF XQK4=""
QUIT
Begin DoDot:2
+11 IF '$DATA(^XUSEC(XQK4,%XQUSR))
SET KFG2=KFG2+1
End DoDot:2
+12 IF KFG1=I
IF KFG2=J
SET KFG=1
End DoDot:1
+13 QUIT