1 | XMA30 ;ISC-SF/GMB-XMCLEAN, XMAUTOPURGE (cont.) ;01/08/2003 10:04
|
---|
2 | ;;8.0;MailMan;**10,13**;Jun 28, 2002
|
---|
3 | ; Was (WASH ISC)/CAP
|
---|
4 | AUDIT ; Lists data from previous purges
|
---|
5 | N XMLIEN,XMREC,XMSTART,XMEND,XMLEFT,XMPURGE,XMTYPE,XMABORT
|
---|
6 | S XMABORT=0
|
---|
7 | W @IOF
|
---|
8 | D BLD^DIALOG(36432,"","","XMTEXT","F")
|
---|
9 | D MSG^DIALOG("WM","","","","XMTEXT")
|
---|
10 | ;It's a good idea to look these over.
|
---|
11 | ;Look for multiple purges running concurrently and missing purge dates.
|
---|
12 | ;Check the times the purge ended - do they conflict with user activity?
|
---|
13 | W !
|
---|
14 | D AHDR
|
---|
15 | S XMLIEN=0
|
---|
16 | F S XMLIEN=$O(^XMB(1,1,.1,XMLIEN)) Q:XMLIEN'>0 D Q:XMABORT
|
---|
17 | . I $Y+3>IOSL D Q:XMABORT
|
---|
18 | . . I $E(IOST,1,2)="C-" D PAGE^XMXUTIL(.XMABORT) Q:XMABORT
|
---|
19 | . . W @IOF D AHDR
|
---|
20 | . S XMREC=^XMB(1,1,.1,XMLIEN,0)
|
---|
21 | . S XMSTART=$E($P(XMREC,U),1,12)
|
---|
22 | . S XMLEFT=$P(XMREC,U,2)
|
---|
23 | . S XMPURGE=$P(XMREC,U,3)
|
---|
24 | . S XMTYPE=$P(XMREC,U,6)
|
---|
25 | . S XMEND=$E($P(XMREC,U,8),1,12)
|
---|
26 | . I XMTYPE="",'XMEND D ; To handle old data before XM*7.1*37
|
---|
27 | . . S XMEND=XMSTART
|
---|
28 | . . K XMSTART
|
---|
29 | . W !,$$EZBLD^DIALOG($S(+XMTYPE=0:36433,XMTYPE=1:36434,1:36435)) ; "Unref Msg" / "Date" / "Test Date"
|
---|
30 | . W ?12,$S($D(XMSTART):$J($$FMTE^XLFDT(XMSTART,5),16),1:""),$J($$FMTE^XLFDT(XMEND,5),18)
|
---|
31 | . I $D(XMSTART),XMEND>XMSTART W $J($$FMDIFF^XLFDT(XMEND,XMSTART,3),10)
|
---|
32 | . W ?58,$J(XMPURGE,9),$J(XMLEFT,12)
|
---|
33 | Q
|
---|
34 | AHDR ;
|
---|
35 | N XMTEXT
|
---|
36 | D BLD^DIALOG(36436,"","","XMTEXT","F")
|
---|
37 | D MSG^DIALOG("WM","",IOM,"","XMTEXT")
|
---|
38 | W !
|
---|
39 | ;MailMan Purge History
|
---|
40 | ;Type Start End Duration Purged Kept
|
---|
41 | Q
|
---|
42 | USERSTAT ; Display statistics
|
---|
43 | N DIR,Y,XMTYPE,ZTSAVE,XMVAR,XMTEXT,XMDIALOG,XMI
|
---|
44 | W !
|
---|
45 | S XMVAR(2)=$O(^XMB(3.9,":"),-1) ; highest
|
---|
46 | S XMVAR(1)=$J($O(^XMB(3.9,0)),$L(XMVAR(2))) ; lowest
|
---|
47 | S XMVAR(3)=$J($P($G(^XMB(3.9,0)),U,4),$L(XMVAR(2))) ; how many
|
---|
48 | D BLD^DIALOG(36437,.XMVAR,"","XMTEXT","F")
|
---|
49 | D MSG^DIALOG("WM","","","","XMTEXT")
|
---|
50 | ;Lowest numbered message: |1|
|
---|
51 | ;Highest numbered message: |2|
|
---|
52 | ;Number of messages: |3|
|
---|
53 | D BLD^DIALOG(36438,"","","DIR(""A"")") ; Scan Option
|
---|
54 | ;A:Active Mailboxes;I:Inactive Mailboxes;M:All Mailboxes"
|
---|
55 | S DIR(0)="S^"
|
---|
56 | F XMI=36439.1,36439.2,36439.3 D
|
---|
57 | . S XMDIALOG(XMI)=$$EZBLD^DIALOG(XMI)
|
---|
58 | . S DIR(0)=DIR(0)_XMDIALOG(XMI)_";"
|
---|
59 | S DIR(0)=$E(DIR(0),1,$L(DIR(0))-1)
|
---|
60 | S DIR("B")=$P(XMDIALOG(36439.1),":",2) ; Active Mailboxes
|
---|
61 | D ^DIR Q:$D(DIRUT)
|
---|
62 | S XMI=0 F S XMI=$O(XMDIALOG(XMI)) Q:$P(XMDIALOG(XMI),":",1)=Y
|
---|
63 | S XMTYPE=$S(XMI=36439.1:"A",XMI=36439.2:"I",1:"M")
|
---|
64 | S XMTYPE("DESC")=$P(XMDIALOG(XMI),":",2)
|
---|
65 | S ZTSAVE("XMTYPE")="",ZTSAVE("XMTYPE(")=""
|
---|
66 | D EN^XUTMDEVQ("DOSTATS^XMA30",$$EZBLD^DIALOG(36440),.ZTSAVE) ; MailMan: User Mailbox Statistics
|
---|
67 | Q
|
---|
68 | DOSTATS ;
|
---|
69 | N XMTODAY,XMPAGE,XMABORT,XMDUZ,XMK,XMINCNT,XMZCNT,XMKCNT,XMBOXCNT,XMLMAIL,XMNAME,XMREC,XMSTAT,XMLSIGN,XMINACT
|
---|
70 | S XMTODAY=$$FMTE^XLFDT(DT,5),(XMPAGE,XMABORT,XMBOXCNT)=0
|
---|
71 | S:$D(ZTQUEUED) ZTREQ="@"
|
---|
72 | W:$E(IOST,1,2)="C-" @IOF D SHDR(XMTODAY,.XMPAGE)
|
---|
73 | S XMNAME="",XMINACT=$$EZBLD^DIALOG(36441) ; "Inactive"
|
---|
74 | F S XMNAME=$O(^VA(200,"B",XMNAME)) Q:XMNAME="" D Q:XMABORT
|
---|
75 | . S XMDUZ=0
|
---|
76 | . F S XMDUZ=$O(^VA(200,"B",XMNAME,XMDUZ)) Q:XMDUZ="" D Q:XMABORT
|
---|
77 | . . Q:'$D(^XMB(3.7,XMDUZ))
|
---|
78 | . . S XMREC=$G(^VA(200,XMDUZ,0))
|
---|
79 | . . I $P(XMREC,U,3)="" Q:XMTYPE="A" S XMSTAT=XMINACT
|
---|
80 | . . E I XMTYPE="I" Q
|
---|
81 | . . E S XMSTAT=""
|
---|
82 | . . I $Y+3>IOSL D Q:XMABORT
|
---|
83 | . . . I $E(IOST,1,2)="C-" D PAGE^XMXUTIL(.XMABORT) Q:XMABORT
|
---|
84 | . . . W @IOF D SHDR(XMTODAY,.XMPAGE)
|
---|
85 | . . S XMBOXCNT=XMBOXCNT+1
|
---|
86 | . . W !,$E($$NAME^XMXUTIL(XMDUZ),1,30)
|
---|
87 | . . S XMK=.9,(XMINCNT,XMZCNT)=0
|
---|
88 | . . F XMKCNT=1:1 S XMK=$O(^XMB(3.7,XMDUZ,2,XMK)) Q:XMK'>0 D
|
---|
89 | . . . D:'$D(^XMB(3.7,XMDUZ,2,XMK,1,0)) MAKENODE
|
---|
90 | . . . I XMK=1 S XMINCNT=+$P($G(^XMB(3.7,XMDUZ,2,XMK,1,0)),U,4),XMZCNT=XMINCNT Q
|
---|
91 | . . . S XMZCNT=XMZCNT+$P($G(^XMB(3.7,XMDUZ,2,XMK,1,0)),U,4)
|
---|
92 | . . S XMLSIGN=$P($G(^VA(200,XMDUZ,1.1)),U)
|
---|
93 | . . S XMLSIGN=$S(XMSTAT'="":XMSTAT,'XMLSIGN:$$EZBLD^DIALOG(38002),1:$J($$MMDT^XMXUTIL1($P(XMLSIGN,".")),8)) ; Never
|
---|
94 | . . S XMLMAIL=$P($G(^XMB(3.7,XMDUZ,"L")),U)
|
---|
95 | . . S XMLMAIL=$S(XMLMAIL["@":$P(XMLMAIL,"@"),1:$P(XMLMAIL," ",1,3))
|
---|
96 | . . W ?30,$J(XMKCNT,4),$J(XMZCNT,7),$J(XMINCNT,8),?53,XMLSIGN,?67,$S($L(XMLMAIL):XMLMAIL,1:$$EZBLD^DIALOG(38002)) ; Never
|
---|
97 | Q:XMABORT
|
---|
98 | W !!,XMTYPE("DESC"),": ",XMBOXCNT
|
---|
99 | I $E(IOST,1,2)="C-" D WAIT^XMXUTIL
|
---|
100 | Q
|
---|
101 | MAKENODE ; Create the zero node for the message multiple
|
---|
102 | N XMCNT,XMZ
|
---|
103 | Q:'$O(^XMB(3.7,XMDUZ,2,XMK,1,0))
|
---|
104 | S (XMZ,XMCNT)=0
|
---|
105 | F S XMZ=$O(^XMB(3.7,XMDUZ,2,XMK,1,XMZ)) Q:XMZ'>0 S XMCNT=XMCNT+1
|
---|
106 | S ^XMB(3.7,XMDUZ,2,XMK,1,0)="^3.702P^"_+$O(^XMB(3.7,XMDUZ,2,XMK,1,"C"),-1)_U_XMCNT
|
---|
107 | Q
|
---|
108 | SHDR(XMTODAY,XMPAGE) ; Header for Mailbox Statistics Report
|
---|
109 | S XMPAGE=XMPAGE+1
|
---|
110 | W XMTYPE("DESC"),", ",XMTODAY,?65,$J($$EZBLD^DIALOG(34542,XMPAGE),15) ; Page |1|
|
---|
111 | D BLD^DIALOG(36443,"","","XMTEXT","F")
|
---|
112 | D MSG^DIALOG("WM","",IOM,"","XMTEXT")
|
---|
113 | W !
|
---|
114 | ;User Bskts Msgs IN Bskt Last Sign on Last Mail Use"
|
---|
115 | Q
|
---|
116 | DONTPURG ; Find all messages which might not be in someone's mailbox,
|
---|
117 | ; but which shouldn't be purged anyway.
|
---|
118 | N XMDUZ,XMZ,XMZR,XMQ,XMT,XMD,XMINST,XMG
|
---|
119 | K ^TMP("XM",$J)
|
---|
120 | ;
|
---|
121 | ; DON'T PURGE LOCAL MESSAGES AND REPLIES WHICH ARE ABOUT TO BE DELIVERED
|
---|
122 | ;
|
---|
123 | S (XMT,XMG,XMZ)="" ; new messages, forwarded messages, and replies
|
---|
124 | F S XMT=$O(^XMBPOST("BOX",XMT)) Q:XMT="" D
|
---|
125 | . F S XMG=$O(^XMBPOST("BOX",XMT,XMG)) Q:XMG="" D
|
---|
126 | . . F S XMZ=$O(^XMBPOST("BOX",XMT,XMG,XMZ)) Q:XMZ="" S ^TMP("XM",$J,"NOP",+XMZ)="" I XMG="R" S ^TMP("XM",$J,"NOP",$P(XMZ,U,2))=""
|
---|
127 | ;
|
---|
128 | ; new messages, forwarded messages
|
---|
129 | S (XMQ,XMT,XMZ)="" ; Queue number, Timestamp, Message IEN
|
---|
130 | F S XMQ=$O(^XMBPOST("M",XMQ)) Q:XMQ="" D
|
---|
131 | . F S XMT=$O(^XMBPOST("M",XMQ,XMT)) Q:XMT="" D
|
---|
132 | . . F S XMZ=$O(^XMBPOST("M",XMQ,XMT,XMZ)) Q:XMZ="" S ^TMP("XM",$J,"NOP",+XMZ)=""
|
---|
133 | ;
|
---|
134 | ; replies
|
---|
135 | S (XMQ,XMZ,XMZR)="" ; Queue number, Message IEN, Reply IEN
|
---|
136 | F S XMQ=$O(^XMBPOST("R",XMQ)) Q:XMQ="" D
|
---|
137 | . S XMT="" ; Timestamp
|
---|
138 | . F S XMT=$O(^XMBPOST("R",XMQ,XMT)) Q:XMT'>0 D
|
---|
139 | . . F S XMZ=$O(^XMBPOST("R",XMQ,XMT,XMZ)) Q:XMZ="" D
|
---|
140 | . . . S ^TMP("XM",$J,"NOP",XMZ)="" ; Original msg to new replies
|
---|
141 | . . . F S XMZR=$O(^XMBPOST("R",XMQ,XMT,XMZ,XMZR)) Q:XMZR="" S ^TMP("XM",$J,"NOP",XMZR)="" ; Reply
|
---|
142 | ;
|
---|
143 | ; DON'T PURGE MESSAGES QUEUED TO BE DELIVERED REMOTELY
|
---|
144 | S XMINST=999 ; Institution
|
---|
145 | F S XMINST=$O(^XMB(3.7,.5,2,XMINST)) Q:XMINST'>0 D
|
---|
146 | . S XMZ=0
|
---|
147 | . F S XMZ=$O(^XMB(3.7,.5,2,XMINST,1,XMZ)) Q:XMZ'>0 S ^TMP("XM",$J,"NOP",XMZ)=""
|
---|
148 | ;
|
---|
149 | ; DON'T PURGE LATER'D MESSAGES
|
---|
150 | S XMD=0 ; Date to be later'd
|
---|
151 | F S XMD=$O(^XMB(3.73,XMD)) Q:XMD'>0 D
|
---|
152 | . S XMZ=$P(^XMB(3.73,XMD,0),U,3)
|
---|
153 | . S:XMZ ^TMP("XM",$J,"NOP",XMZ)="" ; Msg to be later'd
|
---|
154 | ;
|
---|
155 | ; DON'T PURGE MESSAGES WHICH ARE BEING EDITED
|
---|
156 | S (XMDUZ,XMZ)=""
|
---|
157 | F S XMDUZ=$O(^XMB(3.7,"AD",XMDUZ)) Q:XMDUZ="" D
|
---|
158 | . F S XMZ=$O(^XMB(3.7,"AD",XMDUZ,XMZ)) Q:XMZ="" S ^TMP("XM",$J,"NOP",XMZ)=""
|
---|
159 | ;
|
---|
160 | ; DON'T PURGE MESSAGES WHICH ARE TO BE DELIVERED LATER TO CERTAIN RECIPIENTS
|
---|
161 | S (XMD,XMZ)=""
|
---|
162 | F S XMD=$O(^XMB(3.9,"AL",XMD)) Q:XMD="" D
|
---|
163 | . F S XMZ=$O(^XMB(3.9,"AL",XMD,XMZ)) Q:XMZ="" S ^TMP("XM",$J,"NOP",XMZ)=""
|
---|
164 | Q
|
---|