| 1 | XMJMOR ;ISC-SF/GMB-Range actions ;12/04/2002  10:10 | 
|---|
| 2 | ;;8.0;MailMan;**9**;Jun 28, 2002 | 
|---|
| 3 | ; Replaces ^XMA0,^XMA01 (ISC-WASH/CAP) | 
|---|
| 4 | DELETE(XMDUZ,XMK) ; Delete a range of messages | 
|---|
| 5 | N XMWHICH,XMMSG,XMABORT | 
|---|
| 6 | S XMABORT=0 | 
|---|
| 7 | I $D(^TMP("XM",$J,".")) D | 
|---|
| 8 | . D SELMSG^XMJMORX1(XMDUZ,0,0,XMK,"XDEL",34302,34303,.XMMSG,.XMABORT) | 
|---|
| 9 | . ;K ^TMP("XM",$J,".") | 
|---|
| 10 | E  D | 
|---|
| 11 | . D WHICH(XMDUZ,XMK,34301,34303.1,.XMWHICH,.XMABORT) Q:XMABORT | 
|---|
| 12 | . D DELMSG^XMXMSGS(XMDUZ,XMK,XMWHICH,.XMMSG) | 
|---|
| 13 | . D:$D(XMERR) ZSHOW^XMJERR | 
|---|
| 14 | Q:XMABORT | 
|---|
| 15 | W:$D(XMMSG) !,XMMSG | 
|---|
| 16 | Q | 
|---|
| 17 | FILTER(XMDUZ,XMK) ; Filter a range of messages | 
|---|
| 18 | N XMWHICH,XMMSG,XMABORT | 
|---|
| 19 | S XMABORT=0 | 
|---|
| 20 | I $D(^TMP("XM",$J,".")) D | 
|---|
| 21 | . N XMKZ | 
|---|
| 22 | . D SELMSG(XMDUZ,XMK,"XFLTR^XMXMSGS2",34306,.XMMSG) | 
|---|
| 23 | . S XMKZ="" | 
|---|
| 24 | . F  S XMKZ=$O(^TMP("XM",$J,".",XMKZ)) Q:'XMKZ  K:'$D(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZ)) ^TMP("XM",$J,".",XMKZ) | 
|---|
| 25 | E  D | 
|---|
| 26 | . D WHICH(XMDUZ,XMK,34305,0,.XMWHICH,.XMABORT) Q:XMABORT | 
|---|
| 27 | . D FLTRMSG^XMXMSGS(XMDUZ,XMK,XMWHICH,.XMMSG) | 
|---|
| 28 | . D:$D(XMERR) ZSHOW^XMJERR | 
|---|
| 29 | Q:XMABORT | 
|---|
| 30 | W:$D(XMMSG) !,XMMSG | 
|---|
| 31 | Q | 
|---|
| 32 | FORWARD(XMDUZ,XMK) ; Forward a range of messages | 
|---|
| 33 | N XMWHICH,XMMSG,XMABORT,XMINSTR | 
|---|
| 34 | S XMABORT=0 | 
|---|
| 35 | I $D(^TMP("XM",$J,".")) D  Q | 
|---|
| 36 | . N XMKZ | 
|---|
| 37 | . D INIT^XMXADDR | 
|---|
| 38 | . S XMKZ=$O(^TMP("XM",$J,".","")) | 
|---|
| 39 | . I '$O(^TMP("XM",$J,".",XMKZ)) D  Q | 
|---|
| 40 | . . D FWDONE(XMDUZ,$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZ,"")),.XMINSTR,.XMABORT) | 
|---|
| 41 | . D TOWHOM^XMJMT(XMDUZ,$$EZBLD^DIALOG(34111),.XMINSTR,"",.XMABORT) Q:XMABORT  ; Forward | 
|---|
| 42 | . D SELMSG(XMDUZ,XMK,"XFWD^XMXMSGS1",34309,.XMMSG) | 
|---|
| 43 | . D CLEANUP^XMXADDR | 
|---|
| 44 | . D:$D(XMERR) ZSHOW^XMJERR | 
|---|
| 45 | . W:$D(XMMSG) !,XMMSG | 
|---|
| 46 | D WHICH(XMDUZ,XMK,34308,0,.XMWHICH,.XMABORT) Q:XMABORT | 
|---|
| 47 | D INIT^XMXADDR | 
|---|
| 48 | I $P(XMWHICH,",",2,99)="",$P(XMWHICH,",",1)=+XMWHICH D  Q | 
|---|
| 49 | . N XMZ | 
|---|
| 50 | . S XMZ=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",+XMWHICH,"")) | 
|---|
| 51 | . I 'XMZ W !,$$EZBLD^DIALOG(34309.3) Q  ; No messages forwarded. | 
|---|
| 52 | . D FWDONE(XMDUZ,XMZ,.XMINSTR,.XMABORT) | 
|---|
| 53 | D TOWHOM^XMJMT(XMDUZ,$$EZBLD^DIALOG(34111),.XMINSTR,"",.XMABORT) Q:XMABORT  ; Forward | 
|---|
| 54 | S XMINSTR("ADDR FLAGS")="I" | 
|---|
| 55 | D FWDMSG^XMXMSGS(XMDUZ,XMK,XMWHICH,"",.XMINSTR,.XMMSG) | 
|---|
| 56 | D:$D(XMERR) ZSHOW^XMJERR | 
|---|
| 57 | W:$D(XMMSG) !,XMMSG | 
|---|
| 58 | Q | 
|---|
| 59 | FWDONE(XMDUZ,XMZ,XMINSTR,XMABORT) ; Forward just one message | 
|---|
| 60 | N XMZREC,XMRESTR | 
|---|
| 61 | S XMZREC=^XMB(3.9,XMZ,0) | 
|---|
| 62 | I '$$FORWARD^XMXSEC(XMDUZ,XMZ,XMZREC) D SHOW^XMJERR Q | 
|---|
| 63 | D GETRESTR^XMXSEC1(XMDUZ,XMZ,XMZREC,"",.XMRESTR) ; Get restrictions on the msg | 
|---|
| 64 | D TOWHOM^XMJMT(XMDUZ,$$EZBLD^DIALOG(34111),.XMINSTR,.XMRESTR,.XMABORT) Q:XMABORT  ; Forward | 
|---|
| 65 | D FWD^XMKP(XMDUZ,XMZ,.XMINSTR) | 
|---|
| 66 | D CLEANUP^XMXADDR | 
|---|
| 67 | W !,$$EZBLD^DIALOG(34309.2) ; Message forwarded. | 
|---|
| 68 | Q | 
|---|
| 69 | LATER(XMDUZ,XMK) ; Later a range of messages | 
|---|
| 70 | N XMWHICH,XMMSG,XMABORT,XMWHEN | 
|---|
| 71 | S XMABORT=0 | 
|---|
| 72 | I $D(^TMP("XM",$J,".")) D | 
|---|
| 73 | . D LTRDATE^XMJMD(.XMWHEN,.XMABORT) Q:XMABORT | 
|---|
| 74 | . D SELMSG(XMDUZ,XMK,"XLATER^XMXMSGS2",34312,.XMMSG) | 
|---|
| 75 | E  D | 
|---|
| 76 | . D WHICH(XMDUZ,XMK,34311,0,.XMWHICH,.XMABORT) Q:XMABORT | 
|---|
| 77 | . D LTRDATE^XMJMD(.XMWHEN,.XMABORT) Q:XMABORT | 
|---|
| 78 | . D LATERMSG^XMXMSGS(XMDUZ,XMK,XMWHICH,XMWHEN,.XMMSG) | 
|---|
| 79 | . D:$D(XMERR) ZSHOW^XMJERR | 
|---|
| 80 | Q:XMABORT | 
|---|
| 81 | W:$D(XMMSG) !,XMMSG | 
|---|
| 82 | Q | 
|---|
| 83 | NEWTOGL(XMDUZ,XMK) ; New Toggle a range of messages | 
|---|
| 84 | N XMWHICH,XMMSG,XMABORT | 
|---|
| 85 | S XMABORT=0 | 
|---|
| 86 | I $D(^TMP("XM",$J,".")) D | 
|---|
| 87 | . N XMKZ | 
|---|
| 88 | . D SELMSG(XMDUZ,XMK,"XNTOGL^XMXMSGS2",34315,.XMMSG) | 
|---|
| 89 | . S XMKZ="" | 
|---|
| 90 | . F  S XMKZ=$O(^TMP("XM",$J,".",XMKZ)) Q:'XMKZ  K:'$D(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZ)) ^TMP("XM",$J,".",XMKZ) | 
|---|
| 91 | E  D | 
|---|
| 92 | . D WHICH(XMDUZ,XMK,34314,0,.XMWHICH,.XMABORT) Q:XMABORT | 
|---|
| 93 | . D NTOGLMSG^XMXMSGS(XMDUZ,XMK,XMWHICH,.XMMSG) | 
|---|
| 94 | . D:$D(XMERR) ZSHOW^XMJERR | 
|---|
| 95 | Q:XMABORT | 
|---|
| 96 | W:$D(XMMSG) !,XMMSG | 
|---|
| 97 | Q | 
|---|
| 98 | PRINT(XMDUZ,XMK,XMPRTHDR) ; Print a range of messages | 
|---|
| 99 | N XMWHICH,XMMSG,XMRECIPS,XMABORT | 
|---|
| 100 | ; XMPRTHDR 1=Print header | 
|---|
| 101 | ;          0=don't (headerless print) | 
|---|
| 102 | ; XMRECIPS 0=Don't print recipients | 
|---|
| 103 | ;          1=Print summary recipients | 
|---|
| 104 | ;          2=Print detail recipients | 
|---|
| 105 | N XMSAVE,XMMSG,XMZLIST,I | 
|---|
| 106 | S XMABORT=0 | 
|---|
| 107 | S:$G(XMPRTHDR)="" XMPRTHDR=1  ; default is to print with headers | 
|---|
| 108 | I $D(^TMP("XM",$J,".")) D | 
|---|
| 109 | . D LISTSEL(XMDUZ,XMK,.XMZLIST) | 
|---|
| 110 | E  D  Q:XMABORT | 
|---|
| 111 | . N XMWHICH | 
|---|
| 112 | . D WHICH(XMDUZ,XMK,$S(XMPRTHDR:34317,1:34317.1),0,.XMWHICH,.XMABORT) Q:XMABORT | 
|---|
| 113 | . D LIST(XMDUZ,XMK,.XMWHICH,.XMZLIST) | 
|---|
| 114 | I '$D(XMZLIST) W !!,$$EZBLD^DIALOG(34319) Q  ; No valid messages selected. | 
|---|
| 115 | I +XMZLIST(1)=XMZLIST(1) D PRTONE(XMDUZ,XMK,XMZLIST(1),XMPRTHDR,.XMABORT) Q | 
|---|
| 116 | D QRECIP^XMJMP(.XMRECIPS,.XMABORT) Q:XMABORT | 
|---|
| 117 | F I="DUZ","XMDUZ","XMV(","XMZLIST(","XMRECIPS","XMPRTHDR" S XMSAVE(I)="" | 
|---|
| 118 | D EN^XUTMDEVQ("PLISTX^XMJMP",$$EZBLD^DIALOG(34501),.XMSAVE) ; MailMan: Print | 
|---|
| 119 | Q:XMABORT!$G(POP) | 
|---|
| 120 | W:$D(XMMSG) !!,XMMSG | 
|---|
| 121 | Q | 
|---|
| 122 | LISTSEL(XMDUZ,XMK,XMZLIST) ; | 
|---|
| 123 | N XMKZ,J,XMZ | 
|---|
| 124 | S (XMKZ,J)=0 | 
|---|
| 125 | F  S XMKZ=$O(^TMP("XM",$J,".",XMKZ)) Q:'XMKZ  D | 
|---|
| 126 | . S XMZ=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZ,"")) Q:'XMZ | 
|---|
| 127 | . I J=0 S J=1,XMZLIST(1)=XMZ Q | 
|---|
| 128 | . I $L(XMZLIST(J))+$L(XMZ)>240 S J=J+1,XMZLIST(J)=XMZ Q | 
|---|
| 129 | . S XMZLIST(J)=XMZLIST(J)_","_XMZ | 
|---|
| 130 | Q | 
|---|
| 131 | LIST(XMDUZ,XMK,XMWHICH,XMZLIST) ; | 
|---|
| 132 | N I,J,XMRANGE,XMKZ,XMZ,XMLAST | 
|---|
| 133 | S J=0 | 
|---|
| 134 | F I=1:1:$L(XMWHICH,",") D | 
|---|
| 135 | . S XMRANGE=$P(XMWHICH,",",I) | 
|---|
| 136 | . Q:'XMRANGE | 
|---|
| 137 | . S XMKZ=$P(XMRANGE,"-",1)-.1 | 
|---|
| 138 | . S XMLAST=$S(XMRANGE["-":$P(XMRANGE,"-",2),1:XMRANGE) | 
|---|
| 139 | . F  S XMKZ=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZ)) Q:'XMKZ!(XMKZ>XMLAST)  D | 
|---|
| 140 | . . S XMZ=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZ,"")) Q:'XMZ | 
|---|
| 141 | . . I J=0 S J=1,XMZLIST(1)=XMZ Q | 
|---|
| 142 | . . I $L(XMZLIST(J))+$L(XMZ)>240 S J=J+1,XMZLIST(J)=XMZ Q | 
|---|
| 143 | . . S XMZLIST(J)=XMZLIST(J)_","_XMZ | 
|---|
| 144 | Q | 
|---|
| 145 | PRTONE(XMDUZ,XMK,XMZ,XMPRTHDR,XMABORT) ; | 
|---|
| 146 | D PONE^XMJMP(XMDUZ,XMK,XMZ,XMPRTHDR,.XMABORT) | 
|---|
| 147 | W !!,$$EZBLD^DIALOG($S(XMABORT:34318.4,1:34318.1)) ; Message (not) printed. | 
|---|
| 148 | Q | 
|---|
| 149 | SAVE(XMDUZ,XMK) ; Save a range of messages to another basket | 
|---|
| 150 | N XMWHICH,XMMSG,XMABORT,XMKTO,XMDIC | 
|---|
| 151 | S XMABORT=0 | 
|---|
| 152 | S XMDIC("B")="@"  ; no default basket | 
|---|
| 153 | I $D(^TMP("XM",$J,".")) D | 
|---|
| 154 | . D SELBSKT^XMJBU(XMDUZ,$$EZBLD^DIALOG(34325),"L",.XMDIC,.XMKTO) ; Save messages to which basket? | 
|---|
| 155 | . I XMKTO=U S XMMSG=$$EZBLD^DIALOG(34324.3) Q  ; No messages saved. | 
|---|
| 156 | . I XMKTO=XMK S XMMSG=$$EZBLD^DIALOG(34326) Q  ; Same basket.  No messages saved. | 
|---|
| 157 | . D SELMSG(XMDUZ,XMK,"XMOVE^XMXMSGS2",34324,.XMMSG) | 
|---|
| 158 | . K ^TMP("XM",$J,".") | 
|---|
| 159 | E  D | 
|---|
| 160 | . D WHICH(XMDUZ,XMK,34323,0,.XMWHICH,.XMABORT) Q:XMABORT | 
|---|
| 161 | . D SELBSKT^XMJBU(XMDUZ,$$EZBLD^DIALOG(34325),"L",.XMDIC,.XMKTO) ; Save messages to which basket? | 
|---|
| 162 | . I XMKTO=U S XMMSG=$$EZBLD^DIALOG(34324.3) Q  ; No messages saved. | 
|---|
| 163 | . I XMKTO=XMK S XMMSG=$$EZBLD^DIALOG(34326) Q  ; Same basket.  No messages saved. | 
|---|
| 164 | . D MOVEMSG^XMXMSGS(XMDUZ,XMK,XMWHICH,XMKTO,.XMMSG) | 
|---|
| 165 | . D:$D(XMERR) ZSHOW^XMJERR | 
|---|
| 166 | Q:XMABORT | 
|---|
| 167 | W:$D(XMMSG) !,XMMSG | 
|---|
| 168 | Q | 
|---|
| 169 | TERM(XMDUZ,XMK) ; Terminate a range of messages | 
|---|
| 170 | N XMWHICH,XMMSG,XMABORT | 
|---|
| 171 | S XMABORT=0 | 
|---|
| 172 | I $D(^TMP("XM",$J,".")) D | 
|---|
| 173 | . D SELMSG^XMJMORX1(XMDUZ,0,0,XMK,"XTERM",34329,34330,.XMMSG,.XMABORT) | 
|---|
| 174 | . ;K ^TMP("XM",$J,".") | 
|---|
| 175 | E  D | 
|---|
| 176 | . D WHICH(XMDUZ,XMK,34328,34330.1,.XMWHICH,.XMABORT) Q:XMABORT | 
|---|
| 177 | . D TERMMSG^XMXMSGS(XMDUZ,XMK,XMWHICH,.XMMSG) | 
|---|
| 178 | . D:$D(XMERR) ZSHOW^XMJERR | 
|---|
| 179 | Q:XMABORT | 
|---|
| 180 | Q:'$D(XMMSG) | 
|---|
| 181 | W !,XMMSG | 
|---|
| 182 | I XMMSG W !,$$EZBLD^DIALOG($S(XMK<1:34331.1,1:34331)) ; You won't see future responses.  (In WASTE basket) | 
|---|
| 183 | Q | 
|---|
| 184 | VAPOR(XMDUZ,XMK) ; Set Vaporize date for a range of messages | 
|---|
| 185 | N XMWHICH,XMMSG,XMABORT,XMWHEN | 
|---|
| 186 | S XMABORT=0 | 
|---|
| 187 | I $D(^TMP("XM",$J,".")) D | 
|---|
| 188 | . D VAPRDATE(.XMWHEN,.XMABORT) Q:XMABORT | 
|---|
| 189 | . D SELMSG^XMJMORX1(XMDUZ,0,0,XMK,"XVAPOR^XMXMSGS2",$S(XMWHEN="@":34337.2,1:34337),$S(XMWHEN="@":34338.2,1:34338),.XMMSG,.XMABORT) | 
|---|
| 190 | E  D | 
|---|
| 191 | . D VAPRDATE(.XMWHEN,.XMABORT) Q:XMABORT | 
|---|
| 192 | . D WHICH(XMDUZ,XMK,$S(XMWHEN="@":34336.1,1:34336),$S(XMWHEN="@":34338.3,1:34338.1),.XMWHICH,.XMABORT) Q:XMABORT | 
|---|
| 193 | . D VAPORMSG^XMXMSGS(XMDUZ,XMK,XMWHICH,XMWHEN,.XMMSG) | 
|---|
| 194 | . D:$D(XMERR) ZSHOW^XMJERR | 
|---|
| 195 | Q:XMABORT | 
|---|
| 196 | W:$D(XMMSG) !,XMMSG | 
|---|
| 197 | Q | 
|---|
| 198 | VAPRDATE(XMWHEN,XMABORT) ; | 
|---|
| 199 | N DIR,X,Y | 
|---|
| 200 | S DIR(0)="DO^NOW::EFT" | 
|---|
| 201 | D BLD^DIALOG(37317.1,"","","DIR(""A"")") | 
|---|
| 202 | D BLD^DIALOG(34339,"","","DIR(""?"")") | 
|---|
| 203 | D ^DIR | 
|---|
| 204 | I X="@" S XMWHEN="@" Q | 
|---|
| 205 | I $D(DIRUT) S XMABORT=1 Q | 
|---|
| 206 | S XMWHEN=Y | 
|---|
| 207 | Q | 
|---|
| 208 | XMTPRI(XMDUZ,XMK) ; Toggle transmission priority for a range of msgs | 
|---|
| 209 | ; XMDUZ better be .5 and XMK better be > 999! | 
|---|
| 210 | N XMTPRI,XMWHICH,XMMSG,XMABORT | 
|---|
| 211 | S XMABORT=0 | 
|---|
| 212 | I $D(^TMP("XM",$J,".")) D | 
|---|
| 213 | . D ASKPRI^XMJMORX(.XMTPRI,.XMABORT) Q:XMABORT | 
|---|
| 214 | . D SELMSG^XMJMORX1(XMDUZ,0,0,XMK,"XXP^XMXMSGS1",34334,34335,.XMMSG,.XMABORT) | 
|---|
| 215 | E  D | 
|---|
| 216 | . D WHICH(XMDUZ,XMK,34333,34335.1,.XMWHICH,.XMABORT) Q:XMABORT | 
|---|
| 217 | . D ASKPRI^XMJMORX(.XMTPRI,.XMABORT) Q:XMABORT | 
|---|
| 218 | . D XPMSG^XMXMSGS(XMDUZ,XMK,XMWHICH,XMTPRI,.XMMSG) | 
|---|
| 219 | . D:$D(XMERR) ZSHOW^XMJERR | 
|---|
| 220 | Q:XMABORT | 
|---|
| 221 | W:$D(XMMSG) !,XMMSG | 
|---|
| 222 | Q | 
|---|
| 223 | WHICH(XMDUZ,XMK,XMPROMPT,XMCONFRM,XMWHICH,XMABORT) ; | 
|---|
| 224 | N DIR,X,Y,XMHI,XMLO | 
|---|
| 225 | S XMLO=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C","")) | 
|---|
| 226 | S XMHI=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",""),-1) | 
|---|
| 227 | S DIR("A")=$$EZBLD^DIALOG(XMPROMPT) ; ... which messages? | 
|---|
| 228 | S DIR("??")="XM-U-M-CHOOSE RANGE" | 
|---|
| 229 | S DIR(0)="LC^"_XMLO_":"_XMHI | 
|---|
| 230 | D ^DIR I $D(DIRUT) S XMABORT=1 Q | 
|---|
| 231 | S XMWHICH=Y | 
|---|
| 232 | I XMCONFRM D CONFIRM(XMCONFRM,.XMABORT) | 
|---|
| 233 | Q | 
|---|
| 234 | CONFIRM(XMCONFRM,XMABORT) ; | 
|---|
| 235 | N DIR | 
|---|
| 236 | D BLD^DIALOG(XMCONFRM,"","","DIR(""A"")") ; Do you really want to ... these messages? | 
|---|
| 237 | S DIR("B")=$$EZBLD^DIALOG(39053) ; No | 
|---|
| 238 | S DIR(0)="Y" | 
|---|
| 239 | D ^DIR I $D(DIRUT)!'Y S XMABORT=1 | 
|---|
| 240 | Q | 
|---|
| 241 | POSTPRIV() ; | 
|---|
| 242 | Q:$$POSTPRIV^XMXSEC 1 | 
|---|
| 243 | D SHOW^XMJERR | 
|---|
| 244 | Q 0 | 
|---|
| 245 | SELMSG(XMDUZ,XMK,XMRTN,XMSUM,XMMSG) ; | 
|---|
| 246 | N XMCNT,XMKZ,XMZ,XMKALL | 
|---|
| 247 | S (XMCNT,XMKZ)=0 | 
|---|
| 248 | F  S XMKZ=$O(^TMP("XM",$J,".",XMKZ)) Q:'XMKZ  D | 
|---|
| 249 | . S XMZ=$O(^XMB(3.7,XMDUZ,2,XMK,1,"C",XMKZ,"")) Q:'XMZ | 
|---|
| 250 | . D @XMRTN | 
|---|
| 251 | S XMMSG=$$EZBLD^DIALOG($S(XMCNT=1:XMSUM+.1,1:XMSUM),XMCNT) | 
|---|
| 252 | D INCRDECR^XMXMSGS(XMDUZ,.XMCNT) | 
|---|
| 253 | Q | 
|---|