home *** CD-ROM | disk | FTP | other *** search
/ Aminet 18 / aminetcdnumber181997.iso / Aminet / comm / thor / SortEvents.lha / SortEvents.thor < prev   
Text File  |  1997-02-20  |  7KB  |  254 lines

  1. /* SortEvents © 1996-97 Roy E Brown
  2.  
  3.    $VER: SortEvents.thor 2.0 (20.2.97)
  4.  
  5.    SortEvents V2.0 can only be executed from within Thor.
  6.  
  7.    SortEvents V2.0 will sort all active Thor Events into the
  8.    following order:
  9.  
  10.    Email
  11.    Newsgroup
  12.    Other (Join, Resign, Retract etc.)
  13.    Upload
  14.    Download
  15.  
  16.    The Event list is read and displayed to the user. If 'Sort Events' is
  17.    selected then the Events are sorted and the new order is re-displayed.
  18.  
  19.    SortEvents will create 'ENV:THOR/SortEvents' when first used. This is
  20.    used to indicate that Events have been sorted at least once during the
  21.    current session.
  22.  
  23.    SortEvents works by writing new Events in the order given above. It will
  24.    leave 'DEL' type Events in the Event lister when viewed from within Thor.
  25.    Once all Events have been successfully dealt with, these will disappear.
  26.  
  27. */
  28.  
  29. Options Results
  30.  
  31. Vers="SortEvents V2.0 ©1996-97 Roy E Brown"
  32. lf='0a'x
  33. SE=0
  34.  
  35. /* Is Thor active? */
  36. If ~Show('P','THOR.01') Then
  37.   Do
  38.     Say "Thor needs to be available for this script"
  39.     Exit
  40.   End
  41.  
  42. /* Check for BBSREAD */
  43. If ~Show('P','BBSREAD') Then
  44.   Do
  45.     Address command
  46.     "run >nil: `GetEnv THOR/THORPath`bin/LoadBBSRead"
  47.     "WaitForPort BBSREAD"
  48.   End
  49.  
  50. /* Get the current System name */
  51. Address THOR.01
  52. CURRENTSYSTEM Current
  53. SystemName=CURRENT.BBSNAME
  54.  
  55. /* Define Events waiting to be sent */
  56. EDF_ACTIVE= '00000000'x   /* Event is active  */
  57. EDF_ERROR = '00000008'x   /* Error with Event */
  58.  
  59. EVE_ENTERMSG    = 0       /* Enter message     */
  60. EVE_REPLYMSG    = 1       /* Reply message     */
  61. EVE_JOINCONF    = 2       /* Join conference   */
  62. EVE_RESIGNCONF  = 3       /* Resign conference */
  63. EVE_DOWNLOAD    = 4       /* Download File     */
  64. EVE_UPLOAD      = 5       /* Upload File       */
  65. EVE_CONFLIST    = 6       /* Get conflist      */
  66. EVE_RETRACTMSG  = 13      /* Retract Message   */
  67.  
  68. Address BBSREAD
  69.  
  70. GETBBSDATA '"'SystemName'"' stem BBSDATA
  71. If RC~=0 Then Call Error
  72.  
  73. If BBSDATA.NUMEVENTS=0 Then
  74.   Do
  75.     Address THOR.01
  76.     REQUESTNOTIFY TEXT '"'vers'\n\n    There are no Events to sort!" BT "OOPS!"'
  77.     Exit
  78.   End
  79.  
  80. If BBSDATA.NUMEVENTS~>1 Then
  81.   Do
  82.     Address THOR.01
  83.     REQUESTNOTIFY TEXT '"'vers'\n\n    How can I sort just 1 Event?" BT "OOPS!"'
  84.     Exit
  85.   End
  86.  
  87. /* Have we sorted Events once already? */
  88. If Exists("Env:THOR/SortEvents") Then
  89.   Do
  90.     Address THOR.01
  91.     'REQUESTNOTIFY TEXT "'vers'\n\nYou have already sorted Thor Events\n  once during the current session.\n  Do you wish to sort them again?\n" BT  "_Sort Again|_Cancel"'
  92.     If result=0 Then Exit
  93.   End
  94.  
  95. Call ReadEvents
  96.  
  97. Exit
  98.  
  99. /* Get the Event details and make a list */
  100. ReadEvents:
  101. OldList=''
  102. Address BBSREAD
  103. GETBBSDATA '"'SystemName'"' stem BBSDATA
  104. If RC~=0 Then Call Error
  105.   Do num=BBSDATA.FIRSTEVENT To BBSDATA.LASTEVENT
  106.     Drop Eventtag. Eventdata.
  107.     READBREVENT '"'SystemName'"' EVENTNR num TAGSSTEM eventtag DATASTEM eventdata
  108.     If EVENTDATA.FLAGS=EDF_ACTIVE Then
  109.     Do
  110.       If EVENTTAG.LOCALFILE~="EVENTTAG.LOCALFILE" Then Suffix="File(s) Attached"
  111.       Else Suffix=''
  112.       If EVENTDATA.EVENTTYPE=EVE_JOINCONF Then
  113.         Do
  114.           OldList=OldList"Join Conference\n"
  115.           Iterate num
  116.         End
  117.       If EVENTDATA.EVENTTYPE=EVE_RETRACTMSG Then
  118.         Do
  119.           OldList=OldList"Retract Message\n"
  120.           Iterate num
  121.         End
  122.       If EVENTDATA.EVENTTYPE=EVE_UPLOAD Then
  123.         Do
  124.           OldList=OldList"Upload File\n"
  125.           Iterate num
  126.         End
  127.       If EVENTDATA.EVENTTYPE=EVE_DOWNLOAD Then
  128.         Do
  129.           OldList=OldList"Download File\n"
  130.           Iterate num
  131.         End
  132.       If EVENTDATA.EVENTTYPE=EVE_RESIGNCONF Then
  133.         Do
  134.           OldList=OldList"Resign Conference\n"
  135.           Iterate num
  136.         End
  137.       If EVENTDATA.EVENTTYPE=EVE_CONFLIST Then
  138.         Do
  139.           OldList=OldList"Get Conference List\n"
  140.           Iterate num
  141.         End
  142.       If EVENTTAG.CONFERENCE='EMail' Then
  143.         Do
  144.           OldList=OldList"EMail Event "Suffix"\n"
  145.           Iterate num
  146.         End
  147.     Else
  148.       Do
  149.         OldList=OldList"Newsgroup Event "Suffix"\n"
  150.         Iterate num
  151.       End
  152.   End
  153. End
  154.  
  155. If SE=0 Then
  156.   Do
  157.     SortString="    This is the current order of\n         Active Thor Events:\n"
  158.     Buttons="_Sort Events|_Cancel"
  159.   End
  160. Else
  161.   Do
  162.     SortString="    Events have been sorted into\n        the following order:\n"
  163.     Buttons="_Thank You"
  164.   End
  165.  
  166.   Address THOR.01
  167.   'REQUESTNOTIFY TEXT "'vers'\n\n'SortString'\n'OldList'\n" BT "'Buttons'"'
  168.   If result=0 Then Exit
  169.   If result=1 Then Call Sort
  170. Return
  171.  
  172. /* Sort Events */
  173. Sort:
  174.   Address BBSREAD
  175.   Do num=BBSDATA.FIRSTEVENT To BBSDATA.LASTEVENT
  176.     Drop Eventtag. Eventdata.
  177.     READBREVENT '"'SystemName'"' EVENTNR num TAGSSTEM eventtag DATASTEM eventdata
  178.     If RC~=0 Then Call Error
  179.     If EVENTDATA.FLAGS=EDF_ACTIVE Then
  180.       Do
  181.         If EVENTDATA.EVENTTYPE=EVE_DOWNLOAD|EVENTDATA.EVENTTYPE=EVE_UPLOAD Then
  182.         Iterate num
  183.         If EVENTTAG.CONFERENCE="EMail" Then
  184.             Iterate num
  185.         If EVENTDATA.EVENTTYPE=EVE_ENTERMSG|EVENTDATA.EVENTTYPE=EVE_REPLYMSG Then
  186.           Do
  187.             WRITEBREVENT '"'SystemName'"' Event EVENTDATA.EVENTTYPE STEM eventtag
  188.             If RC~=0 Then Call Error
  189.             UPDATEBREVENT BBSNAME '"'SystemName'"' EVENTNR num SETDELETED
  190.             If RC~=0 Then Call Error
  191.             Iterate num
  192.           End
  193.         Else Iterate num
  194.       End
  195.   End
  196.   Do num=BBSDATA.FIRSTEVENT To BBSDATA.LASTEVENT
  197.     Drop Eventtag. Eventdata.
  198.     READBREVENT '"'SystemName'"' EVENTNR num TAGSSTEM eventtag DATASTEM eventdata
  199.     If EVENTDATA.FLAGS=EDF_ACTIVE Then
  200.       Do
  201.         If EVENTTAG.CONFERENCE="EMail" Then Iterate num
  202.         If EVENTDATA.EVENTTYPE=EVE_ENTERMSG|EVENTDATA.EVENTTYPE=EVE_REPLYMSG Then iterate num
  203.         If EVENTDATA.EVENTTYPE=EVE_DOWNLOAD|EVENTDATA.EVENTTYPE=EVE_UPLOAD Then Iterate num
  204.           Do
  205.             WRITEBREVENT '"'SystemName'"' Event EVENTDATA.EVENTTYPE STEM eventtag
  206.             If RC~=0 Then Call Error
  207.             UPDATEBREVENT BBSNAME '"'SystemName'"' EVENTNR num SETDELETED
  208.             Iterate num
  209.           End
  210.       End
  211.   End
  212.   Do num=BBSDATA.FIRSTEVENT To BBSDATA.LASTEVENT
  213.     Drop Eventtag. Eventdata.
  214.     READBREVENT '"'SystemName'"' EVENTNR num TAGSSTEM eventtag DATASTEM eventdata
  215.     If EVENTDATA.FLAGS=EDF_ACTIVE Then
  216.       Do
  217.         If EVENTDATA.EVENTTYPE=EVE_UPLOAD then
  218.           Do
  219.             WRITEBREVENT '"'SystemName'"' Event EVENTDATA.EVENTTYPE STEM eventtag
  220.             If RC~=0 Then Call Error
  221.             UPDATEBREVENT BBSNAME '"'SystemName'"' EVENTNR num SETDELETED
  222.             If RC~=0 Then Call Error
  223.           End
  224.       End
  225.   End
  226.   Do num=BBSDATA.FIRSTEVENT To BBSDATA.LASTEVENT
  227.     Drop Eventtag. Eventdata.
  228.     READBREVENT '"'SystemName'"' EVENTNR num TAGSSTEM eventtag DATASTEM eventdata
  229.     If EVENTDATA.FLAGS=EDF_ACTIVE Then
  230.       Do
  231.         If EVENTDATA.EVENTTYPE=EVE_DOWNLOAD then
  232.           Do
  233.             WRITEBREVENT '"'SystemName'"' Event EVENTDATA.EVENTTYPE STEM eventtag
  234.             If RC~=0 Then Call Error
  235.             UPDATEBREVENT BBSNAME '"'SystemName'"' EVENTNR num SETDELETED
  236.             If RC~=0 Then Call Error
  237.           End
  238.       End
  239.   End
  240.   Address Command
  241.   'SetEnv THOR/SortEvents 'vers''
  242.   SE=1
  243.   Call ReadEvents
  244. Return  
  245.  
  246. /* BBSREAD ERRORS */
  247. Error:
  248. Do
  249.   Address THOR.01
  250.   'REQUESTNOTIFY TEXT "'vers'\n\n'BBSREAD.LASTERROR'" BT "_Exit"'
  251.   Exit
  252. End
  253. Return
  254.