| 1 | XMXMSGS ;ISC-SF/GMB-Message APIs ;08/06/2002  06:45
 | 
|---|
| 2 |  ;;8.0;MailMan;;Jun 28, 2002
 | 
|---|
| 3 | DELMSG(XMDUZ,XMK,XMKZA,XMMSG) ; Delete msgs in mailbox
 | 
|---|
| 4 |  K XMERR,^TMP("XMERR",$J)
 | 
|---|
| 5 |  I XMDUZ'=DUZ,'$$RPRIV^XMXSEC Q
 | 
|---|
| 6 |  D ACTMSG("XDEL^XMXMSGS2",34302) ;,XMDUZ,XMK,.XMKZA,"",.XMMSG)
 | 
|---|
| 7 |  Q
 | 
|---|
| 8 | FLTRMSG(XMDUZ,XMK,XMKZA,XMMSG) ; Filter msgs
 | 
|---|
| 9 |  K XMERR,^TMP("XMERR",$J)
 | 
|---|
| 10 |  I XMDUZ'=DUZ,'$$RPRIV^XMXSEC Q
 | 
|---|
| 11 |  N XMKN,XMKTO,XMKNTO
 | 
|---|
| 12 |  I $G(XMK)'=.5,'$G(XMK),'$D(^XMB(3.7,XMDUZ,15,"AF")) D ERRSET^XMXUTIL(37204.1) Q  ; You have no message filters defined.
 | 
|---|
| 13 |  I $G(XMK) S XMKN=$P(^XMB(3.7,XMDUZ,2,XMK,0),U,1)
 | 
|---|
| 14 |  D ACTMSG("XFLTR^XMXMSGS2",34306) ;,XMDUZ,XMK,XMKN,.XMKZA,"",.XMMSG)
 | 
|---|
| 15 |  Q
 | 
|---|
| 16 | FWDMSG(XMDUZ,XMK,XMKZA,XMTO,XMINSTR,XMMSG) ; Forward msgs
 | 
|---|
| 17 |  ; XMINSTR("SHARE DATE")  delete date if SHARED,MAIL is recipient
 | 
|---|
| 18 |  ; XMINSTR("SHARE BSKT")  basket if SHARED,MAIL is recipient
 | 
|---|
| 19 |  K XMERR,^TMP("XMERR",$J)
 | 
|---|
| 20 |  I XMDUZ'=DUZ,'$$RPRIV^XMXSEC Q
 | 
|---|
| 21 |  N XMRTN
 | 
|---|
| 22 |  I $$ONEMSG(.XMKZA) D
 | 
|---|
| 23 |  . S XMRTN="XFWDONE^XMXMSGS1" ; just one msg
 | 
|---|
| 24 |  E  D
 | 
|---|
| 25 |  . S XMRTN="XFWD^XMXMSGS1"
 | 
|---|
| 26 |  . I $G(XMINSTR("ADDR FLAGS"))'["I" D INIT^XMXADDR
 | 
|---|
| 27 |  . D CHKADDR^XMXADDR(XMDUZ,.XMTO,.XMINSTR)
 | 
|---|
| 28 |  D ACTMSG(XMRTN,34309) ;,XMDUZ,XMK,.XMKZA,.XMINSTR,.XMMSG)
 | 
|---|
| 29 |  D CLEANUP^XMXADDR
 | 
|---|
| 30 |  Q
 | 
|---|
| 31 | ONEMSG(XMKZA) ; Function decides if just one message
 | 
|---|
| 32 |  N XMONE,XMMSGS
 | 
|---|
| 33 |  I $G(XMKZA)]"" D  Q XMONE
 | 
|---|
| 34 |  . I $O(XMKZA(""))="",+XMKZA=XMKZA S XMONE=1 Q
 | 
|---|
| 35 |  . S XMONE=0
 | 
|---|
| 36 |  S XMMSGS=$O(XMKZA(""))
 | 
|---|
| 37 |  I $O(XMKZA(XMMSGS))'="" Q 0
 | 
|---|
| 38 |  I +XMMSGS=XMMSGS Q 1
 | 
|---|
| 39 |  Q 0
 | 
|---|
| 40 | LATERMSG(XMDUZ,XMK,XMKZA,XMINSTR,XMMSG) ; Later msgs
 | 
|---|
| 41 |  ; XMINSTR("LATER")  FM date/time when msg should be made new.
 | 
|---|
| 42 |  K XMERR,^TMP("XMERR",$J)
 | 
|---|
| 43 |  Q:'$$LATER^XMXSEC(XMDUZ)
 | 
|---|
| 44 |  N XMWHEN
 | 
|---|
| 45 |  S XMWHEN=$G(XMINSTR("LATER"),$G(XMINSTR))
 | 
|---|
| 46 |  D ACTMSG("XLATER^XMXMSGS2",34312) ;,XMDUZ,XMK,.XMKZA,.XMINSTR,.XMMSG)
 | 
|---|
| 47 |  Q
 | 
|---|
| 48 | MOVEMSG(XMDUZ,XMK,XMKZA,XMKTO,XMMSG) ; Move msgs to a basket
 | 
|---|
| 49 |  K XMERR,^TMP("XMERR",$J)
 | 
|---|
| 50 |  I XMDUZ'=DUZ,'$$RPRIV^XMXSEC Q
 | 
|---|
| 51 |  Q:$G(XMK)=XMKTO
 | 
|---|
| 52 |  D ACTMSG("XMOVE^XMXMSGS2",34324) ;,XMDUZ,XMK,.XMKZA,XMKTO,.XMMSG)
 | 
|---|
| 53 |  Q
 | 
|---|
| 54 | NTOGLMSG(XMDUZ,XMK,XMKZA,XMMSG) ; New toggle msgs
 | 
|---|
| 55 |  K XMERR,^TMP("XMERR",$J)
 | 
|---|
| 56 |  Q:'$$LATER^XMXSEC(XMDUZ)
 | 
|---|
| 57 |  N XMKN,XMKTO,XMKNTO
 | 
|---|
| 58 |  S:XMK XMKN=$P(^XMB(3.7,XMDUZ,2,XMK,0),U,1)
 | 
|---|
| 59 |  D ACTMSG("XNTOGL^XMXMSGS2",34315) ;,XMDUZ,XMK,XMKN,.XMKZA,"",.XMMSG)
 | 
|---|
| 60 |  Q
 | 
|---|
| 61 | PRTMSG(XMDUZ,XMK,XMKZA,XMPRTTO,XMINSTR,XMMSG,XMTASK,XMSUBJ,XMTO) ; Print msgs
 | 
|---|
| 62 |  K XMERR,^TMP("XMERR",$J),^TMP("XM",$J,"XMZ")
 | 
|---|
| 63 |  D ACTMSG("XPRT^XMXMSGS1",34320) ;,XMDUZ,XMK,.XMKZA,.XMINSTR,.XMMSG)
 | 
|---|
| 64 |  Q:+XMMSG=0
 | 
|---|
| 65 |  I +XMMSG=1 D
 | 
|---|
| 66 |  . D PRINT1^XMXPRT(XMDUZ,$O(^TMP("XM",$J,"XMZ","")),XMPRTTO,.XMINSTR,.XMTASK,.XMSUBJ,.XMTO)
 | 
|---|
| 67 |  E  D
 | 
|---|
| 68 |  . D PRINTM^XMXPRT(XMDUZ,XMPRTTO,.XMINSTR,.XMTASK,.XMSUBJ,.XMTO)
 | 
|---|
| 69 |  K ^TMP("XM",$J,"XMZ")
 | 
|---|
| 70 |  Q:$D(XMTASK)
 | 
|---|
| 71 |  S XMMSG=$$EZBLD^DIALOG(34321) ; 0 messages sent to printer.  TaskMan Problem.
 | 
|---|
| 72 |  D ERRSET^XMXUTIL(34311) ; Task creation not successful.
 | 
|---|
| 73 |  Q
 | 
|---|
| 74 | TERMMSG(XMDUZ,XMK,XMKZA,XMMSG) ; Terminate msgs
 | 
|---|
| 75 |  K XMERR,^TMP("XMERR",$J)
 | 
|---|
| 76 |  I XMDUZ'=DUZ,'$$RPRIV^XMXSEC Q
 | 
|---|
| 77 |  D ACTMSG("XTERM^XMXMSGS2",34329) ;,XMDUZ,XMK,.XMKZA,"",.XMMSG)
 | 
|---|
| 78 |  Q
 | 
|---|
| 79 | VAPORMSG(XMDUZ,XMK,XMKZA,XMINSTR,XMMSG) ; Set vaporize dates for msgs in mailbox
 | 
|---|
| 80 |  K XMERR,^TMP("XMERR",$J)
 | 
|---|
| 81 |  I XMDUZ'=DUZ,'$$RPRIV^XMXSEC Q
 | 
|---|
| 82 |  N XMWHEN
 | 
|---|
| 83 |  S XMWHEN=$G(XMINSTR("VAPOR"),$G(XMINSTR))
 | 
|---|
| 84 |  D ACTMSG("XVAPOR^XMXMSGS2",$S(XMWHEN="@":34337.2,1:34337)) ;,XMDUZ,XMK,.XMKZA,XMWHEN,.XMMSG)
 | 
|---|
| 85 |  Q
 | 
|---|
| 86 | XPMSG(XMDUZ,XMK,XMKZA,XMINSTR,XMMSG) ; Postmaster transmit priority toggle
 | 
|---|
| 87 |  K XMERR,^TMP("XMERR",$J)
 | 
|---|
| 88 |  I XMDUZ'=DUZ,'$$RPRIV^XMXSEC Q
 | 
|---|
| 89 |  I XMDUZ'=.5!(XMK'>999) D ERRSET^XMXUTIL(37219.5) Q  ;Transmission Priority toggle valid only for Postmaster Transmission Queues.
 | 
|---|
| 90 |  N XMTPRI
 | 
|---|
| 91 |  S XMTPRI=$G(XMINSTR("XMIT PRI"),$G(XMINSTR))
 | 
|---|
| 92 |  D ACTMSG("XXP^XMXMSGS1",34334) ;,XMDUZ,XMK,.XMKZA,XMTPRI,.XMMSG)
 | 
|---|
| 93 |  Q
 | 
|---|
| 94 | ACTMSG(XMRTN,XMSUM) ;,XMDUZ,XMK,XMKZA,XMKTO,XMMSG)
 | 
|---|
| 95 |  ; XMKZA    Array of msg numbers  DEL("1-3,7,11-15")
 | 
|---|
| 96 |  ; XMKZL    List of msg numbers   1-3,7,11-15
 | 
|---|
| 97 |  ;          (It is OK if the list ends with a comma)
 | 
|---|
| 98 |  ; XMKZR    Range of msg numbers  1-3
 | 
|---|
| 99 |  ; XMKZ1    First number in range 1
 | 
|---|
| 100 |  ; XMKZN    Last number in range  3
 | 
|---|
| 101 |  ; XMKZ     Message number
 | 
|---|
| 102 |  N XMCNT,XMI,XMZ,XMPIECES
 | 
|---|
| 103 |  S XMCNT=0
 | 
|---|
| 104 |  I $G(XMK) D
 | 
|---|
| 105 |  . N XMKZ,XMKZL,XMKZR,XMKZ1,XMKZN
 | 
|---|
| 106 |  . ; is this an array or a variable?
 | 
|---|
| 107 |  . I $G(XMKZA)]"",$O(XMKZA(""))="" S XMKZA(XMKZA)=""
 | 
|---|
| 108 |  . S XMKZL=""
 | 
|---|
| 109 |  . F  S XMKZL=$O(XMKZA(XMKZL)) Q:XMKZL=""  D
 | 
|---|
| 110 |  . . S XMPIECES=$L(XMKZL,",")
 | 
|---|
| 111 |  . . S:$P(XMKZL,",",XMPIECES)="" XMPIECES=XMPIECES-1
 | 
|---|
| 112 |  . . F XMI=1:1:XMPIECES D
 | 
|---|
| 113 |  . . . S XMKZR=$P(XMKZL,",",XMI)
 | 
|---|
| 114 |  . . . I XMKZR["-" D
 | 
|---|
| 115 |  . . . . ; deal with a range of msg #s
 | 
|---|
| 116 |  . . . . S XMKZ1=$P(XMKZR,"-",1)
 | 
|---|
| 117 |  . . . . S XMKZN=$P(XMKZR,"-",2)
 | 
|---|
| 118 |  . . . . I XMKZ1>XMKZN D  Q
 | 
|---|
| 119 |  . . . . . N XMPARM
 | 
|---|
| 120 |  . . . . . S XMPARM(1)=XMKZ1,XMPARM(2)=XMKZN
 | 
|---|
| 121 |  . . . . . D ERRSET^XMXUTIL(34350,.XMPARM) ; Range '_XMKZ1_-_XMKZN_' invalid.
 | 
|---|
| 122 |  . . . . S XMKZ=XMKZ1-.1
 | 
|---|
| 123 |  . . . . F  S XMKZ=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZ)) Q:'XMKZ!(XMKZ>XMKZN)  D
 | 
|---|
| 124 |  . . . . . S XMZ=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZ,""))
 | 
|---|
| 125 |  . . . . . I 'XMZ D  Q
 | 
|---|
| 126 |  . . . . . . N XMPARM
 | 
|---|
| 127 |  . . . . . . S XMPARM(1)=XMKZ,XMPARM(2)=XMK
 | 
|---|
| 128 |  . . . . . . D ERRSET^XMXUTIL(34351,.XMPARM) ; Message _XMKZ_ in basket _XMK_ does not exist.
 | 
|---|
| 129 |  . . . . . I '$D(^XMB(3.9,XMZ,0)) D  Q
 | 
|---|
| 130 |  . . . . . . N XMPARM
 | 
|---|
| 131 |  . . . . . . S XMPARM(1)=XMZ,XMPARM(2)=XMKZ,XMPARM(3)=XMK
 | 
|---|
| 132 |  . . . . . . D ERRSET^XMXUTIL(34352,.XMPARM) ; Message '_XMZ_' (message _XMKZ_ in basket _XMK_) does not exist.
 | 
|---|
| 133 |  . . . . . D @XMRTN ;(XMDUZ,XMK,XMZ)
 | 
|---|
| 134 |  . . . E  D
 | 
|---|
| 135 |  . . . . S XMKZ=XMKZR
 | 
|---|
| 136 |  . . . . S XMZ=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZ,""))
 | 
|---|
| 137 |  . . . . I 'XMZ D  Q
 | 
|---|
| 138 |  . . . . . N XMPARM
 | 
|---|
| 139 |  . . . . . S XMPARM(1)=XMKZ,XMPARM(2)=XMK
 | 
|---|
| 140 |  . . . . . D ERRSET^XMXUTIL(34351,.XMPARM) ; Message _XMKZ_ in basket _XMK_ does not exist.
 | 
|---|
| 141 |  . . . . I '$D(^XMB(3.9,XMZ,0)) D  Q
 | 
|---|
| 142 |  . . . . . N XMPARM
 | 
|---|
| 143 |  . . . . . S XMPARM(1)=XMZ,XMPARM(2)=XMKZ,XMPARM(3)=XMK
 | 
|---|
| 144 |  . . . . . D ERRSET^XMXUTIL(34352,.XMPARM) ; Message '_XMZ_' (message _XMKZ_ in basket _XMK_) does not exist.
 | 
|---|
| 145 |  . . . . D @XMRTN ;(XMDUZ,XMK,XMZ)
 | 
|---|
| 146 |  E  D
 | 
|---|
| 147 |  . N XMZL,XMZREC
 | 
|---|
| 148 |  . ; is this an array or a variable?
 | 
|---|
| 149 |  . I $G(XMKZA)]"",$O(XMKZA(""))="" S XMKZA(XMKZA)=""
 | 
|---|
| 150 |  . S XMZL=""
 | 
|---|
| 151 |  . F  S XMZL=$O(XMKZA(XMZL)) Q:XMZL=""  D
 | 
|---|
| 152 |  . . I XMZL["-" D ERRSET^XMXUTIL(34353) Q  ; XMZ message ranges are not allowed.
 | 
|---|
| 153 |  . . S XMPIECES=$L(XMZL,",")
 | 
|---|
| 154 |  . . S:'$P(XMZL,",",XMPIECES) XMPIECES=XMPIECES-1
 | 
|---|
| 155 |  . . F XMI=1:1:XMPIECES D
 | 
|---|
| 156 |  . . . N XMK
 | 
|---|
| 157 |  . . . S XMZ=$P(XMZL,",",XMI)
 | 
|---|
| 158 |  . . . I '$D(^XMB(3.9,XMZ,0)) D ERRSET^XMXUTIL(34354,XMZ) Q  ; Message '_XMZ_' does not exist."
 | 
|---|
| 159 |  . . . S XMZREC=$G(^XMB(3.9,XMZ,0))
 | 
|---|
| 160 |  . . . Q:'$$ACCESS^XMXSEC(XMDUZ,XMZ,XMZREC)
 | 
|---|
| 161 |  . . . D @XMRTN ;(XMDUZ,XMK,XMZ)
 | 
|---|
| 162 |  S XMMSG=$$EZBLD^DIALOG($S(XMCNT=1:XMSUM+.1,1:XMSUM),XMCNT)
 | 
|---|
| 163 |  D INCRDECR(XMDUZ,.XMCNT)
 | 
|---|
| 164 |  Q
 | 
|---|
| 165 | INCRDECR(XMDUZ,XMCNT) ; Update the "new messages" counts.
 | 
|---|
| 166 |  N XMK
 | 
|---|
| 167 |  S XMK=0
 | 
|---|
| 168 |  F  S XMK=$O(XMCNT(XMK)) Q:'XMK  D
 | 
|---|
| 169 |  . S XMCNT=$G(XMCNT(XMK,"INCR"))-$G(XMCNT(XMK,"DECR"))
 | 
|---|
| 170 |  . Q:'XMCNT
 | 
|---|
| 171 |  . I XMCNT<0 D DECRNEW^XMXUTIL(XMDUZ,XMK,-XMCNT) Q
 | 
|---|
| 172 |  . D INCRNEW^XMXUTIL(XMDUZ,XMK,XMCNT)
 | 
|---|
| 173 |  Q
 | 
|---|