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
|
---|