public override int GetMaxOutputSize(DekiScriptEvalMode mode) { switch (mode) { case DekiScriptEvalMode.EvaluateEditOnly: return(int.MaxValue); case DekiScriptEvalMode.Evaluate: case DekiScriptEvalMode.EvaluateSafeMode: case DekiScriptEvalMode.EvaluateSaveOnly: case DekiScriptEvalMode.None: case DekiScriptEvalMode.Verify: default: return(_settings.GetValue("pages/max-page-size", MAX_OUTPUT_SIZE)); } }
//--- Constructors --- public ExtensionRuntime(IInstanceSettings settings) { _settings = settings; _log = DekiLogManager.CreateLog(); _evaluationTimeout = settings.GetValue("script/timeout", 60).Seconds(); }
//--- Constructors --- public ExtensionRuntime(IInstanceSettings settings) { _settings = settings; _log = DekiLogManager.CreateLog(); _evaluationTimeout = settings.GetValue("script/timeout", 60).Seconds(); }
//--- Methods --- public SearchQuery BuildQuery(string queryString, string constraint, SearchQueryParserType parserType, bool haveApiKey) { var nullConstraint = string.IsNullOrEmpty(constraint); var constraintBuilder = new LuceneClauseBuilder(); // must have at a queryString or a constraint to proceed if (string.IsNullOrEmpty(queryString) && nullConstraint) { return(SearchQuery.CreateEmpty()); } // If an apikey isn't provided filter out user results by requiring results to be one of the other types if (parserType != SearchQueryParserType.Filename && !haveApiKey) { constraintBuilder.And("type:(wiki document image comment binary)"); constraintBuilder.And(constraint); } else { constraintBuilder.And(constraint); } SearchQuery query = null; switch (parserType) { case SearchQueryParserType.BestGuess: case SearchQueryParserType.Term: var terms = _parser.GetQueryTerms(queryString, parserType != SearchQueryParserType.Term); if (terms == null) { query = BuildLuceneQuery(constraintBuilder, queryString); break; } var unprefixed = (from t in terms where !t.HasFieldPrefix select t.Escaped).ToArray(); var prefixed = (from t in terms where t.HasFieldPrefix select t.Escaped).ToArray(); var queryBuilder = new StringBuilder(); if (unprefixed.Any()) { var termString = "(" + string.Join(" ", unprefixed) + ")"; var termQuery = _settings.GetValue("search/termquery", TERM_QUERY); try { queryBuilder.AppendFormat(termQuery, termString); } catch (FormatException e) { throw new FormatException("query format provided in 'search/termquery' is invalid", e); } queryBuilder.Append(" "); } if (prefixed.Any()) { foreach (var p in prefixed) { queryBuilder.Append(p); queryBuilder.Append(" "); } } if (!haveApiKey) { constraintBuilder.And("-namespace:\"template_talk\" -namespace:\"help\" -namespace:\"help_talk\""); } query = new SearchQuery(queryString, queryBuilder.ToString(), constraintBuilder, terms); break; case SearchQueryParserType.Filename: if (string.IsNullOrEmpty(queryString)) { query = SearchQuery.CreateEmpty(); break; } var term = _parser.CreateEscapedTerm(queryString); var fileQuery = string.Format("filename:{0}* extension:.{0} description:{0}", term); constraintBuilder = new LuceneClauseBuilder(); constraintBuilder.And("type:(document image binary)"); constraintBuilder.And(constraint); query = new SearchQuery(queryString, fileQuery, constraintBuilder, null); break; case SearchQueryParserType.Lucene: query = BuildLuceneQuery(constraintBuilder, queryString); break; } return(query); }