| 1 | XMVVITAE ;ISC-SF/GMB-Initialize User's MailMan Variables ;04/19/2002  13:26
 | 
|---|
| 2 |  ;;8.0;MailMan;**36**;Jun 28, 2002
 | 
|---|
| 3 |  ; Replaces ^XMGAPI1,FWD^XMA21,FWD,BANNER^XMA6,EDIT^XMA7 (ISC-WASH/CAP)
 | 
|---|
| 4 |  ; Entry points (DBIA 2728):
 | 
|---|
| 5 |  ; INIT     Set up variables for DUZ or XMDUZ.
 | 
|---|
| 6 |  ; OTHER    Set up variables to become a surrogate of someone else.
 | 
|---|
| 7 |  ; SELF     Return from being a surrogate to being oneself again.
 | 
|---|
| 8 |  Q
 | 
|---|
| 9 | INIT ; Set up one's variables (for yourself or as a surrogate).
 | 
|---|
| 10 |  N XMAPI
 | 
|---|
| 11 | INIT2 K XMV
 | 
|---|
| 12 |  D SYSTEM(.XMV)
 | 
|---|
| 13 |  S:'$D(XMDUZ) XMDUZ=DUZ
 | 
|---|
| 14 |  D DUZ(DUZ,.XMV,.XMDUN,.XMDISPI,.XMNOSEND)
 | 
|---|
| 15 |  D:XMDUZ'=DUZ SURROGAT(XMDUZ,.XMV,.XMDUN,.XMNOSEND,.XMPRIV)
 | 
|---|
| 16 |  Q
 | 
|---|
| 17 | INITAPI ; (For MailMan use only) Set up variables for an API call.
 | 
|---|
| 18 |  N XMAPI
 | 
|---|
| 19 |  S XMAPI=1 ; "last used MailMan" will not be recorded.
 | 
|---|
| 20 |  G INIT2
 | 
|---|
| 21 | CHECK ; Check to make sure one's variables exist.
 | 
|---|
| 22 |  I '$D(XMV("NAME"))!'$D(XMV("RDR DEF")) D INIT
 | 
|---|
| 23 |  Q
 | 
|---|
| 24 | OTHER ; Become someone else.  INIT should have been called previously.
 | 
|---|
| 25 |  I '$D(XMV) D INIT Q
 | 
|---|
| 26 |  N XMAPI
 | 
|---|
| 27 |  D SURROGAT(XMDUZ,.XMV,.XMDUN,.XMNOSEND,.XMPRIV)
 | 
|---|
| 28 |  Q
 | 
|---|
| 29 | SELF ; Return to oneself after having become someone else.
 | 
|---|
| 30 |  ; INIT should have been called previously.
 | 
|---|
| 31 |  S XMDUZ=DUZ
 | 
|---|
| 32 |  I '$D(XMV) D INIT Q
 | 
|---|
| 33 |  N XMAPI
 | 
|---|
| 34 |  D USER(XMDUZ,.XMV,.XMNOSEND,.XMDUN)
 | 
|---|
| 35 |  D LASTUSE(XMDUZ,.XMV)
 | 
|---|
| 36 |  Q
 | 
|---|
| 37 | SYSTEM(XMV) ;
 | 
|---|
| 38 |  ; XMV("VERSION")
 | 
|---|
| 39 |  I '$D(DT) D DT^DICRW
 | 
|---|
| 40 |  S XMV("VERSION")="VA MailMan "_$P($T(XMVVITAE+1),";",3)
 | 
|---|
| 41 |  ; Check to make sure that important variables are defined correctly.
 | 
|---|
| 42 |  I +$G(^XMB("NUM")),$G(^XMB("NAME"))=$G(^XMB("NETNAME")),$G(^XMB("NETNAME"))=$P($G(^DIC(4.2,+$G(^XMB("NUM")),0)),U,1),$G(^XMB("NUM"))=$P($G(^XMB(1,1,0)),U,1) Q
 | 
|---|
| 43 |  N XMPARM  ; The domain for this facility is not christened correctly.
 | 
|---|
| 44 |  S XMPARM(1)=$G(^XMB("NUM"))
 | 
|---|
| 45 |  S XMPARM(2)=$P($G(^XMB(1,1,0)),U,1)
 | 
|---|
| 46 |  S XMPARM(3)=$P($G(^DIC(4.2,+$G(^XMB("NUM")),0)),U,1)
 | 
|---|
| 47 |  S XMPARM(4)=$P($G(^DIC(4.2,+XMPARM(2),0)),U,1)
 | 
|---|
| 48 |  S XMPARM(5)=$G(^XMB("NETNAME"))
 | 
|---|
| 49 |  S XMPARM(6)=$G(^XMB("NAME"))
 | 
|---|
| 50 |  F I=1:1:6 I XMPARM(I)="" S XMPARM(I)="?"
 | 
|---|
| 51 |  ;The domain for this facility is not christened correctly.
 | 
|---|
| 52 |  ;IRM must correct this for network mail to function properly.
 | 
|---|
| 53 |  ;The following pointers should contain the same numbers,
 | 
|---|
| 54 |  ;which should point to this facility's domain in ^DIC(4.2:
 | 
|---|
| 55 |  ;^XMB("NUM")=|1|          ==> |3|
 | 
|---|
| 56 |  ;$P(^XMB(1,1,0),U,1)=|2|  ==> |4|
 | 
|---|
| 57 |  ;The following globals should contain the domain name of this facility:
 | 
|---|
| 58 |  ;^XMB("NETNAME")=           |5|
 | 
|---|
| 59 |  ;^XMB("NAME")=              |6|
 | 
|---|
| 60 |  D BLD^DIALOG(38100,.XMPARM,"","XMV(""SYSERR"")")
 | 
|---|
| 61 |  Q
 | 
|---|
| 62 | DUZ(XMDUZ,XMV,XMDUN,XMDISPI,XMNOSEND) ;
 | 
|---|
| 63 |  ; XMV("DUZ NAME")
 | 
|---|
| 64 |  K XMV("ERROR")
 | 
|---|
| 65 |  I $G(DUZ,0)=0 S XMV("ERROR",1)=$$EZBLD^DIALOG(38105) Q  ;You do not have a DUZ.
 | 
|---|
| 66 |  D USER(XMDUZ,.XMV,.XMNOSEND,.XMDUN) Q:$D(XMV("ERROR"))
 | 
|---|
| 67 |  S XMV("DUZ NAME")=XMV("NAME")
 | 
|---|
| 68 |  D LASTUSE(XMDUZ,.XMV)
 | 
|---|
| 69 |  D PREFER(XMDUZ,.XMV,.XMDISPI)
 | 
|---|
| 70 |  Q
 | 
|---|
| 71 | SURROGAT(XMDUZ,XMV,XMDUN,XMNOSEND,XMPRIV) ;
 | 
|---|
| 72 |  ; XMV("PRIV")
 | 
|---|
| 73 |  ; XMPRIV
 | 
|---|
| 74 |  Q:XMDUZ=DUZ
 | 
|---|
| 75 |  K XMV("ERROR"),XMV("WARNING")
 | 
|---|
| 76 |  I XMDUZ=.6 D  Q
 | 
|---|
| 77 |  . S XMV("PRIV")="R",XMPRIV="y^n"
 | 
|---|
| 78 |  . S (XMDUN,XMV("NAME"))=$$NAME^XMXUTIL(.6)
 | 
|---|
| 79 |  . D SETNET(XMDUZ,.XMV)
 | 
|---|
| 80 |  . S XMV("NEW MSGS")=+$P(^XMB(3.7,XMDUZ,0),U,6)
 | 
|---|
| 81 |  E  D  Q:$D(XMV("ERROR"))
 | 
|---|
| 82 |  . N XMIEN
 | 
|---|
| 83 |  . S XMIEN=+$O(^XMB(3.7,"AB",DUZ,XMDUZ,0))
 | 
|---|
| 84 |  . ;Commented out because we shouldn't be here if not a valid surrogate
 | 
|---|
| 85 |  . ;I 'XMIEN S XMV("ERROR",5)=$$EZBLD^DIALOG(38106,XMDUZ) Q  ;You are not a surrogate of DUZ |1|.
 | 
|---|
| 86 |  . S XMPRIV=$G(^XMB(3.7,XMDUZ,9,XMIEN,0))
 | 
|---|
| 87 |  . S XMV("PRIV")=$S($P(XMPRIV,U,2)="y":"R",1:"")_$S($P(XMPRIV,U,3)="y":"W",1:"")
 | 
|---|
| 88 |  D USER(XMDUZ,.XMV,.XMNOSEND,.XMDUN) Q:$D(XMV("ERROR"))
 | 
|---|
| 89 |  D LASTUSE(XMDUZ,.XMV)
 | 
|---|
| 90 |  Q
 | 
|---|
| 91 | USER(XMDUZ,XMV,XMNOSEND,XMDUN) ;
 | 
|---|
| 92 |  ; XMV("WARNING")
 | 
|---|
| 93 |  ; XMV("ERROR")
 | 
|---|
| 94 |  ; XMV("NEW MSGS")
 | 
|---|
| 95 |  ; XMV("NAME")
 | 
|---|
| 96 |  ; XMV("NOSEND")
 | 
|---|
| 97 |  ; XMNOSEND
 | 
|---|
| 98 |  ; XMDUN
 | 
|---|
| 99 |  N XMREC
 | 
|---|
| 100 |  K XMV("ERROR"),XMV("WARNING")
 | 
|---|
| 101 |  S XMREC=$G(^VA(200,XMDUZ,0))
 | 
|---|
| 102 |  I XMREC="" S XMV("ERROR",2)=$$EZBLD^DIALOG(38107,XMDUZ) Q  ;There is no person with DUZ |1|.
 | 
|---|
| 103 |  ;I $P(XMREC,U,3)="" S XMV("ERROR",3)=$$EZBLD^DIALOG(38108,XMDUZ) Q  ; There is no Access Code for DUZ XMDUZ
 | 
|---|
| 104 |  I $P(XMREC,U,3)="",'$$USERTYPE^XUSAP(XMDUZ,"APPLICATION PROXY") S XMV("ERROR",3)=$$EZBLD^DIALOG(38108,XMDUZ) Q  ; There is no Access Code for DUZ XMDUZ
 | 
|---|
| 105 |  ;I '$D(^XMB(3.7,XMDUZ,0)) S XMV("ERROR",4)=$$EZBLD^DIALOG(38109,XMDUZ) Q  ;There is no mailbox for DUZ |1|.
 | 
|---|
| 106 |  I '$D(^XMB(3.7,XMDUZ,0)),'$$USERTYPE^XUSAP(XMDUZ,"APPLICATION PROXY") S XMV("ERROR",4)=$$EZBLD^DIALOG(38109,XMDUZ) Q  ;There is no mailbox for DUZ |1|.
 | 
|---|
| 107 |  S XMV("NOSEND")=0
 | 
|---|
| 108 |  S (XMDUN,XMV("NAME"))=$$NAME^XMXUTIL(XMDUZ)
 | 
|---|
| 109 |  D SETNET(XMDUZ,.XMV)
 | 
|---|
| 110 |  Q:$D(ZTQUEUED)!$G(XMAPI)
 | 
|---|
| 111 |  I $D(^XTMP("XM","MAKENEW",XMDUZ)) D NEWAGAIN^XMJBN1(XMDUZ)
 | 
|---|
| 112 |  I '$D(DUZ("SAV")),$D(XMMENU(0)) L +^XMB(3.7,"AD",DUZ):0 E  S (XMV("NOSEND"),XMNOSEND)=1,XMV("WARNING",4)=$$EZBLD^DIALOG(38110) ;Multiple Signon
 | 
|---|
| 113 |  S:$D(^XMB(3.7,XMDUZ,"N")) XMV("WARNING",1)=$$EZBLD^DIALOG(38111) ;Priority Mail
 | 
|---|
| 114 |  I '$D(DUZ("SAV")),'XMV("NOSEND"),$D(^XMB(3.7,"AD",XMDUZ)) D
 | 
|---|
| 115 |  . I XMDUZ='DUZ,$G(XMV("PRIV"))'["W" Q
 | 
|---|
| 116 |  . N XMZ
 | 
|---|
| 117 |  . S XMREC=$G(^XMB(3.7,XMDUZ,"T"))
 | 
|---|
| 118 |  . S XMZ=$P(XMREC,U,1) I XMZ="" K ^XMB(3.7,"AD",XMDUZ) Q
 | 
|---|
| 119 |  . I '$D(^XMB(3.9,XMZ,0)) K ^XMB(3.7,XMDUZ,"T"),^XMB(3.7,"AD",XMDUZ) Q
 | 
|---|
| 120 |  . S XMZ=$P(XMREC,U,3)
 | 
|---|
| 121 |  . I XMZ,'$D(^XMB(3.9,XMZ,0)) K ^XMB(3.7,XMDUZ,"T"),^XMB(3.7,"AD",XMDUZ) Q
 | 
|---|
| 122 |  . S XMV("WARNING",2)=$$EZBLD^DIALOG(38112) ;Message in Buffer
 | 
|---|
| 123 |  S XMV("NEW MSGS")=+$P(^XMB(3.7,XMDUZ,0),U,6)
 | 
|---|
| 124 |  I XMDUZ=.5 D
 | 
|---|
| 125 |  . N I,XMK
 | 
|---|
| 126 |  . S XMK=.99
 | 
|---|
| 127 |  . F I=1:1 S XMK=$O(^XMB(3.7,.5,2,XMK)) Q:XMK>999!'XMK
 | 
|---|
| 128 |  . S:I>900 XMV("WARNING",5)=$$EZBLD^DIALOG(38113,I) ;POSTMASTER has |1| baskets.
 | 
|---|
| 129 |  D SETBAN(XMDUZ,.XMV)
 | 
|---|
| 130 |  Q
 | 
|---|
| 131 | SETNET(XMDUZ,XMV) ;
 | 
|---|
| 132 |  ; XMV("NETNAME")
 | 
|---|
| 133 |  S XMV("NETNAME")=$$NETNAME^XMXUTIL(XMDUZ)
 | 
|---|
| 134 |  Q
 | 
|---|
| 135 | SETBAN(XMDUZ,XMV) ;
 | 
|---|
| 136 |  ; XMV("BANNER")
 | 
|---|
| 137 |  N XMBANNER
 | 
|---|
| 138 |  S XMBANNER=$G(^XMB(3.7,XMDUZ,"B"))
 | 
|---|
| 139 |  I XMBANNER="" K XMV("BANNER")
 | 
|---|
| 140 |  E  S XMV("BANNER")=XMBANNER
 | 
|---|
| 141 |  Q
 | 
|---|
| 142 | PREFER(XMDUZ,XMV,XMDISPI) ;
 | 
|---|
| 143 |  ; XMV("SHOW INST")
 | 
|---|
| 144 |  ; XMV("SHOW TITL")
 | 
|---|
| 145 |  ; XMV("SHOW DUZ")
 | 
|---|
| 146 |  ; XMV("ASK BSKT")
 | 
|---|
| 147 |  ; XMV("MSG DEF")
 | 
|---|
| 148 |  ; XMV("RDR DEF")
 | 
|---|
| 149 |  ; XMV("RDR ASK")
 | 
|---|
| 150 |  ; XMV("ORDER")
 | 
|---|
| 151 |  ; XMV("PREVU")
 | 
|---|
| 152 |  ; XMV("NEW OPT")
 | 
|---|
| 153 |  ; XMV("NEW ORDER")
 | 
|---|
| 154 |  ; XMDISPI
 | 
|---|
| 155 |  N XMUREC,XMSREC
 | 
|---|
| 156 |  S XMSREC=$G(^XMB(1,1,0)) ; Site's preferences
 | 
|---|
| 157 |  ;S XMUREC=^XMB(3.7,DUZ,0) ; User's preferences
 | 
|---|
| 158 |  S XMUREC=$G(^XMB(3.7,DUZ,0)) ; User's preferences
 | 
|---|
| 159 |  S XMV("SHOW INST")=$S($P(XMSREC,U,5)["y":1,1:0)  ; Show Institution
 | 
|---|
| 160 |  S XMV("SHOW TITL")=$S($P(XMUREC,U,10)=1:1,1:0)   ; Show Titles
 | 
|---|
| 161 |  I XMV("SHOW TITL") S XMV("TITL SRC")=$S($P(XMSREC,U,11)'="":$P(XMSREC,U,11),1:"T") ; Title Source (Signature Block or Title)
 | 
|---|
| 162 |  Q:$D(ZTQUEUED)
 | 
|---|
| 163 |  S XMV("SHOW DUZ")=+$P(XMSREC,U,8)  ; Show DUZ when addressing messages
 | 
|---|
| 164 |  S XMV("PREVU")=$S($P(XMUREC,U,4)="Y":1,1:0)
 | 
|---|
| 165 |  S XMV("ASK BSKT")=$S($P(XMUREC,U,5)'["n":1,1:0)
 | 
|---|
| 166 |  ; User's default message action (Delete, Ignore). If user doesn't have one, take site's.  If site doesn't have one, make it Ignore.
 | 
|---|
| 167 |  S XMV("MSG DEF")=$S($P(XMUREC,U,9)'="":$P(XMUREC,U,9),$P(XMSREC,U,15)'="":$P(XMSREC,U,15),1:"I")
 | 
|---|
| 168 |  S XMV("ORDER")=$S($P(XMUREC,U,13)="N":-1,1:1)
 | 
|---|
| 169 |  S XMV("RDR DEF")=$S($P(XMUREC,U,16)'="":$P(XMUREC,U,16),1:"C")
 | 
|---|
| 170 |  S XMV("RDR ASK")=$S($P(XMUREC,U,17)'="":$P(XMUREC,U,17),1:"Y")
 | 
|---|
| 171 |  S XMV("NEW OPT")=$S($P(XMUREC,U,18)'="":$P(XMUREC,U,18),1:"R")
 | 
|---|
| 172 |  S XMV("NEW ORDER")=$S($P(XMUREC,U,19)="N":-1,1:1)
 | 
|---|
| 173 |  Q:$G(XMAPI)
 | 
|---|
| 174 |  I $P(XMSREC,U,6)["y",'$D(^XMB(3.7,XMDUZ,1,1,0)) S XMV("WARNING",3)=$$EZBLD^DIALOG(38114) ;No Introduction
 | 
|---|
| 175 |  S XMDISPI="X"  ; Show Help (Not used?)
 | 
|---|
| 176 |  I XMV("SHOW INST") S XMDISPI=XMDISPI_"I"
 | 
|---|
| 177 |  I XMV("SHOW TITL") S XMDISPI=XMDISPI_"T"
 | 
|---|
| 178 |  I XMV("ASK BSKT") S XMDISPI=XMDISPI_"A"
 | 
|---|
| 179 |  S XMDISPI=XMDISPI_U_XMV("MSG DEF")
 | 
|---|
| 180 |  Q
 | 
|---|
| 181 | LASTUSE(XMDUZ,XMV) ;
 | 
|---|
| 182 |  ; XMV("LAST USE")
 | 
|---|
| 183 |  I XMDUZ=.6!$D(ZTQUEUED)!$G(XMAPI) Q
 | 
|---|
| 184 |  S XMV("LAST USE")=$P($G(^XMB(3.7,XMDUZ,"L"),$$EZBLD^DIALOG(38002)),U,1) ;Never
 | 
|---|
| 185 |  Q:$D(DUZ("SAV"))
 | 
|---|
| 186 |  S ^XMB(3.7,XMDUZ,"L")=$$MMDT^XMXUTIL1($$NOW^XLFDT)_$S(XMDUZ'=DUZ:$$EZBLD^DIALOG(38008,XMV("DUZ NAME")),1:"")_U_DT_U_DUZ ; (Surrogate: |1|)
 | 
|---|
| 187 |  Q
 | 
|---|