source: FOIAVistA/tag/r/MAILMAN-XM/XMJBN1.m@ 666

Last change on this file since 666 was 628, checked in by George Lilly, 15 years ago

initial load of FOIAVistA 6/30/08 version

File size: 4.0 KB
Line 
1XMJBN1 ;ISC-SF/GMB-Access new mail in mailbox (cont.) ;04/06/2002 08:52
2 ;;8.0;MailMan;;Jun 28, 2002
3INIT(XMDUZ,XMK,XMKN,XMNEW,XMKMULT,XMABORT) ;
4 N I F I="N","N0" D BOGUS(XMDUZ,I)
5 D CHECK^XMVVITAE
6 I XMDUZ'=DUZ,'$$RPRIV^XMXSEC D Q
7 . S XMABORT=1
8 . D SHOW^XMJERR
9 S XMK=$O(^XMB(3.7,XMDUZ,"N0",0))
10 I XMK>0,XMK<1 D
11 . D FIXIT(XMDUZ)
12 . S XMK=$O(^XMB(3.7,XMDUZ,"N0",0))
13 I XMK="" D Q
14 . S XMABORT=1
15 . S $P(^XMB(3.7,XMDUZ,0),U,6)="" ; Just to make sure we're in synch.
16 . N XMPARM S XMPARM(2)=XMV("NAME")
17 . W !,$$EZBLD^DIALOG($S(XMDUZ=DUZ:34017,1:38156.2),.XMPARM) ; You have no new messages. / |2| has no new messages.
18 S XMNEW=$$TNMSGCT^XMXUTIL(XMDUZ)
19 I $O(^XMB(3.7,XMDUZ,"N0",XMK)) D
20 . S XMKMULT=1
21 . W !!,$$EZBLD^DIALOG($S(XMDUZ=DUZ:34019,1:34019.1),XMV("NAME")) ; You have/|1| has new mail in more than one basket
22 E S XMKMULT=0
23 S XMKN=$P(^XMB(3.7,XMDUZ,2,XMK,0),U)
24 Q
25BOGUS(XMDUZ,XMTYPE) ; Check for and kill bogus node.
26 ; This shouldn't be needed, but something (not MailMan) is setting it.
27 I $D(^XMB(3.7,XMDUZ,XMTYPE,0)) K ^XMB(3.7,XMDUZ,XMTYPE,0)
28 Q
29FIXIT(XMDUZ) ; In case mail in the waste basket is new.
30 N XMK,XMZ
31 S (XMK,XMZ)=""
32 F S XMK=$O(^XMB(3.7,XMDUZ,"N0",XMK)) Q:XMK'<1!'XMK D
33 . F S XMZ=$O(^XMB(3.7,XMDUZ,"N0",XMK,XMZ)) Q:'XMZ D
34 . . D:$D(^XMB(3.7,XMDUZ,2,XMK,1,XMZ,0)) NONEW^XMXUTIL(XMDUZ,XMK,XMZ,1)
35 . . K:$D(^XMB(3.7,XMDUZ,"N0",XMK,XMZ)) ^XMB(3.7,XMDUZ,"N0",XMK,XMZ)
36 . . K:$D(^XMB(3.7,XMDUZ,"N",XMK,XMZ)) ^XMB(3.7,XMDUZ,"N",XMK,XMZ)
37 Q
38NXTBSKT(XMDUZ,XMTYPE,XMKN,XMK,XMKPRI) ;
39 D NXTINIT(XMDUZ,XMTYPE)
40 I '$D(^TMP("XM",$J,XMTYPE)) D Q
41 . S XMK=0,XMKN="",XMKPRI=0,XMKPRI("XMKN")=""
42 . K ^TMP("XM",$J,"APX")
43 F D Q:XMKN'=""
44 . I XMKN="" S XMKPRI=0,XMKPRI("XMKN")="" K ^TMP("XM",$J,"APX")
45 . I XMKN=XMKPRI("XMKN") D Q:XMKN'=""
46 . . D NXTPRI(XMDUZ,XMTYPE,.XMKPRI)
47 . . S XMKN=XMKPRI("XMKN")
48 . E S XMKPRI=0,XMKPRI("XMKN")=""
49 . F S XMKN=$O(^TMP("XM",$J,XMTYPE,XMKN)) Q:XMKN="" Q:'$D(^TMP("XM",$J,"APX",XMTYPE,XMKN))
50 S XMK=^TMP("XM",$J,XMTYPE,XMKN)
51 K ^TMP("XM",$J,XMTYPE)
52 Q
53NXTINIT(XMDUZ,XMTYPE) ;
54 N XMK,XMKN
55 K ^TMP("XM",$J,XMTYPE)
56 D BOGUS(XMDUZ,XMTYPE)
57 S XMK=0
58 F S XMK=$O(^XMB(3.7,XMDUZ,XMTYPE,XMK)) Q:'XMK D
59 . S XMKN=$P(^XMB(3.7,XMDUZ,2,XMK,0),U)
60 . S ^TMP("XM",$J,XMTYPE,XMKN)=XMK
61 Q
62NXTPRI(XMDUZ,XMTYPE,XMKPRI) ;
63 I XMKPRI=100 S XMKPRI("XMKN")="" Q
64 I $D(^XMB(3.7,XMDUZ,2,"AP")) D I XMKPRI S ^TMP("XM",$J,"APX",XMTYPE,XMKPRI("XMKN"))="" Q
65 . N XMK,XMKN
66 . K ^TMP("XM",$J,"AP")
67 . S:XMKPRI XMKPRI=XMKPRI-.1
68 . S XMK=0
69 . F S XMKPRI=$O(^XMB(3.7,XMDUZ,2,"AP",XMKPRI)) Q:'XMKPRI D Q:XMKPRI("XMKN")'=""
70 . . F S XMK=$O(^XMB(3.7,XMDUZ,2,"AP",XMKPRI,XMK)) Q:'XMK D
71 . . . S XMKN=$P(^XMB(3.7,XMDUZ,2,XMK,0),U)
72 . . . Q:'$D(^TMP("XM",$J,XMTYPE,XMKN))
73 . . . S ^TMP("XM",$J,"AP",XMKPRI,XMKN)=""
74 . . S XMKPRI("XMKN")=$O(^TMP("XM",$J,"AP",XMKPRI,XMKPRI("XMKN")))
75 . K ^TMP("XM",$J,"AP")
76 S XMKPRI=100
77 N XMIN
78 S XMIN=$$EZBLD^DIALOG(37005) ; IN
79 I $D(^TMP("XM",$J,XMTYPE,XMIN)) S XMKPRI("XMKN")=XMIN,^TMP("XM",$J,"APX",XMTYPE,XMKPRI("XMKN"))="" Q
80 S XMKPRI("XMKN")=""
81 Q
82 ; It used to be that the list of messages to "new" was kept in ^TMP.
83 ; But if the user got forced off for some reason, the global was lost,
84 ; and the messages were never "new"ed. So I changed to ^XTMP. We check
85 ; ^XTMP whenever a user logs on (in ^XMVVITAE).
86 ; Possible problem: one user is in the middle of reading new messages
87 ; and "new"ing ones he wants to have "new" again, and a surrogate logs
88 ; on, and triggers an immediate "new"ing of all those messages.
89 ; I think it's an acceptable risk. Maybe not.
90 ; This may be a case of 'damned if you do; damned if you don't'.
91 ; Perhaps we should also check ^XTMP in the wee hours of the morning
92 ; (in ^XMTDT), just in case the user doesn't log on again.
93NEWAGAIN(XMDUZ) ; "new" messages which the user wanted to "new".
94 S ^XTMP("XM",0)=$$FMADD^XLFDT(DT,7)_U_DT
95 N XMZ,XMK
96 S XMZ=""
97 F S XMZ=$O(^XTMP("XM","MAKENEW",XMDUZ,XMZ)) Q:XMZ="" D K ^XTMP("XM","MAKENEW",XMDUZ,XMZ)
98 . S XMK=$O(^XMB(3.7,"M",XMZ,XMDUZ,0)) Q:'XMK
99 . Q:$D(^XMB(3.7,XMDUZ,"N0",XMK,XMZ))
100 . D MAKENEW^XMXUTIL(XMDUZ,XMK,XMZ,1)
101 Q
Note: See TracBrowser for help on using the repository browser.