private void DrawProfilesModule() { XsltArgumentList args = new XsltArgumentList(); long offset = 0; long perpage = 0; long totalcount = 0; long totalpageremainder = 0; long totalpages = 0; long startrecord = 0; long page = 0; string searchfor = ""; string classgroupuri = ""; string classuri = ""; string fname = ""; string lname = ""; string institution = ""; string department = ""; string division = ""; string sort = ""; string sortdirection = ""; string searchrequest = ""; XmlDocument xmlsearchrequest; xmlsearchrequest = new XmlDocument(); Int16 showcolumns = 0; string otherfilters = ""; string institutionallexcept = string.Empty; string departmentallexcept = string.Empty; string divisionallexcept = string.Empty; string exactphrase = "false"; // UCSF default value to allow old Mini Search to work string searchtype = ""; Search.Utilities.DataIO data = new Profiles.Search.Utilities.DataIO(); if (String.IsNullOrEmpty(Request.QueryString["searchrequest"])==false) { searchrequest = data.DecryptRequest(Request.QueryString["searchrequest"]); xmlsearchrequest.LoadXml(searchrequest); } else if (string.IsNullOrEmpty(base.MasterPage.SearchRequest) == false) { searchrequest = data.DecryptRequest(base.MasterPage.SearchRequest); xmlsearchrequest.LoadXml(searchrequest); } if (String.IsNullOrEmpty(Request.QueryString["searchtype"])==false) { searchtype = Request.QueryString["searchtype"]; } else if (String.IsNullOrEmpty(Request.Form["searchtype"])==false) { searchtype = Request.Form["searchtype"]; } if (String.IsNullOrEmpty(Request.QueryString["searchfor"])==false) { searchfor = Request.QueryString["searchfor"]; //exactphrase = Request.QueryString["exactphrase"]; This is causing a bug. We test and set this if present later in this block anyway } else if(String.IsNullOrEmpty(Request.Form["txtSearchFor"])==false) { searchfor = Request.Form["txtSearchFor"]; } else if (xmlsearchrequest.ChildNodes.Count > 0) { try { searchfor = xmlsearchrequest.SelectSingleNode("SearchOptions/MatchOptions/SearchString").InnerText; } catch(Exception) { // Do nothing, leave searchfor = null } } if (searchfor == null) searchfor = string.Empty; if (String.IsNullOrEmpty(Request.QueryString["lname"])==false) lname = Request.QueryString["lname"]; else lname = Request.Form["txtLname"]; if (lname == null) lname = string.Empty; if (String.IsNullOrEmpty(Request.QueryString["fname"])==false) fname = Request.QueryString["fname"]; else fname = Request.Form["txtFname"]; if (fname == null) fname = string.Empty; if (String.IsNullOrEmpty(Request.QueryString["institution"])==false) institution = Request.QueryString["institution"]; if (String.IsNullOrEmpty(Request.QueryString["department"])==false) department = Request.QueryString["department"]; if (String.IsNullOrEmpty(Request.QueryString["division"]) == false) division = Request.QueryString["division"]; if (String.IsNullOrEmpty(Request.QueryString["perpage"])==false) { perpage = Convert.ToInt64(Request.QueryString["perpage"]); if (!(perpage>0)) perpage = 15; //if (String.IsNullOrEmpty(Request.QueryString["perpage"])==false) // perpage = Convert.ToInt64(Request.QueryString["perpage"]); //else // perpage = 15; } else { perpage = 15; //default } if (String.IsNullOrEmpty(Request.QueryString["offset"])==false) { offset = Convert.ToInt64(Request.QueryString["offset"]); //if (Request.QueryString["offset"] != string.Empty) // offset = Convert.ToInt64(Request.QueryString["offset"]); //else // offset = 0; } else { offset = 0; } if (String.IsNullOrEmpty(Request.QueryString["page"])==false) { page = Convert.ToInt64(Request.QueryString["page"]); if (!(page > 0)) page = 1; //if (Request.QueryString["page"] != string.Empty) // page = Convert.ToInt64(Request.QueryString["page"]); //else // page = 1; } else { page = 1; } if (String.IsNullOrEmpty(Request.QueryString["classgroupuri"])==false) classgroupuri = HttpUtility.UrlDecode(Request.QueryString["classgroupuri"]); else classgroupuri = HttpUtility.UrlDecode(Request.Form["classgroupuri"]); if (classgroupuri != null) { if (classgroupuri.Contains("!")) classgroupuri = classgroupuri.Replace('!', '#'); } else { classgroupuri = string.Empty; } if (String.IsNullOrEmpty(Request.QueryString["classuri"])==false) classuri = HttpUtility.UrlDecode(Request.QueryString["classuri"]); else classuri = HttpUtility.UrlDecode(Request.Form["classuri"]); if (classuri != null) { if (classuri.Contains("!")) classuri = classuri.Replace('!', '#'); } else { classuri = string.Empty; } if (String.IsNullOrEmpty(Request.QueryString["sortby"])==false) sort = Request.QueryString["sortby"]; if (String.IsNullOrEmpty(Request.QueryString["sortdirection"])==false) sortdirection = Request.QueryString["sortdirection"]; if (String.IsNullOrEmpty(Request.QueryString["showcolumns"])==false) { showcolumns = Convert.ToInt16(Request.QueryString["showcolumns"]); } else { showcolumns = 1; } if (String.IsNullOrEmpty(Request.QueryString["otherfilters"])==false) { otherfilters = Request.QueryString["otherfilters"]; } if (String.IsNullOrEmpty(Request.QueryString["institutionallexcept"])==false) { institutionallexcept = Request.QueryString["institutionallexcept"]; } if (String.IsNullOrEmpty(Request.QueryString["departmentallexcept"])==false) { departmentallexcept = Request.QueryString["departmentallexcept"]; } if (String.IsNullOrEmpty(Request.QueryString["divisionallexcept"]) == false) { divisionallexcept = Request.QueryString["divisionallexcept"]; } if (String.IsNullOrEmpty(Request.QueryString["exactphrase"])==false) { exactphrase = Request.QueryString["exactphrase"]; } try { totalcount = data.GetTotalSearchConnections(this.SearchData, base.Namespaces); if (page < 0) { page = 1; } totalpages = Math.DivRem(totalcount, Convert.ToInt64(perpage), out totalpageremainder); if (totalpageremainder > 0) { totalpages = totalpages + 1; } if (page > totalpages) page = totalpages; startrecord = ((Convert.ToInt32(page) * Convert.ToInt32(perpage)) + 1) - Convert.ToInt32(perpage); if (startrecord < 0) startrecord = 1; if (searchrequest.Trim() != string.Empty) searchrequest = data.EncryptRequest(searchrequest); List<GenericListItem> g = new List<GenericListItem>(); g = data.GetListOfFilters(); if (otherfilters.IsNullOrEmpty() && base.BaseData.SelectSingleNode("rdf:RDF/rdf:Description/vivo:overview/SearchOptions/MatchOptions/SearchFiltersList/SearchFilter[@Property='http://profiles.catalyst.harvard.edu/ontology/prns#hasPersonFilter']", base.Namespaces) != null) { string s = string.Empty; foreach (XmlNode x in base.BaseData.SelectSingleNode("rdf:RDF/rdf:Description/vivo:overview/SearchOptions/MatchOptions/SearchFiltersList/SearchFilter[@Property='http://profiles.catalyst.harvard.edu/ontology/prns#hasPersonFilter']", base.Namespaces)) { s = data.GetConvertedURIListItem(g, x.InnerText); otherfilters += "," + s; } } switch (searchtype.ToLower()) { case "everything": xmlsearchrequest = data.SearchRequest(searchfor, exactphrase, classgroupuri, classuri, perpage.ToString(), (startrecord - 1).ToString()); break; default: xmlsearchrequest = data.SearchRequest(searchfor, exactphrase, fname, lname, institution, institutionallexcept, department, departmentallexcept, division, divisionallexcept, "http://xmlns.com/foaf/0.1/Person", perpage.ToString(), (startrecord - 1).ToString(), sort, sortdirection, otherfilters, "",ref searchrequest); break; } this.SearchData = data.Search(xmlsearchrequest, false); this.SearchRequest = data.EncryptRequest(xmlsearchrequest.OuterXml); base.MasterPage.SearchRequest = this.SearchRequest; base.MasterPage.RDFData = this.SearchData; base.MasterPage.RDFNamespaces = this.Namespaces; // only shows these if we are not doing an everything search, or we are looking at people in the everything search if (!"everything".Equals(searchtype.ToLower()) || "http://profiles.catalyst.harvard.edu/ontology/prns#ClassGroupPeople".Equals(classgroupuri)) { new ORNGSearchRPCService(Page, this.SearchData, xmlsearchrequest, this.Namespaces); } } catch (DisallowedSearchException se) { litEverythingResults.Text = se.Message; return; } catch (Exception ex) { ex = ex; DebugLogging.Log("ERROR" + ex.Message); //for now just flip it back to the defaults. This is if someone keys some funky divide by zero stuff in the URL // to try and break the system. startrecord = 1; perpage = 15; } args.AddParam("root", "", Root.Domain); args.AddParam("perpage", "", perpage); args.AddParam("offset", "", offset); args.AddParam("totalpages", "", totalpages); args.AddParam("page", "", page); args.AddParam("searchfor", "", searchfor); args.AddParam("exactphrase", "", exactphrase); args.AddParam("classGrpURIpassedin", "", classgroupuri); args.AddParam("classURIpassedin", "", classuri); args.AddParam("searchrequest", "", this.SearchRequest); switch (searchtype.ToLower()) { case "everything": litEverythingResults.Text = XslHelper.TransformInMemory(Server.MapPath("~/Search/Modules/SearchResults/EverythingResults.xslt"), args, this.SearchData.OuterXml); break; case "people": args.AddParam("showcolumns", "", showcolumns.ToString()); if ((showcolumns & 1) == 1) { args.AddParam("institution", "", "true"); } else { args.AddParam("institution", "", "false"); } if ((showcolumns & 2) == 2) { args.AddParam("department", "", "true"); } else { args.AddParam("department", "", "false"); } if ((showcolumns & 8) == 8) { args.AddParam("facrank", "", "true"); } else { args.AddParam("facrank", "", "false"); } //Profiles.Search.Utilities.DataIO dropdowns = new Profiles.Search.Utilities.DataIO(); if (Convert.ToBoolean(ConfigurationSettings.AppSettings["ShowInstitutions"]) == true) { args.AddParam("ShowInstitutions", "", "true"); } else { args.AddParam("ShowInstitutions", "", "false"); } if (Convert.ToBoolean(ConfigurationSettings.AppSettings["ShowDepartments"]) == true) { args.AddParam("ShowDepartments", "", "true"); } else { args.AddParam("ShowDepartments", "", "false"); } //Faculty Rank always shows args.AddParam("ShowFacRank", "", "true"); args.AddParam("currentsort", "", sort); args.AddParam("currentsortdirection", "", sortdirection); if (base.BaseData.SelectNodes("rdf:RDF/rdf:Description/vivo:overview/SearchDetails/SearchPhraseList", base.Namespaces).Count > 0) args.AddParam("why", "", true); else args.AddParam("why", "", false); litEverythingResults.Text = HttpUtility.HtmlDecode( XslHelper.TransformInMemory(Server.MapPath("~/Search/Modules/SearchResults/PeopleResults.xslt"), args, this.SearchData.OuterXml)); break; } }
//Need to process this at the page level for the framework data //to process the presentation XML public void LoadRDFSearchResults() { XmlDocument xml = new XmlDocument(); Namespace rdfnamespaces = new Namespace(); Utilities.DataIO data = new Utilities.DataIO(); string searchtype = string.Empty; string lname = string.Empty; string fname = string.Empty; string institution = string.Empty; string department = string.Empty; string division = string.Empty; string searchfor = string.Empty; string classgroupuri = string.Empty; string classuri = string.Empty; string perpage = string.Empty; string offset = string.Empty; string sortby = string.Empty; string sortdirection = string.Empty; string searchrequest = string.Empty; string otherfilters = string.Empty; string institutionallexcept = string.Empty; string departmentallexcept = string.Empty; string divisionallexcept = string.Empty; string exactphrase = string.Empty; string nodeuri = string.Empty; string nodeid = string.Empty; if (this.SearchType.IsNullOrEmpty() == false) searchtype = this.SearchType; //else if (Request.Form["searchtype"] != null) //{ // searchtype = Request.Form["searchtype"]; //} if (Request.QueryString["searchfor"].IsNullOrEmpty() == false) searchfor = Request.QueryString["searchfor"]; if (Request.Form["txtSearchFor"].IsNullOrEmpty() == false) searchfor = Request.Form["txtSearchFor"]; if (Request.QueryString["lname"].IsNullOrEmpty() == false) lname = Request.QueryString["lname"]; if (Request.QueryString["institution"].IsNullOrEmpty() == false) institution = Request.QueryString["institution"]; if (Request.QueryString["department"].IsNullOrEmpty() == false) department = Request.QueryString["department"]; if (Request.QueryString["division"].IsNullOrEmpty() == false) division = Request.QueryString["division"]; if (Request.QueryString["fname"].IsNullOrEmpty() == false) fname = Request.QueryString["fname"]; if (Request.QueryString["classgroupuri"].IsNullOrEmpty() == false) classgroupuri = HttpUtility.UrlDecode(Request.QueryString["classgroupuri"]); else classgroupuri = HttpUtility.UrlDecode(Request.Form["classgroupuri"]); if (classgroupuri != null) { if (classgroupuri.Contains("!")) classgroupuri = classgroupuri.Replace('!', '#'); } if (Request.QueryString["classuri"].IsNullOrEmpty() == false) classuri = HttpUtility.UrlDecode(Request.QueryString["classuri"]); else classuri = HttpUtility.UrlDecode(Request.Form["classuri"]); if (classuri != null) { if (classuri.Contains("!")) classuri = classuri.Replace('!', '#'); } else { classuri = ""; } if (Request.QueryString["perpage"].IsNullOrEmpty() == false) perpage = Request.QueryString["perpage"]; else perpage = Request.Form["perpage"]; //if (perpage == string.Empty || perpage == null) //{ // perpage = Request.QueryString["perpage"]; //} if (perpage.IsNullOrEmpty()) perpage = "15"; if (Request.QueryString["offset"].IsNullOrEmpty() == false) offset = Request.QueryString["offset"]; else offset = Request.Form["offset"]; if (offset.IsNullOrEmpty()) offset = "0"; //if (offset == null) // offset = "0"; if (Request.QueryString["sortby"].IsNullOrEmpty() == false) sortby = Request.QueryString["sortby"]; if (Request.QueryString["sortdirection"].IsNullOrEmpty() == false) sortdirection = Request.QueryString["sortdirection"]; if (Request.QueryString["searchrequest"].IsNullOrEmpty() == false) searchrequest = Request.QueryString["searchrequest"]; else if (masterpage.SearchRequest.IsNullOrEmpty() == false) searchrequest = masterpage.SearchRequest; if (Request.QueryString["otherfilters"].IsNullOrEmpty() == false) otherfilters = Request.QueryString["otherfilters"]; if (Request.QueryString["institutionallexcept"].IsNullOrEmpty() == false) institutionallexcept = Request.QueryString["institutionallexcept"]; if (Request.QueryString["departmentallexcept"].IsNullOrEmpty() == false) departmentallexcept = Request.QueryString["departmentallexcept"]; if (Request.QueryString["divisionallexcept"].IsNullOrEmpty() == false) divisionallexcept = Request.QueryString["divisionallexcept"]; if (Request.QueryString["exactphrase"].IsNullOrEmpty() == false) exactphrase = Request.QueryString["exactphrase"]; if (Request.QueryString["nodeuri"].IsNullOrEmpty() == false) { nodeuri = Request.QueryString["nodeuri"]; nodeid = nodeuri.Substring(nodeuri.LastIndexOf("/") + 1); } switch (searchtype.ToLower()) { case "everything": if (searchrequest != string.Empty) xml.LoadXml(data.DecryptRequest(searchrequest)); else xml = data.SearchRequest(searchfor, exactphrase, classgroupuri, classuri, perpage, offset); break; default: //Person is the default if (searchrequest != string.Empty) xml.LoadXml(data.DecryptRequest(searchrequest)); else xml = data.SearchRequest(searchfor, exactphrase, fname, lname, institution, institutionallexcept, department, departmentallexcept, division, divisionallexcept, classuri, perpage, offset, sortby, sortdirection, otherfilters, "", ref searchrequest); break; } if (nodeuri != string.Empty && nodeid != string.Empty) masterpage.RDFData = data.WhySearch(xml, nodeuri, Convert.ToInt64(nodeid)); else masterpage.RDFData = data.Search(xml, false); Framework.Utilities.DebugLogging.Log(masterpage.RDFData.OuterXml); masterpage.RDFNamespaces = rdfnamespaces.LoadNamespaces(masterpage.RDFData); masterpage.SearchRequest = searchrequest; }
private void DrawProfilesModule() { XsltArgumentList args = new XsltArgumentList(); string searchfor = string.Empty; string classgroupuri = string.Empty; string classuri = string.Empty; string searchrequest = string.Empty; string exactphrase = string.Empty; XmlDocument xmlsearchrequest; if (Request.QueryString["searchfor"] != null) searchfor = Request.QueryString["searchfor"]; else searchfor = Request.Form["txtSearchFor"]; if (Request.QueryString["classgroupuri"] != null) classgroupuri = HttpUtility.UrlDecode(Request.QueryString["classgroupuri"]); else classgroupuri = HttpUtility.UrlDecode(Request.Form["classgroupuri"]); if (classgroupuri != null) { if (classgroupuri.Contains("!")) classgroupuri = classgroupuri.Replace('!', '#'); } else { classgroupuri = string.Empty; } if (Request.QueryString["classuri"] != null) classuri = HttpUtility.UrlDecode(Request.QueryString["classuri"]); else classuri = HttpUtility.UrlDecode(Request.Form["classuri"]); if (classuri != null) { if (classuri.Contains("!")) classuri = classuri.Replace('!', '#'); } else { classuri = string.Empty; } Search.Utilities.DataIO data = new Profiles.Search.Utilities.DataIO(); if (Request.QueryString["searchrequest"] != null) { searchrequest = Request.QueryString["searchrequest"]; if (searchfor == null) { xmlsearchrequest = new XmlDocument(); xmlsearchrequest.LoadXml(data.DecryptRequest(searchrequest)); searchfor = xmlsearchrequest.SelectSingleNode("SearchOptions/MatchOptions/SearchString").InnerText; } } if (Request.QueryString["exactphrase"] != null) { exactphrase = Request.QueryString["exactphrase"]; } else exactphrase = "false"; //Grab the full results so I can get the counts, this comes from the cache cloud. this.SearchResults = data.Search(data.SearchRequest(searchfor, exactphrase, "", "", "0", "100"), false); Int64 total = 0; foreach (XmlNode x in this.SearchResults.SelectNodes("rdf:RDF/rdf:Description/vivo:overview/prns:matchesClassGroupsList/prns:matchesClassGroup", this.Namespaces)) { total += Convert.ToInt64(x.SelectSingleNode("prns:numberOfConnections", this.Namespaces).InnerText); } args.AddParam("total", "", total); args.AddParam("searchfor", "", searchfor); args.AddParam("exactphrase", "", exactphrase); args.AddParam("root", "", Root.Domain); args.AddParam("classGrpURIpassedin", "", classgroupuri); args.AddParam("classURIpassedin", "", classuri); XslCompiledTransform xslt = new XslCompiledTransform(); litEverythingPassiveResults.Text = XslHelper.TransformInMemory(Server.MapPath("~/Search/Modules/SearchEverythingFacets/SearchEverythingFacets.xslt"), args, this.SearchResults.OuterXml); }
private void DrawProfilesModule() { XsltArgumentList args = new XsltArgumentList(); long offset = 0; long perpage = 0; long totalcount = 0; long totalpageremainder = 0; long totalpages = 0; long startrecord = 0; long page = 0; string searchfor = ""; string classgroupuri = ""; string classuri = ""; string fname = ""; string lname = ""; string institution = ""; string department = ""; string division = ""; string sort = ""; string sortdirection = ""; string searchrequest = ""; XmlDocument xmlsearchrequest; xmlsearchrequest = new XmlDocument(); Int16 showcolumns = 0; string otherfilters = ""; string institutionallexcept = string.Empty; string departmentallexcept = string.Empty; string divisionallexcept = string.Empty; string exactphrase = "false"; // UCSF default value to allow old Mini Search to work string searchtype = ""; Search.Utilities.DataIO data = new Profiles.Search.Utilities.DataIO(); if (String.IsNullOrEmpty(Request.QueryString["searchrequest"]) == false) { searchrequest = data.DecryptRequest(Request.QueryString["searchrequest"]); xmlsearchrequest.LoadXml(searchrequest); } else if (Session["searchrequest"] != null) { searchrequest = Session["searchrequest"].ToString(); xmlsearchrequest.LoadXml(searchrequest); } else if (string.IsNullOrEmpty(base.MasterPage.SearchRequest) == false) { searchrequest = data.DecryptRequest(base.MasterPage.SearchRequest); xmlsearchrequest.LoadXml(searchrequest); } if (String.IsNullOrEmpty(Request.QueryString["searchtype"]) == false) { searchtype = Request.QueryString["searchtype"]; } else if (String.IsNullOrEmpty(Request.Form["searchtype"]) == false) { searchtype = Request.Form["searchtype"]; } if (String.IsNullOrEmpty(Request.QueryString["searchfor"]) == false) { searchfor = Request.QueryString["searchfor"]; //exactphrase = Request.QueryString["exactphrase"]; This is causing a bug. We test and set this if present later in this block anyway } else if (String.IsNullOrEmpty(Request.Form["txtSearchFor"]) == false) { searchfor = Request.Form["txtSearchFor"]; } else if (xmlsearchrequest.ChildNodes.Count > 0) { try { searchfor = xmlsearchrequest.SelectSingleNode("SearchOptions/MatchOptions/SearchString").InnerText; } catch (Exception) { // Do nothing, leave searchfor = null } } if (searchfor == null) { searchfor = string.Empty; } if (String.IsNullOrEmpty(Request.QueryString["lname"]) == false) { lname = Request.QueryString["lname"]; } else { lname = Request.Form["txtLname"]; } if (lname == null) { lname = string.Empty; } if (String.IsNullOrEmpty(Request.QueryString["fname"]) == false) { fname = Request.QueryString["fname"]; } else { fname = Request.Form["txtFname"]; } if (fname == null) { fname = string.Empty; } if (String.IsNullOrEmpty(Request.QueryString["institution"]) == false) { institution = Request.QueryString["institution"]; } if (String.IsNullOrEmpty(Request.QueryString["department"]) == false) { department = Request.QueryString["department"]; } if (String.IsNullOrEmpty(Request.QueryString["division"]) == false) { division = Request.QueryString["division"]; } if (String.IsNullOrEmpty(Request.QueryString["perpage"]) == false) { perpage = Convert.ToInt64(Request.QueryString["perpage"]); if (!(perpage > 0)) { perpage = 15; } //if (String.IsNullOrEmpty(Request.QueryString["perpage"])==false) // perpage = Convert.ToInt64(Request.QueryString["perpage"]); //else // perpage = 15; } else { perpage = 15; //default } if (String.IsNullOrEmpty(Request.QueryString["offset"]) == false) { offset = Convert.ToInt64(Request.QueryString["offset"]); //if (Request.QueryString["offset"] != string.Empty) // offset = Convert.ToInt64(Request.QueryString["offset"]); //else // offset = 0; } else { offset = 0; } if (String.IsNullOrEmpty(Request.QueryString["page"]) == false) { page = Convert.ToInt64(Request.QueryString["page"]); if (!(page > 0)) { page = 1; } //if (Request.QueryString["page"] != string.Empty) // page = Convert.ToInt64(Request.QueryString["page"]); //else // page = 1; } else { page = 1; } if (String.IsNullOrEmpty(Request.QueryString["classgroupuri"]) == false) { classgroupuri = HttpUtility.UrlDecode(Request.QueryString["classgroupuri"]); } else { classgroupuri = HttpUtility.UrlDecode(Request.Form["classgroupuri"]); } if (classgroupuri != null) { if (classgroupuri.Contains("!")) { classgroupuri = classgroupuri.Replace('!', '#'); } } else { classgroupuri = string.Empty; } if (String.IsNullOrEmpty(Request.QueryString["classuri"]) == false) { classuri = HttpUtility.UrlDecode(Request.QueryString["classuri"]); } else { classuri = HttpUtility.UrlDecode(Request.Form["classuri"]); } if (classuri != null) { if (classuri.Contains("!")) { classuri = classuri.Replace('!', '#'); } } else { classuri = string.Empty; } if (String.IsNullOrEmpty(Request.QueryString["sortby"]) == false) { sort = Request.QueryString["sortby"]; } if (String.IsNullOrEmpty(Request.QueryString["sortdirection"]) == false) { sortdirection = Request.QueryString["sortdirection"]; } if (String.IsNullOrEmpty(Request.QueryString["showcolumns"]) == false) { showcolumns = Convert.ToInt16(Request.QueryString["showcolumns"]); } else { showcolumns = 1; } if (String.IsNullOrEmpty(Request.QueryString["otherfilters"]) == false) { otherfilters = Request.QueryString["otherfilters"]; } if (String.IsNullOrEmpty(Request.QueryString["institutionallexcept"]) == false) { institutionallexcept = Request.QueryString["institutionallexcept"]; } if (String.IsNullOrEmpty(Request.QueryString["departmentallexcept"]) == false) { departmentallexcept = Request.QueryString["departmentallexcept"]; } if (String.IsNullOrEmpty(Request.QueryString["divisionallexcept"]) == false) { divisionallexcept = Request.QueryString["divisionallexcept"]; } if (String.IsNullOrEmpty(Request.QueryString["exactphrase"]) == false) { exactphrase = Request.QueryString["exactphrase"]; } try { totalcount = data.GetTotalSearchConnections(this.SearchData, base.Namespaces); if (page < 0) { page = 1; } totalpages = Math.DivRem(totalcount, Convert.ToInt64(perpage), out totalpageremainder); if (totalpageremainder > 0) { totalpages = totalpages + 1; } if (page > totalpages) { page = totalpages; } startrecord = ((Convert.ToInt32(page) * Convert.ToInt32(perpage)) + 1) - Convert.ToInt32(perpage); if (startrecord < 0) { startrecord = 1; } if (searchrequest.Trim() != string.Empty) { searchrequest = data.EncryptRequest(searchrequest); } List <GenericListItem> g = new List <GenericListItem>(); g = data.GetListOfFilters(); if (otherfilters.IsNullOrEmpty() && base.BaseData.SelectSingleNode("rdf:RDF/rdf:Description/vivo:overview/SearchOptions/MatchOptions/SearchFiltersList/SearchFilter[@Property='http://profiles.catalyst.harvard.edu/ontology/prns#hasPersonFilter']", base.Namespaces) != null) { string s = string.Empty; foreach (XmlNode x in base.BaseData.SelectSingleNode("rdf:RDF/rdf:Description/vivo:overview/SearchOptions/MatchOptions/SearchFiltersList/SearchFilter[@Property='http://profiles.catalyst.harvard.edu/ontology/prns#hasPersonFilter']", base.Namespaces)) { s = data.GetConvertedURIListItem(g, x.InnerText); otherfilters += "," + s; } } switch (searchtype.ToLower()) { case "everything": xmlsearchrequest = data.SearchRequest(searchfor, exactphrase, classgroupuri, classuri, perpage.ToString(), (startrecord - 1).ToString()); break; default: xmlsearchrequest = data.SearchRequest(searchfor, exactphrase, fname, lname, institution, institutionallexcept, department, departmentallexcept, division, divisionallexcept, "http://xmlns.com/foaf/0.1/Person", perpage.ToString(), (startrecord - 1).ToString(), sort, sortdirection, otherfilters, "", true, ref searchrequest); HttpContext.Current.Session["PERSON-SEARCH-ADD"] = "true"; break; } this.SearchData = data.Search(xmlsearchrequest, false); this.SearchRequest = data.EncryptRequest(xmlsearchrequest.OuterXml); base.MasterPage.SearchRequest = this.SearchRequest; base.MasterPage.RDFData = this.SearchData; base.MasterPage.RDFNamespaces = this.Namespaces; // only shows these if we are not doing an everything search, or we are looking at people in the everything search if (!"everything".Equals(searchtype.ToLower()) || "http://profiles.catalyst.harvard.edu/ontology/prns#ClassGroupPeople".Equals(classgroupuri)) { new ORNGSearchRPCService(Page, this.SearchData, xmlsearchrequest, this.Namespaces); } } catch (DisallowedSearchException se) { litEverythingResults.Text = se.Message; return; } catch (Exception ex) { ex = ex; DebugLogging.Log("ERROR" + ex.Message); //for now just flip it back to the defaults. This is if someone keys some funky divide by zero stuff in the URL // to try and break the system. startrecord = 1; perpage = 15; } args.AddParam("root", "", Root.Domain); args.AddParam("perpage", "", perpage); args.AddParam("offset", "", offset); args.AddParam("totalpages", "", totalpages); args.AddParam("page", "", page); args.AddParam("searchfor", "", searchfor); args.AddParam("exactphrase", "", exactphrase); args.AddParam("classGrpURIpassedin", "", classgroupuri); args.AddParam("classURIpassedin", "", classuri); args.AddParam("searchrequest", "", this.SearchRequest); switch (searchtype.ToLower()) { case "everything": litEverythingResults.Text = XslHelper.TransformInMemory(Server.MapPath("~/Search/Modules/SearchResults/EverythingResults.xslt"), args, this.SearchData.OuterXml); break; case "people": args.AddParam("showcolumns", "", showcolumns.ToString()); if ((showcolumns & 1) == 1) { args.AddParam("institution", "", "true"); } else { args.AddParam("institution", "", "false"); } if ((showcolumns & 2) == 2) { args.AddParam("department", "", "true"); } else { args.AddParam("department", "", "false"); } if ((showcolumns & 8) == 8) { args.AddParam("facrank", "", "true"); } else { args.AddParam("facrank", "", "false"); } //Profiles.Search.Utilities.DataIO dropdowns = new Profiles.Search.Utilities.DataIO(); if (Convert.ToBoolean(ConfigurationSettings.AppSettings["ShowInstitutions"]) == true) { args.AddParam("ShowInstitutions", "", "true"); } else { args.AddParam("ShowInstitutions", "", "false"); } if (Convert.ToBoolean(ConfigurationSettings.AppSettings["ShowDepartments"]) == true) { args.AddParam("ShowDepartments", "", "true"); } else { args.AddParam("ShowDepartments", "", "false"); } //Faculty Rank always shows args.AddParam("ShowFacRank", "", "true"); args.AddParam("currentsort", "", sort); args.AddParam("currentsortdirection", "", sortdirection); if (base.BaseData.SelectNodes("rdf:RDF/rdf:Description/vivo:overview/SearchDetails/SearchPhraseList", base.Namespaces).Count > 0) { args.AddParam("why", "", true); } else { args.AddParam("why", "", false); } litEverythingResults.Text = HttpUtility.HtmlDecode(XslHelper.TransformInMemory(Server.MapPath("~/Search/Modules/SearchResults/PeopleResults.xslt"), args, this.SearchData.OuterXml)); break; } }
//Need to process this at the page level for the framework data //to process the presentation XML public void LoadRDFSearchResults() { XmlDocument xml = new XmlDocument(); Namespace rdfnamespaces = new Namespace(); Utilities.DataIO data = new Utilities.DataIO(); string searchtype = string.Empty; string lname = string.Empty; string fname = string.Empty; string institution = string.Empty; string department = string.Empty; string division = string.Empty; string searchfor = string.Empty; string classgroupuri = string.Empty; string classuri = string.Empty; string perpage = string.Empty; string offset = string.Empty; string searchrequest = string.Empty; string otherfilters = string.Empty; string institutionallexcept = string.Empty; string departmentallexcept = string.Empty; string divisionallexcept = string.Empty; string exactphrase = string.Empty; string nodeuri = string.Empty; string nodeid = string.Empty; string country = (Request.QueryString["country"].IsNullOrEmpty() ? "(All)" : Request.QueryString["country"]); department = country; if (Request.QueryString["new"] == "true") { Session["searchrequest"] = null; masterpage.SearchRequest = null; } if (this.SearchType.IsNullOrEmpty() == false) { searchtype = this.SearchType; } //else if (Request.Form["searchtype"] != null) //{ // searchtype = Request.Form["searchtype"]; //} if (Request.QueryString["searchfor"].IsNullOrEmpty() == false) { searchfor = Request.QueryString["searchfor"]; } if (Request.Form["txtSearchFor"].IsNullOrEmpty() == false) { searchfor = Request.Form["txtSearchFor"]; } if (Request.QueryString["lname"].IsNullOrEmpty() == false) { lname = Request.QueryString["lname"]; } if (Request.QueryString["institution"].IsNullOrEmpty() == false) { institution = Request.QueryString["institution"]; } if (Request.QueryString["division"].IsNullOrEmpty() == false) { division = Request.QueryString["division"]; } if (Request.QueryString["fname"].IsNullOrEmpty() == false) { fname = Request.QueryString["fname"]; } if (Request.QueryString["classgroupuri"].IsNullOrEmpty() == false) { classgroupuri = HttpUtility.UrlDecode(Request.QueryString["classgroupuri"]); } else { classgroupuri = HttpUtility.UrlDecode(Request.Form["classgroupuri"]); } if (classgroupuri != null) { if (classgroupuri.Contains("!")) { classgroupuri = classgroupuri.Replace('!', '#'); } } if (Request.QueryString["classuri"].IsNullOrEmpty() == false) { classuri = HttpUtility.UrlDecode(Request.QueryString["classuri"]); } else { classuri = HttpUtility.UrlDecode(Request.Form["classuri"]); } if (classuri != null) { if (classuri.Contains("!")) { classuri = classuri.Replace('!', '#'); } } else { classuri = ""; } if (Request.QueryString["perpage"].IsNullOrEmpty() == false) { perpage = Request.QueryString["perpage"]; } else { perpage = Request.Form["perpage"]; } //if (perpage == string.Empty || perpage == null) //{ // perpage = Request.QueryString["perpage"]; //} if (perpage.IsNullOrEmpty()) { perpage = "15"; } if (Request.QueryString["offset"].IsNullOrEmpty() == false) { offset = Request.QueryString["offset"]; } else { offset = Request.Form["offset"]; } if (offset.IsNullOrEmpty()) { offset = "0"; } if (Request.QueryString["otherfilters"].IsNullOrEmpty() == false) { otherfilters = Request.QueryString["otherfilters"]; } if (Request.QueryString["institutionallexcept"].IsNullOrEmpty() == false) { institutionallexcept = Request.QueryString["institutionallexcept"]; } if (Request.QueryString["departmentallexcept"].IsNullOrEmpty() == false) { departmentallexcept = Request.QueryString["departmentallexcept"]; } if (Request.QueryString["divisionallexcept"].IsNullOrEmpty() == false) { divisionallexcept = Request.QueryString["divisionallexcept"]; } if (Request.QueryString["exactphrase"].IsNullOrEmpty() == false) { exactphrase = Request.QueryString["exactphrase"]; } if (Request.QueryString["nodeuri"].IsNullOrEmpty() == false) { nodeuri = Request.QueryString["nodeuri"]; nodeid = nodeuri.Substring(nodeuri.LastIndexOf("/") + 1); } string keywordOrPerson = "keyword"; //added this test for search type so we could split the person keyword search into a split to remove the why col for person keywordOrPerson = data.SearchType(searchfor); if (keywordOrPerson == "person") { xml = data.CovidPersonSearchRequest(searchfor, offset, perpage, country); } else { xml = data.SearchRequest(searchfor, exactphrase, fname, lname, institution, institutionallexcept, department, departmentallexcept, division, divisionallexcept, "http://xmlns.com/foaf/0.1/Person", perpage, offset, otherfilters, "", true, ref searchrequest); } searchrequest = xml.OuterXml; Session["SearchRequest"] = searchrequest; if (nodeuri != string.Empty && nodeid != string.Empty) { masterpage.RDFData = data.WhySearch(xml, nodeuri, Convert.ToInt64(nodeid)); } else { masterpage.RDFData = data.Search(xml, false, false); } Framework.Utilities.DebugLogging.Log(masterpage.RDFData.OuterXml); masterpage.RDFNamespaces = rdfnamespaces.LoadNamespaces(masterpage.RDFData); masterpage.SearchRequest = searchrequest; }
private void DrawProfilesModule() { XsltArgumentList args = new XsltArgumentList(); long offset = 0; long perpage = 0; long totalcount = 0; long totalpageremainder = 0; long totalpages = 0; long startrecord = 0; long page = 0; string searchfor = ""; string classgroupuri = ""; string classuri = ""; string fname = ""; string lname = ""; string institution = ""; string department = ""; string division = ""; string searchrequest = ""; XmlDocument xmlsearchrequest; xmlsearchrequest = new XmlDocument(); string otherfilters = ""; string institutionallexcept = string.Empty; string departmentallexcept = "0"; string divisionallexcept = string.Empty; string exactphrase = "false"; // UCSF default value to allow old Mini Search to work string country = (Request.QueryString["country"].IsNullOrEmpty() ? "(All)" : Request.QueryString["country"]); department = country; string keywordOrPerson = "keyword"; string searchtype = ""; Search.Utilities.DataIO data = new Profiles.Search.Utilities.DataIO(); if (String.IsNullOrEmpty(Request.QueryString["searchtype"]) == false) { searchtype = Request.QueryString["searchtype"]; } else if (String.IsNullOrEmpty(Request.Form["searchtype"]) == false) { searchtype = Request.Form["searchtype"]; } if (String.IsNullOrEmpty(Request.QueryString["searchfor"]) == false) { searchfor = Request.QueryString["searchfor"]; //exactphrase = Request.QueryString["exactphrase"]; This is causing a bug. We test and set this if present later in this block anyway } else if (String.IsNullOrEmpty(Request.Form["txtSearchFor"]) == false) { searchfor = Request.Form["txtSearchFor"]; } if (searchfor == null) { searchfor = string.Empty; } if (String.IsNullOrEmpty(Request.QueryString["lname"]) == false) { lname = Request.QueryString["lname"]; } else { lname = Request.Form["txtLname"]; } if (lname == null) { lname = string.Empty; } if (String.IsNullOrEmpty(Request.QueryString["fname"]) == false) { fname = Request.QueryString["fname"]; } else { fname = Request.Form["txtFname"]; } if (fname == null) { fname = string.Empty; } if (String.IsNullOrEmpty(Request.QueryString["perpage"]) == false) { perpage = Convert.ToInt64(Request.QueryString["perpage"]); if (!(perpage > 0)) { perpage = 15; } } else { perpage = 15; //default } if (String.IsNullOrEmpty(Request.QueryString["offset"]) == false) { offset = Convert.ToInt64(Request.QueryString["offset"]); } else { offset = 0; } if (String.IsNullOrEmpty(Request.QueryString["page"]) == false) { page = Convert.ToInt64(Request.QueryString["page"]); if (!(page > 0)) { page = 1; } } else { page = 1; } if (String.IsNullOrEmpty(Request.QueryString["classgroupuri"]) == false) { classgroupuri = HttpUtility.UrlDecode(Request.QueryString["classgroupuri"]); } else { classgroupuri = HttpUtility.UrlDecode(Request.Form["classgroupuri"]); } if (classgroupuri != null) { if (classgroupuri.Contains("!")) { classgroupuri = classgroupuri.Replace('!', '#'); } } else { classgroupuri = string.Empty; } if (String.IsNullOrEmpty(Request.QueryString["classuri"]) == false) { classuri = HttpUtility.UrlDecode(Request.QueryString["classuri"]); } else { classuri = HttpUtility.UrlDecode(Request.Form["classuri"]); } if (classuri != null) { if (classuri.Contains("!")) { classuri = classuri.Replace('!', '#'); } } else { classuri = string.Empty; } if (String.IsNullOrEmpty(Request.QueryString["otherfilters"]) == false) { otherfilters = Request.QueryString["otherfilters"]; } try { totalcount = data.GetTotalSearchConnections(this.SearchData, base.Namespaces); if (page < 0) { page = 1; } totalpages = Math.DivRem(totalcount, Convert.ToInt64(perpage), out totalpageremainder); if (totalpageremainder > 0) { totalpages = totalpages + 1; } if (page > totalpages) { page = totalpages; } startrecord = ((Convert.ToInt32(page) * Convert.ToInt32(perpage)) + 1) - Convert.ToInt32(perpage); if (startrecord < 0) { startrecord = 1; } List <GenericListItem> g = new List <GenericListItem>(); g = data.GetListOfFilters(); if (otherfilters.IsNullOrEmpty() && base.BaseData.SelectSingleNode("rdf:RDF/rdf:Description/vivo:overview/SearchOptions/MatchOptions/SearchFiltersList/SearchFilter[@Property='http://profiles.catalyst.harvard.edu/ontology/prns#hasPersonFilter']", base.Namespaces) != null) { string s = string.Empty; foreach (XmlNode x in base.BaseData.SelectSingleNode("rdf:RDF/rdf:Description/vivo:overview/SearchOptions/MatchOptions/SearchFiltersList/SearchFilter[@Property='http://profiles.catalyst.harvard.edu/ontology/prns#hasPersonFilter']", base.Namespaces)) { s = data.GetConvertedURIListItem(g, x.InnerText); otherfilters += "," + s; } } //added this test for search type so we could split the person keyword search into a split to remove the why col for person keywordOrPerson = data.SearchType(searchfor); if (keywordOrPerson == "person") { xmlsearchrequest = data.CovidPersonSearchRequest(searchfor, (startrecord - 1).ToString(), perpage.ToString(), country); } else { xmlsearchrequest = data.SearchRequest(searchfor, exactphrase, fname, lname, institution, institutionallexcept, department, departmentallexcept, division, divisionallexcept, "http://xmlns.com/foaf/0.1/Person", perpage.ToString(), (startrecord - 1).ToString(), otherfilters, "", true, ref searchrequest); HttpContext.Current.Session["PERSON-SEARCH-ADD"] = "true"; } this.SearchData = data.Search(xmlsearchrequest, false, false); this.SearchRequest = xmlsearchrequest.OuterXml; base.MasterPage.SearchRequest = this.SearchRequest; base.MasterPage.RDFData = this.SearchData; base.MasterPage.RDFNamespaces = this.Namespaces; } catch (DisallowedSearchException se) { litEverythingResults.Text = se.Message; return; } catch (Exception ex) { ex = ex; DebugLogging.Log("ERROR " + ex.Message); //for now just flip it back to the defaults. This is if someone keys some funky divide by zero stuff in the URL // to try and break the system. startrecord = 1; perpage = 15; } args.AddParam("root", "", Root.Domain); args.AddParam("perpage", "", perpage); args.AddParam("offset", "", offset); args.AddParam("totalpages", "", totalpages); args.AddParam("page", "", page); args.AddParam("searchfor", "", searchfor); args.AddParam("exactphrase", "", exactphrase); args.AddParam("classGrpURIpassedin", "", classgroupuri); args.AddParam("classURIpassedin", "", classuri); switch (searchtype.ToLower()) { case "everything": litEverythingResults.Text = XslHelper.TransformInMemory(Server.MapPath("~/Search/Modules/SearchResults/EverythingResults.xslt"), args, this.SearchData.OuterXml); break; case "people": args.AddParam("country", "", country); if (keywordOrPerson == "keyword") { args.AddParam("why", "", true); } else { args.AddParam("why", "", false); } litEverythingResults.Text = HttpUtility.HtmlDecode(XslHelper.TransformInMemory(Server.MapPath("~/Search/Modules/SearchResults/PeopleResults.xslt"), args, this.SearchData.OuterXml)); break; } }
//Need to process this at the page level for the framework data //to process the presentation XML public void LoadRDFSearchResults() { XmlDocument xml = new XmlDocument(); Namespace rdfnamespaces = new Namespace(); Utilities.DataIO data = new Utilities.DataIO(); string searchtype = string.Empty; string lname = string.Empty; string fname = string.Empty; string institution = string.Empty; string department = string.Empty; string division = string.Empty; string searchfor = string.Empty; string classgroupuri = string.Empty; string classuri = string.Empty; string perpage = string.Empty; string offset = string.Empty; string sortby = string.Empty; string sortdirection = string.Empty; string searchrequest = string.Empty; string otherfilters = string.Empty; string institutionallexcept = string.Empty; string departmentallexcept = string.Empty; string divisionallexcept = string.Empty; string exactphrase = string.Empty; string nodeuri = string.Empty; string nodeid = string.Empty; if (this.SearchType.IsNullOrEmpty() == false) { searchtype = this.SearchType; } //else if (Request.Form["searchtype"] != null) //{ // searchtype = Request.Form["searchtype"]; //} if (Request.QueryString["searchfor"].IsNullOrEmpty() == false) { searchfor = Request.QueryString["searchfor"]; } if (Request.Form["txtSearchFor"].IsNullOrEmpty() == false) { searchfor = Request.Form["txtSearchFor"]; } if (Request.QueryString["lname"].IsNullOrEmpty() == false) { lname = Request.QueryString["lname"]; } if (Request.QueryString["institution"].IsNullOrEmpty() == false) { institution = Request.QueryString["institution"]; } if (Request.QueryString["department"].IsNullOrEmpty() == false) { department = Request.QueryString["department"]; } if (Request.QueryString["division"].IsNullOrEmpty() == false) { division = Request.QueryString["division"]; } if (Request.QueryString["fname"].IsNullOrEmpty() == false) { fname = Request.QueryString["fname"]; } if (Request.QueryString["classgroupuri"].IsNullOrEmpty() == false) { classgroupuri = HttpUtility.UrlDecode(Request.QueryString["classgroupuri"]); } else { classgroupuri = HttpUtility.UrlDecode(Request.Form["classgroupuri"]); } if (classgroupuri != null) { if (classgroupuri.Contains("!")) { classgroupuri = classgroupuri.Replace('!', '#'); } } if (Request.QueryString["classuri"].IsNullOrEmpty() == false) { classuri = HttpUtility.UrlDecode(Request.QueryString["classuri"]); } else { classuri = HttpUtility.UrlDecode(Request.Form["classuri"]); } if (classuri != null) { if (classuri.Contains("!")) { classuri = classuri.Replace('!', '#'); } } else { classuri = ""; } if (Request.QueryString["perpage"].IsNullOrEmpty() == false) { perpage = Request.QueryString["perpage"]; } else { perpage = Request.Form["perpage"]; } //if (perpage == string.Empty || perpage == null) //{ // perpage = Request.QueryString["perpage"]; //} if (perpage.IsNullOrEmpty()) { perpage = "15"; } if (Request.QueryString["offset"].IsNullOrEmpty() == false) { offset = Request.QueryString["offset"]; } else { offset = Request.Form["offset"]; } if (offset.IsNullOrEmpty()) { offset = "0"; } //if (offset == null) // offset = "0"; if (Request.QueryString["sortby"].IsNullOrEmpty() == false) { sortby = Request.QueryString["sortby"]; } if (Request.QueryString["sortdirection"].IsNullOrEmpty() == false) { sortdirection = Request.QueryString["sortdirection"]; } if (Request.QueryString["searchrequest"].IsNullOrEmpty() == false) { searchrequest = Request.QueryString["searchrequest"]; } else if (masterpage.SearchRequest.IsNullOrEmpty() == false) { searchrequest = masterpage.SearchRequest; } if (Request.QueryString["otherfilters"].IsNullOrEmpty() == false) { otherfilters = Request.QueryString["otherfilters"]; } if (Request.QueryString["institutionallexcept"].IsNullOrEmpty() == false) { institutionallexcept = Request.QueryString["institutionallexcept"]; } if (Request.QueryString["departmentallexcept"].IsNullOrEmpty() == false) { departmentallexcept = Request.QueryString["departmentallexcept"]; } if (Request.QueryString["divisionallexcept"].IsNullOrEmpty() == false) { divisionallexcept = Request.QueryString["divisionallexcept"]; } if (Request.QueryString["exactphrase"].IsNullOrEmpty() == false) { exactphrase = Request.QueryString["exactphrase"]; } if (Request.QueryString["nodeuri"].IsNullOrEmpty() == false) { nodeuri = Request.QueryString["nodeuri"]; nodeid = nodeuri.Substring(nodeuri.LastIndexOf("/") + 1); } switch (searchtype.ToLower()) { case "everything": if (searchrequest != string.Empty) { xml.LoadXml(data.DecryptRequest(searchrequest)); } else { xml = data.SearchRequest(searchfor, exactphrase, classgroupuri, classuri, perpage, offset); } break; default: //Person is the default if (searchrequest != string.Empty) { xml.LoadXml(data.DecryptRequest(searchrequest)); } else { xml = data.SearchRequest(searchfor, exactphrase, fname, lname, institution, institutionallexcept, department, departmentallexcept, division, divisionallexcept, classuri, perpage, offset, sortby, sortdirection, otherfilters, "", ref searchrequest); } break; } if (nodeuri != string.Empty && nodeid != string.Empty) { masterpage.RDFData = data.WhySearch(xml, nodeuri, Convert.ToInt64(nodeid)); } else { masterpage.RDFData = data.Search(xml, false); } Framework.Utilities.DebugLogging.Log(masterpage.RDFData.OuterXml); masterpage.RDFNamespaces = rdfnamespaces.LoadNamespaces(masterpage.RDFData); masterpage.SearchRequest = searchrequest; }
private void DrawProfilesModule() { XsltArgumentList args = new XsltArgumentList(); string searchfor = string.Empty; string classgroupuri = string.Empty; string classuri = string.Empty; string searchrequest = string.Empty; string exactphrase = string.Empty; XmlDocument xmlsearchrequest; if (Request.QueryString["searchfor"] != null) { searchfor = Request.QueryString["searchfor"]; } else { searchfor = Request.Form["txtSearchFor"]; } if (Request.QueryString["classgroupuri"] != null) { classgroupuri = HttpUtility.UrlDecode(Request.QueryString["classgroupuri"]); } else { classgroupuri = HttpUtility.UrlDecode(Request.Form["classgroupuri"]); } if (classgroupuri != null) { if (classgroupuri.Contains("!")) { classgroupuri = classgroupuri.Replace('!', '#'); } } else { classgroupuri = string.Empty; } if (Request.QueryString["classuri"] != null) { classuri = HttpUtility.UrlDecode(Request.QueryString["classuri"]); } else { classuri = HttpUtility.UrlDecode(Request.Form["classuri"]); } if (classuri != null) { if (classuri.Contains("!")) { classuri = classuri.Replace('!', '#'); } } else { classuri = string.Empty; } Search.Utilities.DataIO data = new Profiles.Search.Utilities.DataIO(); if (Request.QueryString["searchrequest"] != null) { searchrequest = Request.QueryString["searchrequest"]; if (searchfor == null) { xmlsearchrequest = new XmlDocument(); xmlsearchrequest.LoadXml(data.DecryptRequest(searchrequest)); searchfor = xmlsearchrequest.SelectSingleNode("SearchOptions/MatchOptions/SearchString").InnerText; } } if (Request.QueryString["exactphrase"] != null) { exactphrase = Request.QueryString["exactphrase"]; } else { exactphrase = "false"; } try { //Grab the full results so I can get the counts, this comes from the cache cloud. this.SearchResults = data.Search(data.SearchRequest(searchfor, "false", "", "", "0", "100"), false); } catch (DisallowedSearchException se) { litEverythingPassiveResults.Text = se.Message; return; } Int64 total = 0; foreach (XmlNode x in this.SearchResults.SelectNodes("rdf:RDF/rdf:Description/vivo:overview/prns:matchesClassGroupsList/prns:matchesClassGroup", this.Namespaces)) { total += Convert.ToInt64(x.SelectSingleNode("prns:numberOfConnections", this.Namespaces).InnerText); } args.AddParam("total", "", total); args.AddParam("searchfor", "", searchfor); args.AddParam("exactphrase", "", exactphrase); args.AddParam("root", "", Root.Domain); args.AddParam("classGrpURIpassedin", "", classgroupuri); args.AddParam("classURIpassedin", "", classuri); XslCompiledTransform xslt = new XslCompiledTransform(); litEverythingPassiveResults.Text = XslHelper.TransformInMemory(Server.MapPath("~/Search/Modules/SearchEverythingFacets/SearchEverythingFacets.xslt"), args, this.SearchResults.OuterXml); }
private void DrawProfilesModule() { XsltArgumentList args = new XsltArgumentList(); long offset = 0; long perpage = 0; long totalcount = 0; long totalpageremainder = 0; long totalpages = 0; long startrecord = 0; long page = 0; string searchfor = ""; string classgroupuri = ""; string classuri = ""; string fname = ""; string lname = ""; string institution = ""; string department = ""; string sort = ""; string sortdirection = ""; string searchrequest = ""; XmlDocument xmlsearchrequest; xmlsearchrequest = new XmlDocument(); Int16 showcolumns = 0; string otherfilters = ""; string institutionallexcept = string.Empty; string departmentallexcept = string.Empty; string exactphrase = string.Empty; string division = string.Empty; string divisionallexcept = string.Empty; string searchtype = ""; Search.Utilities.DataIO data = new Profiles.Search.Utilities.DataIO(); if (String.IsNullOrEmpty(Request.QueryString["searchrequest"])==false) { searchrequest = data.DecryptRequest(Request.QueryString["searchrequest"]); xmlsearchrequest.LoadXml(searchrequest); } if (String.IsNullOrEmpty(Request.QueryString["searchtype"])==false) { searchtype = Request.QueryString["searchtype"]; } else if (String.IsNullOrEmpty(Request.Form["searchtype"])==false) { searchtype = Request.Form["searchtype"]; } if (String.IsNullOrEmpty(Request.QueryString["searchfor"])==false) { searchfor = Request.QueryString["searchfor"]; } else if(String.IsNullOrEmpty(Request.Form["txtSearchFor"])==false) { searchfor = Request.Form["txtSearchFor"]; } else if (xmlsearchrequest.ChildNodes.Count > 0) { try { searchfor = xmlsearchrequest.SelectSingleNode("SearchOptions/MatchOptions/SearchString").InnerText; } catch(Exception) { // Do nothing, leave searchfor = null } } if (searchfor == null) searchfor = string.Empty; if (String.IsNullOrEmpty(Request.QueryString["lname"])==false) lname = Request.QueryString["lname"]; else lname = Request.Form["txtLname"]; if (lname == null) lname = string.Empty; if (String.IsNullOrEmpty(Request.QueryString["fname"])==false) fname = Request.QueryString["fname"]; else fname = Request.Form["txtFname"]; if (fname == null) fname = string.Empty; if (String.IsNullOrEmpty(Request.QueryString["institution"])==false) institution = Request.QueryString["institution"]; if (String.IsNullOrEmpty(Request.QueryString["department"])==false) department = Request.QueryString["department"]; if (String.IsNullOrEmpty(Request.QueryString["perpage"])==false) { perpage = Convert.ToInt64(Request.QueryString["perpage"]); if (!(perpage>0)) perpage = 15; //if (String.IsNullOrEmpty(Request.QueryString["perpage"])==false) // perpage = Convert.ToInt64(Request.QueryString["perpage"]); //else // perpage = 15; } else { perpage = 15; //default } if (String.IsNullOrEmpty(Request.QueryString["offset"])==false) { offset = Convert.ToInt64(Request.QueryString["offset"]); //if (Request.QueryString["offset"] != string.Empty) // offset = Convert.ToInt64(Request.QueryString["offset"]); //else // offset = 0; } else { offset = 0; } if (String.IsNullOrEmpty(Request.QueryString["page"])==false) { page = Convert.ToInt64(Request.QueryString["page"]); if (!(page > 0)) page = 1; //if (Request.QueryString["page"] != string.Empty) // page = Convert.ToInt64(Request.QueryString["page"]); //else // page = 1; } else { page = 1; } if (String.IsNullOrEmpty(Request.QueryString["classgroupuri"])==false) classgroupuri = HttpUtility.UrlDecode(Request.QueryString["classgroupuri"]); else classgroupuri = HttpUtility.UrlDecode(Request.Form["classgroupuri"]); if (classgroupuri != null) { if (classgroupuri.Contains("!")) classgroupuri = classgroupuri.Replace('!', '#'); } else { classgroupuri = string.Empty; } if (String.IsNullOrEmpty(Request.QueryString["classuri"])==false) classuri = HttpUtility.UrlDecode(Request.QueryString["classuri"]); else classuri = HttpUtility.UrlDecode(Request.Form["classuri"]); if (classuri != null) { if (classuri.Contains("!")) classuri = classuri.Replace('!', '#'); } else { classuri = string.Empty; } if (String.IsNullOrEmpty(Request.QueryString["sortby"])==false) sort = Request.QueryString["sortby"]; if (String.IsNullOrEmpty(Request.QueryString["sortdirection"])==false) sortdirection = Request.QueryString["sortdirection"]; if (String.IsNullOrEmpty(Request.QueryString["showcolumns"])==false) { showcolumns = Convert.ToInt16(Request.QueryString["showcolumns"]); if (!(showcolumns > 0)) showcolumns = 2; } else { showcolumns = 2; } if (String.IsNullOrEmpty(Request.QueryString["otherfilters"])==false) { otherfilters = Request.QueryString["otherfilters"]; } if (String.IsNullOrEmpty(Request.QueryString["institutionallexcept"])==false) { institutionallexcept = Request.QueryString["institutionallexcept"]; } if (String.IsNullOrEmpty(Request.QueryString["departmentallexcept"])==false) { departmentallexcept = Request.QueryString["departmentallexcept"]; } if (String.IsNullOrEmpty(Request.QueryString["exactphrase"])==false) { exactphrase = Request.QueryString["exactphrase"]; } if (String.IsNullOrEmpty(Request.QueryString["division"])==false) { division = Request.QueryString["division"]; } if (String.IsNullOrEmpty(Request.QueryString["divisionallexcept"])==false) { divisionallexcept = Request.QueryString["divisionallexcept"]; } try { totalcount = data.GetTotalSearchConnections(this.SearchData, base.Namespaces); if (page < 0) { page = 1; } totalpages = Math.DivRem(totalcount, Convert.ToInt64(perpage), out totalpageremainder); if (totalpageremainder > 0) { totalpages = totalpages + 1; } if (page > totalpages) page = totalpages; startrecord = ((Convert.ToInt32(page) * Convert.ToInt32(perpage)) + 1) - Convert.ToInt32(perpage); if(searchrequest.Trim() != string.Empty) searchrequest = data.EncryptRequest(searchrequest); switch (searchtype.ToLower()) { case "everything": xmlsearchrequest = data.SearchRequest(searchfor, classgroupuri, classuri, perpage.ToString(), (startrecord - 1).ToString()); break; default: xmlsearchrequest = data.SearchRequest(searchfor, exactphrase, fname, lname, institution, institutionallexcept, department, departmentallexcept, division, divisionallexcept, "http://xmlns.com/foaf/0.1/Person", perpage.ToString(), (startrecord - 1).ToString(), sort, sortdirection, otherfilters, ref searchrequest); break; } OpenSocialManager om = OpenSocialManager.GetOpenSocialManager(null, Page, false, false); om.RegisterORNGCallbackResponder(OpenSocialManager.JSON_PERSONID_CHANNEL, new Responder(xmlsearchrequest)); this.SearchData = data.Search(xmlsearchrequest,false); this.SearchRequest = data.EncryptRequest(xmlsearchrequest.OuterXml); } catch (Exception ex) { ex = ex; //for now just flip it back to the defaults. This is if someone keys some funky divide by zero stuff in the URL // to try and break the system. startrecord = 1; perpage = 15; } args.AddParam("root", "", Root.Domain); args.AddParam("perpage", "", perpage); args.AddParam("offset", "", offset); args.AddParam("totalpages", "", totalpages); args.AddParam("page", "", page); args.AddParam("searchfor", "", searchfor); args.AddParam("classGrpURIpassedin", "", classgroupuri); args.AddParam("classURIpassedin", "", classuri); args.AddParam("searchrequest", "", this.SearchRequest); switch (searchtype.ToLower()) { case "everything": litEverythingResults.Text = XslHelper.TransformInMemory(Server.MapPath("~/Search/Modules/SearchResults/EverythingResults.xslt"), args, this.SearchData.OuterXml); break; case "people": args.AddParam("showcolumns", "", showcolumns.ToString()); if ((showcolumns & 1) == 1) { args.AddParam("institution", "", "true"); } else { args.AddParam("institution", "", "false"); } if ((showcolumns & 2) == 2) { args.AddParam("department", "", "true"); } else { args.AddParam("department", "", "false"); } if ((showcolumns & 4) == 4) { args.AddParam("division", "", "true"); } else { args.AddParam("division", "", "false"); } if ((showcolumns & 8) == 8) { args.AddParam("facrank", "", "true"); } else { args.AddParam("facrank", "", "false"); } //Profiles.Search.Utilities.DataIO dropdowns = new Profiles.Search.Utilities.DataIO(); if (Convert.ToBoolean(ConfigurationSettings.AppSettings["ShowInstitutions"]) == true) { args.AddParam("ShowInstitutions", "", "true"); } else { args.AddParam("ShowInstitutions", "", "false"); } if (Convert.ToBoolean(ConfigurationSettings.AppSettings["ShowDepartments"]) == true) { args.AddParam("ShowDepartments", "", "true"); } else { args.AddParam("ShowDepartments", "", "false"); } if (Convert.ToBoolean(ConfigurationSettings.AppSettings["ShowDivisions"]) == true) { args.AddParam("ShowDivisions", "", "true"); } else { args.AddParam("ShowDivisions", "", "false"); } //Faculty Rank always shows args.AddParam("ShowFacRank", "", "true"); args.AddParam("currentsort", "", sort); args.AddParam("currentsortdirection", "", sortdirection); if (base.BaseData.SelectNodes("rdf:RDF/rdf:Description/vivo:overview/SearchDetails/SearchPhraseList", base.Namespaces).Count > 0) args.AddParam("why", "", true); else args.AddParam("why", "", false); litEverythingResults.Text = XslHelper.TransformInMemory(Server.MapPath("~/Search/Modules/SearchResults/PeopleResults.xslt"), args, this.SearchData.OuterXml); break; } }