public static void ExecuteRule(SiteDb sitedb, KScript.k kcontext, IFrontEvent theevent, Kooboo.Sites.Models.IFElseRule rule) { if (rule.Do != null && rule.Do.Count() > 0) { foreach (var item in rule.Do) { var code = sitedb.Code.Get(item.CodeId); if (code != null && !string.IsNullOrWhiteSpace(code.Body)) { kcontext.config = new KDictionary(CopySetting(item.Setting)); var outputstring = Kooboo.Sites.Scripting.Manager.ExecuteCode(kcontext.RenderContext, code.Body, code.Id); if (!string.IsNullOrEmpty(outputstring)) { kcontext.RenderContext.Response.AppendString(outputstring); } kcontext.config = null; } } } if (rule.IF != null && rule.IF.Count() > 0) { var check = EvaluteCondition(theevent, rule.IF); if (check) { if (rule.Then != null && rule.Then.Count() > 0) { foreach (var item in rule.Then) { ExecuteRule(sitedb, kcontext, theevent, item); } } } else { if (rule.Else != null && rule.Else.Count() > 0) { foreach (var item in rule.Else) { ExecuteRule(sitedb, kcontext, theevent, item); } } } } else if (rule.Then != null && rule.Then.Count > 0) { foreach (var item in rule.Then) { ExecuteRule(sitedb, kcontext, theevent, item); } } }
public static void ExecuteRule(SiteDb sitedb, Kooboo.Sites.Scripting.k kcontext, IFrontEvent theevent, Kooboo.Sites.Models.IFElseRule rule) { if (rule.Do != null && rule.Do.Count() > 0) { foreach (var item in rule.Do) { var code = sitedb.Code.Get(item.CodeId); if (code != null && !string.IsNullOrWhiteSpace(code.Body)) { kcontext.config = CopySetting(item.Setting); Kooboo.Sites.Scripting.Manager.ExecuteCode(kcontext.RenderContext, code.Body, code.Id); //TODO.... Get the debugger to work... //engine.Execute(code.Body); kcontext.config = null; } } } if (rule.IF != null && rule.IF.Count() > 0) { var check = EvaluteCondition(theevent, rule.IF); if (check) { if (rule.Then != null && rule.Then.Count() > 0) { foreach (var item in rule.Then) { ExecuteRule(sitedb, kcontext, theevent, item); } } } else { if (rule.Else != null && rule.Else.Count() > 0) { foreach (var item in rule.Else) { ExecuteRule(sitedb, kcontext, theevent, item); } } } } else if (rule.Then != null && rule.Then.Count > 0) { foreach (var item in rule.Then) { ExecuteRule(sitedb, kcontext, theevent, item); } } }