source: FOIAVistA/trunk/r/MAILMAN-XM/XMXAPI.m@ 1608

Last change on this file since 1608 was 628, checked in by George Lilly, 15 years ago

initial load of FOIAVistA 6/30/08 version

File size: 9.0 KB
Line 
1XMXAPI ;ISC-SF/GMB-Message APIs ;03/26/2003 07:56
2 ;;8.0;MailMan;**15**;Jun 28, 2002
3 ; All entry points covered by DBIA 2729.
4 ; Variables input:
5 ; XMATTACH Imaging system BLOB attachment array
6 ; XMBODY Message text (MUST NOT BE "XMBODY")
7 ; (must be closed root, passed by value. See WP_ROOT
8 ; definition for WP^DIE(), FM word processing filer)
9 ; XMDUZ User's DUZ, or enough of user's name for a positive ID
10 ; eg: 1301 or "lastname,firs"
11 ; XMK Basket number, or enough of a name for a positive ID
12 ; eg: 1 or "IN"
13 ; XMKZ Message number in basket XMK
14 ; OR
15 ; if $G(XMK)="", Message number in ^XMB(3.9
16 ; XMKZA Message number list or list array in basket XMK
17 ; eg: "1,3,5-7" or ARRAY("1,3")=""
18 ; ARRAY("5-7")=""
19 ; (list may end in comma)
20 ; (ARRAY must be passed by reference)
21 ; OR
22 ; if $G(XMK)="", Message number list or list array in ^XMB(3.9
23 ; (same rules, but number ranges are NOT allowed)
24 ; XMSUBJ Message subject
25 ; XMTO Addressee or addressee array
26 ; (array must be passed by reference)
27 ; User's DUZ, or enough of user's name for a positive ID
28 ; eg: 1301 or "lastname,firs" or ARRAY(1301)=""
29 ; ARRAY("lastname,firs")=""
30 ; G.group name (enough for positive ID)
31 ; S.server name (enough for positive ID)
32 ; D.device name (enough for positive ID)
33 ; prefix above (except devices and servers) by:
34 ; I: for 'information only' recipient (may not reply)
35 ; eg: "I:1301" or "I:lastname,firs"
36 ; C: for 'copy' recipient (not expected to reply)
37 ; eg: "C:1301" or "C:lastname,firs"
38 ; L@datetime: for when (in future) to send to this recipient
39 ; (datetime may be anything accepted by FM)
40 ; eg: "L@25 DEC@0500:1301" or "L@1 JAN:lastname,firs"
41 ; or "L@2981225.05:1301"
42 ; (may combine IL@datetime: or CL@datetime:)
43 ; To delete recipient, prefix by -
44 ; eg: -1301 or "-lastname,firs"
45 ; XMZ message number in ^XMB(3.9,
46 ;
47 ; Variables output (must be passed by reference):
48 ; XMFULL expanded address of last addressee
49 ; XMMSG simple message telling how many messages were acted on
50 ; XMZ message number created in ^XMB(3.9,
51 ;
52 ; Errors
53 ; XMERR if there's any errors, then XMERR is set to the number of
54 ; errors, otherwise XMERR is undefined.
55 ; ^TMP("XMERR",$J,error number,"TEXT",line number)=error text
56ANSRMSG(XMDUZ,XMK,XMKZ,XMSUBJ,XMBODY,XMTO,XMINSTR,XMZR) ; Answer a msg (Send new msg with copy of original msg inside)
57 ; In: User, basket, msg #
58 ; Out: XMZR (message number of answer)
59 I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
60 D ANSRMSG^XMXPARM(.XMDUZ,.XMK,.XMKZ,.XMSUBJ,.XMBODY,.XMTO,.XMINSTR) Q:$D(XMERR)
61 D ANSRMSG^XMXANSER(XMDUZ,.XMK,XMKZ,.XMSUBJ,XMBODY,.XMTO,.XMINSTR,.XMZR)
62 Q
63DELMSG(XMDUZ,XMK,XMKZA,XMMSG) ; Delete msgs from a basket
64 I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
65 D ACTMSGS^XMXPARM(.XMDUZ,.XMK,.XMKZA) Q:$D(XMERR)
66 D DELMSG^XMXMSGS(XMDUZ,.XMK,.XMKZA,.XMMSG)
67 Q
68FLTRMSG(XMDUZ,XMK,XMKZA,XMMSG) ; Filters msgs in a basket
69 I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
70 D ACTMSGS^XMXPARM(.XMDUZ,.XMK,.XMKZA) Q:$D(XMERR)
71 D FLTRMSG^XMXMSGS(XMDUZ,.XMK,.XMKZA,.XMMSG)
72 Q
73FWDMSG(XMDUZ,XMK,XMKZA,XMTO,XMINSTR,XMMSG) ; Forward msgs
74 ; XMINSTR("SHARE DATE")
75 ; XMINSTR("SHARE BSKT")
76 ; XMINSTR("SELF BSKT")
77 ; XMINSTR("FWD BY") substitute any string instead of XMDUZ name
78 I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
79 D FWDMSG^XMXPARM(.XMDUZ,.XMK,.XMKZA,.XMTO,.XMINSTR) Q:$D(XMERR)
80 D FWDMSG^XMXMSGS(XMDUZ,.XMK,.XMKZA,.XMTO,.XMINSTR,.XMMSG)
81 Q
82LATERMSG(XMDUZ,XMK,XMKZA,XMINSTR,XMMSG) ; Later msgs
83 ; XMINSTR("LATER")
84 I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
85 D LATERMSG^XMXPARM(.XMDUZ,.XMK,.XMKZA,.XMINSTR) Q:$D(XMERR)
86 D LATERMSG^XMXMSGS(XMDUZ,.XMK,.XMKZA,.XMINSTR,.XMMSG)
87 Q
88MOVEMSG(XMDUZ,XMK,XMKZA,XMKTO,XMMSG) ; Move msgs from one basket to another
89 ; XMKTO Basket number, or enough of a name for a positive ID.
90 ; Identifies basket to move to
91 I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
92 D MOVEMSG^XMXPARM(.XMDUZ,.XMK,.XMKZA,.XMKTO) Q:$D(XMERR)
93 D MOVEMSG^XMXMSGS(XMDUZ,.XMK,.XMKZA,XMKTO,.XMMSG)
94 Q
95NTOGLMSG(XMDUZ,XMK,XMKZA,XMMSG) ; New Toggle msgs
96 I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
97 D ACTMSGS^XMXPARM(.XMDUZ,.XMK,.XMKZA) Q:$D(XMERR)
98 D NTOGLMSG^XMXMSGS(XMDUZ,.XMK,.XMKZA,.XMMSG)
99 Q
100PRTMSG(XMDUZ,XMK,XMKZA,XMPRTTO,XMINSTR,XMMSG,XMTASK,XMSUBJ,XMTO) ; Print msgs
101 ; XMINSTR("HDR"), "RESPS", "RECIPS", "WHEN"
102 ; XMPRTTO Printer name
103 ; XMSUBJ & XMTO used only if XMPRTTO is a P-MESSAGE device. Even then, they're optional.
104 I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
105 D PRTMSG^XMXPARM(.XMDUZ,.XMK,.XMKZA,.XMPRTTO,.XMINSTR,.XMSUBJ,.XMTO) Q:$D(XMERR)
106 D PRTMSG^XMXMSGS(XMDUZ,.XMK,.XMKZA,XMPRTTO,.XMINSTR,.XMMSG,.XMTASK,.XMSUBJ,.XMTO)
107 Q
108PUTSERV(XMKN,XMZ) ; Put a message in a server basket
109 ; XMKN full server name, including "S."
110 D SERV^XMXPARMB(.XMKN,.XMZ) Q:$D(XMERR)
111 D PUTSERV^XMXMSGS1(XMKN,XMZ)
112 Q
113REPLYMSG(XMDUZ,XMK,XMKZ,XMBODY,XMINSTR,XMZR) ; Reply to msg (Attach reply to original msg)
114 ; XMINSTR("NET REPLY") 1=send over the network; 0=don't (default)
115 ; XMINSTR("NET SUBJ") Network Reply subject (see XMSUBJ)
116 ; Out: XMZR (message number of answer)
117 I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
118 D REPLYMSG^XMXPARM(.XMDUZ,.XMK,.XMKZ,.XMBODY,.XMINSTR) Q:$D(XMERR)
119 D REPLYMSG^XMXREPLY(XMDUZ,.XMK,XMKZ,XMBODY,.XMINSTR,.XMZR)
120 Q
121SENDBULL(XMDUZ,XMBN,XMPARM,XMBODY,XMTO,XMINSTR,XMZ,XMATTACH) ; Send a bulletin (returns XMZ)
122 ; In: User, bulletin name, bulletin parameters, add'l text,
123 ; add'l recipients, send now or later (when?), opt'l BLOB
124 I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
125 D BULLETIN^XMXPARM(.XMDUZ,.XMBN,.XMPARM,.XMBODY,.XMTO,.XMINSTR,.XMATTACH) Q:$D(XMERR)
126 D SENDBULL^XMXBULL(XMDUZ,XMBN,.XMPARM,.XMBODY,.XMTO,.XMINSTR,.XMZ,.XMATTACH)
127 Q
128SENDMSG(XMDUZ,XMSUBJ,XMBODY,XMTO,XMINSTR,XMZ,XMATTACH) ; Send a msg
129 ; In: User, basket (if you are recipient), all msg parts,
130 ; priority?, closed?, (info?,cc?), send now or later (when?),
131 ; (KIDS,MIME,text,PackMan), delete date (if to shared,mail)
132 ; XMINSTR("RCPT BSKT")
133 I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
134 D SENDMSG^XMXPARM(.XMDUZ,.XMSUBJ,.XMBODY,.XMTO,.XMINSTR,.XMATTACH) Q:$D(XMERR)
135 D SENDMSG^XMXSEND(XMDUZ,XMSUBJ,XMBODY,.XMTO,.XMINSTR,.XMZ,.XMATTACH)
136 Q
137TASKBULL(XMDUZ,XMBN,XMPARM,XMBODY,XMTO,XMINSTR,XMTASK,XMATTACH) ; Send a bulletin (Task it - does not return XMZ)
138 ; XMBN Bulletin name (must be full name)
139 ; XMPARM Array of parameters necessary for bulletin
140 ; ARRAY(1)="parameter 1"
141 ; ARRAY(2)="parameter 2"
142 ; XMBODY Additional text to append to the bulletin text
143 ; (must be closed root, passed by value. See WP_ROOT
144 ; definition for WP^DIE(), FM word processing filer)
145 ; XMTO Additional addressee(s)
146 ; XMINSTR("SELF BSKT")
147 ; ***ETC.***
148 ; In: User, bulletin name, bulletin parameters, add'l text,
149 ; add'l recipients, send now or later (when?), opt'l BLOB
150 ; Out: XMTASK (task number)
151 I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
152 D BULLETIN^XMXPARM(.XMDUZ,.XMBN,.XMPARM,.XMBODY,.XMTO,.XMINSTR,.XMATTACH) Q:$D(XMERR)
153 D TASKBULL^XMXBULL(XMDUZ,XMBN,.XMPARM,.XMBODY,.XMTO,.XMINSTR,.XMTASK,.XMATTACH)
154 Q
155TERMMSG(XMDUZ,XMK,XMKZA,XMMSG) ; Terminate msgs
156 I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
157 D ACTMSGS^XMXPARM(.XMDUZ,.XMK,.XMKZA) Q:$D(XMERR)
158 D TERMMSG^XMXMSGS(XMDUZ,.XMK,.XMKZA,.XMMSG)
159 Q
160VAPORMSG(XMDUZ,XMK,XMKZA,XMINSTR,XMMSG) ; Set vaporize date for msgs in a basket
161 ; XMINSTR("VAPOR")
162 I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
163 D VAPORMSG^XMXPARM(.XMDUZ,.XMK,.XMKZA,.XMINSTR) Q:$D(XMERR)
164 D VAPORMSG^XMXMSGS(XMDUZ,.XMK,.XMKZA,.XMINSTR,.XMMSG)
165 Q
166ZAPSERV(XMKN,XMZ) ; Delete a message from a server basket
167 ; XMKN full server name, including "S."
168 D SERV^XMXPARMB(.XMKN,.XMZ) Q:$D(XMERR)
169 D ZAPSERV^XMXMSGS1(XMKN,XMZ)
170 Q
171 ; ***** other actions
172ADDRNSND(XMDUZ,XMZ,XMTO,XMINSTR) ; Build a message part 2 (address and send)
173 ; XMZ (in)
174 I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
175 D ADDRNSND^XMXPARM(.XMDUZ,.XMZ,.XMTO,.XMINSTR) Q:$D(XMERR)
176 D ADDRNSND^XMXSEND(XMDUZ,XMZ,.XMTO,.XMINSTR)
177 Q
178CRE8XMZ(XMSUBJ,XMZ) ; Build a message part 1 (create)
179 ; In: subject
180 ; Out: XMZ
181 D VSUBJ^XMXPARM(.XMSUBJ) Q:$D(XMERR)
182 D CRE8XMZ^XMXSEND(XMSUBJ,.XMZ)
183 Q
184MOVEBODY(XMZ,XMBODY) ; Move text to the message
185 D MOVEBODY^XMXPARM(.XMZ,.XMBODY) Q:$D(XMERR)
186 D MOVEBODY^XMXSEND(XMZ,XMBODY)
187 Q
188TOWHOM(XMDUZ,XMZ,XMTYPE,XMTO,XMINSTR,XMFULL) ; Check ONE msg addressee
189 ; XMFULL Expanded address of the addressee
190 I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV
191 D TOWHOM^XMXPARM(.XMDUZ,.XMZ,.XMTYPE,XMTO,.XMINSTR) Q:$D(XMERR)
192 D TOWHOM^XMXTO(XMDUZ,.XMZ,XMTYPE,XMTO,.XMINSTR,.XMFULL)
193 Q
194VSUBJ(XMSUBJ) ; Validate a subject
195 D VSUBJ^XMXPARM(.XMSUBJ)
196 Q
Note: See TracBrowser for help on using the repository browser.