home *** CD-ROM | disk | FTP | other *** search
/ WinFiles.com 1998 June / WF0698_3.ISO / servers-websrv / websuite.exe / CHATCMD.AP_ / CHATCMD.AP
Text File  |  1998-04-01  |  7KB  |  232 lines

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