| 1 | XMVGRP ;ISC-SF/GMB-Group creation/enrollment ;03/07/2002  07:01 | 
|---|
| 2 | ;;8.0;MailMan;;Jun 28, 2002 | 
|---|
| 3 | ; Entry points used by MailMan options (not covered by DBIA): | 
|---|
| 4 | ; ENLOCAL    XMxxxxx - Add local users to mail groups | 
|---|
| 5 | ENLOCAL1(XMXQUSER) ; Add local user(s) to group(s) - called from Kernel | 
|---|
| 6 | ; XMXQUSER - first user being added (duz or name) | 
|---|
| 7 | I '$D(XMV) N XMV,XMDISPI,XMDUN,XMNOSEND,XMPRIV | 
|---|
| 8 | D INITAPI^XMVVITAE | 
|---|
| 9 | ENLOCAL ; Add local user(s) to mail group(s). | 
|---|
| 10 | N XMGRP,XMMBR,XMINSTR,XMTSK,XMTO,XMABORT | 
|---|
| 11 | S XMABORT=0 | 
|---|
| 12 | D ENGRP(.XMGRP,.XMABORT) Q:XMABORT!'$D(XMGRP)  ; select groups | 
|---|
| 13 | D ENUSER(.XMMBR,.XMABORT,.XMXQUSER) Q:XMABORT  ; select users | 
|---|
| 14 | D ENCONF(.XMGRP,.XMMBR,.XMABORT) Q:XMABORT     ; confirm it | 
|---|
| 15 | D ADD2GRPZ^XMXGRP(.XMGRP,.XMMBR,.XMTO)         ; add users to groups | 
|---|
| 16 | W !!,$$EZBLD^DIALOG(38233) ; Users have been added to the mail groups | 
|---|
| 17 | D ENFWD(XMDUZ,.XMINSTR,.XMABORT) Q:XMABORT     ; forward msgs? | 
|---|
| 18 | D FAFMSGS^XMXGRP1(XMDUZ,.XMGRP,.XMTO,.XMINSTR,.XMTSK) ; yup. | 
|---|
| 19 | D FWDTSK^XMVGROUP(XMTSK) ; tell the user the task number. | 
|---|
| 20 | Q | 
|---|
| 21 | ENGRP(XMGRP,XMABORT) ; | 
|---|
| 22 | N Y | 
|---|
| 23 | F  D  Q:Y=-1!XMABORT | 
|---|
| 24 | . N DIC,DIR,X,XMDEL | 
|---|
| 25 | . S DIR("A")=$$EZBLD^DIALOG($S($D(XMGRP):38211,1:38210)) ; Another mail group / Allocate mail group | 
|---|
| 26 | . S DIR("PRE")="I $E(X)=""-"" S XMDEL=1,X=$E(X,2,99)" | 
|---|
| 27 | . D BLD^DIALOG(38213,"","","DIR(""?"")") | 
|---|
| 28 | . ;Enter the name of the mail group you wish to allocate. | 
|---|
| 29 | . ;Precede any mail group name with '-' to remove it. | 
|---|
| 30 | . ;You'll only be able to select mail groups you're authorized to edit. | 
|---|
| 31 | . ;Enter ?? for a list of mail groups you've already selected, | 
|---|
| 32 | . ;and for mail group help. | 
|---|
| 33 | . S DIR("??")="^D HELPGRP^XMVGRP" | 
|---|
| 34 | . S DIR(0)="PO^3.8:FEMQ" | 
|---|
| 35 | . S DIC("S")=$$GRPSCR^XMVGROUP(1) | 
|---|
| 36 | . D ^DIR I $D(DTOUT)!$D(DUOUT) S XMABORT=1 Q | 
|---|
| 37 | . Q:Y=-1 | 
|---|
| 38 | . I '$G(XMDEL) S XMGRP($P(Y,U,2))=+Y Q | 
|---|
| 39 | . I '$D(XMGRP($P(Y,U,2))) W $C(7),$$EZBLD^DIALOG(38214) Q  ; ?? Not on current list. | 
|---|
| 40 | . K XMGRP($P(Y,U,2)) | 
|---|
| 41 | . W $$EZBLD^DIALOG(38215) ;   Deleted from current list. | 
|---|
| 42 | Q | 
|---|
| 43 | HELPGRP ; | 
|---|
| 44 | I '$D(XMGRP) W !,$$EZBLD^DIALOG(38216) ; You haven't selected any mail groups yet. | 
|---|
| 45 | E  D SHOWGRP | 
|---|
| 46 | N DIR,X,Y,DIRUT,DTOUT,DIRUT | 
|---|
| 47 | S DIR("A")=$$EZBLD^DIALOG(38217) ; Want mail group help | 
|---|
| 48 | S DIR(0)="Y" | 
|---|
| 49 | S DIR("B")=$$EZBLD^DIALOG(39053) ; NO | 
|---|
| 50 | D ^DIR Q:'Y | 
|---|
| 51 | ;D HELP^XMHIG | 
|---|
| 52 | N DIC,X,Y,DLAYGO | 
|---|
| 53 | S DIC(0)="AEQM",DIC="^XMB(3.8," | 
|---|
| 54 | S DIC("S")=$$GRPSCR^XMVGROUP(1) | 
|---|
| 55 | F  W ! D ^DIC Q:Y<0  D | 
|---|
| 56 | . D DISPLAY^XMHIG(+Y) | 
|---|
| 57 | Q | 
|---|
| 58 | SHOWGRP ; | 
|---|
| 59 | N XMI,XMJ,XML,XMLN | 
|---|
| 60 | W !!,$$EZBLD^DIALOG(38218) ; You've selected the following mail groups: | 
|---|
| 61 | S XML=0,XMI="" F  S XMI=$O(XMGRP(XMI)) Q:XMI=""  I $L(XMI)>XML S XML=$L(XMI) | 
|---|
| 62 | S XML=XML+3,XMLN=80\XML | 
|---|
| 63 | S XMI="" | 
|---|
| 64 | F XMJ=0:1 S XMI=$O(XMGRP(XMI)) Q:XMI=""  D | 
|---|
| 65 | . W:'(XMJ#XMLN) ! W ?(XMJ#XMLN*XML),XMI | 
|---|
| 66 | Q | 
|---|
| 67 | ENUSER(XMMBR,XMABORT,XMUSER) ; | 
|---|
| 68 | N XMX,XMDONE | 
|---|
| 69 | W ! | 
|---|
| 70 | S XMDONE=0 | 
|---|
| 71 | F  D  Q:XMDONE!XMABORT | 
|---|
| 72 | . N XMDEL | 
|---|
| 73 | . W !,$$EZBLD^DIALOG($S($D(XMMBR):38221,1:38220)) ; Another user: / Add user: | 
|---|
| 74 | . I $G(XMUSER)'="" D | 
|---|
| 75 | . . S XMX=XMUSER | 
|---|
| 76 | . . K XMUSER | 
|---|
| 77 | . . W XMX | 
|---|
| 78 | . E  D  Q:XMX="" | 
|---|
| 79 | . . R XMX:DTIME S:'$T XMX=U I XMX[U S XMABORT=1 Q | 
|---|
| 80 | . . I XMX="" D  Q | 
|---|
| 81 | . . . I $D(XMMBR) S XMDONE=1 Q | 
|---|
| 82 | . . . W $C(7)," ??",!,$$EZBLD^DIALOG(38222) ; You must select a user, or enter ^ to exit. | 
|---|
| 83 | . . I XMX?1."?" D HELPUSR(XMX) S:XMX'="?" XMX="" Q | 
|---|
| 84 | . . I $E(XMX)="-" S XMDEL=1,XMX=$E(XMX,2,99) W:XMX="" " ??",$C(7) | 
|---|
| 85 | . N DIC,D,X,Y,DLAYGO,XMNAME | 
|---|
| 86 | . S X=$$UP^XLFSTR(XMX) | 
|---|
| 87 | . S DIC("S")="I $L($P(^(0),U,3)),$D(^XMB(3.7,+Y,2))" ; User must have an access code & mailbox | 
|---|
| 88 | . S DIC("W")="I Y'=DUZ D USERINFO^XMXADDR1(Y)" | 
|---|
| 89 | . S DIC="^VA(200," | 
|---|
| 90 | . S DIC(0)="FEMN"  ; 'N' means if user enters a DUZ, ask "OK?" | 
|---|
| 91 | . S D="B^BB^C^D" ; name^alias^initial^nickname | 
|---|
| 92 | . D MIX^DIC1 I $D(DTOUT)!$D(DUOUT) S XMABORT=1 Q | 
|---|
| 93 | . I Y<0 W " ??",$C(7) Q | 
|---|
| 94 | . S XMNAME=$$NAME^XMXUTIL(+Y) ; $P(Y,U,2) | 
|---|
| 95 | . I '$G(XMDEL) S XMMBR(XMNAME)=+Y Q | 
|---|
| 96 | . I '$D(XMMBR(XMNAME)) W !,$C(7),$$EZBLD^DIALOG(38214) Q  ; ?? Not on current list. | 
|---|
| 97 | . K XMMBR(XMNAME) | 
|---|
| 98 | . W !,$$EZBLD^DIALOG(38215) ;  Deleted from current list. | 
|---|
| 99 | Q | 
|---|
| 100 | HELPUSR(XMX) ; | 
|---|
| 101 | I XMX="?" D  Q | 
|---|
| 102 | . N XMTEXT | 
|---|
| 103 | . D BLD^DIALOG(38223,"","","XMTEXT","F") | 
|---|
| 104 | . D MSG^DIALOG("WH","","","","XMTEXT") | 
|---|
| 105 | . ;Enter the name of the user you wish to add to the group(s). | 
|---|
| 106 | . ;Precede any user name with '-' to remove it. | 
|---|
| 107 | . ;You'll only be able to select users with mailboxes and access codes. | 
|---|
| 108 | . ;Enter ?? for a list of users you've already selected, | 
|---|
| 109 | . ;and for user help. | 
|---|
| 110 | I '$D(XMMBR) W !,$$EZBLD^DIALOG(38226) ;You haven't selected any users yet. | 
|---|
| 111 | E  D SHOWUSR | 
|---|
| 112 | N DIR,X,Y,DIRUT,DTOUT,DIRUT | 
|---|
| 113 | S DIR("A")=$$EZBLD^DIALOG(38224) ; Want user help | 
|---|
| 114 | S DIR(0)="Y" | 
|---|
| 115 | S DIR("B")=$$EZBLD^DIALOG(39053) ; NO | 
|---|
| 116 | D ^DIR Q:'Y | 
|---|
| 117 | D HELP^XMHIU | 
|---|
| 118 | Q | 
|---|
| 119 | SHOWUSR ; | 
|---|
| 120 | N XMI,XMJ,XML,XMLN | 
|---|
| 121 | W !!,$$EZBLD^DIALOG(38225) ; You've selected the following users: | 
|---|
| 122 | S XML=0,XMI="" F  S XMI=$O(XMMBR(XMI)) Q:XMI=""  I $L(XMI)>XML S XML=$L(XMI) | 
|---|
| 123 | S XML=XML+3,XMLN=80\XML | 
|---|
| 124 | S XMI="" | 
|---|
| 125 | F XMJ=0:1 S XMI=$O(XMMBR(XMI)) Q:XMI=""  D | 
|---|
| 126 | . W:'(XMJ#XMLN) ! W ?(XMJ#XMLN*XML),XMI | 
|---|
| 127 | Q | 
|---|
| 128 | ENCONF(XMGRP,XMMBR,XMABORT) ; | 
|---|
| 129 | D SHOWGRP | 
|---|
| 130 | D SHOWUSR | 
|---|
| 131 | W ! | 
|---|
| 132 | N DIR,X,Y | 
|---|
| 133 | D BLD^DIALOG(38230,"","","DIR(""A"")") ; You are adding users to mail groups.  Do you wish to proceed | 
|---|
| 134 | S DIR(0)="Y" | 
|---|
| 135 | S DIR("B")=$$EZBLD^DIALOG(39054) ; yes | 
|---|
| 136 | D ^DIR I 'Y S XMABORT=1 | 
|---|
| 137 | Q | 
|---|
| 138 | ENFWD(XMDUZ,XMINSTR,XMABORT) ; | 
|---|
| 139 | W ! | 
|---|
| 140 | N DIR,X,Y | 
|---|
| 141 | D BLD^DIALOG(38231,"","","DIR(""A"")") | 
|---|
| 142 | ;Do you wish to forward past mail group messages | 
|---|
| 143 | ;to the user(s) you just added to the mail group(s) | 
|---|
| 144 | D BLD^DIALOG(38232,"","","DIR(""?"")") | 
|---|
| 145 | ;Answer YES to forward past mail group messages. | 
|---|
| 146 | ;You will be asked for a time frame to search, | 
|---|
| 147 | ;and then MailMan will create a task to find and forward | 
|---|
| 148 | ;existing mail group messages. | 
|---|
| 149 | S DIR(0)="Y" | 
|---|
| 150 | S DIR("B")=$$EZBLD^DIALOG(39053) ; no | 
|---|
| 151 | D ^DIR I $D(DIRUT)!'Y S XMABORT=1 Q | 
|---|
| 152 | D FWDDATES(XMDUZ,.XMINSTR,.XMABORT) Q:XMABORT | 
|---|
| 153 | S XMINSTR("FLAGS")="F" | 
|---|
| 154 | Q | 
|---|
| 155 | FWDDATES(XMDUZ,XMINSTR,XMABORT) ; | 
|---|
| 156 | ; Message sent on or before date | 
|---|
| 157 | N DIR,Y,X,XMOLDEST,XMTEXT | 
|---|
| 158 | ;S XMOLDEST=$O(^XMB(3.9,"C","")) | 
|---|
| 159 | F  S XMOLDEST=$O(^XMB(3.9,"C","")) Q:XMOLDEST?1N.N  K ^XMB(3.9,"C",XMOLDEST) ; kill bogus nodes | 
|---|
| 160 | ; You will now choose a date range for the messages to be searched | 
|---|
| 161 | ; and forwarded.  The oldest message is from XMOLDEST. | 
|---|
| 162 | W ! | 
|---|
| 163 | D BLD^DIALOG(38023.5,$$FMTE^XLFDT(XMOLDEST,5),"","XMTEXT","F") | 
|---|
| 164 | D MSG^DIALOG("WM","",IOM,"","XMTEXT") | 
|---|
| 165 | I $P(^XMB(3.7,XMDUZ,0),U,7) D | 
|---|
| 166 | . N XMCUT | 
|---|
| 167 | . S XMCUT=$P(^XMB(3.7,XMDUZ,0),U,7) | 
|---|
| 168 | . Q:XMCUT<XMOLDEST | 
|---|
| 169 | . ; You may not access any message prior to |1| unless someone | 
|---|
| 170 | . ; forwards it to you. | 
|---|
| 171 | . D BLD^DIALOG(37100,$$FMTE^XLFDT(XMCUT,5),"","XMTEXT","F") | 
|---|
| 172 | . D MSG^DIALOG("WE","",IOM,"","XMTEXT") | 
|---|
| 173 | . S XMOLDEST=XMCUT | 
|---|
| 174 | W ! | 
|---|
| 175 | S DIR(0)="DO^"_XMOLDEST_":DT:EX" | 
|---|
| 176 | S DIR("A")=$$EZBLD^DIALOG(34444) ; Message sent on or after | 
|---|
| 177 | D BLD^DIALOG(34444.1,"","","DIR(""?"")") | 
|---|
| 178 | ; Enter a date.  It must include day, month, and year. | 
|---|
| 179 | S DIR("B")=$$FMTE^XLFDT($$MAX^XLFMTH(XMOLDEST,$$FMADD^XLFDT(DT,-365)),5) | 
|---|
| 180 | D ^DIR I $D(DIRUT) S XMABORT=1 Q | 
|---|
| 181 | S XMINSTR("FDATE")=Y | 
|---|
| 182 | ; Message sent on or before date | 
|---|
| 183 | I XMINSTR("FDATE")=DT S XMINSTR("TDATE")=DT Q | 
|---|
| 184 | K DIR,Y,X | 
|---|
| 185 | S DIR(0)="DO^"_XMINSTR("FDATE")_":DT:EX" | 
|---|
| 186 | S DIR("A")=$$EZBLD^DIALOG(34445) ; Message sent on or before | 
|---|
| 187 | D BLD^DIALOG(34444.1,"","","DIR(""?"")") | 
|---|
| 188 | ; Enter a date.  It must include day, month, and year. | 
|---|
| 189 | S DIR("B")=$$FMTE^XLFDT(DT,5) | 
|---|
| 190 | D ^DIR I $D(DIRUT) S XMABORT=1 Q | 
|---|
| 191 | S XMINSTR("TDATE")=Y | 
|---|
| 192 | Q | 
|---|