| 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 | 
|---|