[613] | 1 | XMA2R ;ISC-SF/GMB- Reply to/Answer a message API ;04/19/2002 12:37
|
---|
| 2 | ;;8.0;MailMan;;Jun 28, 2002
|
---|
| 3 | ; Was (WASH ISC)/CAP
|
---|
| 4 | ;
|
---|
| 5 | ; Entry points (DBIA 1145):
|
---|
| 6 | ; ENT function for non-interactive reply to a message.
|
---|
| 7 | ; Reply is sent to all local recipients of the message.
|
---|
| 8 | ; If message if from a remote sender, the reply is sent to
|
---|
| 9 | ; the remote sender, too.
|
---|
| 10 | ; ENTA function for non-interactive answer to a message
|
---|
| 11 | ENT(XMZ,XMSUBJ,XMTEXT,XMSTRIP,XMDUZ,XMNET) ; Send response to a message
|
---|
| 12 | ;Call as follows:
|
---|
| 13 | ; S var=$$ENT^XMA2R(XMZ,XMSUBJ,.XMTEXT,XMSTRIP,XMDUZ,XMNET)
|
---|
| 14 | ;Where: XMZ = Message being responded to
|
---|
| 15 | ; XMSUBJ = Subject of the response
|
---|
| 16 | ; (ignored, unless message is from a remote sender)
|
---|
| 17 | ; .XMTEXT = Array containing text
|
---|
| 18 | ; XMSTRIP = Characters to be stripped from text
|
---|
| 19 | ; XMDUZ = Sender of response (DUZ or free text)
|
---|
| 20 | ; XMNET = Send reply over the net? (0=no (DEFAULT); 1=yes)
|
---|
| 21 | ; (ignored, unless message is from a remote sender)
|
---|
| 22 | ;OUTPUT: If results okay = internal pointer to response in file 3.9
|
---|
| 23 | ; If bad result, the letter "E" followed by a number,
|
---|
| 24 | ; followed by a space, then a human readable explanation.
|
---|
| 25 | N XMV,XMZR,XMINSTR,XMMG,XMSECURE,XMZREC
|
---|
| 26 | K XMERR,^TMP("XMERR",$J)
|
---|
| 27 | I '$D(^XMB(3.9,XMZ,0)) Q "E5 Message "_XMZ_" does not exist."
|
---|
| 28 | I '$O(^XMB(3.9,XMZ,1,0)) Q "E6 Message "_XMZ_" has no recipients."
|
---|
| 29 | I $D(XMTEXT)<9 Q "E2 No message text !"
|
---|
| 30 | I '$O(XMTEXT(0)) Q "E4 No message text !"
|
---|
| 31 | S XMDUZ=$G(XMDUZ,DUZ)
|
---|
| 32 | I XMDUZ'?.N D Q:$D(XMMG) "E10 "_$P(XMMG,"= ",2)
|
---|
| 33 | . D SETFROM^XMD(.XMDUZ,.XMINSTR)
|
---|
| 34 | D INITAPI^XMVVITAE
|
---|
| 35 | D CRE8XMZ^XMXSEND("R"_XMZ,.XMZR) Q:XMZR<1 $$ERR("E9")
|
---|
| 36 | D MOVETEXT(XMZR,.XMTEXT)
|
---|
| 37 | D CHEKBODY^XMXSEND(XMZR,$G(XMSTRIP))
|
---|
| 38 | D DOREPLY^XMXREPLY(XMDUZ,XMZ,XMZR,.XMINSTR)
|
---|
| 39 | S XMZREC=$G(^XMB(3.9,XMZ,0))
|
---|
| 40 | I $P(XMZREC,U,2)'["@"!'$G(XMNET) Q XMZR
|
---|
| 41 | I '$D(XMSUBJ) Q "E1 No subject !"
|
---|
| 42 | I $L(XMSUBJ)<3!($L(XMSUBJ)>65) Q "E3 Subject too long or short !"
|
---|
| 43 | S XMSUBJ=$$SCRUB^XMXUTIL1(XMSUBJ)
|
---|
| 44 | S:XMSUBJ[U XMSUBJ=$$ENCODEUP^XMXUTIL1(XMSUBJ)
|
---|
| 45 | N XMFROM,XMREPLTO
|
---|
| 46 | D REPLYTO^XMXREPLY(XMZ,.XMFROM,.XMREPLTO)
|
---|
| 47 | D INIT^XMXADDR
|
---|
| 48 | D CHKADDR^XMXADDR(XMDUZ,$$REMADDR^XMXADDR3($G(XMREPLTO,XMFROM)),.XMINSTR) Q:$D(XMERR) $$ERR("E12")
|
---|
| 49 | D NETREPLY^XMXREPLY(XMDUZ,XMZ,XMZR,XMSUBJ,.XMINSTR)
|
---|
| 50 | D CLEANUP^XMXADDR
|
---|
| 51 | Q XMZR
|
---|
| 52 | MOVETEXT(XMZ,XMTEXT,XMAPPEND) ;
|
---|
| 53 | N I,XMLINE
|
---|
| 54 | S XMLINE=$S($G(XMAPPEND):$O(^XMB(3.9,XMZ,2,":"),-1),1:0)
|
---|
| 55 | S I=0
|
---|
| 56 | F S I=$O(XMTEXT(I)) Q:'I D
|
---|
| 57 | . S XMLINE=XMLINE+1
|
---|
| 58 | . S ^XMB(3.9,XMZ,2,XMLINE,0)=$S($D(XMTEXT(I,0)):XMTEXT(I,0),1:XMTEXT(I))
|
---|
| 59 | S ^XMB(3.9,XMZ,2,0)="^3.92A^"_XMLINE_U_XMLINE
|
---|
| 60 | Q
|
---|
| 61 | ENTA(XMZ,XMSUBJ,XMTEXT,XMSTRIP,XMDUZ) ; Send Response Only to Sender of Original Message
|
---|
| 62 | ;Call as follows:
|
---|
| 63 | ; S var=$$ENT^XMA2R(XMZ,XMSUBJ,.XMTEXT,XMSTRIP,XMDUZ)
|
---|
| 64 | ;Where: XMZ = Message being responded to
|
---|
| 65 | ; XMSUBJ = Subject of the response
|
---|
| 66 | ; .XMTEXT = Array containing text
|
---|
| 67 | ; XMSTRIP = Characters to be stripped from text
|
---|
| 68 | ; XMDUZ = Sender of response (DUZ or free text)
|
---|
| 69 | ;
|
---|
| 70 | ;OUTPUT: If results okay = internal pointer to response in file 3.9
|
---|
| 71 | ; If bad result, the letter "E" followed by a number,
|
---|
| 72 | ; followed by a space, then a human readable explanation.
|
---|
| 73 | N XMV,XMZR,XMINSTR,XMMG,XMSECURE,XMZSENDR,XMZREC,XMTO
|
---|
| 74 | K XMERR,^TMP("XMERR",$J)
|
---|
| 75 | I '$D(^XMB(3.9,XMZ,0)) Q "E5 Message "_XMZ_" does not exist."
|
---|
| 76 | I '$D(XMSUBJ) Q "E1 No subject !"
|
---|
| 77 | I $D(XMTEXT)<9 Q "E2 No message text !"
|
---|
| 78 | I $L(XMSUBJ)<3!($L(XMSUBJ)>65) Q "E3 Subject too long or short !"
|
---|
| 79 | I '$O(XMTEXT(0)) Q "E4 No message text !"
|
---|
| 80 | S XMDUZ=$G(XMDUZ,DUZ)
|
---|
| 81 | I XMDUZ'?.N D Q:$D(XMMG) "E10 "_$P(XMMG,"= ",2)
|
---|
| 82 | . D SETFROM^XMD(.XMDUZ,.XMINSTR)
|
---|
| 83 | D INITAPI^XMVVITAE
|
---|
| 84 | S XMZREC=^XMB(3.9,XMZ,0)
|
---|
| 85 | S XMZSENDR=$P(XMZREC,U,2)
|
---|
| 86 | S:XMZSENDR["@" XMZSENDR=$$REPLYTO1^XMXREPLY(XMZ)
|
---|
| 87 | D CRE8XMZ^XMXSEND(XMSUBJ,.XMZR) Q:XMZR<1 $$ERR("E9")
|
---|
| 88 | D COPY^XMXANSER(XMZ,$P(XMZREC,U,1),XMZSENDR,$P(XMZREC,U,3),XMZR)
|
---|
| 89 | D MOVETEXT(XMZR,.XMTEXT,1)
|
---|
| 90 | D NETSIG^XMXEDIT(XMDUZ,XMZR)
|
---|
| 91 | D CHEKBODY^XMXSEND(XMZR,$G(XMSTRIP))
|
---|
| 92 | S XMTO(XMZSENDR)=""
|
---|
| 93 | S XMTO(XMDUZ)=""
|
---|
| 94 | S XMINSTR("ADDR FLAGS")="R" ; No addressing restrictions
|
---|
| 95 | D ADDRNSND^XMXSEND(XMDUZ,XMZR,.XMTO,.XMINSTR)
|
---|
| 96 | Q:$D(XMERR) $$ERR("E11")
|
---|
| 97 | Q XMZR
|
---|
| 98 | ERR(XMER) ;
|
---|
| 99 | S XMER=XMER_" "_^TMP("XMERR",$J,1,"TEXT",1)
|
---|
| 100 | K XMERR,^TMP("XMERR",$J)
|
---|
| 101 | Q XMER
|
---|