Skip to content

Commit

Permalink
Escaping class names
Browse files Browse the repository at this point in the history
  • Loading branch information
Viburnum committed Apr 12, 2017
1 parent feff0ea commit eee13aa
Showing 1 changed file with 12 additions and 1 deletion.
13 changes: 12 additions & 1 deletion Services/SearchService.php
Original file line number Diff line number Diff line change
Expand Up @@ -272,8 +272,9 @@ protected function getFilteredFacetedQuery(Client $client, Query $query) {
$solrQuery = $this->getFacetedQuery($client, $query);
foreach($query->getFacets() as $facetKey => $values) {
if(count($values) <= 0) continue;
$escapedValues = $this->escapeFacetValues($facetKey, $values);
$facetKey = $this->escapeFacetKey($facetKey);
$solrQuery->createFilterQuery($facetKey)->setQuery($facetKey . ':(' . implode(' OR ', $values) . ')');
$solrQuery->createFilterQuery($facetKey)->setQuery($facetKey . ':(' . implode(' OR ', $escapedValues) . ')');
}
return $solrQuery;
}
Expand All @@ -289,6 +290,7 @@ public function search(Query $query) {

$filteredQuery = $this->getFilteredFacetedQuery($client, $query);
$facetQuery = $this->getFacetedQuery($client, $query);

$facetresultset = $client->select($facetQuery);

$result = new KnpResultSet($client, $filteredQuery, $query->getSearchTerm());
Expand All @@ -313,6 +315,15 @@ public function getIndexSize() {
$resultset = $client->execute($query);
return $resultset->getNumFound();
}

protected function escapeFacetValues($facetKey, array $facetValues) {
if($facetKey == Document::FIELD_TYPE) {
return array_map(function($value) {
return str_replace('\\', '\\\\', $value);
}, $facetValues);
}
return $facetValues;
}

protected function escapeFacetKey($facetKey) {
return $facetKey == Document::FIELD_TYPE ? 'entityType' : $facetKey;
Expand Down

0 comments on commit eee13aa

Please sign in to comment.