| 1 | XMXADDR1 ;ISC-SF/GMB-XMXADDR (cont.) ;05/21/2002  07:00
 | 
|---|
| 2 |  ;;8.0;MailMan;;Jun 28, 2002
 | 
|---|
| 3 | PERSON(XMDUZ,XMADDR,XMSTRIKE,XMPREFIX,XMLATER,XMG,XMFULL) ;
 | 
|---|
| 4 |  N XMSCREEN,XMNOTFND
 | 
|---|
| 5 |  S XMADDR=$$UP^XLFSTR(XMADDR)
 | 
|---|
| 6 |  S XMSCREEN="I $L($P(^(0),U,3)),$D(^XMB(3.7,+Y,2))"  ; User must have an access code & mailbox
 | 
|---|
| 7 |  ; "B^BB^C^D" = name^alias^initial^nickname            
 | 
|---|
| 8 |  S XMG=$$FIND1^DIC(200,"","O",$S(+XMADDR=XMADDR:"`"_XMADDR,1:XMADDR),"B^BB^C^D",XMSCREEN)
 | 
|---|
| 9 |  I XMG D  Q
 | 
|---|
| 10 |  . S XMFULL=$$NAME^XMXUTIL(XMG)
 | 
|---|
| 11 |  . Q:XMG'=.6
 | 
|---|
| 12 |  . D CHKSHARE
 | 
|---|
| 13 |  . S:XMLATER XMLATER="?"  ; Can't 'later' to SHARED,MAIL
 | 
|---|
| 14 |  S XMNOTFND=$S($D(DIERR):39018,1:39019) ;Addressee ambiguous. / Addressee not found.
 | 
|---|
| 15 |  I +XMADDR=XMADDR D  Q
 | 
|---|
| 16 |  . D SETERR^XMXADDR4(0,"",XMNOTFND)
 | 
|---|
| 17 |  ; Not found in NEW PERSON file, see if there's a MAIL NAME
 | 
|---|
| 18 |  I $D(^XMB(3.7,"C")) D  Q:XMG
 | 
|---|
| 19 |  . S XMSCREEN="I $L($P(^VA(200,+Y,0),U,3))"  ; User must have an access code
 | 
|---|
| 20 |  . S XMG=$$FIND1^DIC(3.7,"","OQ",XMADDR,"C",XMSCREEN) Q:'XMG
 | 
|---|
| 21 |  . S XMFULL=$$NAME^XMXUTIL(XMG)
 | 
|---|
| 22 |  ; Not a Mail Name, see if it's in the Remote User Directory.
 | 
|---|
| 23 |  N XMINDEX,I,XMG
 | 
|---|
| 24 |  S XMINDEX="" F I="B","F" S:$D(^DIC(4.2997,I)) XMINDEX=XMINDEX_U_I
 | 
|---|
| 25 |  I XMINDEX'="" D  Q:XMG
 | 
|---|
| 26 |  . S XMINDEX=$E(XMINDEX,2,99)
 | 
|---|
| 27 |  . S XMG=$$FIND1^DIC(4.2997,"","OQ",XMADDR,XMINDEX) Q:'XMG
 | 
|---|
| 28 |  . S XMADDR=$P(^XMD(4.2997,XMG,0),U,7)
 | 
|---|
| 29 |  . D CHKREM(XMG,XMADDR) Q:$D(XMERROR)
 | 
|---|
| 30 |  . D REMDT(XMG)
 | 
|---|
| 31 |  . D REMOTE^XMXADDR3(XMDUZ,XMADDR,XMSTRIKE,XMPREFIX,XMLATER,.XMFULL)
 | 
|---|
| 32 |  D SETERR^XMXADDR4(0,"",XMNOTFND)
 | 
|---|
| 33 |  Q
 | 
|---|
| 34 | CHKSHARE ;
 | 
|---|
| 35 |  I $G(XMINSTR("FLAGS"))["X"!($G(XMRESTR("FLAGS"))["X") D  Q
 | 
|---|
| 36 |  . ;Closed messages may not be sent to SHARED,MAIL.
 | 
|---|
| 37 |  . D SETERR^XMXADDR4(0,"",39020)
 | 
|---|
| 38 |  I $G(XMINSTR("FLAGS"))["C"!($G(XMRESTR("FLAGS"))["C") D  Q
 | 
|---|
| 39 |  . ;Confidential messages may not be sent to SHARED,MAIL.
 | 
|---|
| 40 |  . D SETERR^XMXADDR4(0,"",39021)
 | 
|---|
| 41 |  Q
 | 
|---|
| 42 | REMDT(XMG) ;
 | 
|---|
| 43 |  N XMFDA
 | 
|---|
| 44 |  S XMFDA(4.2997,XMG_",",6)=$E(DT,1,5)  ; Date (YYYMM) remote address last used
 | 
|---|
| 45 |  D FILE^DIE("","XMFDA")
 | 
|---|
| 46 |  Q
 | 
|---|
| 47 | IPERSON(XMDUZ,XMADDR,XMSTRIKE,XMPREFIX,XMLATER,XMG,XMFULL) ;
 | 
|---|
| 48 |  N DIC,D,X,Y,XMINDEX
 | 
|---|
| 49 |  S XMADDR=$$UP^XLFSTR(XMADDR)
 | 
|---|
| 50 |  S DIC("S")="I $L($P(^(0),U,3)),$D(^XMB(3.7,+Y,2))"  ; User must have an access code & mailbox
 | 
|---|
| 51 |  I XMSTRIKE S DIC("S")=DIC("S")_",$D(^TMP(""XMY"",$J,+Y))" ; If '-', must already have been chosen
 | 
|---|
| 52 |  S DIC("W")="I Y'=DUZ D USERINFO^XMXADDR1(Y)"
 | 
|---|
| 53 |  S DIC="^VA(200,"
 | 
|---|
| 54 |  S DIC(0)="FEZMN"  ; If user enters a DUZ, ask "OK?"
 | 
|---|
| 55 |  S X=XMADDR
 | 
|---|
| 56 |  ;S DIC(0)="FEZM"  ; If user enters a DUZ, do NOT ask "OK?"
 | 
|---|
| 57 |  ;S X=$S(XMADDR=+XMADDR:"`"_XMADDR,1:XMADDR)
 | 
|---|
| 58 |  S (XMINDEX,D)="B^BB^C^D" ; name^alias^initial^nickname
 | 
|---|
| 59 |  D MIX^DIC1
 | 
|---|
| 60 |  I Y>0 D  Q
 | 
|---|
| 61 |  . S XMG=+Y
 | 
|---|
| 62 |  . S XMFULL=$$NAME^XMXUTIL(XMG) ; $P(Y,U,2)
 | 
|---|
| 63 |  . Q:XMSTRIKE
 | 
|---|
| 64 |  . ; Sending to yourself, and ask bskt, and not creating a forwarding address
 | 
|---|
| 65 |  . I XMG=XMDUZ,$G(XMINSTR("ADDR FLAGS"))'["X",XMV("ASK BSKT") D
 | 
|---|
| 66 |  . . N XMK,XMDIC
 | 
|---|
| 67 |  . . S XMDIC("B")=$$EZBLD^DIALOG(37005) ;IN
 | 
|---|
| 68 |  . . D SELBSKT^XMJBU(XMDUZ,$$EZBLD^DIALOG(39022),"L",.XMDIC,.XMK) ;Select basket to send to:
 | 
|---|
| 69 |  . . I XMK=U D SETERR^XMXADDR4(0,"",39014) Q  ;No basket selected.
 | 
|---|
| 70 |  . . S XMINSTR("SELF BSKT")=XMK
 | 
|---|
| 71 |  . E  I XMG=.6 D
 | 
|---|
| 72 |  . . D CHKSHARE
 | 
|---|
| 73 |  . . I $D(XMERROR) D WRIERR^XMXADDR4("!") Q
 | 
|---|
| 74 |  . . D ASKSHARE(.XMINSTR)
 | 
|---|
| 75 |  . I $D(XMERROR) W !,XMFULL,$$EZBLD^DIALOG(39015) ;removed from recipient list.
 | 
|---|
| 76 |  I $D(DUOUT)!$D(DTOUT) D  Q  ;up-arrow out. / time out.
 | 
|---|
| 77 |  . D SETERR^XMXADDR4(0,"",$S($D(DUOUT):37000,1:37001))
 | 
|---|
| 78 |  D NOTFOUND(XMADDR,XMINDEX)
 | 
|---|
| 79 |  I XMADDR=+XMADDR D SETERR^XMXADDR4(0,"",39002) Q  ;Not found.
 | 
|---|
| 80 |  W !,$C(7),$$EZBLD^DIALOG(39026),XMADDR ;Checking for MAIL NAME:
 | 
|---|
| 81 |  S X=XMADDR
 | 
|---|
| 82 |  K DIC("S"),DIC("W")
 | 
|---|
| 83 |  S DIC(0)="FEZ"
 | 
|---|
| 84 |  S D="C"
 | 
|---|
| 85 |  S DIC="^XMB(3.7,"
 | 
|---|
| 86 |  D IX^DIC
 | 
|---|
| 87 |  I Y>0 D  Q
 | 
|---|
| 88 |  . S XMG=+Y
 | 
|---|
| 89 |  . S XMFULL=Y(0,0)
 | 
|---|
| 90 |  I $D(DUOUT)!$D(DTOUT) D  Q  ;up-arrow out. / time out.
 | 
|---|
| 91 |  . D SETERR^XMXADDR4(0,"",$S($D(DUOUT):37000,1:37001))
 | 
|---|
| 92 |  ; Not a Mail Name, see if it's in the Remote User Directory.
 | 
|---|
| 93 |  N XMFIND,DIR,XMG
 | 
|---|
| 94 |  S XMFIND=X
 | 
|---|
| 95 |  W !
 | 
|---|
| 96 |  D BLD^DIALOG(39025,"","","DIR(""A"")") ; Not a local user; want to check the Remote User Directory?
 | 
|---|
| 97 |  S DIR(0)="Y",DIR("B")=$$EZBLD^DIALOG(39053) ; No
 | 
|---|
| 98 |  D BLD^DIALOG(39025.1,"","","DIR(""?"")")
 | 
|---|
| 99 |  D ^DIR
 | 
|---|
| 100 |  I 'Y W !
 | 
|---|
| 101 |  E  D  Q:$D(XMG)
 | 
|---|
| 102 |  . S X=XMFIND  ;Not a local user; checking Remote User Directory
 | 
|---|
| 103 |  . W !,$C(7),$$EZBLD^DIALOG(39027),X
 | 
|---|
| 104 |  . S DIC(0)="MFEVZ"
 | 
|---|
| 105 |  . S D="B^F"
 | 
|---|
| 106 |  . S DIC="^XMD(4.2997,"
 | 
|---|
| 107 |  . D MIX^DIC1 Q:Y<0
 | 
|---|
| 108 |  . S XMG=+Y
 | 
|---|
| 109 |  . S XMADDR=$P(Y(0),U,7)
 | 
|---|
| 110 |  . D CHKREM(XMG,XMADDR) Q:$D(XMERROR)
 | 
|---|
| 111 |  . D REMDT(XMG)
 | 
|---|
| 112 |  . W !,$$EZBLD^DIALOG(39028),XMADDR ;Routing to Remote Address:
 | 
|---|
| 113 |  . D REMOTE^XMXADDR3(XMDUZ,XMADDR,XMSTRIKE,XMPREFIX,.XMLATER,.XMFULL) ;Q:$D(XMERROR)
 | 
|---|
| 114 |  I $D(DUOUT)!$D(DTOUT) D  Q  ;up-arrow out. / time out.
 | 
|---|
| 115 |  . D SETERR^XMXADDR4(0,"",$S($D(DUOUT):37000,1:37001))
 | 
|---|
| 116 |  ; Not in Remote User Directory, see if it's a Mail Group
 | 
|---|
| 117 |  S DIC="^XMB(3.8,"
 | 
|---|
| 118 |  S D="B"
 | 
|---|
| 119 |  S DIC(0)="O"
 | 
|---|
| 120 |  D IX^DIC
 | 
|---|
| 121 |  I Y>0 D  Q  ;Enter 'G.groupname' to identify a mail group
 | 
|---|
| 122 |  . D SETERR^XMXADDR4(1,"!",39029)
 | 
|---|
| 123 |  D SETERR^XMXADDR4(1,"",39002) ;Not found.
 | 
|---|
| 124 |  Q
 | 
|---|
| 125 | ASKSHARE(XMINSTR) ;
 | 
|---|
| 126 |  N XMK,XMDIC
 | 
|---|
| 127 |  S XMDIC("B")=$$EZBLD^DIALOG(37005) ;IN
 | 
|---|
| 128 |  D SELBSKT^XMJBU(.6,$$EZBLD^DIALOG(39022),"L",.XMDIC,.XMK) ;Select basket to send to:
 | 
|---|
| 129 |  I XMK=U D SETERR^XMXADDR4(0,"",39014) Q  ;No basket selected.
 | 
|---|
| 130 |  N DIR,X,Y
 | 
|---|
| 131 |  S DIR("A")=$$EZBLD^DIALOG(39023) ;Enter Termination Date
 | 
|---|
| 132 |  S DIR("B")="T+30"
 | 
|---|
| 133 |  S DIR(0)="D^"_DT_"::ENX"
 | 
|---|
| 134 |  ;Messages sent to SHARED,MAIL must have a delete date, so
 | 
|---|
| 135 |  ;they may be automatically removed from SHARED,MAIL's mailbox.
 | 
|---|
| 136 |  D BLD^DIALOG(39024,"","","DIR(""?"")")
 | 
|---|
| 137 |  S DIR("??")="^D HELP^%DTC"
 | 
|---|
| 138 |  D ^DIR
 | 
|---|
| 139 |  I $D(DIRUT) D SETERR^XMXADDR4(0,"",37002) Q  ;up-arrow or time out.
 | 
|---|
| 140 |  S XMINSTR("SHARE BSKT")=XMK
 | 
|---|
| 141 |  S XMINSTR("SHARE DATE")=Y
 | 
|---|
| 142 |  Q
 | 
|---|
| 143 | CHKREM(DA,XMADDR) ; Is the remote address really local?
 | 
|---|
| 144 |  S XMADDR=$$UP^XLFSTR($P(XMADDR,"@",2))
 | 
|---|
| 145 |  I $$FIND1^DIC(4.2,"","QO",XMADDR,"B^C")'=^XMB("NUM") Q
 | 
|---|
| 146 |  N DIK
 | 
|---|
| 147 |  S DIK="^XMD(4.2997,"
 | 
|---|
| 148 |  D ^DIK
 | 
|---|
| 149 |  I '$G(XMIA) D SETERR^XMXADDR4(0,"",39002) Q  ;Not found.
 | 
|---|
| 150 |  D SETERR^XMXADDR4(1,"!",39028.1) ; Remote address is really local.  Deleting it.
 | 
|---|
| 151 |  Q
 | 
|---|
| 152 | USERINFO(XMDUZ) ;
 | 
|---|
| 153 |  N %
 | 
|---|
| 154 |  W:XMV("SHOW DUZ") " (DUZ ",XMDUZ,")"
 | 
|---|
| 155 |  S %=$P($G(^VA(200,XMDUZ,5)),U,1)  ; Service/Section
 | 
|---|
| 156 |  I % S %=$P($G(^DIC(49,%,0)),U,1) W:$L(%)+$X+1>79 !,?4 W " ",%," "
 | 
|---|
| 157 |  S %=$P($G(^XMB(3.7,XMDUZ,"L"),$$EZBLD^DIALOG(38002)),U,1) ;Never
 | 
|---|
| 158 |  W:$L(%)+$X+20>79 !,?4 W $$EZBLD^DIALOG(38003),% ;Last used MailMan:
 | 
|---|
| 159 |  S %=$G(^XMB(3.7,XMDUZ,0))
 | 
|---|
| 160 |  I $L($P(%,U,2)) W !,?5,$$EZBLD^DIALOG(38004),$P(%,U,2),$S($P(%,U,8):$$EZBLD^DIALOG(38005),1:$$EZBLD^DIALOG(38006)) ;Forwarding Address: / Local Delivery is ON / Local Delivery is OFF
 | 
|---|
| 161 |  S %=$G(^XMB(3.7,XMDUZ,"B")) W:%'="" !,?10,%
 | 
|---|
| 162 |  Q
 | 
|---|
| 163 | NOTFOUND(XMADDR,XMINDEX) ;
 | 
|---|
| 164 |  N XMI,XMREC
 | 
|---|
| 165 |  S XMI=$$FIND1^DIC(200,"","O",$S(+XMADDR=XMADDR:"`"_XMADDR,1:XMADDR),XMINDEX)
 | 
|---|
| 166 |  I 'XMI W $C(7),$$EZBLD^DIALOG(39030) Q  ;Not found in NEW PERSON file.
 | 
|---|
| 167 |  ; found user, but missing access/verify/mailbox
 | 
|---|
| 168 |  S XMREC=^VA(200,XMI,0)
 | 
|---|
| 169 |  I $D(^XMB(3.7,XMI,2)),$P(XMREC,U,3)'="" Q
 | 
|---|
| 170 |  N XMPARM,XMTEXT
 | 
|---|
| 171 |  S XMPARM(1)=$$NAME^XMXUTIL(XMI)
 | 
|---|
| 172 |  S XMPARM(2)=$S($P(XMREC,U,3)'="":$$EZBLD^DIALOG(39034),$D(^XMB(3.7,XMI,2)):$$EZBLD^DIALOG(39032),1:$$EZBLD^DIALOG(39033)) ;a mailbox / an access code or a mailbox / an access code
 | 
|---|
| 173 |  ;If |1| is the person you're trying to address, you can't,
 | 
|---|
| 174 |  ;because |1| doesn't have |2|.
 | 
|---|
| 175 |  D BLD^DIALOG(39031,.XMPARM,"","XMTEXT","F")
 | 
|---|
| 176 |  D MSG^DIALOG("WH","","","","XMTEXT")
 | 
|---|
| 177 |  Q
 | 
|---|