[613] | 1 | XMXMSGS1 ;ISC-SF/GMB-Message APIs (cont.) ;04/19/2002 11:58
|
---|
| 2 | ;;8.0;MailMan;;Jun 28, 2002
|
---|
| 3 | FWD(XMDUZ,XMZ,XMINSTR,XMCNT) ;
|
---|
| 4 | XFWD ; (Need XMDUZ, XMZ, XMINSTR. XMK not needed.)
|
---|
| 5 | ; XMZREC Zero node of the msg record
|
---|
| 6 | N XMZREC,%X,%Y,XMRESTR
|
---|
| 7 | S XMZREC=^XMB(3.9,XMZ,0)
|
---|
| 8 | Q:'$$FORWARD^XMXSEC(XMDUZ,XMZ,XMZREC)
|
---|
| 9 | D GETRESTR^XMXSEC1(XMDUZ,XMZ,XMZREC,.XMINSTR,.XMRESTR)
|
---|
| 10 | D CHKSHARE(XMDUZ,XMZ,.XMRESTR)
|
---|
| 11 | I $G(XMINSTR("ADDR FLAGS"))'["R" D CHKRESTR(XMDUZ,XMZ,.XMRESTR)
|
---|
| 12 | D FWDIT(XMDUZ,XMZ,.XMINSTR,.XMCNT)
|
---|
| 13 | I $D(^TMP("XM",$J,"SAVE")) D RESTADDR
|
---|
| 14 | Q
|
---|
| 15 | CHKSHARE(XMDUZ,XMZ,XMRESTR) ;
|
---|
| 16 | I $G(XMRESTR("FLAGS"))["C",$D(^TMP("XMY",$J,.6)) D
|
---|
| 17 | . D ERRSET^XMXUTIL(39200,XMZ,XMZ)
|
---|
| 18 | . ;Confidential messages may not be forwarded to SHARED,MAIL.
|
---|
| 19 | . D SAVEADDR
|
---|
| 20 | . D CHKADDR^XMXADDR(XMDUZ,"-.6")
|
---|
| 21 | I $G(XMRESTR("FLAGS"))["X",$D(^TMP("XMY",$J,.6)) D
|
---|
| 22 | . D ERRSET^XMXUTIL(39201,XMZ,XMZ)
|
---|
| 23 | . ;Message |1| is closed. SHARED,MAIL removed as recipient.
|
---|
| 24 | . ;Closed messages may not be forwarded to SHARED,MAIL.
|
---|
| 25 | . D SAVEADDR
|
---|
| 26 | . D CHKADDR^XMXADDR(XMDUZ,"-.6")
|
---|
| 27 | Q
|
---|
| 28 | CHKRESTR(XMDUZ,XMZ,XMRESTR) ;
|
---|
| 29 | N XMTO
|
---|
| 30 | I $D(XMRESTR("NOBCAST")) D
|
---|
| 31 | . ; The user is not allowed to forward this message to broadcast
|
---|
| 32 | . ; because it has replies, and users with autoforward would not
|
---|
| 33 | . ; see the replies. Search for any broadcasts and delete them.
|
---|
| 34 | . N XMOK
|
---|
| 35 | . S XMTO="",XMOK=1
|
---|
| 36 | . F S XMTO=$O(^TMP("XMY0",$J,XMTO)) Q:XMTO="" D
|
---|
| 37 | . . Q:$E(XMTO)'="*"
|
---|
| 38 | . . S XMOK=0
|
---|
| 39 | . . I '$D(^TMP("XM",$J,"SAVE")) D SAVEADDR
|
---|
| 40 | . . D CHKADDR^XMXADDR(XMDUZ,"-"_XMTO)
|
---|
| 41 | . Q:XMOK
|
---|
| 42 | . D ERRSET^XMXUTIL(39205,XMZ,XMZ)
|
---|
| 43 | I $D(XMRESTR("NOFPG")) D
|
---|
| 44 | . ; The user is not allowed to forward this priority message to groups
|
---|
| 45 | . ; because s/he is not the originator and does not possess the proper
|
---|
| 46 | . ; security key. Search for any groups and delete them.
|
---|
| 47 | . N XMOK
|
---|
| 48 | . S XMTO="",XMOK=1
|
---|
| 49 | . F S XMTO=$O(^TMP("XMY0",$J,XMTO)) Q:XMTO="" D
|
---|
| 50 | . . Q:$E(XMTO,1,2)'="G."
|
---|
| 51 | . . S XMOK=0
|
---|
| 52 | . . I '$D(^TMP("XM",$J,"SAVE")) D SAVEADDR
|
---|
| 53 | . . D CHKADDR^XMXADDR(XMDUZ,"-"_XMTO)
|
---|
| 54 | . Q:XMOK
|
---|
| 55 | . D ERRSET^XMXUTIL(39202,XMZ,XMZ)
|
---|
| 56 | . ;Priority message |1| not forwarded.
|
---|
| 57 | . ;Only message originator or XM GROUP PRIORITY key holders
|
---|
| 58 | . ;may forward priority messages to groups.
|
---|
| 59 | I $D(XMRESTR("NONET")) D
|
---|
| 60 | . ; The user is not allowed to forward this message to remote sites
|
---|
| 61 | . ; because it exceeds the site maximum number of lines and
|
---|
| 62 | . ; s/he does not possess the proper security key.
|
---|
| 63 | . ; Search for any remote addressees and delete them.
|
---|
| 64 | . N XMOK
|
---|
| 65 | . S XMTO="",XMOK=1
|
---|
| 66 | . F S XMTO=$O(^TMP("XMY0",$J,XMTO)) Q:XMTO="" D
|
---|
| 67 | . . Q:XMTO'["@"
|
---|
| 68 | . . S XMOK=0
|
---|
| 69 | . . I '$D(^TMP("XM",$J,"SAVE")) D SAVEADDR
|
---|
| 70 | . . D CHKADDR^XMXADDR(XMDUZ,"-"_XMTO)
|
---|
| 71 | . Q:XMOK
|
---|
| 72 | . N XMPARM S XMPARM(1)=XMZ,XMPARM(2)=XMRESTR("NONET")
|
---|
| 73 | . D ERRSET^XMXUTIL(39203,.XMPARM,XMZ)
|
---|
| 74 | . ;Message |1| not forwarded to remote recipients.
|
---|
| 75 | . ;Only XMMGR key holders may forward to remotes sites
|
---|
| 76 | . ;messages which exceed site maximum of |2| lines.
|
---|
| 77 | Q
|
---|
| 78 | SAVEADDR ; Save addressees
|
---|
| 79 | S %X="^TMP(""XMY"",$J,",%Y="^TMP(""XM"",$J,""SAVE"",""XMY""," D %XY^%RCR
|
---|
| 80 | S %X="^TMP(""XMY0"",$J,",%Y="^TMP(""XM"",$J,""SAVE"",""XMY0""," D %XY^%RCR
|
---|
| 81 | Q
|
---|
| 82 | RESTADDR ; Restore addressees
|
---|
| 83 | S %X="^TMP(""XM"",$J,""SAVE"",""XMY"",",%Y="^TMP(""XMY"",$J," D %XY^%RCR
|
---|
| 84 | S %X="^TMP(""XM"",$J,""SAVE"",""XMY0"",",%Y="^TMP(""XMY0"",$J," D %XY^%RCR
|
---|
| 85 | K ^TMP("XM",$J,"SAVE")
|
---|
| 86 | Q
|
---|
| 87 | FWDONE(XMDUZ,XMZ,XMTO,XMINSTR,XMCNT) ; Forward one message
|
---|
| 88 | XFWDONE ;
|
---|
| 89 | N XMZREC,XMRESTR
|
---|
| 90 | S XMZREC=^XMB(3.9,XMZ,0)
|
---|
| 91 | Q:'$$FORWARD^XMXSEC(XMDUZ,XMZ,XMZREC)
|
---|
| 92 | D:$G(XMINSTR("ADDR FLAGS"))'["I" INIT^XMXADDR
|
---|
| 93 | D:$G(XMINSTR("ADDR FLAGS"))'["R" GETRESTR^XMXSEC1(XMDUZ,XMZ,XMZREC,.XMRESTR)
|
---|
| 94 | D CHKADDR^XMXADDR(XMDUZ,.XMTO,.XMINSTR,.XMRESTR)
|
---|
| 95 | D FWDIT(XMDUZ,XMZ,.XMINSTR,.XMCNT)
|
---|
| 96 | Q
|
---|
| 97 | FWDIT(XMDUZ,XMZ,XMINSTR,XMCNT) ;
|
---|
| 98 | I $$GOTADDR^XMXADDR D Q
|
---|
| 99 | . D FWD^XMKP(XMDUZ,XMZ,.XMINSTR)
|
---|
| 100 | . S:$D(XMCNT) XMCNT=XMCNT+1
|
---|
| 101 | ;Message |1| has no addressees. Not forwarded.
|
---|
| 102 | D ERRSET^XMXUTIL(39204,XMZ,XMZ)
|
---|
| 103 | Q
|
---|
| 104 | PRT(XMDUZ,XMZ) ; Print
|
---|
| 105 | XPRT ;
|
---|
| 106 | S ^TMP("XM",$J,"XMZ",XMZ)=""
|
---|
| 107 | S XMCNT=$G(XMCNT)+1
|
---|
| 108 | Q
|
---|
| 109 | XP(XMDUZ,XMK,XMZ,XMTPRI,XMCNT) ; Toggle Transmission Priority
|
---|
| 110 | XXP ;
|
---|
| 111 | S:'$G(XMK) XMK=$O(^XMB(3.7,"M",XMZ,XMDUZ,""))
|
---|
| 112 | I XMDUZ'=.5!(XMK'>999) D Q ;Transmit priority toggle valid only
|
---|
| 113 | . D ERRSET^XMXUTIL(37219.5) ;for Postmaster transmission queues.
|
---|
| 114 | Q:XMTPRI=$P(^XMB(3.7,XMDUZ,2,XMK,1,XMZ,0),U,6)
|
---|
| 115 | N XMFDA
|
---|
| 116 | S XMFDA(3.702,XMZ_","_XMK_","_XMDUZ_",",6)=XMTPRI
|
---|
| 117 | D FILE^DIE("","XMFDA")
|
---|
| 118 | S:$D(XMCNT) XMCNT=XMCNT+1
|
---|
| 119 | Q
|
---|
| 120 | PUTSERV(XMKN,XMZ) ; Replaces SETSB^XMA1C (ISC-WASH/ACC/IHS)
|
---|
| 121 | ; Put message in Postmaster's basket for this server.
|
---|
| 122 | ; Create server basket as needed.
|
---|
| 123 | ; XMKN Full server name (with S.)
|
---|
| 124 | ; XMZ Message number
|
---|
| 125 | ;
|
---|
| 126 | ; Messages to server are saved in a mail basket of the
|
---|
| 127 | ; Postmaster much like transmission queues. But while
|
---|
| 128 | ; Domain queues point at the domain file (domain#+1000),
|
---|
| 129 | ; Server baskets point at the option file (option#+10000).
|
---|
| 130 | N XMK
|
---|
| 131 | S XMK=$O(^DIC(19,"B",$E(XMKN,3,999),0)) Q:'XMK
|
---|
| 132 | S XMK=XMK+10000
|
---|
| 133 | D PUTMSG^XMXMSGS2(.5,XMK,XMKN,XMZ)
|
---|
| 134 | Q
|
---|
| 135 | ZAPSERV(XMKN,XMZ) ; Replaces REMSBMSG^XMA1C (ISC-WASH/ACC/IHS)
|
---|
| 136 | ; Remove message from server basket
|
---|
| 137 | ; XMKN Full server name (with S.)
|
---|
| 138 | ; XMZ Message number
|
---|
| 139 | N XMK
|
---|
| 140 | S XMK=$O(^XMB(3.7,.5,2,"B",XMKN,0)) Q:'XMK Q:XMK'>10000
|
---|
| 141 | D ZAPIT^XMXMSGS2(.5,XMK,XMZ)
|
---|
| 142 | Q
|
---|