public function parse(array $data, ParsingDispatcher $parsingDispatcher)
{
$query = $this->buildQuery();
// Criteria
// -- FullTextCriterion
if (array_key_exists('Criteria', $data) && is_array($data['Criteria'])) {
$message = 'The Criteria element is deprecated since ezpublish-kernel 6.6.0, and will be removed in 7.0. Use Filter instead.';
if (array_key_exists('Filter', $data) && is_array($data['Filter'])) {
$message .= ' The Criteria element will be merged into Filter.';
$data['Filter'] = array_merge($data['Filter'], $data['Criteria']);
} else {
$data['Filter'] = $data['Criteria'];
}
@trigger_error($message, E_USER_DEPRECATED);
}
if (array_key_exists('Filter', $data) && is_array($data['Filter'])) {
$query->filter = $this->processCriteriaArray($data['Filter'], $parsingDispatcher);
}
if (array_key_exists('Query', $data) && is_array($data['Query'])) {
$query->query = $this->processCriteriaArray($data['Query'], $parsingDispatcher);
}
// limit
if (array_key_exists('limit', $data)) {
$query->limit = (int) $data['limit'];
}
// offset
if (array_key_exists('offset', $data)) {
$query->offset = (int) $data['offset'];
}
// SortClauses
// -- [SortClauseName: direction|data]
if (array_key_exists('SortClauses', $data)) {
$sortClauses = [];
foreach ($data['SortClauses'] as $sortClauseName => $sortClauseData) {
$sortClauses[] = $this->dispatchSortClause($sortClauseName, $sortClauseData, $parsingDispatcher);
}
$query->sortClauses = $sortClauses;
}
// FacetBuilders
// -- contentTypeFacetBuilder
if (array_key_exists('FacetBuilders', $data)) {
}
return $query;
}