| 1 | XMTDF ;ISC-SF/GMB-Filter message: multiple conditions ;04/15/2003  12:45 | 
|---|
| 2 | ;;8.0;MailMan;**18**;Jun 28, 2002 | 
|---|
| 3 | ; XMF("SUBJ")  Subject contains this string | 
|---|
| 4 | ; XMF("FROM")  Message is from this person | 
|---|
| 5 | ; XMF("TO")    Message is to this person | 
|---|
| 6 | FILTER(XMDUZ,XMZ,XMZSUBJ,XMZFROM,XMK,XMKN,XMACT) ; figures out which basket to save to | 
|---|
| 7 | ; the message should be put in. | 
|---|
| 8 | ; Defaults: the "IN" basket. | 
|---|
| 9 | ; If basket doesn't exist, it creates the basket. | 
|---|
| 10 | ; Returns: | 
|---|
| 11 | ; XMK  basket number | 
|---|
| 12 | ; XMKN basket name | 
|---|
| 13 | ; Optionally, if specified by user: | 
|---|
| 14 | ; XMACT("VDAYS") set vaporize date to this many days from today. | 
|---|
| 15 | ; XMACT("NONEW") don't make this message new. | 
|---|
| 16 | ; XMACT("FWD")   forward this message | 
|---|
| 17 | N XMORDER,XMIEN,XMFREC | 
|---|
| 18 | K XMK,XMKN | 
|---|
| 19 | S (XMORDER,XMIEN)=0 | 
|---|
| 20 | F  S XMORDER=$O(^XMB(3.7,XMDUZ,15,"AF",XMORDER)) Q:'XMORDER  D  Q:$D(XMKN) | 
|---|
| 21 | . F  S XMIEN=$O(^XMB(3.7,XMDUZ,15,"AF",XMORDER,XMIEN)) Q:'XMIEN  D  Q:$D(XMKN) | 
|---|
| 22 | . . N XMF | 
|---|
| 23 | . . S XMFREC=$G(^XMB(3.7,XMDUZ,15,XMIEN,0)) | 
|---|
| 24 | . . S:$P(XMFREC,U,5)]"" XMF("SUBJ")=$P(XMFREC,U,5) | 
|---|
| 25 | . . S:$P(XMFREC,U,6)]"" XMF("FROM")=$P(XMFREC,U,6) | 
|---|
| 26 | . . S:$P(XMFREC,U,7)]"" XMF("TO")=$P(XMFREC,U,7) | 
|---|
| 27 | . . S:$$GOODMSG(XMZ,XMZSUBJ,XMZFROM,.XMF) XMKN=$P(XMFREC,U,3) | 
|---|
| 28 | I '$D(XMKN) D  Q | 
|---|
| 29 | . S XMK=1,XMKN=$$EZBLD^DIALOG(37005)   ; Default to "IN" basket | 
|---|
| 30 | . D:'$D(^XMB(3.7,XMDUZ,2,XMK,0)) MAKEBSKT^XMXBSKT(XMDUZ,XMK,XMKN) | 
|---|
| 31 | S XMK=$O(^XMB(3.7,XMDUZ,2,"B",XMKN,0)) | 
|---|
| 32 | I $P(XMFREC,U,8) S XMACT("VDAYS")=$P(XMFREC,U,8) | 
|---|
| 33 | I $P(XMFREC,U,9)="N" S XMACT("NONEW")=1 | 
|---|
| 34 | I $D(^XMB(3.7,XMDUZ,15,XMIEN,1,"B")),$$OKFWD(XMZ) S XMACT("FWD")=XMIEN | 
|---|
| 35 | Q:XMK | 
|---|
| 36 | I XMKN=$$EZBLD^DIALOG(37004) S XMK=.5 D MAKEBSKT^XMXBSKT(XMDUZ,XMK,XMKN) Q  ; "WASTE" | 
|---|
| 37 | D MAKEBSKT^XMXBSKT(XMDUZ,.XMK,XMKN) | 
|---|
| 38 | Q | 
|---|
| 39 | GOODMSG(XMZ,XMZSUBJ,XMZFROM,XMF) ; | 
|---|
| 40 | ; This function is a copy of $$GOODMSG^XMJMFB, but with fewer | 
|---|
| 41 | ; conditions to match on. | 
|---|
| 42 | N XMNOGOOD | 
|---|
| 43 | I $D(XMF("SUBJ")),$$UP^XLFSTR(XMZSUBJ)'[XMF("SUBJ") Q 0 | 
|---|
| 44 | I $D(XMF("FROM")) D  Q:XMNOGOOD 0 | 
|---|
| 45 | . I XMF("FROM")=+XMF("FROM"),XMF("FROM")=XMZFROM S XMNOGOOD=0 Q | 
|---|
| 46 | . S XMNOGOOD=1 | 
|---|
| 47 | . Q:XMF("FROM")'["@" | 
|---|
| 48 | . S XMZFROM=$$UP^XLFSTR(XMZFROM) | 
|---|
| 49 | . Q:$P(XMZFROM,"@")'[$P(XMF("FROM"),"@") | 
|---|
| 50 | . Q:$P(XMZFROM,"@",2)'[$P(XMF("FROM"),"@",2) | 
|---|
| 51 | . S XMNOGOOD=0 | 
|---|
| 52 | I $D(XMF("TO")) D  Q:XMNOGOOD 0 | 
|---|
| 53 | . I $D(^XMB(3.9,XMZ,6,"B",XMF("TO"))) S XMNOGOOD=0 Q | 
|---|
| 54 | . I $L(XMF("TO"))>30,$D(^XMB(3.9,XMZ,6,"B",$E(XMF("TO"),1,30))),XMF("TO")=$P($G(^XMB(3.9,XMZ,6,+$O(^XMB(3.9,XMZ,6,"B",$E(XMF("TO"),1,30),0)),0)),U,1) S XMNOGOOD=0 Q | 
|---|
| 55 | . S XMNOGOOD=1 | 
|---|
| 56 | . Q:XMF("TO")'["@" | 
|---|
| 57 | . N XMTOX,XMTO | 
|---|
| 58 | . S XMTO="" | 
|---|
| 59 | . F  S XMTO=$O(^XMB(3.9,XMZ,6,"B",XMTO)) Q:XMTO=""  D  Q:'XMNOGOOD | 
|---|
| 60 | . . Q:XMTO'["@" | 
|---|
| 61 | . . S XMTOX=$$UP^XLFSTR(XMTO) | 
|---|
| 62 | . . Q:$P(XMTOX,"@")'[$P(XMF("TO"),"@") | 
|---|
| 63 | . . Q:$P(XMTOX,"@",2)'[$P(XMF("TO"),"@",2) | 
|---|
| 64 | . . S XMNOGOOD=0 | 
|---|
| 65 | Q 1 | 
|---|
| 66 | BASKET(X) ; Input Transform for file 3.7, subfile 3.715, field 2 BASKET | 
|---|
| 67 | N DIC,Y,DA | 
|---|
| 68 | S DA(1)=$G(XMDUZ,DUZ) | 
|---|
| 69 | S DIC="^XMB(3.7,"_DA(1)_",2," | 
|---|
| 70 | S DIC("P")=3.701 | 
|---|
| 71 | S DIC(0)="EQL" | 
|---|
| 72 | D ^DIC | 
|---|
| 73 | I $P(Y,U)=1 K X Q  ; May not filter to the IN basket | 
|---|
| 74 | I Y>0 S X=$P(Y,U,2) Q | 
|---|
| 75 | K X | 
|---|
| 76 | Q | 
|---|
| 77 | BSKTHELP ; Executable Help for file 3.7, subfile 3.715, field 2 BASKET | 
|---|
| 78 | N DIC,Y | 
|---|
| 79 | Q:"??"'[X | 
|---|
| 80 | S DIC("S")="I X'="""_$$EZBLD^DIALOG(37005)_"""" ; IN | 
|---|
| 81 | S DIC="^XMB(3.7,"_$G(XMDUZ,DUZ)_",2," | 
|---|
| 82 | S DIC(0)="EQL" | 
|---|
| 83 | D ^DIC | 
|---|
| 84 | Q | 
|---|
| 85 | FROM(X) ; Input Transform for file 3.7, subfile 3.715, field 5 FROM | 
|---|
| 86 | S X=$$UP^XLFSTR(X) | 
|---|
| 87 | I X["@" K:$L(X)<2!($L(X)>45) X Q | 
|---|
| 88 | N DIC,Y | 
|---|
| 89 | S DIC="^VA(200,",DIC(0)="MNE" | 
|---|
| 90 | D ^DIC | 
|---|
| 91 | I Y=-1 K X Q | 
|---|
| 92 | S X=+Y | 
|---|
| 93 | Q | 
|---|
| 94 | TO(X) ; Input Transform for file 3.7, subfile 3.715, field 6 ADDRESSED TO | 
|---|
| 95 | I X["@" D  Q | 
|---|
| 96 | . S X=$$UP^XLFSTR(X) | 
|---|
| 97 | . K:$L(X)<2!($L(X)>55) X | 
|---|
| 98 | I $E(X,1,2)="G."!($E(X,1,2)="g.") D  Q | 
|---|
| 99 | . ; See GETPERS^XMJMF2 for another way to do the lookup.  The difference | 
|---|
| 100 | . ; is that the other way does not let unauthorized senders pick groups | 
|---|
| 101 | . ; which have authorized senders. | 
|---|
| 102 | . S X=$E(X,3,99) | 
|---|
| 103 | . N DIC,Y | 
|---|
| 104 | . ; Screen:  Group is public OR user is organizer | 
|---|
| 105 | . ;          OR group is unrestricted and user is member | 
|---|
| 106 | . S DIC("S")="N XMR S XMR=^(0) I $S($P(XMR,U,2)=""PU"":1,$P($G(^XMB(3.8,+Y,3),.5),U)=$G(XMDUZ,DUZ):1,+$P(XMR,U,6):0,$D(^XMB(3.8,+Y,1,""B"",$G(XMDUZ,DUZ))):1,1:0)" | 
|---|
| 107 | . S DIC="^XMB(3.8," | 
|---|
| 108 | . S DIC(0)="MEZ" | 
|---|
| 109 | . D ^DIC | 
|---|
| 110 | . I Y=-1 K X Q | 
|---|
| 111 | . S X="G."_$P(Y,U,2)_$S($P(Y(0),U,6):$$EZBLD^DIALOG(39135),1:"") ; " [Private Mail Group]" | 
|---|
| 112 | S X=$$UP^XLFSTR(X) | 
|---|
| 113 | N DIC,Y | 
|---|
| 114 | S DIC="^VA(200,",DIC(0)="MNE" | 
|---|
| 115 | D ^DIC | 
|---|
| 116 | I Y=-1 K X Q | 
|---|
| 117 | S X=$P(Y,U,2) | 
|---|
| 118 | Q | 
|---|
| 119 | FWDTO(XMADDR,XMIA) ; Input Transform for file 3.7, subfile 3.715, | 
|---|
| 120 | ; subfile 3.7159, field .01 FORWARD TO | 
|---|
| 121 | N DO ; to keep FileMan from exploding (that's D-oh) | 
|---|
| 122 | N XMERROR,XMRESTR,XMINSTR,XMFULL,XMFWDADD | 
|---|
| 123 | S XMINSTR("ADDR FLAGS")="X" ; do not create ^TMP(, just check. | 
|---|
| 124 | D ADDRESS^XMXADDR(DUZ,XMADDR,.XMFULL,.XMERROR) | 
|---|
| 125 | I $D(XMERROR) K XMADDR Q | 
|---|
| 126 | S XMADDR=XMFULL | 
|---|
| 127 | Q | 
|---|
| 128 | DELFWDTO(XMUSER,XMFILTER,XMIEN,XMFWD,XMERROR) ; Delete a user's invalid FORWARD TO address. | 
|---|
| 129 | N XMPARM,XMINSTR,XMFDA | 
|---|
| 130 | S XMFDA(3.7159,XMIEN_","_XMFILTER_","_XMUSER_",",.01)="@" | 
|---|
| 131 | D FILE^DIE("","XMFDA") | 
|---|
| 132 | S XMINSTR("FROM")=.5 | 
|---|
| 133 | S XMPARM(1)=XMFWD,XMPARM(3)=XMERROR | 
|---|
| 134 | S XMPARM(2)=$P(^XMB(3.7,XMUSER,15,XMFILTER,0),U,1) ; filter name | 
|---|
| 135 | D TASKBULL^XMXBULL(.5,"XM FILTER FWD ADDRESS DELETE",.XMPARM,"",XMUSER,.XMINSTR) | 
|---|
| 136 | Q | 
|---|
| 137 | OKFWD(XMZ) ; Is it OK to automatically forward this message? | 
|---|
| 138 | N XMZREC | 
|---|
| 139 | S XMZREC=$G(^XMB(3.9,XMZ,0)) | 
|---|
| 140 | Q:$$CLOSED^XMXSEC(XMZREC) 0 | 
|---|
| 141 | Q:$$CONFID^XMXSEC(XMZREC) 0 | 
|---|
| 142 | Q 1 | 
|---|