| 1 | XMJMF2 ;ISC-SF/GMB-XMJMF (cont.) ;07/12/2002  10:11
 | 
|---|
| 2 |  ;;8.0;MailMan;;Jun 28, 2002
 | 
|---|
| 3 | B ; Search one basket
 | 
|---|
| 4 |  N XMDIC,XMFBSKT
 | 
|---|
| 5 |  S XMDIC("B")=$G(XMFBSKTN,$$EZBLD^DIALOG(37005)) ; IN
 | 
|---|
| 6 |  D SELBSKT^XMJBU(XMDUZ,34439,"",.XMDIC,.XMFBSKT,.XMFBSKTN) I XMFBSKT=U S XMABORT=1 Q  ; Select basket to search:
 | 
|---|
| 7 |  S XMF("BSKT")=XMFBSKT
 | 
|---|
| 8 |  Q
 | 
|---|
| 9 | BA ; Search all baskets
 | 
|---|
| 10 |  S XMF("BSKT")="*"
 | 
|---|
| 11 |  Q
 | 
|---|
| 12 | DA ; Message sent on or after date
 | 
|---|
| 13 |  N DIR,Y,X
 | 
|---|
| 14 |  S DIR(0)="DO^:"_$G(XMF("TDATE"),DT)_":EX"
 | 
|---|
| 15 |  S DIR("A")=$$EZBLD^DIALOG(34444) ; Message sent on or after
 | 
|---|
| 16 |  D BLD^DIALOG(34444.1,"","","DIR(""?"")")
 | 
|---|
| 17 |  ; Enter a date.  It must include day, month, and year.
 | 
|---|
| 18 |  S:$D(XMF("FDATE")) DIR("B")=XMFFDTX
 | 
|---|
| 19 |  D ^DIR I $D(DUOUT)!$D(DTOUT) S XMABORT=1 Q
 | 
|---|
| 20 |  I X="@" D  Q
 | 
|---|
| 21 |  . I XMK="!" D NODELETE Q
 | 
|---|
| 22 |  . K XMF("FDATE")
 | 
|---|
| 23 |  Q:Y=""
 | 
|---|
| 24 |  S XMF("FDATE")=Y
 | 
|---|
| 25 |  S XMFFDTX=$$MMDT^XMXUTIL1(XMF("FDATE"))
 | 
|---|
| 26 |  Q
 | 
|---|
| 27 | NODELETE ;This search requires a date range.
 | 
|---|
| 28 |  ;You may change the dates, but you may not delete them.
 | 
|---|
| 29 |  N XMTEXT
 | 
|---|
| 30 |  D BLD^DIALOG(34444.5,"","","XMTEXT","F")
 | 
|---|
| 31 |  D MSG^DIALOG("WE","","","","XMTEXT")
 | 
|---|
| 32 |  D WAIT^XMXUTIL
 | 
|---|
| 33 |  Q
 | 
|---|
| 34 | DB ; Message sent on or before date
 | 
|---|
| 35 |  N DIR,Y,X
 | 
|---|
| 36 |  S DIR(0)="DO^"_$G(XMF("FDATE"))_":DT:EX"
 | 
|---|
| 37 |  S DIR("A")=$$EZBLD^DIALOG(34445) ; Message sent on or before
 | 
|---|
| 38 |  D BLD^DIALOG(34444.1,"","","DIR(""?"")")
 | 
|---|
| 39 |  ; Enter a date.  It must include day, month, and year.
 | 
|---|
| 40 |  S:$D(XMF("TDATE")) DIR("B")=XMFTDTX
 | 
|---|
| 41 |  D ^DIR I $D(DUOUT)!$D(DTOUT) S XMABORT=1 Q
 | 
|---|
| 42 |  I X="@" D  Q
 | 
|---|
| 43 |  . I XMK="!" D NODELETE Q
 | 
|---|
| 44 |  . K XMF("TDATE")
 | 
|---|
| 45 |  Q:Y=""
 | 
|---|
| 46 |  S XMF("TDATE")=Y
 | 
|---|
| 47 |  S XMFTDTX=$$MMDT^XMXUTIL1(XMF("TDATE"))
 | 
|---|
| 48 |  Q
 | 
|---|
| 49 | F ; Message from
 | 
|---|
| 50 |  D GETPERS(XMDUZ,.XMF,"FROM",.XMFFRN,34440,34441,.XMABORT)
 | 
|---|
| 51 |  Q
 | 
|---|
| 52 | G ; Go search
 | 
|---|
| 53 |  W !,$$EZBLD^DIALOG(34417) ; Searching...
 | 
|---|
| 54 |  I XMK="!" D FIND^XMJMFC(XMDUZ,.XMF,1) Q
 | 
|---|
| 55 |  I $G(XMF("BSKT"))="*" D FINDALL^XMJMFB(XMDUZ,.XMF) Q
 | 
|---|
| 56 |  D FIND1^XMJMFB(XMDUZ,.XMF,1)
 | 
|---|
| 57 |  Q
 | 
|---|
| 58 | LM ; Message has this many lines or more
 | 
|---|
| 59 |  N DIR,Y,X
 | 
|---|
| 60 |  S DIR(0)="FO^1:12^K:'$$LMOK^XMJMF2(X) X"
 | 
|---|
| 61 |  S DIR("A")=$$EZBLD^DIALOG(34449) ; Lines of text, minimum
 | 
|---|
| 62 |  D BLD^DIALOG(34449.1,"","","DIR(""?"")")
 | 
|---|
| 63 |  ; Enter a number from 100 to 100,000.
 | 
|---|
| 64 |  ; We will find all messages with that many lines of text or more.
 | 
|---|
| 65 |  S:$D(XMF("FLINE")) DIR("B")=XMF("FLINE")
 | 
|---|
| 66 |  D ^DIR I $D(DUOUT)!$D(DTOUT) S XMABORT=1 Q
 | 
|---|
| 67 |  I X="@" K XMF("FLINE") Q
 | 
|---|
| 68 |  I Y S XMF("FLINE")=Y
 | 
|---|
| 69 |  Q
 | 
|---|
| 70 | LMOK(X) ;
 | 
|---|
| 71 |  I X="@" Q 1
 | 
|---|
| 72 |  I X'?1N.N Q 0
 | 
|---|
| 73 |  I $G(XMF("TLINE")),X>XMF("TLINE") Q 0
 | 
|---|
| 74 |  I X<100 Q 0
 | 
|---|
| 75 |  I X>100000 Q 0
 | 
|---|
| 76 |  Q 1
 | 
|---|
| 77 | LX ; Message has this many lines or less
 | 
|---|
| 78 |  N DIR,Y,X
 | 
|---|
| 79 |  S DIR(0)="FO^1:12^K:'$$LXOK^XMJMF2(X) X"
 | 
|---|
| 80 |  S DIR("A")=$$EZBLD^DIALOG(34450) ; Lines of text, maximum
 | 
|---|
| 81 |  D BLD^DIALOG(34450.1,"","","DIR(""?"")")
 | 
|---|
| 82 |  ; Enter a number from 100 to 100,000.
 | 
|---|
| 83 |  ; We will find all messages with that many lines of text or less.
 | 
|---|
| 84 |  S:$D(XMF("TLINE")) DIR("B")=XMF("TLINE")
 | 
|---|
| 85 |  D ^DIR I $D(DUOUT)!$D(DTOUT) S XMABORT=1 Q
 | 
|---|
| 86 |  I X="@" K XMF("TLINE") Q
 | 
|---|
| 87 |  I Y S XMF("TLINE")=Y
 | 
|---|
| 88 |  Q
 | 
|---|
| 89 | LXOK(X) ;
 | 
|---|
| 90 |  I X="@" Q 1
 | 
|---|
| 91 |  I X'?1N.N Q 0
 | 
|---|
| 92 |  I $G(XMF("FLINE")),X<XMF("FLINE") Q 0
 | 
|---|
| 93 |  I X<100 Q 0
 | 
|---|
| 94 |  I X>100000 Q 0
 | 
|---|
| 95 |  Q 1
 | 
|---|
| 96 | Q ; Quit
 | 
|---|
| 97 |  S XMABORT=1
 | 
|---|
| 98 |  Q
 | 
|---|
| 99 | R ; Response from
 | 
|---|
| 100 |  D GETPERS(XMDUZ,.XMF,"RFROM",.XMFRFRN,34440.1,34441.1,.XMABORT)
 | 
|---|
| 101 |  Q
 | 
|---|
| 102 | S ; Subject contains
 | 
|---|
| 103 |  N DIR,Y,X
 | 
|---|
| 104 |  S DIR(0)="FO^3:30"
 | 
|---|
| 105 |  S DIR("A")=$$EZBLD^DIALOG(34438) ; Subject contains
 | 
|---|
| 106 |  S:$D(XMF("SUBJ")) DIR("B")=XMF("SUBJ")
 | 
|---|
| 107 |  D BLD^DIALOG(34438.1,"","","DIR(""?"")")
 | 
|---|
| 108 |  ;Enter the string that the subject contains.
 | 
|---|
| 109 |  ;It may be from 3 to 30 characters.
 | 
|---|
| 110 |  ;The search is NOT case-sensitive.
 | 
|---|
| 111 |  D ^DIR I $D(DUOUT)!$D(DTOUT) S XMABORT=1 Q
 | 
|---|
| 112 |  I X="@" K XMF("SUBJ") Q
 | 
|---|
| 113 |  Q:Y=""
 | 
|---|
| 114 |  S XMF("SUBJ")=Y
 | 
|---|
| 115 |  Q
 | 
|---|
| 116 | T ; Message to
 | 
|---|
| 117 |  D GETPERS(XMDUZ,.XMF,"TO",$G(XMF("TO")),34440.2,34441.2,.XMABORT)
 | 
|---|
| 118 |  Q
 | 
|---|
| 119 | X ; Message contains
 | 
|---|
| 120 |  N DIR,Y,X
 | 
|---|
| 121 |  S DIR(0)="FO^3:30"
 | 
|---|
| 122 |  S DIR("A")=$$EZBLD^DIALOG(34446.1) ; Message contains
 | 
|---|
| 123 |  S:$D(XMF("TEXT")) DIR("B")=XMF("TEXT")
 | 
|---|
| 124 |  D BLD^DIALOG(34446.4,"","","DIR(""?"")")
 | 
|---|
| 125 |  ;Enter the string to search for.  It may be from 3 to 30 characters.
 | 
|---|
| 126 |  ;Note that if the string you are searching for is not all on one line
 | 
|---|
| 127 |  ;in the message, the search will not be able to find it.
 | 
|---|
| 128 |  D ^DIR I $D(DUOUT)!$D(DTOUT) S XMABORT=1 Q
 | 
|---|
| 129 |  I X="@" K XMF("TEXT") Q
 | 
|---|
| 130 |  Q:Y=""
 | 
|---|
| 131 |  S XMF("TEXT")=Y
 | 
|---|
| 132 |  K DIR,X,Y
 | 
|---|
| 133 |  S DIR(0)="Y"
 | 
|---|
| 134 |  S DIR("A")=$$EZBLD^DIALOG(34447) ; Should the search be case-sensitive
 | 
|---|
| 135 |  S DIR("B")=$$EZBLD^DIALOG($S($G(XMF("TEXT","C"),1):39054,1:39053)) ; Yes/No
 | 
|---|
| 136 |  D BLD^DIALOG(34447.1,"","","DIR(""?"")")
 | 
|---|
| 137 |  ;Your answer determines whether case (upper/lower) matters in the search.
 | 
|---|
| 138 |  ;It also affects the speed of the search.
 | 
|---|
| 139 |  ;A case-sensitive search (one in which case matters) is faster.
 | 
|---|
| 140 |  ;A case-insensitive search (one in which case does not matter) may find
 | 
|---|
| 141 |  ;more matches, but will be slower.
 | 
|---|
| 142 |  ;Answer YES for a faster search, when case matters.
 | 
|---|
| 143 |  ;Answer NO for a slower search, when case does not matter.
 | 
|---|
| 144 |  D ^DIR I $D(DUOUT)!$D(DTOUT) S XMABORT=1 Q
 | 
|---|
| 145 |  S XMF("TEXT","C")=Y
 | 
|---|
| 146 |  K DIR,X,Y N I
 | 
|---|
| 147 |  S DIR("A")=$$EZBLD^DIALOG(34448) ; Where should we search
 | 
|---|
| 148 |  ; x.1:Message only / x.2:Message and Responses / x.3:Responses only
 | 
|---|
| 149 |  S DIR(0)=""
 | 
|---|
| 150 |  F I=1,2,3 S DIR(0)=DIR(0)_";"_I_":"_$$EZBLD^DIALOG(34448+(I/10))
 | 
|---|
| 151 |  S DIR(0)="S^"_$E(DIR(0),2,999)
 | 
|---|
| 152 |  ; x.1:Message only / x.2:Message and Responses / x.3:Responses only
 | 
|---|
| 153 |  S DIR("B")=$$EZBLD^DIALOG(34448+($G(XMF("TEXT","L"),1)/10))
 | 
|---|
| 154 |  D ^DIR I $D(DUOUT)!$D(DTOUT) S XMABORT=1 Q
 | 
|---|
| 155 |  S XMF("TEXT","L")=Y
 | 
|---|
| 156 |  Q
 | 
|---|
| 157 | GETPERS(XMDUZ,XMF,XMWHICH,XMNAME,XMPROMPT,XMHELP,XMABORT) ;
 | 
|---|
| 158 |  N DIR,Y,X,XMOK
 | 
|---|
| 159 |  S DIR(0)="FO^1:30"
 | 
|---|
| 160 |  S DIR("A")=$$EZBLD^DIALOG(XMPROMPT) ; Message from / Message to / Response from
 | 
|---|
| 161 |  S DIR("?")="^D HGETPERS^XMJMF2"
 | 
|---|
| 162 |  I $D(XMF(XMWHICH)) D
 | 
|---|
| 163 |  . S DIR("B")=XMNAME
 | 
|---|
| 164 |  . I XMNAME'["@" S DIR(0)="FrO^1:30" ; ('r' means no 'replace...with...' prompt)
 | 
|---|
| 165 |  . Q:XMWHICH'="TO"
 | 
|---|
| 166 |  . Q:"^G.^g.^"'[(U_$E(XMNAME,1,2)_U)
 | 
|---|
| 167 |  . N XMPRIVAT
 | 
|---|
| 168 |  . S XMPRIVAT=$$EZBLD^DIALOG(39135) ; " [Private Mail Group]"
 | 
|---|
| 169 |  . I XMNAME[XMPRIVAT S DIR("B")=$P(XMNAME,XMPRIVAT)
 | 
|---|
| 170 |  F  D  Q:XMABORT!XMOK
 | 
|---|
| 171 |  . S XMOK=1
 | 
|---|
| 172 |  . D ^DIR I $D(DUOUT)!$D(DTOUT) S XMABORT=1 Q
 | 
|---|
| 173 |  . I X="@" K XMF(XMWHICH),XMNAME Q
 | 
|---|
| 174 |  . I Y="" Q
 | 
|---|
| 175 |  . I X["@" S (XMNAME,XMF(XMWHICH))=$$UP^XLFSTR(Y) Q
 | 
|---|
| 176 |  . I XMWHICH="TO" D  Q
 | 
|---|
| 177 |  . . N XMINSTR
 | 
|---|
| 178 |  . . K XMNAME
 | 
|---|
| 179 |  . . S XMINSTR("ADDR FLAGS")="X"  ; don't create ^TMP("XMY" globals
 | 
|---|
| 180 |  . . D ADDR^XMXADDR(XMDUZ,X,.XMINSTR,"",.XMNAME)
 | 
|---|
| 181 |  . . I '$D(XMNAME) S XMOK=0 Q
 | 
|---|
| 182 |  . . S XMF(XMWHICH)=XMNAME
 | 
|---|
| 183 |  . N DIC,X
 | 
|---|
| 184 |  . S X=Y
 | 
|---|
| 185 |  . S DIC="^VA(200,",DIC(0)="MNEQ"
 | 
|---|
| 186 |  . D ^DIC I $D(DUOUT)!$D(DTOUT) S XMABORT=1 Q
 | 
|---|
| 187 |  . I Y=-1 S XMOK=0 Q
 | 
|---|
| 188 |  . S XMF(XMWHICH)=+Y
 | 
|---|
| 189 |  . S XMNAME=$$NAME^XMXUTIL(+Y)
 | 
|---|
| 190 |  Q
 | 
|---|
| 191 | HGETPERS ;
 | 
|---|
| 192 |  N XMTEXT
 | 
|---|
| 193 |  D BLD^DIALOG(XMHELP,"","","XMTEXT","F")
 | 
|---|
| 194 |  ;Enter the name of the person who sent the message/response.
 | 
|---|
| 195 |  ; - or -
 | 
|---|
| 196 |  ;Enter the message addressee.  It may be a person, group, device, or server.
 | 
|---|
| 197 |  I XMWHICH'="TO" D BLD^DIALOG(34441.3,"","","XMTEXT","F")
 | 
|---|
| 198 |  ;If it's from a local VistA package/fake sender, just put '@' after
 | 
|---|
| 199 |  ;the sender, like ACCOUNTS RECEIVABLE@
 | 
|---|
| 200 |  D BLD^DIALOG(34442,"","","XMTEXT","F")
 | 
|---|
| 201 |  ;For remote users, enter name@, name@domain, or @domain.
 | 
|---|
| 202 |  ;'Name' must be found somewhere in the user's name.
 | 
|---|
| 203 |  ;'Domain' must be found somewhere in the user's domain.
 | 
|---|
| 204 |  ;The more characters you provide, the narrower the search will be.
 | 
|---|
| 205 |  ;MailMan may capitalize some names to facilitate filtering.
 | 
|---|
| 206 |  D MSG^DIALOG("WH","",IOM,"","XMTEXT")
 | 
|---|
| 207 |  Q
 | 
|---|