home *** CD-ROM | disk | FTP | other *** search
/ Image Master / L80.iso / Net / websuite / websuite.exe / CHATCMD.AP_ / CHATCMD.AP
Encoding:
Text File  |  1997-12-08  |  7.4 KB  |  262 lines

  1. <[
  2. // WINC - Chat Command
  3. // (c) 1997 SmartDesk, Inc., All Rights Reserved
  4.  
  5.  
  6. FUNCTION AddChatRecord( session, filename, name, msg )
  7.  
  8.     local data, x, z, id, rc
  9.     
  10.     rc = 1
  11.     
  12.     x = chr( 1 )    // field delimeter
  13.     z = chr( 2 )    // record delimeter
  14.  
  15.     data = date( "YYYYMMDD" ) + x + time( ) + x + name + x + msg + z
  16.     id = "CHATBUF." + filename
  17.  
  18.     if ( ! sessionDataAppend( session.websrvr, -1, id, data ) )
  19.         sessionDataFlushRecords( session.websrvr, -1, id, filename, z, 0 )
  20.         rc = sessionDataAppend( session.websrvr, -1, id, data )
  21.     end
  22.  
  23.     return( rc )
  24. END
  25.  
  26. // MAIN
  27.  
  28. _apGenerate( )
  29.  
  30. TRY
  31.  
  32. websrvr = 0 + param( 1 )
  33. sessionId = 0 + param( 2 )
  34.  
  35. session  = new( "session", websrvr, sessionId )
  36. channel  = session.data( "winc_channel" )
  37. if ( channel < 1 )
  38.     channel = 1
  39. end
  40.  
  41. filename = fileFixPath( webServerHome( websrvr ) + "\\chat\\chan" + channel + ".dat" ) 
  42.  
  43. chatname = session.data( "winc_alias" )
  44. if ( strempty( chatname ) )
  45.     session._redir( "One Moment Please...", "logon.ap" )
  46.     return( 0 )
  47. end
  48.  
  49. // convert cmd from referer...unless the logoff command...
  50. if ( session.var( "cmd" ) == "logoff" )
  51.     cmd = "logoff"
  52. else
  53.     data = lower( session.data( "REFERER" ) )
  54.     if ( strat( "chat1.ap", data ) )
  55.         cmd = "chat"
  56.     elseif ( strat( "logon.ap", data ) )
  57.         cmd = "logon"
  58.     elseif ( strat( "dir.ap", data ) )
  59.         cmd = "logon"
  60.     elseif ( strat( "images.ap", data ) )
  61.         cmd = "image"
  62.     elseif ( strat( "links.ap", data ) )
  63.         cmd = "link"
  64.     elseif ( strat( "sounds.ap", data ) )
  65.         cmd = "sound"
  66.     elseif ( strat( "prefer.ap", data ) )
  67.         cmd = "preferences"
  68.     elseif ( strat( "comments.ap", data ) )
  69.         cmd = "comment"
  70.     elseif ( strat( "trans.ap", data ) )
  71.         cmd = "transcript"
  72.     else
  73.         cmd = ""
  74.     end
  75. end
  76.  
  77. switch ( cmd )
  78.   case "logon"
  79.     if ( session.data( "winc_islogged" ) != "1" )
  80.         AddChatRecord( session, filename, "ADMIN", "Welcome <B>" + chatname + " (<FONT COLOR=red>" + session.data( "winc_name" ) + "</FONT>)</B> to the conversation." )
  81.         session.data( "winc_islogged", "1" )
  82.     end
  83.     session.data( "winc_cmd", "" )
  84.     break
  85.   case "logoff"
  86.     AddChatRecord( session, filename, "ADMIN", "<B>" + chatname + " (<FONT COLOR=red>" + session.data( "winc_name" ) + "</FONT>)</B> has left the conversation." )
  87.     session.data( "winc_islogged", "0" )
  88.     session.response( "HTTP/1.0 302 Redirect\r\nDate: " + webGMT( ) + "\r\nServer: SmartDesk Personal Web Server v1.0\r\nLocation: /chat/dir.ap\r\n\r\n" )
  89.     return( 1 )
  90.   case "chat"
  91.     msg = session.var( "msg" )
  92.     if ( ! strempty( msg ) )
  93.         AddChatRecord( session, filename, chatname, msg )
  94.     end
  95.     session.data( "winc_cmd", "" )
  96.     break
  97.   case "image"
  98.       desc = session.var( "image" )
  99.       if ( ( ! strempty( desc ) ) && ( left( desc + "    ", 4 ) != "----" ) )
  100.         file = fileFixPath( webServerHome( websrvr ) + "\\chat\\chan" + channel + ".cfg" )
  101.         channelData = new( "iniFile", file )
  102.         if ( type( channelData ) == "O" )
  103.             data = channelData.getItems( "Images" )
  104.             cnt = chrcount( ";", data ) + 1
  105.             for ( i=1; i<=cnt; i++ )
  106.                 item = strextract( data, ";", i )
  107.                 if ( strempty( item ) )
  108.                     continue
  109.                 end
  110.                 line = channelData.getString( "Images", item )
  111.                 if ( desc == strextract( line, "|", 1 ) )
  112. //                    AddChatRecord( session, filename, chatname, "<IMG BORDER=0 SRC=\"" + strextract( line, "|", 2 ) + "\">" )
  113.                     AddChatRecord( session, filename, chatname, "<A HREF=\"" + strextract( line, "|", 2 ) + "\">" + strextract( line, "|", 1 ) + "</A>" )
  114.                 end
  115.             end
  116.         end
  117.       end
  118.     session.data( "winc_cmd", "" )
  119.     break
  120.   case "link"
  121.       desc = session.var( "link" )
  122.       if ( ( ! strempty( desc ) ) && ( left( desc + "    ", 4 ) != "----" ) )
  123.         file = fileFixPath( webServerHome( websrvr ) + "\\chat\\chan" + channel + ".cfg" )
  124.         channelData = new( "iniFile", file )
  125.         if ( type( channelData ) == "O" )
  126.             data = channelData.getItems( "Links" )
  127.             cnt = chrcount( ";", data ) + 1
  128.             for ( i=1; i<=cnt; i++ )
  129.                 item = strextract( data, ";", i )
  130.                 if ( strempty( item ) )
  131.                     continue
  132.                 end
  133.                 line = channelData.getString( "Links", item )
  134.                 if ( desc == strextract( line, "|", 1 ) )
  135.                     AddChatRecord( session, filename, chatname, "<A HREF=\"" + strextract( line, "|", 2 ) + "\" TARGET=\"_top\">" + desc + "</A>" )
  136.                 end
  137.             end
  138.         end
  139.       end
  140.     session.data( "winc_cmd", "" )
  141.     break
  142.   case "sound"
  143.       desc = session.var( "sound" )
  144.       if ( ( ! strempty( desc ) ) && ( left( desc + "    ", 4 ) != "----" ) )
  145.         file = fileFixPath( webServerHome( websrvr ) + "\\chat\\chan" + channel + ".cfg" )
  146.         channelData = new( "iniFile", file )
  147.         if ( type( channelData ) == "O" )
  148.             data = channelData.getItems( "Sounds" )
  149.             cnt = chrcount( ";", data ) + 1
  150.             for ( i=1; i<=cnt; i++ )
  151.                 item = strextract( data, ";", i )
  152.                 if ( strempty( item ) )
  153.                     continue
  154.                 end
  155.                 line = channelData.getString( "Sounds", item )
  156.                 if ( desc == strextract( line, "|", 1 ) )
  157.                     AddChatRecord( session, filename, chatname, "<<< <A HREF=\"" + strextract( line, "|", 2 ) + "\">" + desc + "</A> >>>" )
  158.                 end
  159.             end
  160.         end
  161.       end
  162.     session.data( "winc_cmd", "" )
  163.     break
  164.   case "transcript"
  165.   
  166.       if ( sessionDataGet( websrvr, -1, "IsInTranscript" ) == "1" )
  167.           break
  168.       end
  169.       sessionDataGet( websrvr, -1, "IsInTranscript", "1" )
  170.  
  171.     if ( fileExists( filename ) )
  172.         ferase( filename )
  173.     end
  174.     hfile = fileCreate( filename )
  175.     if ( hfile < 1 )
  176.         break
  177.     end
  178.  
  179.     data = sessionDataGet( websrvr, -1, "CHATBUF." + filename )
  180.     data = chrswap( data, chr( 1 ), "," )
  181.     data = strswap( data, chr( 2 ), "\r\n" )
  182.     
  183.     fwrite( hfile, data, len( data ) )
  184.     fclose( hfile )
  185.  
  186.     webServerSendFile( websrvr, hsock, filename )
  187.     
  188.       sessionDataGet( websrvr, -1, "IsInTranscript", 0 )
  189.  
  190.     session.data( "winc_cmd", "" )
  191.     session.redir( "", "/chat/chan" + channel + ".dat" )
  192.     return( 1 )    
  193.  
  194.     break
  195.   case "preferences"
  196.     session.data( "winc_reload_time", session.var( "freq" ) )
  197.     session.data( "winc_pglen", session.var( "pglen" ) )
  198.     session.data( "winc_cmd", "" )
  199.     break
  200.   case "comment"
  201.     str = session.var( "comment" )
  202.     str2 = ""
  203.     if ( left( str + "    ", 4 ) != "----" )
  204.         str2 = str
  205.     end
  206.     
  207.     str = session.var( "action" )
  208.     if ( left( str + "    ", 4 ) != "----" )
  209.         switch ( upper( str ) )
  210.           case "USER NAME"
  211.             str = session.data( "winc_name" )
  212.             break
  213.           case "ALIAS"
  214.             str = session.data( "winc_alias" )
  215.             break
  216.           case "EMAIL ADDRESS"
  217.             str = session.data( "winc_email_addr" )
  218.             str = "<A HREF=\"mailto: " + str + "\">" + str + "</A>"
  219.             break
  220.           case "TIME STAMP"
  221.             str = cdow( jdate( ) ) + date( ", MMMM DDDD, YYYY at " ) + timetostr( time( ), 0 ) + "m"
  222.             break
  223.           case "DATE"
  224.               str = cdow( jdate( ) ) + date( ", MMMM DDDD, YYYY at " )
  225.               break
  226.           case "TIME"
  227.               str = timetostr( time( ), 0 ) + "m"
  228.               break
  229.         end
  230.         if ( ! strempty( str2 ) )
  231.             str2 += " " + str
  232.         else
  233.             str2 = str
  234.         end
  235.     end
  236.     
  237.     str = session.var( "icon" )
  238.     if ( left( str + "    ", 4 ) != "- Em" )    // emoticons
  239.         if ( ! strempty( str2 ) )
  240.             str2 += " " + str
  241.         else
  242.             str2 = str
  243.         end
  244.     end
  245.     if ( ! strempty( str2 ) )
  246.         AddChatRecord( session, filename, chatname, str2 )
  247.     end
  248.     session.data( "winc_cmd", "" )
  249.     break
  250. end
  251.  
  252. session.redir( "", "chattext.ap" )
  253.  
  254. return( 1 )
  255.  
  256. CATCH ( err )
  257.     msgDelay( 3000, "Error [" + err.errornum + "] at line #" + err.errorline + " (" + ErrorAsText( err.errornum ) + ")" )
  258.     println( "Error [" + err.errornum + "] at line #" + err.errorline + " (" + ErrorAsText( err.errornum ) + ")" )
  259.     return( 0 )
  260. END
  261. ]>
  262.