1 | XMTDT ;ISC-SF/GMB-Deliver later'd msgs & delete inactive msgs ;04/15/2003 12:48
|
---|
2 | ;;8.0;MailMan;**18**;Jun 28, 2002
|
---|
3 | ; Replaces ^XMADJ999,LATER^XMAD2 (ISC-WASH/CAP)
|
---|
4 | GO ;
|
---|
5 | N XMWAIT
|
---|
6 | I $D(ZTQUEUED) S ZTREQ="@"
|
---|
7 | L +^XMBPOST("POST_Tickler"):1 E Q
|
---|
8 | I $D(ZTQUEUED) S %=$$PSET^%ZTLOAD(ZTSK)
|
---|
9 | F Q:$P($G(^XMB(1,1,0)),U,16) D
|
---|
10 | . D LATERNEW
|
---|
11 | . D LATERFWD
|
---|
12 | . D PURGEOLD
|
---|
13 | . D FILTRFWD
|
---|
14 | . S XMWAIT=$$TSTAMP^XMXUTIL1 ; Why can't we just H 60?
|
---|
15 | . F D Q:$$TSTAMP^XMXUTIL1-XMWAIT>60
|
---|
16 | . . H XMHANG
|
---|
17 | L -^XMBPOST("POST_Tickler")
|
---|
18 | I $D(ZTQUEUED) D PCLEAR^%ZTLOAD(ZTSK)
|
---|
19 | Q
|
---|
20 | LATERNEW ; This routine takes care of 'new'ing messages which the user
|
---|
21 | ; had previously 'later'ed for himself.
|
---|
22 | N XMNOW,XMLATER,DIK,XMDUZ,XMZ,DA,XMZREC,XMINACT
|
---|
23 | S XMNOW=$$NOW^XLFDT
|
---|
24 | S XMLATER=0
|
---|
25 | F S XMLATER=$O(^XMB(3.73,"AB",XMLATER)) Q:XMLATER'>0!(XMLATER>XMNOW) D
|
---|
26 | . S DIK="^XMB(3.73,"
|
---|
27 | . S XMDUZ=0
|
---|
28 | . F S XMDUZ=$O(^XMB(3.73,"AB",XMLATER,XMDUZ)) Q:'XMDUZ D
|
---|
29 | . . S XMINACT=$S($P($G(^VA(200,XMDUZ,0)),U,3)="":1,$P($G(^(.1)),U,2)="":1,$P($G(^(201)),U)="":1,1:0) ; user is inactive if no access code, or verify code, or primary menu
|
---|
30 | . . S XMZ=0
|
---|
31 | . . F S XMZ=$O(^XMB(3.73,"AB",XMLATER,XMDUZ,XMZ)) Q:'XMZ D
|
---|
32 | . . . S DA=$O(^XMB(3.73,"AB",XMLATER,XMDUZ,XMZ,0)) Q:'DA
|
---|
33 | . . . I '$D(^XMB(3.73,DA,0)) D Q ; *** This should not be necessary
|
---|
34 | . . . . K ^XMB(3.73,"AB",XMLATER,XMDUZ,XMZ,DA)
|
---|
35 | . . . . K ^XMB(3.73,"AC",XMZ,XMDUZ,DA)
|
---|
36 | . . . . K ^XMB(3.73,"C",XMDUZ,DA)
|
---|
37 | . . . D ^DIK
|
---|
38 | . . . Q:XMINACT
|
---|
39 | . . . S XMZREC=$G(^XMB(3.9,XMZ,0)) Q:XMZREC=""
|
---|
40 | . . . D RESURECT^XMXMSGS2(XMDUZ,XMZ)
|
---|
41 | . . . D DELIVER^XMTDL2(XMDUZ,XMZ,$P(XMZREC,U,1),$P(XMZREC,U,2),0,1)
|
---|
42 | Q
|
---|
43 | LATERFWD ; This routine takes care of forwarding messages which a user
|
---|
44 | ; had previously scheduled for 'later' delivery to other users.
|
---|
45 | N XMDUZ,XMNOW,XMLATER,DIK,XMIEN,XMZ,DA,XMREC,XMV,XMINSTR,XMTO,XMPRIVAT
|
---|
46 | K XMERR,^TMP("XMERR",$J)
|
---|
47 | S XMPRIVAT=$$EZBLD^DIALOG(39135) ; " [Private Mail Group]"
|
---|
48 | S XMINSTR("FWD BY XMDUZ")=""
|
---|
49 | S XMNOW=$$NOW^XLFDT
|
---|
50 | S XMLATER=0
|
---|
51 | F S XMLATER=$O(^XMB(3.9,"AL",XMLATER)) Q:XMLATER'>0!(XMLATER>XMNOW) D
|
---|
52 | . S XMZ=0
|
---|
53 | . F S XMZ=$O(^XMB(3.9,"AL",XMLATER,XMZ)) Q:'XMZ D
|
---|
54 | . . S DA(1)=XMZ
|
---|
55 | . . S DIK="^XMB(3.9,"_DA(1)_",7,"
|
---|
56 | . . S XMIEN=0
|
---|
57 | . . F S XMIEN=$O(^XMB(3.9,"AL",XMLATER,XMZ,XMIEN)) Q:'XMIEN D
|
---|
58 | . . . S XMREC=$G(^XMB(3.9,XMZ,7,XMIEN,0))
|
---|
59 | . . . I XMREC="" K ^XMB(3.9,"AL",XMLATER,XMZ,XMIEN) Q
|
---|
60 | . . . S XMDUZ=$P(XMREC,U,3)
|
---|
61 | . . . S XMTO=$P(XMREC,U,1)
|
---|
62 | . . . I XMTO[XMPRIVAT S XMTO=$P(XMTO,XMPRIVAT,1) ; " [Private Mail Group]" (set in ^XMXADDRG)
|
---|
63 | . . . I $P(XMREC,U,2)'="" S XMTO=$P(XMREC,U,2)_":"_XMTO
|
---|
64 | . . . D INIT^XMXADDR
|
---|
65 | . . . D CHKADDR^XMXADDR(XMDUZ,XMTO) K:$D(XMERR) XMERR,^TMP("XMERR",$J)
|
---|
66 | . . . S XMINSTR("FWD BY")=$P(XMREC,U,4)
|
---|
67 | . . . D:$D(^TMP("XMY",$J)) FWD^XMKP(XMDUZ,XMZ,.XMINSTR)
|
---|
68 | . . . D CLEANUP^XMXADDR
|
---|
69 | . . . S DA=XMIEN
|
---|
70 | . . . D ^DIK
|
---|
71 | Q
|
---|
72 | PURGEOLD ; This routine deletes msgs marked for automatic deletion,
|
---|
73 | ; whether marked by the user, or marked by the 'in basket purge'
|
---|
74 | ; because they hadn't been accessed for a certain number of days.
|
---|
75 | ; Replaces ^XMAI0 (ISC-WASH/CAP/RJ)
|
---|
76 | ; XMDDATE Message delete date
|
---|
77 | N XMDDATE,XMDUZ,XMK,XMZ,XMNOW
|
---|
78 | S XMNOW=$$NOW^XLFDT
|
---|
79 | S (XMDDATE,XMDUZ,XMK,XMZ)=""
|
---|
80 | F S XMDDATE=$O(^XMB(3.7,"AC",XMDDATE)) Q:XMDDATE=""!(XMDDATE>XMNOW) D
|
---|
81 | . F S XMDUZ=$O(^XMB(3.7,"AC",XMDDATE,XMDUZ)) Q:XMDUZ="" D
|
---|
82 | . . F S XMK=$O(^XMB(3.7,"AC",XMDDATE,XMDUZ,XMK)) Q:XMK="" D
|
---|
83 | . . . F S XMZ=$O(^XMB(3.7,"AC",XMDDATE,XMDUZ,XMK,XMZ)) Q:XMZ="" D
|
---|
84 | . . . . I $D(^XMB(3.7,XMDUZ,2,XMK,1,XMZ,0)) D ZAPIT^XMXMSGS2(XMDUZ,XMK,XMZ) Q
|
---|
85 | . . . . K ^XMB(3.7,"AC",XMDDATE,XMDUZ,XMK,XMZ)
|
---|
86 | Q
|
---|
87 | FILTRFWD ; This routine forwards messages for a user when a filter
|
---|
88 | ; with 'forward to' recipients has activated during message delivery.
|
---|
89 | N XMDUZ,XMUPTR,XMZ,XMREC,XMV,XMINSTR,XMTO,XMPRIVAT,XMFIEN,XMFWDIEN
|
---|
90 | S XMPRIVAT=$$EZBLD^DIALOG(39135) ; " [Private Mail Group]"
|
---|
91 | S XMINSTR("FWD BY XMDUZ")="F"
|
---|
92 | S XMFIEN=0
|
---|
93 | F S XMFIEN=$O(^XMB(3.9,"AF",XMFIEN)) Q:'XMFIEN D
|
---|
94 | . S XMZ=0
|
---|
95 | . F S XMZ=$O(^XMB(3.9,"AF",XMFIEN,XMZ)) Q:'XMZ D
|
---|
96 | . . S XMUPTR=0
|
---|
97 | . . F S XMUPTR=$O(^XMB(3.9,"AF",XMFIEN,XMZ,XMUPTR)) Q:'XMUPTR D
|
---|
98 | . . . S XMREC=$G(^XMB(3.9,XMZ,1,XMUPTR,0))
|
---|
99 | . . . S XMDUZ=$P(XMREC,U,1)
|
---|
100 | . . . I XMREC=""!'XMDUZ!($P(XMREC,U,13)'=XMFIEN) K ^XMB(3.9,"AF",XMFIEN,XMZ,XMUPTR) Q
|
---|
101 | . . . S XMFWDIEN=0
|
---|
102 | . . . D INIT^XMXADDR
|
---|
103 | . . . F S XMFWDIEN=$O(^XMB(3.7,XMDUZ,15,XMFIEN,1,XMFWDIEN)) Q:'XMFWDIEN S XMREC=$G(^(XMFWDIEN,0)) D
|
---|
104 | . . . . S XMTO=$P(XMREC,U,1) Q:XMTO=""
|
---|
105 | . . . . N XMERROR,XMFULL,XMFWDADD
|
---|
106 | . . . . I XMTO[XMPRIVAT S XMTO=$P(XMTO,XMPRIVAT,1) ; " [Private Mail Group]" (set in ^XMXADDRG)
|
---|
107 | . . . . ;I $P(XMREC,U,2)'="" S XMTO=$P(XMREC,U,2)_":"_XMTO
|
---|
108 | . . . . D ADDRESS^XMXADDR(XMDUZ,XMTO,.XMFULL,.XMERROR) Q:'$D(XMERROR)
|
---|
109 | . . . . D DELFWDTO^XMTDF(XMDUZ,XMFIEN,XMFWDIEN,XMTO,$$GETERR^XMXADDR4)
|
---|
110 | . . . S XMINSTR("FWD BY")=$$NAME^XMXUTIL(XMDUZ)
|
---|
111 | . . . D:$D(^TMP("XMY",$J)) FWD^XMKP(XMDUZ,XMZ,.XMINSTR)
|
---|
112 | . . . D CLEANUP^XMXADDR
|
---|
113 | . . . N XMFDA
|
---|
114 | . . . S XMFDA(3.91,XMUPTR_","_XMZ_",",15)=0 ; filter forward completed
|
---|
115 | . . . D FILE^DIE("","XMFDA")
|
---|
116 | Q
|
---|