| 1 | XMAI2 ;ISC-SF/GMB -Send a message if too many messages ;04/19/2002  12:41
 | 
|---|
| 2 |  ;;8.0;MailMan;;Jun 28, 2002
 | 
|---|
| 3 |  ; Was (WASH ISC)/CAP/L.RHODE
 | 
|---|
| 4 |  ; Entry points used by MailMan options (not covered by DBIA):
 | 
|---|
| 5 |  ; ENTER   XMMGR-DISK-MANY-MESSAGE-MAINT
 | 
|---|
| 6 | ENTER ;
 | 
|---|
| 7 |  N XMMAX,XMSAVE,XMABORT,I
 | 
|---|
| 8 |  S XMABORT=0
 | 
|---|
| 9 |  D INIT(.XMMAX,.XMABORT) Q:XMABORT
 | 
|---|
| 10 |  I $D(ZTQUEUED) D PROCESS Q
 | 
|---|
| 11 |  F I="XMMAX" S XMSAVE(I)="" ;MailMan: Many Msg Maint Request
 | 
|---|
| 12 |  D EN^XUTMDEVQ("PROCESS^XMAI2",$$EZBLD^DIALOG(36600),.XMSAVE)
 | 
|---|
| 13 |  Q
 | 
|---|
| 14 | INIT(XMMAX,XMABORT) ;
 | 
|---|
| 15 |  S XMMAX=500 ; Threshold number of messages a user can own
 | 
|---|
| 16 |  Q:$D(ZTQUEUED)
 | 
|---|
| 17 |  N DIR,Y,DIRUT,XMTEXT
 | 
|---|
| 18 |  W !
 | 
|---|
| 19 |  ;This option sends a message to every user who has more than a
 | 
|---|
| 20 |  ;certain number of messages in his or her mailbox, asking the user
 | 
|---|
| 21 |  ;to terminate unnecessary messages.
 | 
|---|
| 22 |  D BLD^DIALOG(36601,"","","XMTEXT","F")
 | 
|---|
| 23 |  D MSG^DIALOG("WM","","","","XMTEXT")
 | 
|---|
| 24 |  W !
 | 
|---|
| 25 |  S DIR(0)="N^10::"
 | 
|---|
| 26 |  S DIR("A")=$$EZBLD^DIALOG(36602) ;Enter the 'many message' threshold
 | 
|---|
| 27 |  S DIR("B")=XMMAX
 | 
|---|
| 28 |  D BLD^DIALOG(36603,"","","DIR(""?"")") ;How many messages may a user have before MailMan sends a nastygram?
 | 
|---|
| 29 |  D ^DIR I $D(DIRUT) S XMABORT=1 Q
 | 
|---|
| 30 |  S XMMAX=Y
 | 
|---|
| 31 |  W !
 | 
|---|
| 32 |  ;Messages will be sent to owners of more than |1| messages.
 | 
|---|
| 33 |  ;This option may take awhile - you may wish to queue it.
 | 
|---|
| 34 |  D BLD^DIALOG(36604,XMMAX,"","XMTEXT","F")
 | 
|---|
| 35 |  D MSG^DIALOG("WM","","","","XMTEXT")
 | 
|---|
| 36 |  Q
 | 
|---|
| 37 | PROCESS ; (Requires XMMAX)
 | 
|---|
| 38 |  N XMUSER,XMCNT
 | 
|---|
| 39 |  S XMUSER=.9999
 | 
|---|
| 40 |  F  S XMUSER=$O(^XMB(3.7,XMUSER)) Q:XMUSER'>0  D
 | 
|---|
| 41 |  . S XMCNT=$$TMSGCT^XMXUTIL(XMUSER)
 | 
|---|
| 42 |  . D:XMCNT>XMMAX MESSAGE(XMUSER,XMCNT)
 | 
|---|
| 43 |  S:$D(ZTQUEUED) ZTREQ="@"
 | 
|---|
| 44 |  Q
 | 
|---|
| 45 | MESSAGE(XMTO,XMCNT) ; Send message
 | 
|---|
| 46 |  N XMPARM,XMINSTR
 | 
|---|
| 47 |  S XMINSTR("FROM")=.5,XMINSTR("FLAGS")="I"
 | 
|---|
| 48 |  S XMPARM(1)=XMCNT,XMPARM(2)=$$BMSGCT^XMXUTIL(XMTO,1)
 | 
|---|
| 49 |  D TASKBULL^XMXBULL(.5,"XM TOO MANY MESSAGES",.XMPARM,"",XMTO,.XMINSTR)
 | 
|---|
| 50 |  Q
 | 
|---|