| [613] | 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
 | 
|---|