source: FOIAVistA/trunk/r/MAILMAN-XM/XMA21.m@ 1328

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

initial load of FOIAVistA 6/30/08 version

File size: 3.9 KB
Line 
1XMA21 ;ISC-SF/GMB-Address lookup APIs ;07/17/2003 13:03
2 ;;8.0;MailMan;**20**;Jun 28, 2002
3 ; Was (WASH ISC)/CAP
4 ;
5 ; Entry points (DBIA 10067):
6 ; CHK Check to see if a user is a member of a mail group.
7 ; DES Interactive addressing. Set next default recipient.
8 ; DEST Interactive addressing. Set first default recipient.
9 ; INST Non-interactive addressing. (Same as WHO)
10 ; WHO Non-interactive addressing.
11 ;
12 ; Entry points used by MailMan options (not covered by DBIA):
13 ; DX XMDXNAME - Test name resolution (interactive)
14 ;
15CHK ; Check to see if a user is a member of a mail group.
16 ; Sets $T if member.
17 ; Needs:
18 ; XMDUZ DUZ of the user
19 ; Y IEN of the mail group
20 I $D(^XMB(3.8,Y,1,"B",XMDUZ)) Q
21 Q
22DX ;
23 N XMINSTR,XMV,XMABORT
24 D INITAPI^XMVVITAE
25 S XMABORT=0
26 D INIT^XMXADDR
27 D TOWHOM^XMJMT(XMDUZ,$$EZBLD^DIALOG(34110),.XMINSTR,"",XMABORT) ;Send
28 D CLEANUP^XMXADDR
29 Q
30DES ; Interactive addressing. Set next default recipient.
31 ; XMY is not killed upon entry.
32 ; Needs:
33 ; XMMG Next default recipient
34 ; See entry point TO for other needs and outputs associated with
35 ; this entry point.
36 D TO(.XMMG)
37 Q
38DEST ; Interactive addressing. Set first default recipient.
39 ; XMY is killed upon entry.
40 ; Needs:
41 ; XMDUN First default recipient
42 ; See entry point TO for other needs and outputs associated with
43 ; this entry point.
44 K XMY
45 D TO(XMDUN)
46 Q
47TO(XMTO) ;
48 ; Entry points DES and DEST also Need:
49 ; XMDUZ DUZ of user
50 ; XMDF if $D(XMDF) then do not restrict addressees
51 ; Output:
52 ; XMY( Array of addressees: XMY(addressee)=""
53 ; XMOUT if $D(XMOUT) user aborted addressing
54 ; X if X="^" user aborted addressing, else X=""
55 N XMV,XMINSTR,XMABORT,XMDUN
56 S XMABORT=0
57 I XMDUZ'>0 N XMDUZ S XMDUZ=DUZ
58 D INITAPI^XMVVITAE
59 I $D(XMDF) S XMINSTR("ADDR FLAGS")="R" ; No addressee restrictions
60 I $D(XMTO) S XMINSTR("TO PROMPT")=XMTO
61 D INIT^XMXADDR
62 D TOWHOM^XMJMT(XMDUZ,$$EZBLD^DIALOG(34110),.XMINSTR,"",.XMABORT) ;Send
63 I XMABORT D Q
64 . S XMOUT=1,X=U
65 . D CLEANUP^XMXADDR
66 K XMOUT
67 S X=""
68 D SW
69 I $D(XMINSTR("SELF BSKT")) S XMY(XMDUZ,0)=XMINSTR("SELF BSKT")
70 I $D(XMINSTR("SHARE BSKT")) S XMY(.6,0)=XMINSTR("SHARE BSKT")
71 I $D(XMINSTR("SHARE DATE")) S XMY(.6,"D")=XMINSTR("SHARE DATE")
72 D CLEANUP^XMXADDR
73 Q
74SW ;
75 N %X,%Y
76 S %X="^TMP(""XMY"","_$J_",",%Y="XMY(" D %XY^%RCR
77 Q
78INST ; Non-interactive addressing (Just fall thru to WHO)
79WHO ; Non-interactive addressing
80 ; Needs:
81 ; XMDUZ user's DUZ
82 ; X local or remote address
83 ; (-X will remove address)
84 ; XMDF if $D(XMDF) then do not restrict addressees
85 ; XMLOC if $D(XMLOC), forces output of XMMG error message if error
86 ; Output:
87 ; XMY address: XMY(address)=""
88 ; Y if Y=-1, then lookup has failed
89 ; = <DUZ^full name> if local addressee
90 ; = <domain ien^domain name> if remote addressee
91 ; XMMG contains error message if Y=-1
92 ; = "" if local addressee
93 ; = via domain message if remote addressee
94 N XMV,XMINSTR,XMSTRIKE
95 I XMDUZ'>0 N XMDUZ S XMDUZ=DUZ
96 D INITAPI^XMVVITAE
97 I $D(XMDF) S XMINSTR("ADDR FLAGS")="R" ; No addressee restrictions
98 D INIT^XMXADDR
99 I $E(X)="-" S XMSTRIKE=1,X=$E(X,2,99)
100 K XMERR,^TMP("XMERR",$J)
101 D CHKADDR^XMXADDR(XMDUZ,X,.XMINSTR,"",.Y)
102 I $D(XMERR) D Q
103 . S XMMG=^TMP("XMERR",$J,1,"TEXT",1)
104 . K XMERR,^TMP("XMERR",$J)
105 . S Y=-1
106 . I $D(XMLOC) W " ",XMMG
107 . D CLEANUP^XMXADDR
108 I $G(XMSTRIKE) D Q
109 . N XMADDR
110 . S X=Y
111 . S XMADDR=""
112 . F S XMADDR=$O(^TMP("XMY",$J,XMADDR)) Q:XMADDR="" K XMY(XMADDR)
113 . S XMMG=""
114 . D CLEANUP^XMXADDR
115 I Y["@" D Q
116 . N XMIEN
117 . S XMIEN=^TMP("XMY",$J,Y) ; IEN
118 . S XMY(Y)=XMIEN
119 . S X=$P(Y,"@",2)
120 . S Y=XMIEN_U_$P(^DIC(4.2,XMIEN,0),U,1)
121 . S XMMG=$$EZBLD^DIALOG(39101,$P(Y,U,2)) ; via |1|
122 . D CLEANUP^XMXADDR
123 D SW
124 I $E(X,1,2)="G." D
125 . S X=$E(Y,3,99)
126 . S Y=$O(^XMB(3.8,"B",X,0))_U_X ; ien^mail group name
127 E I $L(X>2),".D.H.S."[("."_$E(X,1,2)) D
128 . S X=$E(Y,3,99)
129 . S Y=XMY(Y)_U_X ; ien^full name
130 E D
131 . S X=Y ; full name
132 . S Y=$O(XMY(""))_U_Y ; duz^full name
133 S XMMG=""
134 D CLEANUP^XMXADDR
135 Q
Note: See TracBrowser for help on using the repository browser.