source: GuiMail/trunk/p/CWMAILB.m@ 1138

Last change on this file since 1138 was 1138, checked in by George Lilly, 13 years ago

version 2.1 of GuiMail source code

File size: 4.9 KB
Line 
1CWMAILB ;INDPLS/PLS- DELPHI VISTA MAIL SERVER CON'T ;03-Jun-1999 13:29;PS
2 ;;2.1;CWMA GuiMail;;Jan 06, 1999
3%FORWARD(CWDATA,CWINPUT,CWTEXT) ;
4 ;Input: 1st Piece of CWINPUT holds IEN of Message
5 ; CWTEXT holds recipient list
6 ;
7 N XMZ,XMY,CWLP,CWSDATA,CWSEDATA,CWTMP,CWFILE,CWIEN,CWNAM,XMINSTR,CWMSG
8 N XMKZA
9 S XMZ=$P(CWINPUT,";")
10 S CWDATA(1)="0^^AN ERROR HAS OCCURRED"
11 G:'$G(XMZ) FOREND
12 S CWSDATA=$G(CWTEXT(-9902),"[START DATA]"),CWSEDATA=$G(CWTEXT(-9903),"[END DATA]")
13 S CWLP=-1 D FNDLP(.CWLP,CWSDATA)
14 G:$G(CWLP)="" FOREND
15 F S CWLP=$O(CWTEXT(CWLP)) Q:CWLP="" Q:CWTEXT(CWLP)=CWSEDATA D
16 .S CWTMP=$G(CWTEXT(CWLP)) Q:CWTMP=""
17 .S CWFILE=+$P(CWTMP,"^"),CWIEN=+$P(CWTMP,"^",2),CWNAM=$P(CWTMP,"^",3)
18 .I CWFILE=200 S XMY(CWIEN)=""
19 .E I CWFILE=3.8 S XMY("G."_CWNAM)=""
20 .E S XMY(CWNAM)=""
21 I $D(XMY) D
22 . S XMKZA(XMZ)=""
23 . D FWDMSG^XMXAPI(XMDUZ,"",.XMKZA,.XMY,.XMINSTR,.CWMSG)
24 ;RETURNS <number of messages> forwarded.
25 S CWDATA(1)=+CWMSG_U_U_XMZ ;FORCE TO SUCCESS
26FOREND Q
27 ;
28%TERMIN(CWDATA,CWINPUT) ;TERMINATE A MESSAGE THREAD
29 ;Input: 1st piece = IEN of Message
30 ; 2nd piece = IEN of Mail Basket
31 ;
32 N XMRC,XMZ,XMK,Y,CWMSGNM,CWMSGR
33 S CWDATA(1)="0^^AN ERROR HAS OCCURRED"
34 S XMZ=$P($G(CWINPUT),";"),XMK=$P($G(CWINPUT),";",2)
35 S CWMSGNM(XMZ)=""
36 D TERMMSG^XMXAPI(XMDUZ,"",.CWMSGNM,.CWMSGR)
37 ;RETURNS <number of messages> terminated.
38 S CWDATA(1)=+CWMSGR_U_U ;return 1 for success or 0
39 Q
40FNDLP(CWLP,X) ;FIND A CHARACTER STRING ENTRY
41 F S CWLP=$O(CWTEXT(CWLP)) Q:CWLP="" Q:CWTEXT(CWLP)=X
42 Q
43 ;
44INCNT(CWCNT) ;INCREMENT COUNTER
45 Q CWCNT+1
46 ;
47%CREATE(DATA,INPUT,TEXT) ;CREATE A NEW MESSAGE
48 ;BUILD RETURN CODES FOR ERROR MESSAGING
49 D %CREATE^CWMAIL2
50 Q
51 ;
52%REPLY(CWDATA,CWINPUT,CWTEXT) ; This API uses global array for text
53 ;INPUT - Piece 1 : Message Number
54 ; Piece 2-4 : Not Used
55 ; Piece 5 : Network Reply Flag (0 = no; 1 = yes)
56 ;
57 N CWMSGN,CWRESULT,CWSDATA,CWSEDATA,CWTMP,CWNWCHK,CWDATT
58 N CWMSGT,XMZR,CWLP,XMINSTR
59 S CWMSGN=$P(CWINPUT,";")
60 S CWNWCHK=$P(CWINPUT,";",5)
61 S CWDATA(1)="0^UNDEFINED ERROR"
62 S CWTEXT=$NA(^TMP($J,"CWMAILLOAD"))
63 G:'$G(CWMSGN) REPEND
64 S CWSDATA=$G(@CWTEXT@(-9900),"[START DATA]"),CWSEDATA=$G(@CWTEXT@(-9901),"[END DATA]")
65 S CWLP=-1 D GFNDLP(.CWLP,CWSDATA)
66 G:$G(CWLP)="" REPEND
67 F S CWLP=$O(@CWTEXT@(CWLP)) Q:CWLP="" Q:@CWTEXT@(CWLP)=CWSEDATA D
68 .S ^TMP($J,"CWMAILOUT",CWLP)=$G(@CWTEXT@(CWLP))
69 G:'$D(^TMP($J,"CWMAILOUT")) REPEND
70 S CWMSGT=$NA(^TMP($J,"CWMAILOUT"))
71 S XMINSTR("NET REPLY")=$S(+$G(CWNWCHK):1,1:0)
72 D REPLYMSG^XMXAPI(XMDUZ,"",CWMSGN,CWMSGT,.XMINSTR,.XMZR)
73 I +$G(XMZR)>0 S CWDATA(1)=$S(CWNWCHK:2,1:1)_"^NO ERRORS"_U_CWMSGN ;SUCCESS
74 E S CWDATA(1)="0^"_$G(CWDATA)_U_CWMSGN ;RETURN ERROR MESSAGE
75REPEND K ^TMP($J,"CWMAILLOAD"),^TMP($J,"CWMAILOUT")
76 Q
77GFNDLP(CWLP,X) ;FIND A CHARACTER STRING ENTRY IN GLOBAL
78 F S CWLP=$O(@CWTEXT@(CWLP)) Q:CWLP="" Q:@CWTEXT@(CWLP)=X
79 Q
80 ;
81%ANSWER(CWDATA,CWINPUT,CWTEXT) ; This API uses global array for text to answer a message
82 ;INPUT - CWINPUT : Piece 1 : Message Number
83 ; Piece 2 : Not Used
84 ; Piece 3 : Message Attributes
85 ; Pieces 4-5 : Not Used
86 ; CWTEXT : Holds list of additional recipients
87 ;
88 N CWSDATA,CWSEDATA,CWLP,CWTXTARY,DA,DIE,DR,Y,XMTEXT
89 N CWMSGABS,CWTMP,CWFILE,CWIEN,CWNAM
90 N XMBODY,CWMSGN,XMY,XMZ,XMINSTR
91 S CWMSGN=$P(CWINPUT,";") ;MESSAGE NUMBER
92 I $G(CWMSGN)<1 S CWDATA(1)="0^98- No message number given" G ANSEND
93 S CWDATA(1)="0^99- UNDEFINED ERROR"
94 ;TEXT ARRAY CONTAINS RECIPIENT LIST AND MESSAGE TEXT LOADED FROM BMSGD call
95 ;BUILD XMY ARRAY
96 S CWTEXT=$NA(^TMP($J,"CWMAILLOAD"))
97 S CWSDATA=$G(@CWTEXT@(-9902),"[START XMY]"),CWSEDATA=$G(@CWTEXT@(-9903),"[END XMY]")
98 S CWLP=-1 D GFNDLP^CWMAILB(.CWLP,CWSDATA)
99 ;RETRIEVE RECIPIENTS
100 I $G(CWLP)'="" D
101 . F S CWLP=$O(@CWTEXT@(CWLP)) Q:CWLP="" Q:@CWTEXT@(CWLP)=CWSEDATA D
102 . . S CWTMP=$G(@CWTEXT@(CWLP)) Q:CWTMP=""
103 . . S CWFILE=+$P(CWTMP,"^"),CWIEN=+$P(CWTMP,"^",2),CWNAM=$P(CWTMP,"^",3)
104 . . I CWFILE=200 S XMY(CWIEN)=""
105 . . E I CWFILE=3.8 S XMY("G."_CWNAM)=""
106 . . E S XMY(CWNAM)="" ;treat address as internet address
107 ;BUILD MESSAGE @TEXT@ ARRAY
108 S CWSDATA=$G(@CWTEXT@(-9900),"[START DATA]"),CWSEDATA=$G(@CWTEXT@(-9901),"[END DATA]")
109 S CWLP=-1 D GFNDLP^CWMAILB(.CWLP,CWSDATA)
110 I $G(CWLP)="" S CWDATA(1)="0^3- NO MESSAGE TEXT" G ANSEND
111 F S CWLP=$O(@CWTEXT@(CWLP)) Q:CWLP="" Q:@CWTEXT@(CWLP)=CWSEDATA D
112 .S ^TMP($J,"CWMAILOUT",CWLP)=$G(@CWTEXT@(CWLP))
113 ;I '$D(^TMP($J,"CWMAILOUT")) S CWDATA(1)="0^3- NO MESSAGE TEXT" G ANSEND ;NO MESSAGE @CWTEXT@
114 ;I '$L($P($G(CWINPUT),";")) S CWDATA(1)="0^4- MESSAGE SUBJECT NOT GIVEN" G ANSEND
115 ;E S XMSUBJ=$P($G(CWINPUT),";")
116 ;PROCESS MESSAGE
117 S XMBODY=$NA(^TMP($J,"CWMAILOUT"))
118 S XMINSTR("FLAGS")=$P(CWINPUT,";",3) ;GET MESSAGE ATTRIBUTES
119 D ANSRMSG^XMXAPI(XMDUZ,"",CWMSGN,"",XMBODY,.XMY,.XMINSTR,.XMZ)
120 I $G(XMZ)<1 S CWDATA(1)="0^5- MESSAGE ANSWER FAILED" G ANSEND
121 I +$G(XMZ)>0 S CWDATA(1)="1^^"_$G(XMZ)
122ANSEND K ^TMP($J,"CWMAILOUT"),^TMP($J,"CWMAILLOAD")
123 Q
Note: See TracBrowser for help on using the repository browser.