<%@ Language=JScript %> <% var userAgent = myString = new String(Request.ServerVariables("HTTP_USER_AGENT")); if(userAgent.indexOf("Slurp") > 0) { Response.End; } prepare_global_vars(); site_initialise(); var ui = Request.QueryString("ui").Item; var bibl = Request.QueryString("bibl").Item; var sBMCorPM = Request.QueryString("db").Item; //The SFX gif is set to be invisible for people at non SFX institutions, wheras it is set to the // custom GIF for institutions which do use SFX var sfx_gif = "/images/spacer.gif"; if (vInstSFX) { if (vInstSFXCustomGif) sfx_gif = vInstSFXCustomGif; else sfx_gif = vInstSFX + "/sfx.gif"; } // If request is for the SFX GIF, redirect to it. if(Request.QueryString("getImage").Count > 0) { Response.Redirect(sfx_gif); Response.End; } // This handles redirecting for BMC journal articles or PubMed articles, by ID if (ui && sBMCorPM) { var surl = NewSFXUrl(ui,sBMCorPM,vInstSFX); if (surl.indexOf("http") > -1) Response.Redirect(surl); else Server.Transfer("/errorpages/404.asp"); Response.End(); } //whereas this version handles redirecting to a fulltext reference //given (a) the UI of the BMC article and (b) the sequential number of the reference clicked on if (ui && bibl) { var surl = CreateSFXUrl(ui,bibl,vInstSFX); if (surl.indexOf("http") > -1) Response.Redirect(surl); else Server.Transfer("/errorpages/404.asp"); Response.End(); } // Not sure if the code below is ever called. if(!vInstSFX) { Response.Write(""); Response.End(); } else { Response.Write(""); Response.End(); } //This creates URL for SFX link , for a fulltext reference //given (a) the UI of the BMC article and (b) the sequential number of the reference clicked on function CreateSFXUrl(ui, bibl, sfx) { var rset = null; var cmd = Server.CreateObject("ADODB.Command"); cmd.ActiveConnection = Application("bmcmaindb"); cmd.CommandType = adCmdText; var url = ""; cmd.CommandText = "SELECT arx_full FROM arx WHERE UPPER(arx_id)=UPPER(?)"; cmd.Parameters.Append( cmd.CreateParameter("arx_id", adChar, adParamInput, ui.length, ui) ); cmd.Properties("PLSQLRSet") = true; rset = cmd.Execute(); cmd.Properties("PLSQLRSet") = false; var xml = Server.CreateObject("Msxml2.DOMDocument.4.0"); if(!rset.EOF) { xml.loadXML(rset.Fields("arx_full").Value); var xml_bibl = xml.selectSingleNode("/art/bm/refgrp/bibl[@id='"+bibl+"']"); if (!xml_bibl) xml_bibl = xml.selectSingleNode("/art/bm/refgrp/bibl[@id='"+bibl.toUpperCase()+"']"); if (!xml_bibl) xml_bibl = xml.selectSingleNode("/art/bm/refgrp/bibl[@id='"+bibl.toLowerCase()+"']"); if (!xml_bibl) xml_bibl = xml.selectSingleNode("/art/bdy/sec//bibl[@id='"+bibl.toUpperCase()+"']"); if (!xml_bibl) xml_bibl = xml.selectSingleNode("/art/bdy/sec//bibl[@id='"+bibl.toLowerCase()+"']"); if (xml_bibl) { url = sfx + "?sid=BMC" url += "&genre=article"; //Temporarily - lets just say everything is a journal article //We should replace this with a smarter check for the genre //allowed values are article,book,bookitem,journal,conference,preprint,proceeding //see TTP 2580 for more node = xml_bibl.selectSingleNode("xrefbib//pubid[@idtype='doi']"); if(node) url += "&id=doi:" + node.text; var node = xml_bibl.selectSingleNode("xrefbib//pubid[@idtype='pmpid']"); if(node) url += "&id=pmid:" + node.text; node = xml_bibl.selectSingleNode("volume"); if(node) url += "&volume=" + Server.URLEncode(node.text); node = xml_bibl.selectSingleNode("fpage"); if(node) url += "&spage=" + Server.URLEncode(node.text); node = xml_bibl.selectSingleNode("lpage"); if(node) url += "&epage=" + Server.URLEncode(node.text); node = xml_bibl.selectSingleNode("pubdate"); if(node) url += "&date=" + Server.URLEncode(node.text); node = xml_bibl.selectSingleNode("title/p"); if(node) url += "&atitle=" + Server.URLEncode(node.text); node = xml_bibl.selectSingleNode("source"); if(node) url += "&title=" + Server.URLEncode(node.text); } } rset.Close(); rset = null; cmd = null; return url; } //This creates SFX URL for BMC journal articles or PubMed articles, by ID function NewSFXUrl(ui,sDB,sfx) { var url = ""; var strXML; var DataTool = Server.CreateObject("DataTool.DataTool"); if (sDB == "bmc") { var SearchEngine = DataTool.GetInterface("bmc"); SearchEngine.SetOption("Connection", Application("bmcmaindb")); } else var SearchEngine = DataTool.GetInterface("pm"); strXML = SearchEngine.FetchXML(ui); if (strXML) { url = sfx + "?sid=BMC" var xml = Server.CreateObject("Msxml2.DOMDocument.4.0"); xml.loadXML(strXML); var xml_bibl = xml.selectSingleNode("/resultset/result/bibl"); url += "&genre=article"; //Temporarily - lets just say everything is a journal article //We should replace this with a smarter check for the genre //allowed values are article,book,bookitem,journal,conference,preprint,proceeding //see TTP 2580 for more node = xml_bibl.selectSingleNode("xrefbib//pubid[@idtype='doi']"); if(node) url += "&id=doi:" + node.text; var node = xml_bibl.selectSingleNode("xrefbib//pubid[@idtype='pmpid']"); if(node) url += "&id=pmid:" + node.text; node = xml_bibl.selectSingleNode("volume"); if(node) url += "&volume=" + Server.URLEncode(node.text); node = xml_bibl.selectSingleNode("fpage"); if(node) url += "&spage=" + Server.URLEncode(node.text); node = xml_bibl.selectSingleNode("lpage"); if(node) url += "&epage=" + Server.URLEncode(node.text); node = xml_bibl.selectSingleNode("pubdate"); if(node) url += "&date=" + Server.URLEncode(node.text); node = xml_bibl.selectSingleNode("title/p"); if(node) url += "&atitle=" + Server.URLEncode(node.text); node = xml_bibl.selectSingleNode("source"); if(node) url += "&title=" + Server.URLEncode(node.text); var xml_bibl = null; } else url = ""; var SearchEngine = null; var DataTool = null; return url; } %>