home *** CD-ROM | disk | FTP | other *** search
/ Troubleshooting Netware Systems / CSTRIAL0196.BIN / attach / msj / v10n10 / vb40.exe / WCIMR.EXE / WCPROCES.BAS < prev    next >
BASIC Source File  |  1995-10-01  |  8KB  |  239 lines

  1. Attribute VB_Name = "WCIMProcess"
  2. Function ProcessThread(ThdNum As Integer) As String
  3. On Error Resume Next
  4.     ' gThreadList is type Thread
  5.     Dim ThrdMsg As ForumThdMsg
  6.     Dim FNum As Integer
  7.     Dim Strg$
  8.  
  9.     ' Get the thread header, and save the offset for further reading
  10.  
  11.     Posn = GetThreadHeader(gThreadList(ThdNum))
  12.  
  13.     FNum = FreeFile
  14.     Open gThreadList(ThdNum).FName For Binary Access Read Lock Read As #FNum
  15.  
  16.     ' Advance past the already-read thread header
  17.     Seek #FNum, Posn
  18.  
  19.     ProcessThread = ""
  20.     ' Loop for each thread entry, reading the messages
  21.  
  22.     For i = 1 To gThreadList(ThdNum).Header.count
  23.  
  24.         ' Read the next thread message (based on file position)
  25.         RC = GetNextThreadMsg(FNum, ThrdMsg)
  26.  
  27.         Reply$ = "Section: " & gThreadList(ThdNum).Header.forumname.SData & _
  28.                  " (" & gThreadList(ThdNum).Header.sectionname.SData & ")" & Chr$(13) & Chr$(10) & _
  29.                  "Msg: " & ThrdMsg.MessageID & " (Reply to: " & ThrdMsg.ParentID
  30.         
  31.         If ThrdMsg.numreplies = 1 Then
  32.             Reply$ = Reply$ & " - 1 reply to this msg."
  33.         Else
  34.         If ThrdMsg.numreplies > 1 Then
  35.             Reply$ = Reply$ & " - " & ThrdMsg.numreplies & " replies to this msg."
  36.         End If
  37.         End If
  38.         
  39.         Reply$ = Reply$ & ")"
  40.         
  41.         ' Build the message string and append it to the thread display
  42.  
  43.         Strg$ = Reply$ & Chr$(13) & Chr$(10) & _
  44.                 "From: " & ThrdMsg.AuthorName.SData & "  (" & ThrdMsg.AuthorAddr.SData & ")" & Chr$(13) & Chr$(10) & _
  45.                 "To  : " & ThrdMsg.RecipName.SData & "  (" & ThrdMsg.RecipAddr.SData & ")" & Chr$(13) & Chr$(10) & _
  46.                 "Date: " & TSToString(ThrdMsg.Created) & Chr$(13) & Chr$(10) & _
  47.                 "Subject: " & gThreadList(ThdNum).Header.Subject.SData & Chr$(13) & Chr$(10) & Chr$(13) & Chr$(10) & _
  48.                    StrReplace(ThrdMsg.MsgText, Chr$(10), Chr$(13) & Chr$(10)) & _
  49.                    Chr$(13) & Chr$(10) & String(70, "=") & Chr$(13) & Chr$(10)
  50.                    
  51.  
  52.         Strg$ = StdReplace(Strg$)
  53.  
  54.         ProcessThread = ProcessThread & Strg$
  55.     Next i
  56.  
  57.     Close FNum
  58.  
  59. End Function
  60.  
  61. Function ProcessEMail(ThdNum As Integer) As String
  62. On Error Resume Next
  63.     ' gThreadList is type Thread
  64.     ' Dim ThrdMsg As ForumThdMsg
  65.     Dim FNum As Integer
  66.     Dim MsgHdr As MessageHeader
  67.     Dim MsgStrg As String
  68.     Dim EMailHdr As EMailHeader
  69.     Dim ct As Integer
  70.  
  71.     ' Figure out the length of the read-in common header
  72.     
  73.     Posn = Len(gThreadList(ThdNum).ComHdr) + 1 + _
  74.            gThreadList(ThdNum).ComPStr.Subject.SLen + 1 + _
  75.            gThreadList(ThdNum).ComPStr.Creator.SLen + 1 + _
  76.            gThreadList(ThdNum).ComPStr.CreAddr.SLen + 1 + _
  77.            gThreadList(ThdNum).ComPStr.Service.SLen + 1
  78.  
  79.     ' Open the email file
  80.  
  81.     FNum = FreeFile
  82.     Open gThreadList(ThdNum).FName For Binary Access Read Lock Read As #FNum
  83.     Seek #FNum, Posn
  84.  
  85.     ' Reset the edit box
  86.  
  87.     ' Get the message header
  88.     RC = GetMessageHeader(FNum, MsgHdr)
  89.  
  90.     Get #FNum, , MsgHdr.flags
  91.     Get #FNum, , MsgHdr.NumAddlRecips
  92.  
  93.     ct = 0
  94.  
  95.     While ct < MsgHdr.NumAddlRecips
  96.         'rc = GetRecipient(FNum, M.AddlRecips(count + 1))
  97.         ct = ct + 1
  98.     Wend
  99.  
  100.     RC = GetEMailHeader(FNum, EMailHdr)
  101.  
  102.     MsgLen = LOF(FNum) - Seek(FNum)
  103.     If (MsgLen <= 0) Then Exit Function
  104.  
  105.     MsgStrg = String(MsgLen, " ")
  106.     Get #FNum, , MsgStrg
  107.  
  108.     Strg$ = "From: " & MsgHdr.AuthName.SData & " (" & MsgHdr.AuthAddr.SData & ")" & Chr$(13) & Chr$(10) & _
  109.             "To: " & MsgHdr.PrimaryRecips.Name.SData & " (" & MsgHdr.PrimaryRecips.Addr.SData & ")" & Chr$(13) & Chr$(10) & _
  110.             "Date: " & TSToString(MsgHdr.Created) & Chr$(13) & Chr$(10) & _
  111.             "Subject: " & MsgHdr.Subject.SData & Chr$(13) & Chr$(10) & Chr$(13) & Chr$(10) & _
  112.             MsgStrg
  113.  
  114.     Strg$ = StdReplace(Strg$)
  115.  
  116.     Close FNum
  117.  
  118.     ProcessEMail = Strg$
  119. End Function
  120.  
  121. Function ProcessNews(ThdNum As Integer) As String
  122. On Error Resume Next
  123.     Dim MsgStrg As String
  124.     Dim N As ENSStory
  125.     Dim FNum As Integer
  126.  
  127.     Posn = gThreadList(ThdNum).ComHdr.StrucSize + 10
  128.     
  129.     FNum = FreeFile
  130.     Open gThreadList(ThdNum).FName For Binary Access Read Lock Read As #FNum
  131.     Seek #FNum, Posn
  132.  
  133.     z = GetNews(FNum, N)
  134.     Close #FNum
  135.  
  136.     ProcessNews = N.Story
  137. End Function
  138.  
  139. Function ProcessMsg(ThdNum As Integer) As String
  140. On Error Resume Next
  141.     Dim ForumMsg As ForumMsgHeader
  142.     Dim MsgHdr As MessageHeader
  143.     Dim FNum As Integer
  144.     Dim Strg$
  145.  
  146.     ' We've already read in all the common headers. Calculate the
  147.     ' length (including the variable length of the PStrings) and
  148.     ' use it as an offset from the beginning of the file.
  149.  
  150.     Posn = Len(gThreadList(ThdNum).ComHdr) + 1 + _
  151.            gThreadList(ThdNum).ComPStr.Subject.SLen + 1 + _
  152.            gThreadList(ThdNum).ComPStr.Creator.SLen + 1 + _
  153.            gThreadList(ThdNum).ComPStr.CreAddr.SLen + 1 + _
  154.            gThreadList(ThdNum).ComPStr.Service.SLen + 1
  155.  
  156.     ' Open the thread/email file
  157.  
  158.     FNum = FreeFile
  159.     Open gThreadList(ThdNum).FName For Binary Access Read Lock Read As #FNum
  160.     Seek #FNum, Posn
  161.  
  162.     ' Get the message header
  163.     RC = GetMessageHeader(FNum, MsgHdr)
  164.  
  165.     Get #FNum, , MsgHdr.flags
  166.  
  167.     ' Get the forum message header and body
  168.     RC = GetForumMsgHeader(FNum, ForumMsg)
  169.     Close FNum
  170.  
  171.     Reply$ = "Section: " & gThreadList(ThdNum).Header.forumname.SData
  172.     Reply$ = Reply$ & " (" & gThreadList(ThdNum).Header.sectionname.SData & ")"
  173.     Reply$ = Reply$ & Chr$(13) & Chr$(10) & "Msg: " & ForumMsg.msgid
  174.  
  175.     ' Search and replace the special characters in the message, and
  176.     ' change ctrl-j to ctrl-m/ctrl-j
  177.     ' Build the message string and append it to the thread display
  178.  
  179.         Strg$ = Reply$ & Chr$(13) & Chr$(10) & _
  180.                 "From: " & MsgHdr.AuthName.SData & "  (" & MsgHdr.AuthAddr.SData & ")" & Chr$(13) & Chr$(10) & _
  181.                 "To  : " & MsgHdr.PrimaryRecips.Name.SData & "  (" & MsgHdr.PrimaryRecips.Addr.SData & ")" & Chr$(13) & Chr$(10) & _
  182.                 "Date: " & TSToString(MsgHdr.Created) & Chr$(13) & Chr$(10) & _
  183.                 "Subject: " & MsgHdr.Subject.SData & Chr$(13) & Chr$(10) & Chr$(13) & Chr$(10) & _
  184.                    StrReplace(ForumMsg.body, Chr$(10), Chr$(13) & Chr$(10)) & _
  185.                    Chr$(13) & Chr$(10)
  186.         
  187.         Strg$ = StdReplace(Strg$)
  188.  
  189.     ProcessMsg = Strg$
  190.  
  191. End Function
  192.  
  193. Function ProcessUndef(ThdNum As Integer) As String
  194. On Error Resume Next
  195. ' For an undefined file, just open it and dump it to
  196. ' the edit window
  197.  
  198.     Dim Strg As String
  199.  
  200.     FNum = FreeFile
  201.     Open gThreadList(ThdNum).FName For Binary Access Read Lock Read As #FNum
  202.     Strg = String(LOF(FNum), " ")
  203.     Get #FNum, , Strg
  204.     Close #FNum
  205.  
  206.     ProcessUndef = Strg
  207.  
  208. End Function
  209.  
  210. Function ProcessIPlex(ThdNum As Integer) As String
  211. On Error Resume Next
  212.     ProcessIPlex = "(not implemented - IPLEX msg)"
  213. End Function
  214.  
  215. Function ProcessDisp(ThdNum As Integer) As String
  216. On Error Resume Next
  217.     Dim MsgStrg As String
  218.  
  219.     Posn = Len(gThreadList(ThdNum).ComHdr) + 1 + _
  220.            gThreadList(ThdNum).ComPStr.Subject.SLen + 1 + _
  221.            gThreadList(ThdNum).ComPStr.Creator.SLen + 1 + _
  222.            gThreadList(ThdNum).ComPStr.CreAddr.SLen + 1 + _
  223.            gThreadList(ThdNum).ComPStr.Service.SLen + 1
  224.  
  225.     FNum = FreeFile
  226.     Open gThreadList(ThdNum).FName For Binary Access Read Lock Read As #FNum
  227.     Seek #FNum, Posn
  228.  
  229.     MsgLen = LOF(FNum) - Seek(FNum)
  230.     MsgStrg = String(MsgLen, " ")
  231.     Get #FNum, , MsgStrg
  232.     Close #FNum
  233.  
  234.     MsgStrg = StdReplace(MsgStrg)
  235.  
  236.     ProcessDisp = MsgStrg
  237.     
  238. End Function
  239.