Fixing search qurey validation

Work Item: 16556

--HG--
branch : dev
This commit is contained in:
Sebastien Ros
2010-11-23 13:23:01 -08:00
parent 1621a10cc8
commit 01e792e82e
@@ -1,9 +1,11 @@
using System.Linq; using System;
using System.Linq;
using System.Web.Mvc; using System.Web.Mvc;
using Orchard.ContentManagement; using Orchard.ContentManagement;
using Orchard.DisplayManagement; using Orchard.DisplayManagement;
using Orchard.Indexing; using Orchard.Indexing;
using Orchard.Localization; using Orchard.Localization;
using Orchard.Logging;
using Orchard.Search.Services; using Orchard.Search.Services;
using Orchard.Search.ViewModels; using Orchard.Search.ViewModels;
using Orchard.Search.Models; using Orchard.Search.Models;
@@ -29,26 +31,29 @@ namespace Orchard.Search.Controllers {
_contentManager = contentManager; _contentManager = contentManager;
T = NullLocalizer.Instance; T = NullLocalizer.Instance;
Logger = NullLogger.Instance;
Shape = shapeFactory; Shape = shapeFactory;
} }
private IOrchardServices Services { get; set; } private IOrchardServices Services { get; set; }
public Localizer T { get; set; } public Localizer T { get; set; }
public ILogger Logger { get; set; }
dynamic Shape { get; set; } dynamic Shape { get; set; }
public ActionResult Index(Pager pager, string q = "") { public ActionResult Index(Pager pager, string q = "") {
var searchFields = Services.WorkContext.CurrentSite.As<SearchSettingsPart>().SearchedFields; var searchFields = Services.WorkContext.CurrentSite.As<SearchSettingsPart>().SearchedFields;
IPageOfItems<ISearchHit> searchHits; IPageOfItems<ISearchHit> searchHits = new PageOfItems<ISearchHit>(new ISearchHit[] { });
if (q.Trim().StartsWith("?") || q.Trim().StartsWith("*")) { try {
searchHits = new PageOfItems<ISearchHit>(new ISearchHit[] { });
Services.Notifier.Error(T("'*' or '?' not allowed as first character in WildcardQuery"));
}
else {
searchHits = _searchService.Query(q, pager.Page, pager.PageSize, searchHits = _searchService.Query(q, pager.Page, pager.PageSize,
Services.WorkContext.CurrentSite.As<SearchSettingsPart>().Record.FilterCulture, Services.WorkContext.CurrentSite.As<SearchSettingsPart>().Record.FilterCulture,
searchFields, searchFields,
searchHit => searchHit); searchHit => searchHit);
}
catch(Exception e) {
Services.Notifier.Error(T("Invalid search query: {0}", q));
Logger.Error(e, "Invalid search query: " + q);
} }
var list = Shape.List(); var list = Shape.List();