cAFVBA02 ; Applicaties en beveiliging; cAFVBA02 ; T1 ;Geen toegang tot deze applicatie; T2 ;Ongeldige firma; ; T1F ;Pas d'accès à cette application; T2F ;Firme invalide; ; T1E ;No access for this application; T2E ;Invalid company; ; YZ Q ; APPL(KLASSE,TYPE,LANG,UI1APPL) ; KLASSE : gescheiden door "~" ; 1. naam van de klasse ; 2. Volgnr applicatie (leeg = 0) ; TYPE : gescheiden door "~" ; 1. 0 = applicatie, menu, exit-button ; 1 = rechtermuisknop ; 2. Functionaliteit ; "" = Zoeken ; 1 = Raadplegen ; 2 = Wijzigen ; 3 = Openen ; 4 = Verwijderen ; 5 = Beheer ; UI1APPL : UI1 applicatie (niet verplicht, wordt doorgegeven van SEC) ; ; OUT = ; 1. Map van DLL of EXE (ingeval beheer) ; 2. Naam van DLL of EXE (ingeval beheer) ; 3. Form N (KLASSE,TYPE,LANG,UI1APPL,Q) S $ZT="^dmERROR" M oQ=Q S D="\",U=";",Q="DAM" I $D(LANG) S QT=LANG D QT^cAFVBO01 F i="KLASSE","TYPE","UI1APPL" s @i=$G(@i) APPLA S OUT="" I '$L(KLASSE) G APPLZ S VNR=$P(KLASSE,"~",2) S KLASSE=$P(KLASSE,"~") I '$L(VNR) S VNR=0 S FUNC=$P(TYPE,"~",2) ; functionaliteit I FUNC=5 S FUNC=6 ; indien beheer : FUNC op 6 zetten I 'FUNC S FUNC=5 ; indien zoeken : FUNC op 5 zetten ; intern nr applicatie APPLB I '$L(UI1APPL) S UI1APPL=$$GETAPPL(KLASSE,VNR) I '$L(UI1APPL) G APPLZ APPLC S B(1)=$$SIGN^cAFA1("DP.APPL",UI1APPL,0) S OUT="" I '$L(B(1)) G APPLZ I $P(TYPE,"~")=1,'$P(B(1),D,10) S OUT="" G APPLZ ; rechtermuisknop niet toegelaten I FUNC=6 D G APPLY ; beheer : map + naam EXE . S OUT=$P(B(1),D,8)_D_$P(B(1),D,9) . I '$P(^(5),D,6) Q . S:$P(TYPE,"~")=1&('$P(^(5),D,5)) OUT="" S B(2)=$G(^(FUNC)) S OUT=$P(B(1),D,5)_D_$P(B(1),D,6)_D_$P(B(1),D,7) ; map + naam DLL + default form I '$P(B(2),D,6) G APPLZ ; steeds default I $P(TYPE,"~")=1,'$P(B(2),D,5) S OUT="" G APPLZ ; indien rechtermuisknop niet toegelaten ; alles vervangen door map en naam DLL + form van functionaliteit F i=2:1:4 D . S $P(OUT,D,i-1)=$P(B(2),D,i) . I '$L($TR($P(B(2),D,i),0)) S $P(OUT,D,i-1)="" APPLY F i=1:1:(FUNC=6*-1+3) I '$L($P(OUT,D,i)) S OUT="" Q APPLZ M Q=oQ Q OUT ; CHKDMQ(KLUI1,FUNC,Q,RM) ; Check op afwijking ^DMQ ; Input: KLUI1: gescheiden door "~" ; 1. Id\Naam van de klasse\DMS ; 2. "" of 0: Id van de klasse doorgegeven ; 1: Naam van de klasse doorgegeven ; 2: DMS doorgegeven ; FUNC: Functionaliteit ; 1 = Raadplegen ; 2 = Wijzigen ; 3 = Openen ; 4 = Verwijderen ; 5 = Beheer ; 6 = Export ; Q: Q-waarde ; RM: rechtermuisknop? N DMS,R,RZR,Q49 S $ZT="^dmERROR" ; ; Onthouden last reference CHKDMQ1 D S1^cAFA1 ; ; Controle parameters CHKDMQ2 S R=1,D="\" I FUNC=1 G CHKDMQY ; Raadplegen I FUNC=2 G CHKDMQY ; Wijzigen I '$G(RM),FUNC=5 G CHKDMQY ; Beheer (géén rechtermuisknop) I FUNC=6 G CHKDMQY ; Excel ; ; DMS bepalen CHKDMQ3 I $P(KLUI1,"~",2)="2" S DMS=$P(KLUI1,"~") G CHKDMQ4 I $P(KLUI1,"~",2)="1" S KLUI1=$P($$GETAPPL($P(KLUI1,"~"),"")," ") ; Id vd klasse ophalen S DMS=$$SIG^cAFA1("DP",$P(KLUI1,"~"),201) ; ; Check op DMQ CHKDMQ4 I '$L($G(DMS)) G CHKDMQY ; Geen DMS gevonden ;S Q49=$$DMQ49^cAFA10(Q,DMS) ; Q49 opnieuw bepalen ;I '$D(^DMQ(Q49,DMS,0)) G CHKDMQY ; Geen afwijking gevonden ;I '$D(^DMQ(0,DMS,0)) G CHKDMQY ; Geen standaard-DMQ gevonden ;I $P(^DMQ(Q49,DMS,0),D)=0,$P(^DMQ(0,DMS,0),D)'=0 S R=0 ; Afwijking staat op "0": beperkte functionaliteit S DQ49=$$DMQ49^cAFA10(0,DMS) ; Default DMQ S SQ49=$$DMQ49^cAFA10(Q,DMS) ; Specifieke DMQ I DQ49=SQ49 G CHKDMQY ; Zijn gelijk I SQ49=0 S R=0 ; ; Terugzetten last reference CHKDMQY D S2^cAFA1 CHKDMQZ Q R ; CHKNOA(COMPID,INIT,TAAL) S $ZT="^dmERROR" S Q=COMPID,QU=INIT,QT=TAAL N @$$INITVAR^cAFVBA01("") CHKNOAZ Q $$NOA^cA5003(QU,QT,1) ; CHKDIR(DIR) ; Indien doorgegeven directory niet bestaat: aanmaken N @$$INITVAR^cAFVBA01("DIR") S $ZT="^dmERROR" ; ; Check parameter CHKDIR1 S OK=1 I '$L($G(DIR)) G CHKDIRZ S DIR=$TR(DIR,"\","/") I $E(DIR,$L(DIR))'="/" S DIR=DIR_"/" ; ; Bestaat directory? CHKDIR2 I '$$TST^cA710(DIR) G CHKDIRZ ; ; Directory aanmaken CHKDIR3 I $$CRED^cA710($TR($E(DIR,1,$L(DIR)-1),"/","\")) S OK=0 ; CHKDIRZ Q OK ; CHKSUPWD(PWD) ; Check superuser passwoord (dotNET-appl) N R S $ZT="^dmERROR" ; ; Hardcoded -> moet nog aangepast worden! I $G(PWD)'="MF5761EP" S R="0\Verkeerd paswoord" G CHKSUPWDZ S R=1 ; CHKSUPWDZ Q R ; GETAPPL(KLASSE,VNR) N (KLASSE,VNR) S $ZT="TRAP^cAN000" S D="\",U=";",Q="DAM" D QT^cAFVBO01 S R="" I '$L($G(VNR)) S VNR=0 ; intern nr klasse S UI1CL=$$KLASSE($G(KLASSE)) I '$L(UI1CL) G GETAPPLZ ; intern nr applicatie S R=$$UI1OP^cAFA1("DP.APPL","M1","1\1\\",UI1CL,VNR) GETAPPLZ Q R ; SEC(KLASSE,USER,TYPE,COMPID,LANG) ; KLASSE : gescheiden door "~" ; 1. naam van de klasse ; 2. Volgnr applicatie (leeg = 0) ; ; Indien type = 9 ; 1. key om op te zoeken in ^VBBA("MENU",MENU ; 2. Menu-punt van ^VBBA("MENU" waarin moet gezocht worden ; ; USER : gescheiden door "~" ; 1. UI1 van USR ; 2. Prioriteiten gescheiden door " " ; (leeg = prio ophalen) ; (indien : geen prio meer ophalen) ; TYPE : gescheiden door "~" ; 1. 0 = applicatie, menu, exit-button ; 1 = rechtermuisknop ; 9 = specifiek (voor aftesten van spec. waarde ; : in KLASSE kan gelijk wat zitten en er wordt niet applicatie van klasse gezocht ; COMPID : Q-waarde ; LANG : taal van de applicatie (QT) ; ; OUT = gescheiden door "\" ; 1. String samengesteld met 0 en 1 in volgorde van RWOVB ; 0 = niet toegelaten ; 1 = toegelaten ; bv 10000 : Enkel raadplegen toegelaten ; 101 : Enkele raadplegen en openen toegelaten ; ; Indien string = 0 : niets toegelaten. ; 2. Eventuele foutboodschap ; 3. Omschrijving applicatie ; ; ------------------------------------------------------------- ; OPGELET: indien TYPE=9 dan is de output 0\Foutboodschap of 1. ; ------------------------------------------------------------- N (KLASSE,USER,TYPE,COMPID,LANG) S $ZT="^dmERROR" S Q=$G(COMPID) S D="\",U=";" S:'$L(Q) Q="DAM" I $D(LANG) S QT=LANG D QT^cAFVBO01 F i="KLASSE","USER","TYPE","COMPID" s @i=$G(@i) SECA S OUT=0 I '$L(KLASSE) G SECZ I $P(TYPE,"~")=9 G SECD S VNR=$P(KLASSE,"~",2) S KLASSE=$P(KLASSE,"~") I '$L(VNR) S VNR=0 ; intern nr applicatie SECB S UI1APPL=$$GETAPPL(KLASSE,VNR) I '$L(UI1APPL) G SECZ I $P(TYPE,"~")=1,'$$SIG^cAFA1("DP.APPL",UI1APPL,110) S OUT=0 G SECY ; rechtermuisknop niet toegelaten F i=1:1:5 S $E(OUT,i)=($L($$APPL(KLASSE_"~"_VNR,TYPE_"~"_i,$G(LANG),UI1APPL))>0) I $TR(OUT,0)="" S OUT=0 G SECY I '$L($E(OUT,6)) S $E(OUT,6)=1 ; export to excell ; check op DMQ SECC F i=1:1:6 I $E(OUT,i) S $E(OUT,i)=$$CHKDMQ($P(UI1APPL," "),i,COMPID,$P(TYPE,"~")=1) ; bepalen prioriteiten SECD S PRIO=$P(USER,"~",2) I '$L(PRIO) D PROPRI^cAN226($P(USER,"~"),1) I '$L($TR(PRIO," ")) S:($P(TYPE,"~")=9) OUT=1 G SECY ; geen prioriteiten = toegang tot alles SECE I $P(TYPE,"~")'=9 S MENU=$$SIG^cAFA1("DP.APPL",UI1APPL,134) ; ophalen QM van menu I $P(TYPE,"~")=9 S MENU=$P(KLASSE,"~",2),KLASSE=$P(KLASSE,"~") S OUT=$$SECMENU(KLASSE_$S($P(TYPE,"~")'=9:"."_VNR,1:""),PRIO,MENU,$S($P(TYPE,"~")'=9:OUT,1:9)) SECY I $TR(OUT,0)="" S OUT=0 ;I $P(TYPE,"~")'=9,OUT'=0 S OUT=OUT_D_$$SIG^cAFA1("DP.APPL.TAAL",UI1APPL_" "_$E(QT_"N"),103) I $L($G(UI1APPL)) S $P(OUT,D,3)=$$SIG^cAFA1("DP.APPL.TAAL",UI1APPL_" "_$E(QT_"N"),103) I $F(OUT,0) S $P(OUT,D,2)=$P($T(@("T1"_QT)),U,2) SECZ Q $S(OUT=0:OUT_D_$P($T(@("T1"_QT)),U,2),1:OUT) ; SECMENU(APPL,PRIO,MENU,MODES) ; VBBA-menu aflopen voor prio te checken ; APPL = applicatie ; PRIO = prioriteiten van de gebruiker ; MENU = niet verplicht : 2de index van ^VBBA("MENU") ; MODES = Modes ; String bestaande uit 1 of 0 ; In volgorde van RWOVBE ; Als een mode 1 is wordt via de menu gekeken of ; de gebruiker de juiste prioriteit heeft. ; ; 9 = specifieke APPL wordt doorgegeven zonder link met klasse ; N D,I1,I2,i,OK,R,PRIOM,PROG S $ZT="TRAP^cAN000" S D="\",TEL=0 F i="APPL","MENU","MODES","PRIO" S @i=$g(@i) S OK=0,R="111111" I $L($G(MODES)) S R=MODES I MODES=9 S R=1 I '$L(PRIO) G SECMENUZ S I1=MENU I $L(I1) G SECMENUB SECMENUA S I1=$O(^VBBA("MENU",I1)) G SECMENUZ:I1="" SECMENUB S I2=0 SECMENUC S I2=$O(^VBBA("MENU",I1,I2)) G SECMENUA:'$L(MENU)&'$L(I2),SECMENUZ:'$L(I2) S PRIOM=$P(^(I2),D,10),PROG=$P(^(I2),D,4) I MODES=9,PROG'=APPL G SECMENUC I MODES'=9,$E(PROG,1,$L(APPL))'=APPL G SECMENUC SECMENUD I MODES=9 G SECMENUZ:'$L(PRIOM),SECMENUZ:(" "_PRIO_" "[(" "_PRIOM_" ")) S R=0 G SECMENUZ I MODES'=9 f i=1:1:6 I $E(R,i),PROG=(APPL_"."_$E("RWOVBE",i)) S TEL=TEL+1 S:$L(PRIOM)&(" "_PRIO_" "'[(" "_PRIOM_" ")) $E(R,i)=0 Q G SECMENUC:TEL<6 SECMENUZ Q R ; KLASSE(KLASSE) ; ophalen intern nummer klasse N (KLASSE) S $ZT="TRAP^cAN000" S D="\",U=";",Q="DAM" D QT^cAFVBO01 S R="" D DMS^cAN000("UQC","USC","DP",1) I '$L(UQC)!'$L(USC) G KLASSEZ S KLASSE=$TR(KLASSE,"_",".") ; bepalen groep S GR="" I $L(KLASSE,".")>1 S GR=$P(KLASSE,".",1,$L(KLASSE,".")-1),KLASSE=$P(KLASSE,GR_".",2) I '$L(GR) G KLASSEZ S GR=$$UI1OP^cAFA1("CODE.9022",101,"1\1\\",GR) I '$L(GR) G KLASSEZ S KLASSE=$$UI1OP^cAFA1("DP","M1","1\1\\",GR,KLASSE,"") S R=KLASSE KLASSEZ Q R ; SWITCHQ(Q,KLASSE,ID) ; Switchen van Q-waarde bij doorschakeling ? ; ; Er moet van Q-waarde geswitcht worden indien het een beheer betreft op een bestand ; waarvoor de DMQ is overschreven voor deze Q-waarde met de waarde "0" en de waarde ; van de DMQ(0 voor dit bestand is "1" of een vast Q-waarde. ; N COMP,B149,INST S $ZT="^dmERROR" ; ; Controle parameters SWITCHQ1 S COMP=$G(Q) I '$L($G(KLASSE)) G SWITCHQZ I '$L($G(ID)) G SWITCHQZ ; ; Is DMQ overschreven? SWITCHQ2 S KLASSE=$P(KLASSE,"~") I $$CHKDMQ(KLASSE_"~"_1,3,.Q,0) G SWITCHQZ ; ; Instantie openen en B149 opvragen SWITCHQ3 I $$REF^dmSQL(KLASSE,"B149")'="PROG_ALG.Q" G SWITCHQZ X "S INST=##class("_$P(KLASSE,"~")_").%OpenId(ID,0)" I '$L(INST) G SWITCHQZ S B149=INST.B149GetObjectId() D INST.%Close() S INST="" ; ; Q-waarde bepalen SWITCHQ4 I $L(B149) S COMP=B149 ; SWITCHQZ Q COMP ; USRINFO(COMPID,INIT,WLOGIN) ; Gegevens van gebruiker ophalen ; Input: COMPID: Q-waarde, indien "" wordt de default Q-waarde bepaald ; INIT: Initialen Caché-gebruiker ; Indien: "": ; Caché-gebruiker en prioriteiten worden bepaald aan de hand van Windows login ; Indien "~yyy yyy": ; Caché-gebruiker wordt bepaald via Windows loging ; Prioriteiten = "yyy yyy". Indien "" worden de prioriteiten opgehaald bij ; de gebruiker ; Indien "xxx~yyy yyy ; Caché-gebruiker = xxx. Er wordt wel nog geprobeerd om intern nummer en taal van ; de gebruiker op te halen (= stopt niet indien niet gevonden) ; Prioriteiten = "yyy yyy". Indien "" worden de prioriteiten opgehaald bij ; de gebruiker ; WLOGIN: Windows login-naam ; Output: 0\Foutboodschap ; 1\ gegevens gescheiden door ~ ; 1. Q-waarde ; 2. Initialen ; 3. Intern nummer Caché-gebruiker ; 4. Taal gebruiker ; 5. Windows gebruikersnaam ; 6. Prioriteiten ; 7. Gebruiker mag user-info wijzigen ; 8. Gebruiker mag standaard-info wijzigen S $ZT="^dmERROR" S Q=COMPID K %dmINIT N @$$INITVAR^cAFVBA01("INIT,WLOGIN") F i="INIT","WLOGIN" S @i=$g(@i) ; ; Check op geldige Q-waarde USRINFOA I '$L($$SIG^cAFA1("Q",Q,101)) S OUT=0_D_$P($T(@("T2"_QT)),U,2) G USRINFOZ ; ; Gegevens Caché-gebruiker ophalen USRINFOB I $L(INIT,"~")'=1 S $P(USRN,D)=$P(INIT,"~"),PRIO=$P(INIT,"~",2),INIT=$P(INIT,"~") S USRUI1=$$UI1OP^cAFA1("USR",$S($L(INIT):101,1:126),"1",$S($L(INIT):INIT,1:WLOGIN)) I '$L(USRUI1),'$L($G(USRN)) S OUT=0_D_$P($T(@("T1"_QT)),U,2) G USRINFOZ I $L(USRUI1) S USRN=$$SIGN^cAFA1("USR",USRUI1,0) ; ; Toegangscontrole USRINFOC S NOA=$$CHKNOA(Q,$P(USRN,D),QT) I NOA S OUT=0_D_$P(NOA,D,2) G USRINFOZ ; ; Prioriteiten ophalen USRINFOD I '$L($G(PRIO)) S PRIO=$$PROPRIV^cAN226(USRUI1) I $E(PRIO)'=" " S PRIO=" "_PRIO ; ; Standaardinfo (mag enkel gewijzigd worden op interne systemen) USRINFOE S INFO=$S($E(boot,1,11)="DAM-CACHE-F":1,$E(boot,1,11)="DAM-CACHE-D":1,1:0) ; ; Output samenstellen USRINFOY S DEL="~",OUT=1_D_Q_DEL_$P(USRN,D)_DEL_USRUI1_DEL_$S($P(USRN,D,9)="N":"",1:$P(USRN,D,9))_DEL_$P(USRN,D,26)_DEL_PRIO_DEL_$P(USRN,D,25)_DEL_INFO ; USRINFOZ Q OUT ; ; ZZ ; 29.08.07 - 10 u 22 * V8.09