home *** CD-ROM | disk | FTP | other *** search
/ Meeting Pearls 3 / Meeting_Pearls_III.iso / Pearls / comm / Mail+News / UMS11 / rexx / MausMitglied.intui < prev    next >
Text File  |  1995-06-27  |  7KB  |  237 lines

  1. /****** MausMitglied.intui ************************************************************
  2.  
  3.     NAME
  4.       $VER: MausMitglied.intui 1.4 (27.6.95) by Olaf Peters
  5.  
  6.           *** This script is only useful in the german MausNet (R) ***
  7.  
  8.     AUTHOR
  9.       Olaf Peters
  10.       Kulmer Str. 7
  11.       28237 Bremen
  12.  
  13.       op@hb2.maus.de / olf@informatik.uni-bremen.de
  14.  
  15.     SYNOPSIS
  16.       Unterstützt die Mitglieder-/Chefverwaltung in Mausgruppen.
  17.  
  18.     FUNCTION
  19.       Dieses Script ermöglicht es aus IntuiNews' Nachrichtenfenster heraus
  20.       ein Mitglied in einer Mausgruppe einzutragen bzw. auszutragen oder
  21.       auch als Chef zu setzen (Vorausgesetzt man ist Sysop in der Maus).
  22.  
  23.       Das Script ist dabei so flexibel, daß es die nötigen Angaben
  24.       weitestgehend automatisch erkennt. Das neue Mitglied (bzw. der neue
  25.       Chef) muß dabei immer der Absender der gerade im Nachrichtenfenster
  26.       angezeigten Mitteilung sein, dabei spielt es keine Rolle, ob es sich
  27.       um eine PM oder um eine Nachricht in einer Gruppe handelt. Bei
  28.       Gruppenmitteilungen fragt das Script, ob es für den Absender auch um
  29.       jene Gruppe handelt (wichtig bei Austragen/Chef setzen) und erlaubt
  30.       ggf. eine Änderung der Gruppe.
  31.  
  32.       Das Script fragt - nach eventueller Vervollständigung der Angaben -
  33.       welche Aktion ausgeführt werden soll (Eintragen, Austragen, Chef
  34.       setzen) und schreibt danach die Mauscontrol-Mitteilung an den
  35.       Exporter aus dessen Maus das neue Mitglied schreibt. Z.B. schreibt
  36.       "Heike Musterfrau, hb2.maus", daß sie gerne in BIETE aufgenommen
  37.       werden möchte. Das Script schickt die Mauscontrol-Nachricht dann
  38.       (entsprechende Bestätigung vorausgesetzt) an "maus.hb2, hb2.maus".
  39.  
  40.     NEEDS
  41.       Für die Benutzung des Scripts muß folgendes installiert sein:
  42.  
  43.       · mindestens IntuiNews v1.3 beta 6 (wegen des ARexx-Ports)
  44.       · mindestens UMSServer v11.20+ (wegen des UMSDupAccount Tricks für
  45.         normale Logins)
  46.       · reqtools.library und reqrexxtools.library (für die Requester)
  47.  
  48.     BUGS
  49.       Keine bekannt. Sollten welche auftauchen, bitte mailen (s.o.)
  50.  
  51.     $HISTORY:
  52.  
  53.      27.6.95  1.4   : INFO SCREEN statt GetPubScreenName -> IN 1.3b9
  54.      27.3.95  1.3   : PubScreenname wird jetzt von IntuiNews geholt (beta 6)
  55.      25.3.95  1.2   : · Anpassung an IntuiNews v1.3b5
  56.                       · Bug beseitigt, der die ///mauscontrol im Infile
  57.                         verhunzte: ein LF hinter dem 'G'-Kommando hat's
  58.                         gebracht.
  59.                       · es wird überprüft, ob es den Alias 'maus.xy' gibt.
  60.                         Damit sollten Unfugmails eingeschränkt werden?
  61.      16.3.95  1.1   : Mitglied eintragen funktionierte irgendwie nicht?!
  62.      14.3.95  1.0   : initial
  63.  
  64. ******************************************************************************
  65. *
  66. */
  67.  
  68. ProgramName = "MausMitglied.rexx"
  69. lf = '0a'x
  70.  
  71. eztags = "rtez_flags=ezreqf_centertext"
  72. rstags = "rtgs_flags=gsreqf_centertext"
  73.  
  74. /*** Startup ***/
  75.  
  76. options results
  77.  
  78. RC = 0
  79. account = 0
  80.  
  81. signal on BREAK_C
  82. signal on BREAK_D
  83. signal on BREAK_E
  84. signal on BREAK_F
  85. signal on ERROR
  86. signal on HALT
  87. signal on IOERR
  88. signal on SYNTAX
  89.  
  90. /*/// "Libs einbinden" */
  91.  
  92. if ~show(l, "rexxreqtools.library") then
  93.   if ~addlib("rexxreqtools.library", 0, -30, 0) then do
  94.     say "rexxreqtools.library konnte nicht geöffnet werden!" ;
  95.     exit(20) ;
  96.   end
  97.  
  98. libname = "ums.library"
  99. if ~show("L", "ums.library") then do
  100.   if ~addlib("ums.library", 0, -210, 8) then do
  101.     say "ums.library not found!"
  102.     exit(20)
  103.   end
  104. end
  105. call UMSInitConsts
  106.  
  107. /*\\\*/
  108.  
  109. /*/// "Login duplizieren" */
  110.  
  111. 'info screen'
  112. screen = result
  113.  
  114. eztags = eztags "rt_pubscrname='" || screen || "'"
  115. rstags = rstags "rt_pubscrname='" || screen || "'"
  116.  
  117. 'status'
  118.  
  119. if result ~= "MESSAGE" then do
  120.     rtezrequest("Du mußt im Nachrichtenfenster sein,"|| lf || "um dieses Script auszuführen!", "_Abbruch", ProgramName, eztags)
  121.     call HALT
  122. end
  123.  
  124. 'getaccount'
  125.  
  126. if (result = "RESULT") | (result = 0) then do
  127.     rtezrequest("Script konnte keinen Account bekommen!", "_Abbruch", ProgramName, eztags)
  128.     call HALT
  129. end ; else
  130.     login = result
  131.  
  132. account = UMSLogin("", login, "")
  133. if account = 0 then do
  134.     rtezrequest("Konnte Account nicht duplizieren!", "_Abbruch", ProgramName, eztags)
  135.     call HALT
  136. end
  137.  
  138. /*\\\*/
  139.  
  140. 'getmsgnum'
  141.  
  142. if result = "RESULT" then do
  143.     rtezrequest("No message no fun! :-)", "_Abbruch", ProgramName, eztags)
  144.     call HALT
  145. end ; else
  146.     msgnum = result
  147.  
  148. drop msg.
  149. if ~UMSReadMsgHeader(account, msgnum, msg., true) then do
  150.     rtezrequest("Nachricht konnte nicht gelesen werden!", "_Abbruch", ProgramName, eztags)
  151.     call HALT
  152. end
  153.  
  154. if upper(right(msg.UMSCODE_FromAddr, 5)) ~= ".MAUS" then do
  155.     rtezrequest(msg.UMSCODE_FromName "hat keine Mausadresse.", "_Abbruch", ProgramName, eztags)
  156.     call HALT
  157. end
  158.  
  159. parse var msg.UMSCODE_FromAddr maus ".maus"
  160. if UMSReadConfigUserName(account, "maus." || maus) = "" then do
  161.     rtezrequest("Für die Maus" maus "gibt's hier keinen Exporter!", "_Abbruch", ProgramName, eztags)
  162.     call HALT
  163. end
  164.  
  165. if msg.UMSCODE_Group = "MSG." || UMSCODE_Group then do
  166.     parse var msg.UMSCODE_ToName Chef Gruppe .
  167.     reqgrp =  (upper(Chef) ~= "CHEF")
  168. end ; else do
  169.     parse var msg.UMSCODE_Group "maus." . "." gruppe
  170.     if gruppe = "" then do
  171.         reqgrp = true
  172.     end ; else
  173.         reqgrp = (rtezrequest("Nachricht in Gruppe" gruppe || "." || lf || "Geht's auch um diese Gruppe?", "_Ja|_Nein", ProgramName, eztags) = 0)
  174. end
  175.  
  176. if reqgrp then do
  177.     gruppe = rtgetstring("", "User:" msg.UMSCODE_FromName || lf || lf || "Um welche Gruppe geht's?", ProgramName, "_Okay|_Abbruch", rstags, rtres)
  178.     if rtres = 0 then
  179.         call HALT
  180. end
  181.  
  182. wahl = rtezrequest("Gruppe:" gruppe || lf || lf || "Was soll mit" msg.UMSCODE_FromName "passieren?", "_Eintragen|A_ustragen|Als _Chef|_Abbruch", ProgramName, eztags)
  183.  
  184. select
  185.     when wahl = 1 then
  186.         op = ">"
  187.     when wahl = 2 then
  188.         op = "<"
  189.     when wahl = 3 then
  190.         op = "="
  191.     otherwise
  192.         call HALT
  193. end
  194.  
  195. drop ctrl.
  196. ctrl.UMSCODE_ToName = "maus." || maus
  197. ctrl.UMSCODE_ToAddr = maus || ".maus"
  198. ctrl.UMSCODE_Subject = "///mauscontrol"
  199. ctrl.UMSCODE_MsgText = "GU" || msg.UMSCODE_FromName || op || gruppe || lf
  200.  
  201. if UMSWriteMsg(account, ctrl.) = 0 then do
  202.     rtezrequest("Mauscontrol-Nachricht konnte nicht geschrieben werden:" || lf || "UMS Error #" || UMSErrNum(account) || ":" UMSErrTxt(account), "_Abbruch", ProgramName, eztags)
  203. end ; else
  204.     rtezrequest("Mauscontrol-Nachricht erfolgreich geschrieben.", "_Okay", ProgramName, eztags)
  205.  
  206. /*/// "Final cleanup" */
  207.  
  208. BREAK_C:
  209. BREAK_D:
  210. BREAK_E:
  211. BREAK_F:
  212. ERROR:
  213. HALT:
  214. IOERR:
  215. SYNTAX:
  216.  
  217. /*** Logout ***/
  218.  
  219. if account ~= 0 then do
  220.   call UMSLogout(account)
  221.   account = 0
  222. end
  223.  
  224. exit 0
  225.  
  226. /*** Support ***/
  227.  
  228. CheckErr: procedure expose account
  229.   err = UMSErrNum(account)
  230.   if err ~= 0 then do
  231.     rtezrequest("UMS Error #" || err || ": " || UMSErrTxt(account))
  232.   end
  233. return
  234.  
  235. /*\\\*/
  236.  
  237.