public void AddXML(ProjectFlx.Schema.projectResults ProjectResults) { foreach (var result in ProjectResults.results) { XmlDocument doc = new XmlDocument(); doc.LoadXml(result.Serialize()); base.AddXML("app", doc); } }
public DatabaseQuery(DatabaseConnection Connection, ProjectFlx.Schema.projectResults ProjectResults) { _database = Connection; _Projresults = ProjectResults; }
private void wbtQuery(XmlNode current, String ResourceContentPath) { var nsmgr = new XmlNamespaceManager(current.OwnerDocument.NameTable); nsmgr.AddNamespace("wbt", "myWebTemplater.1.0"); nsmgr.AddNamespace("sbt", "mySiteTemplater.1.0"); nsmgr.AddNamespace("pbt", "myPageTemplater.1.0"); var ns = new XmlNamespaceManager(TMPLT.DOCxml.NameTable); ns.AddNamespace("wbt", "myWebTemplater.1.0"); if (current.SelectSingleNode("descendant-or-self::wbt:ProjSql | descendant-or-self::wbt:query", nsmgr) == null) return; ProjectFlx.DB.DatabaseConnection db = new ProjectFlx.DB.DatabaseConnection(); ProjectFlx.Schema.projectResults result; ProjectFlx.DB.SchemaBased.DatabaseQuery dbq = new ProjectFlx.DB.SchemaBased.DatabaseQuery(db, result = new ProjectFlx.Schema.projectResults()); // TODO: this become global and USECDN var projsqlpath = (_useCdn) ? Utility.Paths.CombinePaths(_resources.Host, ConfigurationManager.AppSettings["project-sql-path"], "ProjectSql.xml") : Path.Combine(Server.MapPath(ConfigurationManager.AppSettings["project-sql-path"]), "ProjectSql.xml"); var projsql = new Schema.Extra.commonProj(projsqlpath); if (projsql == null) return; if (ConfigurationManager.AppSettings["validation-regx"] != null) { projsql.setRegX(Server.MapPath(ConfigurationManager.AppSettings["validation-regx"])); } TMPLT.AddXslParameter("projSql", projsql.ProjSqlNode); wbtProjSql(current, projsql, nsmgr); bool isUpdateQuery = false; // handle update, inserts, deletes if (RequestType == enumRequestType.POST) { var qproj = Request.Form["wbt_execute_project"]; var qquery = Request.Form["wbt_execute_query"]; if(qproj == null) qproj = Request.Form["wbt_update_project"]; if (qquery == null) qquery = Request.Form["wbt_update_query"]; if (!(String.IsNullOrEmpty(qproj) || String.IsNullOrEmpty(qquery))) { isUpdateQuery = true; projsql.setProject(qproj); projsql.setQuery(qquery); projsql.fillParms(Request.Form); try { projsql.checkInputParms(); dbq.Query(projsql); } catch (Exception unhandled) { TMPLT.AddException(unhandled); } } } // page queries var qresources = _resources.collectResources("queries", ".xml"); qresources.AddRange(_resources.collectResources(Utility.Paths.CombinePaths(ResourceContentPath, "queries"), ".xml")); foreach (string s in qresources) { var xm = new XmlDocument(); xm.Load((_useCdn) ? Utility.Paths.CombinePaths(_resources.Host, s) : Server.MapPath(s)); XmlNode q = xm.SelectSingleNode("wbt:query", nsmgr); projsql.setProject(q.Attributes["project"].Value); projsql.setQuery(q.Attributes["query"].Value); foreach (XmlNode parm in q.SelectNodes("parameters/parameter")) projsql.setParameter(parm.Attributes["name"].Value, getValueFromWbtParm(parm.InnerText)); projsql.fillParms(Request.QueryString); if(!isUpdateQuery) // form vars reserved for update query actions projsql.fillParms(Request.Form); try { projsql.checkInputParms(); dbq.Query(projsql); } catch (Exception unhandled) { TMPLT.AddException(unhandled); } } // embeded queries (action result only) var queries = current.SelectNodes("wbt:query[@action='Result' or not(@action)] | *//wbt:query[@action='Result' or not(@action)]", ns); TMPLT.AddCookie("wbt_edits_token", Guid.NewGuid().ToString(), DateTime.Now.AddMinutes(3), true); foreach (XmlNode q in queries) { var logOnNode = q.SelectSingleNode("ancestor-or-self::*[@loggedonuser = '******'] | ancestor-or-self::*[@wbt:loggedonuser = '******'] | ancestor-or-self::LoggedOnUser | ancestor-or-self::LoggedOn | ancestor-or-self::LoggedIn | ancestor-or-self::LoggedIn", nsmgr); if (logOnNode != null && !LoggedOnUser) continue; var authNode = q.SelectSingleNode("ancestor-or-self::*[@authenticated = 'true'] | ancestor-or-self::*[@wbt:authenticateduser = '******'] | ancestor-or-self::AuthenticatedUser", nsmgr); if (authNode != null && !AuthenticatedUser) continue; projsql.setProject(q.Attributes["project"].Value); projsql.setQuery(q.Attributes["query"].Value); foreach (XmlNode parm in q.SelectNodes("parameters/parameter")) projsql.setParameter(parm.Attributes["name"].Value, getValueFromWbtParm(parm.InnerText)); projsql.fillParms(Request.QueryString); if (!isUpdateQuery) // form vars reserved for update query actions projsql.fillParms(Request.Form); try { projsql.checkInputParms(); dbq.Query(projsql); } catch(Exception unhandled) { TMPLT.AddException(unhandled); } } if (result.results.Count > 0) TMPLT.AddWBTXml(result.Serialize()); }