[613] | 1 | XMA21 ;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 | ;
|
---|
| 15 | CHK ; 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
|
---|
| 22 | DX ;
|
---|
| 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
|
---|
| 30 | DES ; 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
|
---|
| 38 | DEST ; 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
|
---|
| 47 | TO(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
|
---|
| 74 | SW ;
|
---|
| 75 | N %X,%Y
|
---|
| 76 | S %X="^TMP(""XMY"","_$J_",",%Y="XMY(" D %XY^%RCR
|
---|
| 77 | Q
|
---|
| 78 | INST ; Non-interactive addressing (Just fall thru to WHO)
|
---|
| 79 | WHO ; 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
|
---|