<% '************************************************************************* ' the person wants to switch languages ' If they are switching to the default laanguage, clear session language ' Otherwise load session language ' VP-ASP 6.50 ' March 29, 2004 '*********************************************************************** Dim Newlang, gotourl, rc '-------------------------------------- ' VP-ASP Security Update ' 05/2006 '-------------------------------------- NewLang=cleanchars(request("LG")) '-------------------------------------- DoCleanseMessage Newlang Setsess "Language",Newlang 'VP-ASP 600 - commented out following three lines to solve problem 'with sites getting "stuck" in the non-default language 'If lcase(newlang)=lcase(getconfig("xlanguage")) then ' Setsess "LanguageSession","" 'else loadlanguagevariablesSession newlang 'end if gotourl=getsess("CurrentURl") if request.QueryString > "" then delimiter = "?" goToQS = "" theQuerystring = split(request.QueryString, "&") for each thing in theQueryString if len(thing) > 0 then if left(thing, instr(thing, "=") - 1) <> "LG" then goToQS = goToQS & delimiter & thing if delimiter = "?" then delimiter = "&" end if end if next end if gotourl = gotourl & goToQS if gotourl="" then gotourl="shopdisplaycategories.asp" end if select case gotourl case "shopdisplayproducts.asp" If getsess("pagenumber")<>"" then gotourl="shopdisplayproducts.asp?page=" & getsess("pagenumber") end if end select responseredirect gotourl '************************************************************************ ' Set session variables for language '************************************************************************ Sub LoadLanguageVariablesSession (language) dim nodb, count dim lang, filename, langname langname="language_" & language if getconfig(langname)<>"" then Setsess "LanguageSession",language ' debugwrite "bypassing load" exit sub end if 'debugwrite "Loading " & language & " for real" nodb=request("nodb") if nodb<>"" Then LoadLanguageVariablesNodb language,filename exit sub end if dim dbc,csql,rstemp,fieldname,fieldvalue dim tempname if language="" then exit sub ' see if already loadedinto memory shopopendatabase dbc If dbc.state<>adStateOpen then exit sub end if count=0 csql="select * from languages where lang='" & language & "'" set rstemp=dbc.execute(csql) If not rstemp.eof then fieldvalue= rstemp("caption") If fieldvalue=Langnodbvalue then filename=rstemp("keyword") closerecordset rstemp shopclosedatabase dbc LanguageSetVariablesNodb language, filename exit sub end if end if application.lock do while NoT rstemp.eof fieldname = rstemp("keyword") fieldvalue= rstemp("caption") If isnull(fieldvalue) then fieldvalue="" end if If fieldvalue<>"" Then tempname=fieldname & "_" & language & "_" & xshopid ' tempname=fieldname & "_" & language application(tempname)=fieldvalue end if rstemp.movenext count=count+1 loop rstemp.close set rstemp=nothing application.unlock setconfig langname,now() shopclosedatabase dbc If count>0 then Setsess "LanguageSession",language end if End sub '************************************************************************* ' we are to read language files instead of the database ' shop$language_xxxxxxx.asp and shop$language2_xxxxxxxxx.asp '*********************************************************************** Sub LanguageSetVariablesNodb (language, filename) dim strfilename, strfilename2 dim langname langname="language_" & language dim fieldnames(1000),fieldvalues(1000),fieldcount, i If filename="" then strfilename="shop$language_" & language & ".asp" strfilename2="shop$language2_" & language & ".asp" else strfilename=filename strfilename2=filename strfilename2=replace(strfilename2,"$language","$language2") end if LanguageConvertfile strfilename, fieldnames,fieldvalues, fieldcount if fieldcount=0 then exit sub application.lock for i=0 to fieldcount-1 fieldname = fieldnames(i) fieldvalue= fieldvalues(i) If fieldvalue<>"" Then tempname=fieldname & "_" & language & "_" & xshopid ' tempname=fieldname & "_" & language application(tempname)=fieldvalue end if next application.unlock setconfig langname,now() fieldcount=0 LanguageConvertfile strfilename2, fieldnames,fieldvalues, fieldcount If fieldcount=0 then exit sub application.lock for i=0 to fieldcount-1 fieldname = fieldnames(i) fieldvalue= fieldvalues(i) If fieldvalue<>"" Then ' tempname=fieldname & "_" & xshopid tempname=fieldname & "_" & xshopid & "_" & language application(tempname)=fieldvalue end if next Setsess "LanguageSession",language application.unlock end sub Sub Getsecondfilename (strfilename, strfilename2) dim pos, remaining pos=instr(strfilename,"_") strfilename2=mid(strfilename,1,pos-1) strfilename2=strfilename2 & "2" remaining=len(strfilename)-pos+1 strfilename2=strfilename2 & mid(strfilename,pos,remaining) 'debugwrite "Filename2=" & strfilename2 end sub Sub DoCleanseMessage(lang) dim rc lang=replace(lang,";","") cleansemessage lang, rc if len(lang)>20 or rc>0 then shoperror Getlang("langlanguage") & " " & getlang("LangDatabaseFail") end if end sub %>